| /** |
| * @brief Bluetooth Media Control Client (MCC) interface |
| * |
| * Updated to the Media Control Profile specification revision 1.0 |
| * |
| * @defgroup bt_gatt_mcc Media Control Client (MCC) |
| * |
| * @ingroup bluetooth |
| * @{ |
| * |
| * [Experimental] Users should note that the APIs can change |
| * as a part of ongoing development. |
| */ |
| |
| /* |
| * Copyright (c) 2019 - 2021 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC_ |
| #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC_ |
| |
| #include <zephyr/types.h> |
| #include <bluetooth/conn.h> |
| #include <net/buf.h> |
| #include <bluetooth/audio/media_proxy.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /**** Callback functions ******************************************************/ |
| |
| /** |
| * @brief Callback function for bt_mcc_discover_mcs() |
| * |
| * Called when a media control server is discovered |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| */ |
| typedef void (*bt_mcc_discover_mcs_cb)(struct bt_conn *conn, int err); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_player_name() |
| * |
| * Called when the player name is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param name Player name |
| */ |
| typedef void (*bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const char *name); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Callback function for bt_mcc_read_icon_obj_id() |
| * |
| * Called when the icon object ID is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param icon_id The ID of the Icon Object. This is a UINT48 in a uint64_t |
| */ |
| typedef void (*bt_mcc_read_icon_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Callback function for bt_mcc_read_icon_url() |
| * |
| * Called when the icon URL is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param icon_url The URL of the Icon |
| */ |
| typedef void (*bt_mcc_read_icon_url_cb)(struct bt_conn *conn, int err, const char *icon_url); |
| |
| /** |
| * @brief Callback function for track changed notifications |
| * |
| * Called when a track change is notified. |
| * |
| * The track changed characteristic is a special case. It can not be read or |
| * set, it can only be notified. |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| */ |
| typedef void (*bt_mcc_track_changed_ntf_cb)(struct bt_conn *conn, int err); |
| |
| |
| /** |
| * @brief Callback function for bt_mcc_read_track_title() |
| * |
| * Called when the track title is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param title The title of the track |
| */ |
| typedef void (*bt_mcc_read_track_title_cb)(struct bt_conn *conn, int err, const char *title); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_track_duration() |
| * |
| * Called when the track duration is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param dur The duration of the track |
| */ |
| typedef void (*bt_mcc_read_track_duration_cb)(struct bt_conn *conn, int err, int32_t dur); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_track_position() |
| * |
| * Called when the track position is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param pos The Track Position |
| */ |
| typedef void (*bt_mcc_read_track_position_cb)(struct bt_conn *conn, int err, int32_t pos); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_track_position() |
| * |
| * Called when the track position is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param pos The Track Position set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_track_position_cb)(struct bt_conn *conn, int err, int32_t pos); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_playback_speed() |
| * |
| * Called when the playback speed is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param speed The Playback Speed |
| */ |
| typedef void (*bt_mcc_read_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_playback_speed() |
| * |
| * Called when the playback speed is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param speed The Playback Speed set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_seeking_speed() |
| * |
| * Called when the seeking speed is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param speed The Seeking Speed |
| */ |
| typedef void (*bt_mcc_read_seeking_speed_cb)(struct bt_conn *conn, int err, int8_t speed); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Callback function for bt_mcc_read_segments_obj_id() |
| * |
| * Called when the track segments object ID is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Track Segments Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_segments_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_current_track_obj_id() |
| * |
| * Called when the current track object ID is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Current Track Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_current_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_current_track_obj_id() |
| * |
| * Called when the current track object ID is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Object ID (UINT48) set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_current_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_next_track_obj_id_obj() |
| * |
| * Called when the next track object ID is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Next Track Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_next_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_next_track_obj_id() |
| * |
| * Called when the next track object ID is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Object ID (UINT48) set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_next_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_parent_group_obj_id() |
| * |
| * Called when the parent group object ID is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Parent Group Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_parent_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_current_group_obj_id() |
| * |
| * Called when the current group object ID is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Current Group Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_current_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_current_group_obj_id() |
| * |
| * Called when the current group object ID is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Object ID (UINT48) set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_current_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t obj_id); |
| |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Callback function for bt_mcc_read_playing_order() |
| * |
| * Called when the playing order is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param order The playback order |
| */ |
| typedef void (*bt_mcc_read_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order); |
| |
| /** |
| * @brief Callback function for bt_mcc_set_playing_order() |
| * |
| * Called when the playing order is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param order The Playing Order set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_set_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_playing_orders_supported() |
| * |
| * Called when the supported playing orders are read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param orders The playing orders supported (bitmap) |
| */ |
| typedef void (*bt_mcc_read_playing_orders_supported_cb)(struct bt_conn *conn, int err, |
| uint16_t orders); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_media_state() |
| * |
| * Called when the media state is read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param state The Media State |
| */ |
| typedef void (*bt_mcc_read_media_state_cb)(struct bt_conn *conn, int err, uint8_t state); |
| |
| /** |
| * @brief Callback function for bt_mcc_send_cmd() |
| * |
| * Called when a command is sent, i.e. when the media control point is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param cmd The command sent |
| */ |
| typedef void (*bt_mcc_send_cmd_cb)(struct bt_conn *conn, int err, struct mpl_cmd cmd); |
| |
| /** |
| * @brief Callback function for command notifications |
| * |
| * Called when the media control point is notified |
| * |
| * Notifications for commands (i.e. for writes to the media control point) use a |
| * different parameter structure than what is used for sending commands (writing |
| * to the media control point) |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param ntf The command notification |
| */ |
| typedef void (*bt_mcc_cmd_ntf_cb)(struct bt_conn *conn, int err, struct mpl_cmd_ntf ntf); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_opcodes_supported() |
| * |
| * Called when the supported opcodes (commands) are read or notified |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param opcodes The supported opcodes |
| */ |
| typedef void (*bt_mcc_read_opcodes_supported_cb)(struct bt_conn *conn, int err, |
| uint32_t opcodes); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Callback function for bt_mcc_send_search() |
| * |
| * Called when a search is sent, i.e. when the search control point is set |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param search The search set (or attempted to set) |
| */ |
| typedef void (*bt_mcc_send_search_cb)(struct bt_conn *conn, int err, |
| struct mpl_search search); |
| |
| /** |
| * @brief Callback function for search notifications |
| * |
| * Called when the search control point is notified |
| * |
| * Notifications for searches (i.e. for writes to the search control point) use a |
| * different parameter structure than what is used for sending searches (writing |
| * to the search control point) |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param ntf The search notification |
| */ |
| typedef void (*bt_mcc_search_ntf_cb)(struct bt_conn *conn, int err, |
| uint8_t result_code); |
| |
| /** |
| * @brief Callback function for bt_mcc_read_search_results_obj_id() |
| * |
| * Called when the search results object ID is read or notified |
| * |
| * Note that the Search Results Object ID value may be zero, in case the |
| * characteristic does not exist on the server. (This will be the case if |
| * there has not been a successful search.) |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param id The Search Results Object ID (UINT48) |
| */ |
| typedef void (*bt_mcc_read_search_results_obj_id_cb)(struct bt_conn *conn, |
| int err, uint64_t id); |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Callback function for bt_mcc_read_content_control_id() |
| * |
| * Called when the content control ID is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param ccid The Content Control ID |
| */ |
| typedef void (*bt_mcc_read_content_control_id_cb)(struct bt_conn *conn, |
| int err, uint8_t ccid); |
| #ifdef CONFIG_BT_OTC |
| /**** Callback functions for the included Object Transfer service *************/ |
| |
| /** |
| * @brief Callback function for object selected |
| * |
| * Called when an object is selected |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| */ |
| typedef void (*bt_mcc_otc_obj_selected_cb)(struct bt_conn *conn, int err); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_object_meatadata() |
| * |
| * Called when object metadata is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| */ |
| typedef void (*bt_mcc_otc_obj_metadata_cb)(struct bt_conn *conn, int err); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_icon_object() |
| * |
| * Called when the icon object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_icon_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_track_segments_object() |
| * |
| * Called when the track segments object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_track_segments_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_current_track_object() |
| * |
| * Called when the current track object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_current_track_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_next_track_object() |
| * |
| * Called when the next track object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_next_track_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_parent_group_object() |
| * |
| * Called when the parent group object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_parent_group_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| /** |
| * @brief Callback function for bt_mcc_otc_read_current_group_object() |
| * |
| * Called when the current group object is read |
| * |
| * @param conn The connection that was used to initialise the media control client |
| * @param err Error value. 0 on success, GATT error or errno on fail |
| * @param buf Buffer containing the object contents |
| * |
| * If err is EMSGSIZE, the object contents have been truncated. |
| */ |
| typedef void (*bt_mcc_otc_read_current_group_object_cb)(struct bt_conn *conn, int err, |
| struct net_buf_simple *buf); |
| |
| #endif /* CONFIG_BT_OTC */ |
| |
| |
| /** |
| * @brief Media control client callbacks |
| */ |
| struct bt_mcc_cb { |
| bt_mcc_discover_mcs_cb discover_mcs; |
| bt_mcc_read_player_name_cb read_player_name; |
| #ifdef CONFIG_BT_OTC |
| bt_mcc_read_icon_obj_id_cb read_icon_obj_id; |
| #endif /* CONFIG_BT_OTC */ |
| bt_mcc_read_icon_url_cb read_icon_url; |
| bt_mcc_track_changed_ntf_cb track_changed_ntf; |
| bt_mcc_read_track_title_cb read_track_title; |
| bt_mcc_read_track_duration_cb read_track_duration; |
| bt_mcc_read_track_position_cb read_track_position; |
| bt_mcc_set_track_position_cb set_track_position; |
| bt_mcc_read_playback_speed_cb read_playback_speed; |
| bt_mcc_set_playback_speed_cb set_playback_speed; |
| bt_mcc_read_seeking_speed_cb read_seeking_speed; |
| #ifdef CONFIG_BT_OTC |
| bt_mcc_read_segments_obj_id_cb read_segments_obj_id; |
| bt_mcc_read_current_track_obj_id_cb read_current_track_obj_id; |
| bt_mcc_set_current_track_obj_id_cb set_current_track_obj_id; |
| bt_mcc_read_next_track_obj_id_cb read_next_track_obj_id; |
| bt_mcc_set_next_track_obj_id_cb set_next_track_obj_id; |
| bt_mcc_read_current_group_obj_id_cb read_current_group_obj_id; |
| bt_mcc_set_current_group_obj_id_cb set_current_group_obj_id; |
| bt_mcc_read_parent_group_obj_id_cb read_parent_group_obj_id; |
| #endif /* CONFIG_BT_OTC */ |
| bt_mcc_read_playing_order_cb read_playing_order; |
| bt_mcc_set_playing_order_cb set_playing_order; |
| bt_mcc_read_playing_orders_supported_cb read_playing_orders_supported; |
| bt_mcc_read_media_state_cb read_media_state; |
| bt_mcc_send_cmd_cb send_cmd; |
| bt_mcc_cmd_ntf_cb cmd_ntf; |
| bt_mcc_read_opcodes_supported_cb read_opcodes_supported; |
| #ifdef CONFIG_BT_OTC |
| bt_mcc_send_search_cb send_search; |
| bt_mcc_search_ntf_cb search_ntf; |
| bt_mcc_read_search_results_obj_id_cb read_search_results_obj_id; |
| #endif /* CONFIG_BT_OTC */ |
| bt_mcc_read_content_control_id_cb read_content_control_id; |
| #ifdef CONFIG_BT_OTC |
| bt_mcc_otc_obj_selected_cb otc_obj_selected; |
| bt_mcc_otc_obj_metadata_cb otc_obj_metadata; |
| bt_mcc_otc_read_icon_object_cb otc_icon_object; |
| bt_mcc_otc_read_track_segments_object_cb otc_track_segments_object; |
| bt_mcc_otc_read_current_track_object_cb otc_current_track_object; |
| bt_mcc_otc_read_next_track_object_cb otc_next_track_object; |
| bt_mcc_otc_read_current_group_object_cb otc_current_group_object; |
| bt_mcc_otc_read_parent_group_object_cb otc_parent_group_object; |
| #endif /* CONFIG_BT_OTC */ |
| }; |
| |
| /**** Functions ***************************************************************/ |
| |
| /** |
| * @brief Initialize Media Control Client |
| * |
| * @param cb Callbacks to be used |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_init(struct bt_mcc_cb *cb); |
| |
| |
| /** |
| * @brief Discover Media Control Service |
| * |
| * Discover Media Control Service (MCS) on the server given by the connection |
| * Optionally subscribe to notifications. |
| * |
| * Shall be called once, after media control client initialization and before |
| * using other media control client functionality. |
| * |
| * @param conn Connection to the peer device |
| * @param subscribe Whether to subscribe to notifications |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_discover_mcs(struct bt_conn *conn, bool subscribe); |
| |
| /** |
| * @brief Read Media Player Name |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_player_name(struct bt_conn *conn); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Read Icon Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_icon_obj_id(struct bt_conn *conn); |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Read Icon Object URL |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_icon_url(struct bt_conn *conn); |
| |
| /** |
| * @brief Read Track Title |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_track_title(struct bt_conn *conn); |
| |
| /** |
| * @brief Read Track Duration |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_track_duration(struct bt_conn *conn); |
| |
| /** |
| * @brief Read Track Position |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_track_position(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Track position |
| * |
| * @param conn Connection to the peer device |
| * @param pos Track position |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos); |
| |
| /** |
| * @brief Read Playback speed |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_playback_speed(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Playback Speed |
| * |
| * @param conn Connection to the peer device |
| * @param speed Playback speed |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed); |
| |
| /** |
| * @brief Read Seeking speed |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_seeking_speed(struct bt_conn *conn); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Read Track Segments Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_segments_obj_id(struct bt_conn *conn); |
| |
| /** |
| * @brief Read Current Track Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_current_track_obj_id(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Current Track Object ID |
| * |
| * Set the Current Track to the the track given by the @p id parameter |
| * |
| * @param conn Connection to the peer device |
| * @param id Object Transfer Service ID (UINT48) of the track to set as the current track |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_current_track_obj_id(struct bt_conn *conn, uint64_t id); |
| |
| /** |
| * @brief Read Next Track Object ID |
| * |
| * @param conn Connection to the peer device |
| * @param id Object Transfer Service ID (UINT48) of the track to set as the current track |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_next_track_obj_id(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Next Track Object ID |
| * |
| * Set the Next Track to the the track given by the @p id parameter |
| * |
| * @param conn Connection to the peer device |
| * @param id Object Transfer Service ID (UINT48) of the track to set as the next track |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_next_track_obj_id(struct bt_conn *conn, uint64_t id); |
| |
| /** |
| * @brief Read Current Group Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_current_group_obj_id(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Current Group Object ID |
| * |
| * Set the Current Group to the the group given by the @p id parameter |
| * |
| * @param conn Connection to the peer device |
| * @param id Object Transfer Service ID (UINT48) of the group to set as the current group |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_current_group_obj_id(struct bt_conn *conn, uint64_t id); |
| |
| /** |
| * @brief Read Parent Group Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_parent_group_obj_id(struct bt_conn *conn); |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Read Playing Order |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_playing_order(struct bt_conn *conn); |
| |
| /** |
| * @brief Set Playing Order |
| * |
| * @param conn Connection to the peer device |
| * @param order Playing order |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order); |
| |
| /** |
| * @brief Read Playing Orders Supported |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_playing_orders_supported(struct bt_conn *conn); |
| |
| /** |
| * @brief Read Media State |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_media_state(struct bt_conn *conn); |
| |
| /** |
| * @brief Send a command |
| * |
| * Write a command (e.g. "play", "pause") to the server's media control point. |
| * |
| * @param conn Connection to the peer device |
| * @param cmd The command to send |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_send_cmd(struct bt_conn *conn, struct mpl_cmd cmd); |
| |
| /** |
| * @brief Read Opcodes Supported |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_opcodes_supported(struct bt_conn *conn); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Send a Search command |
| * |
| * Write a search to the server's search control point. |
| * |
| * @param conn Connection to the peer device |
| * @param search The search |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_send_search(struct bt_conn *conn, struct mpl_search search); |
| |
| /** |
| * @brief Search Results Group Object ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_search_results_obj_id(struct bt_conn *conn); |
| #endif /* CONFIG_BT_OTC */ |
| |
| /** |
| * @brief Read Content Control ID |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_read_content_control_id(struct bt_conn *conn); |
| |
| #ifdef CONFIG_BT_OTC |
| /** |
| * @brief Read the current object metadata |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_object_metadata(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Icon Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_icon_object(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Track Segments Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_track_segments_object(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Current Track Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_current_track_object(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Next Track Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_next_track_object(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Current Group Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_current_group_object(struct bt_conn *conn); |
| |
| /** |
| * @brief Read the Parent Group Object |
| * |
| * @param conn Connection to the peer device |
| * |
| * @return 0 if success, errno on failure. |
| */ |
| int bt_mcc_otc_read_parent_group_object(struct bt_conn *conn); |
| |
| #if defined(CONFIG_BT_MCC_SHELL) |
| struct bt_otc_instance_t *bt_mcc_otc_inst(void); |
| #endif /* defined(CONFIG_BT_MCC_SHELL) */ |
| #endif /* CONFIG_BT_OTC */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| /** |
| * @} |
| */ |
| |
| #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC__ */ |