Zephyr API Documentation
3.7.0
A Scalable Open Source RTOS
|
Bluetooth Media Proxy APIs. More...
#include <stdint.h>
#include <stdbool.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/sys/util_macro.h>
#include "mcs.h"
Go to the source code of this file.
Data Structures | |
struct | mpl_cmd |
Media player command. More... | |
struct | mpl_cmd_ntf |
Media command notification. More... | |
struct | mpl_sci |
Search control item. More... | |
struct | mpl_search |
Search. More... | |
struct | media_proxy_ctrl_cbs |
Callbacks to a controller, from the media proxy. More... | |
struct | media_proxy_pl_calls |
Available calls in a player, that the media proxy can call. More... | |
Macros | |
#define | MEDIA_PROXY_OPCODES_SUPPORTED_LEN 4 |
Media player supported opcodes length. | |
Playback speed parameters | |
All values from -128 to 127 allowed, only some defined | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_MIN -128 |
Minimum playback speed, resulting in 25 % speed. | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_QUARTER -128 |
Quarter playback speed, resulting in 25 % speed. | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_HALF -64 |
Half playback speed, resulting in 50 % speed. | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_UNITY 0 |
Unity playback speed, resulting in 100 % speed. | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_DOUBLE 64 |
Double playback speed, resulting in 200 % speed. | |
#define | MEDIA_PROXY_PLAYBACK_SPEED_MAX 127 |
Max playback speed, resulting in 395.7 % speed (nearly 400 %) | |
Seeking speed factors | |
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 | MEDIA_PROXY_SEEKING_SPEED_FACTOR_MAX 64 |
Maximum seeking speed - Can be negated. | |
#define | MEDIA_PROXY_SEEKING_SPEED_FACTOR_MIN 4 |
Minimum seeking speed - Can be negated. | |
#define | MEDIA_PROXY_SEEKING_SPEED_FACTOR_ZERO 0 |
No seeking. | |
Playing orders | |
#define | MEDIA_PROXY_PLAYING_ORDER_SINGLE_ONCE 0x01 |
A single track is played once; there is no next track. | |
#define | MEDIA_PROXY_PLAYING_ORDER_SINGLE_REPEAT 0x02 |
A single track is played repeatedly; the next track is the current track. | |
#define | MEDIA_PROXY_PLAYING_ORDER_INORDER_ONCE 0x03 |
The tracks within a group are played once in track order. | |
#define | MEDIA_PROXY_PLAYING_ORDER_INORDER_REPEAT 0x04 |
The tracks within a group are played in track order repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDER_OLDEST_ONCE 0x05 |
The tracks within a group are played once only from the oldest first. | |
#define | MEDIA_PROXY_PLAYING_ORDER_OLDEST_REPEAT 0x06 |
The tracks within a group are played from the oldest first repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDER_NEWEST_ONCE 0x07 |
The tracks within a group are played once only from the newest first. | |
#define | MEDIA_PROXY_PLAYING_ORDER_NEWEST_REPEAT 0x08 |
The tracks within a group are played from the newest first repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDER_SHUFFLE_ONCE 0x09 |
The tracks within a group are played in random order once. | |
#define | MEDIA_PROXY_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 | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_SINGLE_ONCE BIT(0) |
A single track is played once; there is no next track. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_SINGLE_REPEAT BIT(1) |
A single track is played repeatedly; the next track is the current track. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_INORDER_ONCE BIT(2) |
The tracks within a group are played once in track order. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_INORDER_REPEAT BIT(3) |
The tracks within a group are played in track order repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_OLDEST_ONCE BIT(4) |
The tracks within a group are played once only from the oldest first. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_OLDEST_REPEAT BIT(5) |
The tracks within a group are played from the oldest first repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_NEWEST_ONCE BIT(6) |
The tracks within a group are played once only from the newest first. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_NEWEST_REPEAT BIT(7) |
The tracks within a group are played from the newest first repeatedly. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_SHUFFLE_ONCE BIT(8) |
The tracks within a group are played in random order once. | |
#define | MEDIA_PROXY_PLAYING_ORDERS_SUPPORTED_SHUFFLE_REPEAT BIT(9) |
The tracks within a group are played in random order repeatedly. | |
Media player states | |
#define | MEDIA_PROXY_STATE_INACTIVE 0x00 |
The current track is invalid, and no track has been selected. | |
#define | MEDIA_PROXY_STATE_PLAYING 0x01 |
The media player is playing the current track. | |
#define | MEDIA_PROXY_STATE_PAUSED 0x02 |
The current track is paused. | |
#define | MEDIA_PROXY_STATE_SEEKING 0x03 |
The current track is fast forwarding or fast rewinding. | |
#define | MEDIA_PROXY_STATE_LAST 0x04 |
Used internally as the last state value. | |
Media player command opcodes | |
#define | MEDIA_PROXY_OP_PLAY 0x01 |
Start playing the current track. | |
#define | MEDIA_PROXY_OP_PAUSE 0x02 |
Pause playing the current track. | |
#define | MEDIA_PROXY_OP_FAST_REWIND 0x03 |
Fast rewind the current track. | |
#define | MEDIA_PROXY_OP_FAST_FORWARD 0x04 |
Fast forward the current track. | |
#define | MEDIA_PROXY_OP_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 | MEDIA_PROXY_OP_MOVE_RELATIVE 0x10 |
Set a new current track position relative to the current track position. | |
#define | MEDIA_PROXY_OP_PREV_SEGMENT 0x20 |
Set the current track position to the starting position of the previous segment of the current track. | |
#define | MEDIA_PROXY_OP_NEXT_SEGMENT 0x21 |
Set the current track position to the starting position of the next segment of the current track. | |
#define | MEDIA_PROXY_OP_FIRST_SEGMENT 0x22 |
Set the current track position to the starting position of the first segment of the current track. | |
#define | MEDIA_PROXY_OP_LAST_SEGMENT 0x23 |
Set the current track position to the starting position of the last segment of the current track. | |
#define | MEDIA_PROXY_OP_GOTO_SEGMENT 0x24 |
Set the current track position to the starting position of the nth segment of the current track. | |
#define | MEDIA_PROXY_OP_PREV_TRACK 0x30 |
Set the current track to the previous track based on the playing order. | |
#define | MEDIA_PROXY_OP_NEXT_TRACK 0x31 |
Set the current track to the next track based on the playing order. | |
#define | MEDIA_PROXY_OP_FIRST_TRACK 0x32 |
Set the current track to the first track based on the playing order. | |
#define | MEDIA_PROXY_OP_LAST_TRACK 0x33 |
Set the current track to the last track based on the playing order. | |
#define | MEDIA_PROXY_OP_GOTO_TRACK 0x34 |
Set the current track to the nth track based on the playing order. | |
#define | MEDIA_PROXY_OP_PREV_GROUP 0x40 |
Set the current group to the previous group in the sequence of groups. | |
#define | MEDIA_PROXY_OP_NEXT_GROUP 0x41 |
Set the current group to the next group in the sequence of groups. | |
#define | MEDIA_PROXY_OP_FIRST_GROUP 0x42 |
Set the current group to the first group in the sequence of groups. | |
#define | MEDIA_PROXY_OP_LAST_GROUP 0x43 |
Set the current group to the last group in the sequence of groups. | |
#define | MEDIA_PROXY_OP_GOTO_GROUP 0x44 |
Set the current group to the nth group in the sequence of groups. | |
#define | MEDIA_PROXY_OP_SUP_PLAY BIT(0) |
Media player supported command opcodes. | |
#define | MEDIA_PROXY_OP_SUP_PAUSE BIT(1) |
Support the Pause opcode. | |
#define | MEDIA_PROXY_OP_SUP_FAST_REWIND BIT(2) |
Support the Fast Rewind opcode. | |
#define | MEDIA_PROXY_OP_SUP_FAST_FORWARD BIT(3) |
Support the Fast Forward opcode. | |
#define | MEDIA_PROXY_OP_SUP_STOP BIT(4) |
Support the Stop opcode. | |
#define | MEDIA_PROXY_OP_SUP_MOVE_RELATIVE BIT(5) |
Support the Move Relative opcode. | |
#define | MEDIA_PROXY_OP_SUP_PREV_SEGMENT BIT(6) |
Support the Previous Segment opcode. | |
#define | MEDIA_PROXY_OP_SUP_NEXT_SEGMENT BIT(7) |
Support the Next Segment opcode. | |
#define | MEDIA_PROXY_OP_SUP_FIRST_SEGMENT BIT(8) |
Support the First Segment opcode. | |
#define | MEDIA_PROXY_OP_SUP_LAST_SEGMENT BIT(9) |
Support the Last Segment opcode. | |
#define | MEDIA_PROXY_OP_SUP_GOTO_SEGMENT BIT(10) |
Support the Goto Segment opcode. | |
#define | MEDIA_PROXY_OP_SUP_PREV_TRACK BIT(11) |
Support the Previous Track opcode. | |
#define | MEDIA_PROXY_OP_SUP_NEXT_TRACK BIT(12) |
Support the Next Track opcode. | |
#define | MEDIA_PROXY_OP_SUP_FIRST_TRACK BIT(13) |
Support the First Track opcode. | |
#define | MEDIA_PROXY_OP_SUP_LAST_TRACK BIT(14) |
Support the Last Track opcode. | |
#define | MEDIA_PROXY_OP_SUP_GOTO_TRACK BIT(15) |
Support the Goto Track opcode. | |
#define | MEDIA_PROXY_OP_SUP_PREV_GROUP BIT(16) |
Support the Previous Group opcode. | |
#define | MEDIA_PROXY_OP_SUP_NEXT_GROUP BIT(17) |
Support the Next Group opcode. | |
#define | MEDIA_PROXY_OP_SUP_FIRST_GROUP BIT(18) |
Support the First Group opcode. | |
#define | MEDIA_PROXY_OP_SUP_LAST_GROUP BIT(19) |
Support the Last Group opcode. | |
#define | MEDIA_PROXY_OP_SUP_GOTO_GROUP BIT(20) |
Support the Goto Group opcode. | |
Media player command result codes | |
#define | MEDIA_PROXY_CMD_SUCCESS 0x01 |
Action requested by the opcode write was completed successfully. | |
#define | MEDIA_PROXY_CMD_NOT_SUPPORTED 0x02 |
An invalid or unsupported opcode was used for the Media Control Point write. | |
#define | MEDIA_PROXY_CMD_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 | MEDIA_PROXY_CMD_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 operation type values | |
#define | MEDIA_PROXY_SEARCH_TYPE_TRACK_NAME 0x01 |
Search for Track Name. | |
#define | MEDIA_PROXY_SEARCH_TYPE_ARTIST_NAME 0x02 |
Search for Artist Name. | |
#define | MEDIA_PROXY_SEARCH_TYPE_ALBUM_NAME 0x03 |
Search for Album Name. | |
#define | MEDIA_PROXY_SEARCH_TYPE_GROUP_NAME 0x04 |
Search for Group Name. | |
#define | MEDIA_PROXY_SEARCH_TYPE_EARLIEST_YEAR 0x05 |
Search for Earliest Year. | |
#define | MEDIA_PROXY_SEARCH_TYPE_LATEST_YEAR 0x06 |
Search for Latest Year. | |
#define | MEDIA_PROXY_SEARCH_TYPE_GENRE 0x07 |
Search for Genre. | |
#define | MEDIA_PROXY_SEARCH_TYPE_ONLY_TRACKS 0x08 |
Search for Tracks only. | |
#define | MEDIA_PROXY_SEARCH_TYPE_ONLY_GROUPS 0x09 |
Search for Groups only. | |
Search notification result codes | |
#define | MEDIA_PROXY_SEARCH_SUCCESS 0x01 |
Search request was accepted; search has started. | |
#define | MEDIA_PROXY_SEARCH_FAILURE 0x02 |
Search request was invalid; no search started. | |
Group object object types | |
#define | MEDIA_PROXY_GROUP_OBJECT_TRACK_TYPE 0x00 |
Group object type is track. | |
#define | MEDIA_PROXY_GROUP_OBJECT_GROUP_TYPE 0x01 |
Group object type is group. | |
Functions | |
int | media_proxy_ctrl_register (struct media_proxy_ctrl_cbs *ctrl_cbs) |
Register a controller with the media_proxy. | |
int | media_proxy_ctrl_discover_player (struct bt_conn *conn) |
Discover a remote media player. | |
int | media_proxy_ctrl_get_player_name (struct media_player *player) |
Read Media Player Name. | |
int | media_proxy_ctrl_get_icon_id (struct media_player *player) |
Read Icon Object ID. | |
int | media_proxy_ctrl_get_icon_url (struct media_player *player) |
Read Icon URL. | |
int | media_proxy_ctrl_get_track_title (struct media_player *player) |
Read Track Title. | |
int | media_proxy_ctrl_get_track_duration (struct media_player *player) |
Read Track Duration. | |
int | media_proxy_ctrl_get_track_position (struct media_player *player) |
Read Track Position. | |
int | media_proxy_ctrl_set_track_position (struct media_player *player, int32_t position) |
Set Track Position. | |
int | media_proxy_ctrl_get_playback_speed (struct media_player *player) |
Get Playback Speed. | |
int | media_proxy_ctrl_set_playback_speed (struct media_player *player, int8_t speed) |
Set Playback Speed. | |
int | media_proxy_ctrl_get_seeking_speed (struct media_player *player) |
Get Seeking Speed. | |
int | media_proxy_ctrl_get_track_segments_id (struct media_player *player) |
Read Current Track Segments Object ID. | |
int | media_proxy_ctrl_get_current_track_id (struct media_player *player) |
Read Current Track Object ID. | |
int | media_proxy_ctrl_set_current_track_id (struct media_player *player, uint64_t id) |
Set Current Track Object ID. | |
int | media_proxy_ctrl_get_next_track_id (struct media_player *player) |
Read Next Track Object ID. | |
int | media_proxy_ctrl_set_next_track_id (struct media_player *player, uint64_t id) |
Set Next Track Object ID. | |
int | media_proxy_ctrl_get_parent_group_id (struct media_player *player) |
Read Parent Group Object ID. | |
int | media_proxy_ctrl_get_current_group_id (struct media_player *player) |
Read Current Group Object ID. | |
int | media_proxy_ctrl_set_current_group_id (struct media_player *player, uint64_t id) |
Set Current Group Object ID. | |
int | media_proxy_ctrl_get_playing_order (struct media_player *player) |
Read Playing Order. | |
int | media_proxy_ctrl_set_playing_order (struct media_player *player, uint8_t order) |
Set Playing Order. | |
int | media_proxy_ctrl_get_playing_orders_supported (struct media_player *player) |
Read Playing Orders Supported. | |
int | media_proxy_ctrl_get_media_state (struct media_player *player) |
Read Media State. | |
int | media_proxy_ctrl_send_command (struct media_player *player, const struct mpl_cmd *command) |
Send Command. | |
int | media_proxy_ctrl_get_commands_supported (struct media_player *player) |
Read Commands Supported. | |
int | media_proxy_ctrl_send_search (struct media_player *player, const struct mpl_search *search) |
Set Search. | |
int | media_proxy_ctrl_get_search_results_id (struct media_player *player) |
Read Search Results Object ID. | |
uint8_t | media_proxy_ctrl_get_content_ctrl_id (struct media_player *player) |
Read Content Control ID. | |
int | media_proxy_pl_register (struct media_proxy_pl_calls *pl_calls) |
Register a player with the media proxy. | |
int | media_proxy_pl_init (void) |
Initialize player. | |
struct bt_ots * | bt_mcs_get_ots (void) |
Get the pointer of the Object Transfer Service used by the Media Control Service. | |
void | media_proxy_pl_name_cb (const char *name) |
Player name changed callback. | |
void | media_proxy_pl_icon_url_cb (const char *url) |
Player icon URL changed callback. | |
void | media_proxy_pl_track_changed_cb (void) |
Track changed callback. | |
void | media_proxy_pl_track_title_cb (char *title) |
Track title callback. | |
void | media_proxy_pl_track_duration_cb (int32_t duration) |
Track duration callback. | |
void | media_proxy_pl_track_position_cb (int32_t position) |
Track position callback. | |
void | media_proxy_pl_playback_speed_cb (int8_t speed) |
Playback speed callback. | |
void | media_proxy_pl_seeking_speed_cb (int8_t speed) |
Seeking speed callback. | |
void | media_proxy_pl_current_track_id_cb (uint64_t id) |
Current track object ID callback. | |
void | media_proxy_pl_next_track_id_cb (uint64_t id) |
Next track object ID callback. | |
void | media_proxy_pl_parent_group_id_cb (uint64_t id) |
Parent group object ID callback. | |
void | media_proxy_pl_current_group_id_cb (uint64_t id) |
Current group object ID callback. | |
void | media_proxy_pl_playing_order_cb (uint8_t order) |
Playing order callback. | |
void | media_proxy_pl_media_state_cb (uint8_t state) |
Media state callback. | |
void | media_proxy_pl_command_cb (const struct mpl_cmd_ntf *cmd_ntf) |
Command callback. | |
void | media_proxy_pl_commands_supported_cb (uint32_t opcodes) |
Commands supported callback. | |
void | media_proxy_pl_search_cb (uint8_t result_code) |
Search callback. | |
void | media_proxy_pl_search_results_id_cb (uint64_t id) |
Search Results object ID callback. | |
Bluetooth Media Proxy APIs.