Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
mcs.h File Reference

Bluetooth Media Control Service (MCS) APIs. More...

Go to the source code of this file.

Macros

#define BT_MCS_ERR_LONG_VAL_CHANGED   0x80
 A characteristic value has changed while a Read Long Value Characteristic sub-procedure is in progress.
 
#define BT_MCS_OPCODES_SUPPORTED_LEN   4
 Media control point supported opcodes length.
 
#define SEARCH_LEN_MIN   2
 Search control point minimum length.
 
#define SEARCH_LEN_MAX   64
 Search control point maximum length.
 
#define SEARCH_SCI_LEN_MIN
 Search control point item (SCI) minimum length.
 
#define SEARCH_PARAM_MAX   62
 Search parameters maximum length

 
Playback speeds

The playback speed (s) is calculated by the value of 2 to the power of p divided by 64.

All values from -128 to 127 allowed, only some examples defined.

#define BT_MCS_PLAYBACK_SPEED_MIN   -128
 Minimum playback speed, resulting in 25 % speed.
 
#define BT_MCS_PLAYBACK_SPEED_QUARTER   -128
 Quarter playback speed, resulting in 25 % speed.
 
#define BT_MCS_PLAYBACK_SPEED_HALF   -64
 Half playback speed, resulting in 50 % speed.
 
#define BT_MCS_PLAYBACK_SPEED_UNITY   0
 Unity playback speed, resulting in 100 % speed.
 
#define BT_MCS_PLAYBACK_SPEED_DOUBLE   64
 Double playback speed, resulting in 200 % speed.
 
#define BT_MCS_PLAYBACK_SPEED_MAX   127
 Max playback speed, resulting in 395.7 % speed (nearly 400 %)
 
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
 Maximum seeking speed - Can be negated.
 
#define BT_MCS_SEEKING_SPEED_FACTOR_MIN   4
 Minimum seeking speed - Can be negated.
 
#define BT_MCS_SEEKING_SPEED_FACTOR_ZERO   0
 No seeking.
 
Playing orders
#define BT_MCS_PLAYING_ORDER_SINGLE_ONCE   0X01
 A single track is played once; there is no next track.
 
#define BT_MCS_PLAYING_ORDER_SINGLE_REPEAT   0x02
 A single track is played repeatedly; the next track is the current track.
 
#define BT_MCS_PLAYING_ORDER_INORDER_ONCE   0x03
 The tracks within a group are played once in track order.
 
#define BT_MCS_PLAYING_ORDER_INORDER_REPEAT   0x04
 The tracks within a group are played in track order repeatedly.
 
#define BT_MCS_PLAYING_ORDER_OLDEST_ONCE   0x05
 The tracks within a group are played once only from the oldest first.
 
#define BT_MCS_PLAYING_ORDER_OLDEST_REPEAT   0x06
 The tracks within a group are played from the oldest first repeatedly.
 
#define BT_MCS_PLAYING_ORDER_NEWEST_ONCE   0x07
 The tracks within a group are played once only from the newest first.
 
#define BT_MCS_PLAYING_ORDER_NEWEST_REPEAT   0x08
 The tracks within a group are played from the newest first repeatedly.
 
#define BT_MCS_PLAYING_ORDER_SHUFFLE_ONCE   0x09
 The tracks within a group are played in random order once.
 
#define BT_MCS_PLAYING_ORDER_SHUFFLE_REPEAT   0x0a
 The tracks within a group are played in random order repeatedly.
 
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)
 A single track is played once; there is no next track.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SINGLE_REPEAT   BIT(1)
 A single track is played repeatedly; the next track is the current track.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_INORDER_ONCE   BIT(2)
 The tracks within a group are played once in track order.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_INORDER_REPEAT   BIT(3)
 The tracks within a group are played in track order repeatedly.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_OLDEST_ONCE   BIT(4)
 The tracks within a group are played once only from the oldest first.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_OLDEST_REPEAT   BIT(5)
 The tracks within a group are played from the oldest first repeatedly.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_NEWEST_ONCE   BIT(6)
 The tracks within a group are played once only from the newest first.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_NEWEST_REPEAT   BIT(7)
 The tracks within a group are played from the newest first repeatedly.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SHUFFLE_ONCE   BIT(8)
 The tracks within a group are played in random order once.
 
#define BT_MCS_PLAYING_ORDERS_SUPPORTED_SHUFFLE_REPEAT   BIT(9)
 The tracks within a group are played in random order repeatedly.
 
Media states
#define BT_MCS_MEDIA_STATE_INACTIVE   0x00
 The current track is invalid, and no track has been selected.
 
#define BT_MCS_MEDIA_STATE_PLAYING   0x01
 The media player is playing the current track.
 
#define BT_MCS_MEDIA_STATE_PAUSED   0x02
 The current track is paused.
 
#define BT_MCS_MEDIA_STATE_SEEKING   0x03
 The current track is fast forwarding or fast rewinding.
 
Media control point opcodes
#define BT_MCS_OPC_PLAY   0x01
 Start playing the current track.
 
#define BT_MCS_OPC_PAUSE   0x02
 Pause playing the current track.
 
#define BT_MCS_OPC_FAST_REWIND   0x03
 Fast rewind the current track.
 
#define BT_MCS_OPC_FAST_FORWARD   0x04
 Fast forward the current track.
 
#define BT_MCS_OPC_STOP   0x05
 Stop current activity and return to the paused state and set the current track position to the start of the current track.
 
#define BT_MCS_OPC_MOVE_RELATIVE   0x10
 Set a new current track position relative to the current track position.
 
#define BT_MCS_OPC_PREV_SEGMENT   0x20
 Set the current track position to the starting position of the previous segment of the current track.
 
#define BT_MCS_OPC_NEXT_SEGMENT   0x21
 Set the current track position to the starting position of the next segment of the current track.
 
#define BT_MCS_OPC_FIRST_SEGMENT   0x22
 Set the current track position to the starting position of the first segment of the current track.
 
#define BT_MCS_OPC_LAST_SEGMENT   0x23
 Set the current track position to the starting position of the last segment of the current track.
 
#define BT_MCS_OPC_GOTO_SEGMENT   0x24
 Set the current track position to the starting position of the nth segment of the current track.
 
#define BT_MCS_OPC_PREV_TRACK   0x30
 Set the current track to the previous track based on the playing order.
 
#define BT_MCS_OPC_NEXT_TRACK   0x31
 Set the current track to the next track based on the playing order.
 
#define BT_MCS_OPC_FIRST_TRACK   0x32
 Set the current track to the first track based on the playing order.
 
#define BT_MCS_OPC_LAST_TRACK   0x33
 Set the current track to the last track based on the playing order.
 
#define BT_MCS_OPC_GOTO_TRACK   0x34
 Set the current track to the nth track based on the playing order.
 
#define BT_MCS_OPC_PREV_GROUP   0x40
 Set the current group to the previous group in the sequence of groups.
 
#define BT_MCS_OPC_NEXT_GROUP   0x41
 Set the current group to the next group in the sequence of groups.
 
#define BT_MCS_OPC_FIRST_GROUP   0x42
 Set the current group to the first group in the sequence of groups.
 
#define BT_MCS_OPC_LAST_GROUP   0x43
 Set the current group to the last group in the sequence of groups.
 
#define BT_MCS_OPC_GOTO_GROUP   0x44
 Set the current group to the nth group in the sequence of groups.
 
Media control point supported opcodes values
#define BT_MCS_OPC_SUP_PLAY   BIT(0)
 Support the Play opcode.
 
#define BT_MCS_OPC_SUP_PAUSE   BIT(1)
 Support the Pause opcode.
 
#define BT_MCS_OPC_SUP_FAST_REWIND   BIT(2)
 Support the Fast Rewind opcode.
 
#define BT_MCS_OPC_SUP_FAST_FORWARD   BIT(3)
 Support the Fast Forward opcode.
 
#define BT_MCS_OPC_SUP_STOP   BIT(4)
 Support the Stop opcode.
 
#define BT_MCS_OPC_SUP_MOVE_RELATIVE   BIT(5)
 Support the Move Relative opcode.
 
#define BT_MCS_OPC_SUP_PREV_SEGMENT   BIT(6)
 Support the Previous Segment opcode.
 
#define BT_MCS_OPC_SUP_NEXT_SEGMENT   BIT(7)
 Support the Next Segment opcode.
 
#define BT_MCS_OPC_SUP_FIRST_SEGMENT   BIT(8)
 Support the First Segment opcode.
 
#define BT_MCS_OPC_SUP_LAST_SEGMENT   BIT(9)
 Support the Last Segment opcode.
 
#define BT_MCS_OPC_SUP_GOTO_SEGMENT   BIT(10)
 Support the Goto Segment opcode.
 
#define BT_MCS_OPC_SUP_PREV_TRACK   BIT(11)
 Support the Previous Track opcode.
 
#define BT_MCS_OPC_SUP_NEXT_TRACK   BIT(12)
 Support the Next Track opcode.
 
#define BT_MCS_OPC_SUP_FIRST_TRACK   BIT(13)
 Support the First Track opcode.
 
#define BT_MCS_OPC_SUP_LAST_TRACK   BIT(14)
 Support the Last Track opcode.
 
#define BT_MCS_OPC_SUP_GOTO_TRACK   BIT(15)
 Support the Goto Track opcode.
 
#define BT_MCS_OPC_SUP_PREV_GROUP   BIT(16)
 Support the Previous Group opcode.
 
#define BT_MCS_OPC_SUP_NEXT_GROUP   BIT(17)
 Support the Next Group opcode.
 
#define BT_MCS_OPC_SUP_FIRST_GROUP   BIT(18)
 Support the First Group opcode.
 
#define BT_MCS_OPC_SUP_LAST_GROUP   BIT(19)
 Support the Last Group opcode.
 
#define BT_MCS_OPC_SUP_GOTO_GROUP   BIT(20)
 Support the Goto Group opcode.
 
Media control point notification result codes
#define BT_MCS_OPC_NTF_SUCCESS   0x01
 Action requested by the opcode write was completed successfully.
 
#define BT_MCS_OPC_NTF_NOT_SUPPORTED   0x02
 An invalid or unsupported opcode was used for the Media Control Point write.
 
#define BT_MCS_OPC_NTF_PLAYER_INACTIVE   0x03
 The Media Player State characteristic value is Inactive when the opcode is received or the result of the requested action of the opcode results in the Media Player State characteristic being set to Inactive.
 
#define BT_MCS_OPC_NTF_CANNOT_BE_COMPLETED   0x04
 The requested action of any Media Control Point write cannot be completed successfully because of a condition within the player.
 
Search control point type values

Reference: Media Control Service spec v1.0 section 3.20.2

#define BT_MCS_SEARCH_TYPE_TRACK_NAME   0x01
 Search for Track Name.
 
#define BT_MCS_SEARCH_TYPE_ARTIST_NAME   0x02
 Search for Artist Name.
 
#define BT_MCS_SEARCH_TYPE_ALBUM_NAME   0x03
 Search for Album Name.
 
#define BT_MCS_SEARCH_TYPE_GROUP_NAME   0x04
 Search for Group Name.
 
#define BT_MCS_SEARCH_TYPE_EARLIEST_YEAR   0x05
 Search for Earliest Year.
 
#define BT_MCS_SEARCH_TYPE_LATEST_YEAR   0x06
 Search for Latest Year.
 
#define BT_MCS_SEARCH_TYPE_GENRE   0x07
 Search for Genre.
 
#define BT_MCS_SEARCH_TYPE_ONLY_TRACKS   0x08
 Search for Tracks only.
 
#define BT_MCS_SEARCH_TYPE_ONLY_GROUPS   0x09
 Search for Groups only.
 
Search notification result codes

Reference: Media Control Service spec v1.0 section 3.20.2

#define BT_MCS_SCP_NTF_SUCCESS   0x01
 Search request was accepted; search has started.
 
#define BT_MCS_SCP_NTF_FAILURE   0x02
 Search request was invalid; no search started.
 
Group object object types

Reference: Media Control Service spec v1.0 section 4.4.1

#define BT_MCS_GROUP_OBJECT_TRACK_TYPE   0x00
 Group object type is track.
 
#define BT_MCS_GROUP_OBJECT_GROUP_TYPE   0x01
 Group object type is group.
 

Detailed Description

Bluetooth Media Control Service (MCS) APIs.