/*
 * Copyright (c) 2019 - 2021 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCS_H_
#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCS_H_

/**
 * @brief Media Control Service (MCS)
 *
 * @defgroup bt_mcs Media Control Service (MCS)
 *
 * @ingroup bluetooth
 * @{
 *
 * [Experimental] Users should note that the APIs can change
 * as a part of ongoing development.
 *
 * Definitions and types related to the Media Control Service and Media Control
 * Profile specifications.
 */

#include <zephyr/sys/util.h>

#ifdef __cplusplus
extern "C" {
#endif


/** @brief Playback speeds
 *
 * All values from -128 to 127 allowed, only some defined
 */
#define BT_MCS_PLAYBACK_SPEED_MIN     -128
#define BT_MCS_PLAYBACK_SPEED_QUARTER -128
#define BT_MCS_PLAYBACK_SPEED_HALF     -64
#define BT_MCS_PLAYBACK_SPEED_UNITY      0
#define BT_MCS_PLAYBACK_SPEED_DOUBLE    64
#define BT_MCS_PLAYBACK_SPEED_MAX      127

/** @brief Seeking speed
 *
 * The allowed values for seeking speed are the range -64 to -4
 * (endpoints included), the value 0, and the range 4 to 64
 * (endpoints included).
 */
#define BT_MCS_SEEKING_SPEED_FACTOR_MAX  64
#define BT_MCS_SEEKING_SPEED_FACTOR_MIN   4
#define BT_MCS_SEEKING_SPEED_FACTOR_ZERO  0

/** Playing orders */
#define BT_MCS_PLAYING_ORDER_SINGLE_ONCE    0X01
#define BT_MCS_PLAYING_ORDER_SINGLE_REPEAT  0x02
#define BT_MCS_PLAYING_ORDER_INORDER_ONCE   0x03
#define BT_MCS_PLAYING_ORDER_INORDER_REPEAT 0x04
#define BT_MCS_PLAYING_ORDER_OLDEST_ONCE    0x05
#define BT_MCS_PLAYING_ORDER_OLDEST_REPEAT  0x06
#define BT_MCS_PLAYING_ORDER_NEWEST_ONCE    0x07
#define BT_MCS_PLAYING_ORDER_NEWEST_REPEAT  0x08
#define BT_MCS_PLAYING_ORDER_SHUFFLE_ONCE   0x09
#define BT_MCS_PLAYING_ORDER_SHUFFLE_REPEAT 0x0a

/** @brief Playing orders supported
 *
 * A bitmap, in the same order as the playing orders above.
 * Note that playing order 1 corresponds to bit 0, and so on.
 */
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SINGLE_ONCE    BIT(0)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SINGLE_REPEAT  BIT(1)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_INORDER_ONCE   BIT(2)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_INORDER_REPEAT BIT(3)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_OLDEST_ONCE    BIT(4)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_OLDEST_REPEAT  BIT(5)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_NEWEST_ONCE    BIT(6)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_NEWEST_REPEAT  BIT(7)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SHUFFLE_ONCE   BIT(8)
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SHUFFLE_REPEAT BIT(9)

/** Media states */
#define BT_MCS_MEDIA_STATE_INACTIVE 0x00
#define BT_MCS_MEDIA_STATE_PLAYING  0x01
#define BT_MCS_MEDIA_STATE_PAUSED   0x02
#define BT_MCS_MEDIA_STATE_SEEKING  0x03
#define BT_MCS_MEDIA_STATE_LAST     0x04

/** Media control point opcodes */
#define BT_MCS_OPC_PLAY          0x01
#define BT_MCS_OPC_PAUSE         0x02
#define BT_MCS_OPC_FAST_REWIND   0x03
#define BT_MCS_OPC_FAST_FORWARD  0x04
#define BT_MCS_OPC_STOP          0x05

#define BT_MCS_OPC_MOVE_RELATIVE 0x10

#define BT_MCS_OPC_PREV_SEGMENT  0x20
#define BT_MCS_OPC_NEXT_SEGMENT  0x21
#define BT_MCS_OPC_FIRST_SEGMENT 0x22
#define BT_MCS_OPC_LAST_SEGMENT  0x23
#define BT_MCS_OPC_GOTO_SEGMENT  0x24

#define BT_MCS_OPC_PREV_TRACK    0x30
#define BT_MCS_OPC_NEXT_TRACK    0x31
#define BT_MCS_OPC_FIRST_TRACK   0x32
#define BT_MCS_OPC_LAST_TRACK    0x33
#define BT_MCS_OPC_GOTO_TRACK    0x34

#define BT_MCS_OPC_PREV_GROUP    0x40
#define BT_MCS_OPC_NEXT_GROUP    0x41
#define BT_MCS_OPC_FIRST_GROUP   0x42
#define BT_MCS_OPC_LAST_GROUP    0x43
#define BT_MCS_OPC_GOTO_GROUP    0x44

/** Media control point supported opcodes length */
#define BT_MCS_OPCODES_SUPPORTED_LEN 4

/** Media control point supported opcodes values */
#define BT_MCS_OPC_SUP_PLAY          BIT(0)
#define BT_MCS_OPC_SUP_PAUSE         BIT(1)
#define BT_MCS_OPC_SUP_FAST_REWIND   BIT(2)
#define BT_MCS_OPC_SUP_FAST_FORWARD  BIT(3)
#define BT_MCS_OPC_SUP_STOP          BIT(4)

#define BT_MCS_OPC_SUP_MOVE_RELATIVE BIT(5)

#define BT_MCS_OPC_SUP_PREV_SEGMENT  BIT(6)
#define BT_MCS_OPC_SUP_NEXT_SEGMENT  BIT(7)
#define BT_MCS_OPC_SUP_FIRST_SEGMENT BIT(8)
#define BT_MCS_OPC_SUP_LAST_SEGMENT  BIT(9)
#define BT_MCS_OPC_SUP_GOTO_SEGMENT  BIT(10)

#define BT_MCS_OPC_SUP_PREV_TRACK    BIT(11)
#define BT_MCS_OPC_SUP_NEXT_TRACK    BIT(12)
#define BT_MCS_OPC_SUP_FIRST_TRACK   BIT(13)
#define BT_MCS_OPC_SUP_LAST_TRACK    BIT(14)
#define BT_MCS_OPC_SUP_GOTO_TRACK    BIT(15)

#define BT_MCS_OPC_SUP_PREV_GROUP    BIT(16)
#define BT_MCS_OPC_SUP_NEXT_GROUP    BIT(17)
#define BT_MCS_OPC_SUP_FIRST_GROUP   BIT(18)
#define BT_MCS_OPC_SUP_LAST_GROUP    BIT(19)
#define BT_MCS_OPC_SUP_GOTO_GROUP    BIT(20)

/** Media control point notification result codes */
#define BT_MCS_OPC_NTF_SUCCESS             0x01
#define BT_MCS_OPC_NTF_NOT_SUPPORTED       0x02
#define BT_MCS_OPC_NTF_PLAYER_INACTIVE     0x03
#define BT_MCS_OPC_NTF_CANNOT_BE_COMPLETED 0x04

/** Search control point type values */
/* Reference: Media Control Service spec v1.0 section 3.20.2 */
#define BT_MCS_SEARCH_TYPE_TRACK_NAME    0x01
#define BT_MCS_SEARCH_TYPE_ARTIST_NAME   0x02
#define BT_MCS_SEARCH_TYPE_ALBUM_NAME    0x03
#define BT_MCS_SEARCH_TYPE_GROUP_NAME    0x04
#define BT_MCS_SEARCH_TYPE_EARLIEST_YEAR 0x05
#define BT_MCS_SEARCH_TYPE_LATEST_YEAR   0x06
#define BT_MCS_SEARCH_TYPE_GENRE         0x07
#define BT_MCS_SEARCH_TYPE_ONLY_TRACKS   0x08
#define BT_MCS_SEARCH_TYPE_ONLY_GROUPS   0x09

/** Search control point values */
#define SEARCH_LEN_MIN 2       /* At least one search control item (SCI),
				* consisting of the length octet and the type
				* octet. (The parameter field may be empty.)
				*/

#define SEARCH_SCI_LEN_MIN 1   /* An SCI length can be as little as one byte,
				* for an SCI that has only the type field.
				* (The SCI len is the length of type + param.)
				*/

#define SEARCH_LEN_MAX 64      /* Max total length of search, defined by spec */

#define SEARCH_PARAM_MAX 62    /* A search may have a single search control item
				* consisting of length, type and parameter
				*/

/** Search notification result codes */
/* Reference: Media Control Service spec v1.0 section 3.20.2 */
#define BT_MCS_SCP_NTF_SUCCESS  0x01
#define BT_MCS_SCP_NTF_FAILURE  0x02

/* Group object object types */
/* Reference: Media Control Service spec v1.0 section 4.4.1 */
#define BT_MCS_GROUP_OBJECT_TRACK_TYPE 0x00
#define BT_MCS_GROUP_OBJECT_GROUP_TYPE 0x01


#ifdef __cplusplus
}
#endif

/**
 * @}
 */

#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCS_H_ */
