Bluetooth: Audio: MCC optional procedures actually optional

This change makes the optional procedures in the Media Control Client
optional and configurable through Kconfig.

Signed-off-by: Ping Wang <pinw@demant.com>
This commit is contained in:
Ping Wang 2024-01-30 07:38:35 +01:00 committed by Carles Cufí
commit 2f138fad5f
7 changed files with 543 additions and 54 deletions

View file

@ -54,7 +54,6 @@ typedef void (*bt_mcc_discover_mcs_cb)(struct bt_conn *conn, int err);
*/ */
typedef void (*bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const char *name); typedef void (*bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const char *name);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Callback function for bt_mcc_read_icon_obj_id() * @brief Callback function for bt_mcc_read_icon_obj_id()
* *
@ -64,8 +63,7 @@ typedef void (*bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const
* @param err Error value. 0 on success, GATT error or errno on fail * @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 * @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); typedef void (*bt_mcc_read_icon_obj_id_cb)(struct bt_conn *conn, int err, uint64_t icon_id);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Callback function for bt_mcc_read_icon_url() * @brief Callback function for bt_mcc_read_icon_url()
@ -169,7 +167,6 @@ typedef void (*bt_mcc_set_playback_speed_cb)(struct bt_conn *conn, int err, int8
*/ */
typedef void (*bt_mcc_read_seeking_speed_cb)(struct bt_conn *conn, int err, int8_t speed); typedef void (*bt_mcc_read_seeking_speed_cb)(struct bt_conn *conn, int err, int8_t speed);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Callback function for bt_mcc_read_segments_obj_id() * @brief Callback function for bt_mcc_read_segments_obj_id()
* *
@ -254,12 +251,10 @@ typedef void (*bt_mcc_read_current_group_obj_id_cb)(struct bt_conn *conn, int er
* *
* @param conn The connection that was used to initialise the media control client * @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 err Error value. 0 on success, GATT error or errno on fail
* @param id The Object ID (UINT48) set (or attempted to set) * @param obj_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); typedef void (*bt_mcc_set_current_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t obj_id);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Callback function for bt_mcc_read_playing_order() * @brief Callback function for bt_mcc_read_playing_order()
* *
@ -343,7 +338,6 @@ typedef void (*bt_mcc_cmd_ntf_cb)(struct bt_conn *conn, int err, const struct mp
typedef void (*bt_mcc_read_opcodes_supported_cb)(struct bt_conn *conn, int err, typedef void (*bt_mcc_read_opcodes_supported_cb)(struct bt_conn *conn, int err,
uint32_t opcodes); uint32_t opcodes);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Callback function for bt_mcc_send_search() * @brief Callback function for bt_mcc_send_search()
* *
@ -367,7 +361,7 @@ typedef void (*bt_mcc_send_search_cb)(struct bt_conn *conn, int err,
* *
* @param conn The connection that was used to initialise the media control client * @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 err Error value. 0 on success, GATT error or errno on fail
* @param ntf The search notification * @param result_code The search notification
*/ */
typedef void (*bt_mcc_search_ntf_cb)(struct bt_conn *conn, int err, typedef void (*bt_mcc_search_ntf_cb)(struct bt_conn *conn, int err,
uint8_t result_code); uint8_t result_code);
@ -387,7 +381,6 @@ typedef void (*bt_mcc_search_ntf_cb)(struct bt_conn *conn, int err,
*/ */
typedef void (*bt_mcc_read_search_results_obj_id_cb)(struct bt_conn *conn, typedef void (*bt_mcc_read_search_results_obj_id_cb)(struct bt_conn *conn,
int err, uint64_t id); int err, uint64_t id);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Callback function for bt_mcc_read_content_control_id() * @brief Callback function for bt_mcc_read_content_control_id()
@ -400,7 +393,7 @@ typedef void (*bt_mcc_read_search_results_obj_id_cb)(struct bt_conn *conn,
*/ */
typedef void (*bt_mcc_read_content_control_id_cb)(struct bt_conn *conn, typedef void (*bt_mcc_read_content_control_id_cb)(struct bt_conn *conn,
int err, uint8_t ccid); int err, uint8_t ccid);
#ifdef CONFIG_BT_OTS_CLIENT
/**** Callback functions for the included Object Transfer service *************/ /**** Callback functions for the included Object Transfer service *************/
/** /**
@ -507,8 +500,6 @@ typedef void (*bt_mcc_otc_read_parent_group_object_cb)(struct bt_conn *conn, int
typedef void (*bt_mcc_otc_read_current_group_object_cb)(struct bt_conn *conn, int err, typedef void (*bt_mcc_otc_read_current_group_object_cb)(struct bt_conn *conn, int err,
struct net_buf_simple *buf); struct net_buf_simple *buf);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Media control client callbacks * @brief Media control client callbacks
@ -519,15 +510,31 @@ struct bt_mcc_cb {
#ifdef CONFIG_BT_OTS_CLIENT #ifdef CONFIG_BT_OTS_CLIENT
bt_mcc_read_icon_obj_id_cb read_icon_obj_id; bt_mcc_read_icon_obj_id_cb read_icon_obj_id;
#endif /* CONFIG_BT_OTS_CLIENT */ #endif /* CONFIG_BT_OTS_CLIENT */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
bt_mcc_read_icon_url_cb read_icon_url; bt_mcc_read_icon_url_cb read_icon_url;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
bt_mcc_track_changed_ntf_cb track_changed_ntf; bt_mcc_track_changed_ntf_cb track_changed_ntf;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
bt_mcc_read_track_title_cb read_track_title; bt_mcc_read_track_title_cb read_track_title;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
bt_mcc_read_track_duration_cb read_track_duration; bt_mcc_read_track_duration_cb read_track_duration;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
bt_mcc_read_track_position_cb read_track_position; bt_mcc_read_track_position_cb read_track_position;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
bt_mcc_set_track_position_cb set_track_position; bt_mcc_set_track_position_cb set_track_position;
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
bt_mcc_read_playback_speed_cb read_playback_speed; bt_mcc_read_playback_speed_cb read_playback_speed;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
bt_mcc_set_playback_speed_cb set_playback_speed; bt_mcc_set_playback_speed_cb set_playback_speed;
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
bt_mcc_read_seeking_speed_cb read_seeking_speed; bt_mcc_read_seeking_speed_cb read_seeking_speed;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_OTS_CLIENT #ifdef CONFIG_BT_OTS_CLIENT
bt_mcc_read_segments_obj_id_cb read_segments_obj_id; 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_read_current_track_obj_id_cb read_current_track_obj_id;
@ -538,19 +545,33 @@ struct bt_mcc_cb {
bt_mcc_set_current_group_obj_id_cb set_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; bt_mcc_read_parent_group_obj_id_cb read_parent_group_obj_id;
#endif /* CONFIG_BT_OTS_CLIENT */ #endif /* CONFIG_BT_OTS_CLIENT */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
bt_mcc_read_playing_order_cb read_playing_order; bt_mcc_read_playing_order_cb read_playing_order;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
bt_mcc_set_playing_order_cb set_playing_order; bt_mcc_set_playing_order_cb set_playing_order;
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
bt_mcc_read_playing_orders_supported_cb read_playing_orders_supported; bt_mcc_read_playing_orders_supported_cb read_playing_orders_supported;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
bt_mcc_read_media_state_cb read_media_state; bt_mcc_read_media_state_cb read_media_state;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
bt_mcc_send_cmd_cb send_cmd; bt_mcc_send_cmd_cb send_cmd;
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
bt_mcc_cmd_ntf_cb cmd_ntf; bt_mcc_cmd_ntf_cb cmd_ntf;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
bt_mcc_read_opcodes_supported_cb read_opcodes_supported; bt_mcc_read_opcodes_supported_cb read_opcodes_supported;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_OTS_CLIENT #ifdef CONFIG_BT_OTS_CLIENT
bt_mcc_send_search_cb send_search; bt_mcc_send_search_cb send_search;
bt_mcc_search_ntf_cb search_ntf; bt_mcc_search_ntf_cb search_ntf;
bt_mcc_read_search_results_obj_id_cb read_search_results_obj_id; bt_mcc_read_search_results_obj_id_cb read_search_results_obj_id;
#endif /* CONFIG_BT_OTS_CLIENT */ #endif /* CONFIG_BT_OTS_CLIENT */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
bt_mcc_read_content_control_id_cb read_content_control_id; bt_mcc_read_content_control_id_cb read_content_control_id;
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_OTS_CLIENT #ifdef CONFIG_BT_OTS_CLIENT
bt_mcc_otc_obj_selected_cb otc_obj_selected; bt_mcc_otc_obj_selected_cb otc_obj_selected;
bt_mcc_otc_obj_metadata_cb otc_obj_metadata; bt_mcc_otc_obj_metadata_cb otc_obj_metadata;
@ -600,7 +621,6 @@ int bt_mcc_discover_mcs(struct bt_conn *conn, bool subscribe);
*/ */
int bt_mcc_read_player_name(struct bt_conn *conn); int bt_mcc_read_player_name(struct bt_conn *conn);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Read Icon Object ID * @brief Read Icon Object ID
* *
@ -609,7 +629,6 @@ int bt_mcc_read_player_name(struct bt_conn *conn);
* @return 0 if success, errno on failure. * @return 0 if success, errno on failure.
*/ */
int bt_mcc_read_icon_obj_id(struct bt_conn *conn); int bt_mcc_read_icon_obj_id(struct bt_conn *conn);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Read Icon Object URL * @brief Read Icon Object URL
@ -685,7 +704,6 @@ int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed);
*/ */
int bt_mcc_read_seeking_speed(struct bt_conn *conn); int bt_mcc_read_seeking_speed(struct bt_conn *conn);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Read Track Segments Object ID * @brief Read Track Segments Object ID
* *
@ -720,7 +738,6 @@ int bt_mcc_set_current_track_obj_id(struct bt_conn *conn, uint64_t id);
* @brief Read Next Track Object ID * @brief Read Next Track Object ID
* *
* @param conn Connection to the peer device * @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. * @return 0 if success, errno on failure.
*/ */
@ -767,7 +784,6 @@ int bt_mcc_set_current_group_obj_id(struct bt_conn *conn, uint64_t id);
* @return 0 if success, errno on failure. * @return 0 if success, errno on failure.
*/ */
int bt_mcc_read_parent_group_obj_id(struct bt_conn *conn); int bt_mcc_read_parent_group_obj_id(struct bt_conn *conn);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Read Playing Order * @brief Read Playing Order
@ -827,7 +843,6 @@ int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd);
*/ */
int bt_mcc_read_opcodes_supported(struct bt_conn *conn); int bt_mcc_read_opcodes_supported(struct bt_conn *conn);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Send a Search command * @brief Send a Search command
* *
@ -848,7 +863,6 @@ int bt_mcc_send_search(struct bt_conn *conn, const struct mpl_search *search);
* @return 0 if success, errno on failure. * @return 0 if success, errno on failure.
*/ */
int bt_mcc_read_search_results_obj_id(struct bt_conn *conn); int bt_mcc_read_search_results_obj_id(struct bt_conn *conn);
#endif /* CONFIG_BT_OTS_CLIENT */
/** /**
* @brief Read Content Control ID * @brief Read Content Control ID
@ -859,7 +873,6 @@ int bt_mcc_read_search_results_obj_id(struct bt_conn *conn);
*/ */
int bt_mcc_read_content_control_id(struct bt_conn *conn); int bt_mcc_read_content_control_id(struct bt_conn *conn);
#ifdef CONFIG_BT_OTS_CLIENT
/** /**
* @brief Read the current object metadata * @brief Read the current object metadata
* *
@ -923,10 +936,15 @@ int bt_mcc_otc_read_current_group_object(struct bt_conn *conn);
*/ */
int bt_mcc_otc_read_parent_group_object(struct bt_conn *conn); int bt_mcc_otc_read_parent_group_object(struct bt_conn *conn);
#if defined(CONFIG_BT_MCC_SHELL) /**
* @brief Look up MCC OTC instance
*
* @param conn The connection to the MCC server.
*
* @return Pointer to a MCC OTC instance if found else NULL.
*
*/
struct bt_ots_client *bt_mcc_otc_inst(struct bt_conn *conn); struct bt_ots_client *bt_mcc_otc_inst(struct bt_conn *conn);
#endif /* defined(CONFIG_BT_MCC_SHELL) */
#endif /* CONFIG_BT_OTS_CLIENT */
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -121,4 +121,106 @@ config BT_MCC_SHELL
help help
This option enables shell support for the Media Control Client. This option enables shell support for the Media Control Client.
config BT_MCC_MINIMAL
bool "Minimal Media Control Client without optional procedures"
help
This option disables all optional procedures in the Media Control Client.
config BT_MCC_READ_MEDIA_PLAYER_ICON_URL
bool "Support reading Media Player Icon URL"
default !BT_MCC_MINIMAL
help
This option enables support for Read Media Information procedure
optionally read the Media Player Icon URL.
config BT_MCC_READ_TRACK_TITLE
bool "Support reading Track Title"
default !BT_MCC_MINIMAL
help
This option enables support for reading Track Title.
config BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION
bool "Support to enable or disable the subscription of Track Title"
default !BT_MCC_MINIMAL
help
This option enables support for the subscription of Track Title.
config BT_MCC_READ_TRACK_DURATION
bool "Support reading Track Duration"
default !BT_MCC_MINIMAL
help
This option enables support for reading Track Duration.
config BT_MCC_READ_TRACK_POSITION
bool "Support reading Track Position"
default !BT_MCC_MINIMAL
help
This option enables support for reading Track Position.
config BT_MCC_SET_TRACK_POSITION
bool "Support setting Track Position"
default !BT_MCC_MINIMAL
help
This option enables support for setting Track Position.
config BT_MCC_READ_PLAYBACK_SPEED
bool "Support reading Playback Speed"
default !BT_MCC_MINIMAL
help
This option enables support for reading Playback Speed.
config BT_MCC_SET_PLAYBACK_SPEED
bool "Support setting Playback Speed"
default !BT_MCC_MINIMAL
help
This option enables support for setting Playback Speed.
config BT_MCC_READ_SEEKING_SPEED
bool "Support reading Seeking Speed"
default !BT_MCC_MINIMAL
help
This option enables support for reading Seeking Speed.
config BT_MCC_READ_PLAYING_ORDER
bool "Support reading Playing Order"
default !BT_MCC_MINIMAL
help
This option enables support for reading Playing Order.
config BT_MCC_SET_PLAYING_ORDER
bool "Support setting Playing Order"
default !BT_MCC_MINIMAL
help
This option enables support for setting Playing Order.
config BT_MCC_READ_PLAYING_ORDER_SUPPORTED
bool "Support reading Playing Order Supported"
default !BT_MCC_MINIMAL
help
This option enables support for reading Playing Order Supported.
config BT_MCC_READ_MEDIA_STATE
bool "Support reading Media State"
default !BT_MCC_MINIMAL
help
This option enables support for reading Media State.
config BT_MCC_SET_MEDIA_CONTROL_POINT
bool "Support setting Media Control Point"
default !BT_MCC_MINIMAL
help
This option enables support for setting Media Control Point.
config BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED
bool "Support reading Media Control Point Opcodes Supported"
default !BT_MCC_MINIMAL
help
This option enables support for reading Media Control Point Opcodes Supported.
config BT_MCC_READ_CONTENT_CONTROL_ID
bool "Support reading Content Control ID"
default !BT_MCC_MINIMAL
help
This option enables support for reading Content Control ID.
endif # BT_MCC endif # BT_MCC

View file

@ -156,6 +156,7 @@ static uint8_t mcc_read_icon_obj_id_cb(struct bt_conn *conn, uint8_t err,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
static uint8_t mcc_read_icon_url_cb(struct bt_conn *conn, uint8_t err, static uint8_t mcc_read_icon_url_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_read_params *params, struct bt_gatt_read_params *params,
const void *data, uint16_t length) const void *data, uint16_t length)
@ -185,7 +186,9 @@ static uint8_t mcc_read_icon_url_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
static void mcc_track_title_cb(struct bt_conn *conn, uint8_t err, const void *data, uint16_t length) static void mcc_track_title_cb(struct bt_conn *conn, uint8_t err, const void *data, uint16_t length)
{ {
int cb_err = err; int cb_err = err;
@ -222,7 +225,9 @@ static uint8_t mcc_read_track_title_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE)*/
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
static void mcc_track_duration_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_track_duration_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -256,7 +261,9 @@ static uint8_t mcc_read_track_duration_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
static void mcc_track_position_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_track_position_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -290,7 +297,9 @@ static uint8_t mcc_read_track_position_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
static void mcs_write_track_position_cb(struct bt_conn *conn, uint8_t err, static void mcs_write_track_position_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_write_params *params) struct bt_gatt_write_params *params)
{ {
@ -314,7 +323,9 @@ static void mcs_write_track_position_cb(struct bt_conn *conn, uint8_t err,
mcc_cb->set_track_position(conn, cb_err, pos); mcc_cb->set_track_position(conn, cb_err, pos);
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
static void mcc_playback_speed_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_playback_speed_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -348,7 +359,9 @@ static uint8_t mcc_read_playback_speed_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
static void mcs_write_playback_speed_cb(struct bt_conn *conn, uint8_t err, static void mcs_write_playback_speed_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_write_params *params) struct bt_gatt_write_params *params)
{ {
@ -371,7 +384,9 @@ static void mcs_write_playback_speed_cb(struct bt_conn *conn, uint8_t err,
mcc_cb->set_playback_speed(conn, cb_err, speed); mcc_cb->set_playback_speed(conn, cb_err, speed);
} }
} }
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
static void mcc_seeking_speed_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_seeking_speed_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -405,6 +420,7 @@ static uint8_t mcc_read_seeking_speed_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
static uint8_t mcc_read_segments_obj_id_cb(struct bt_conn *conn, uint8_t err, static uint8_t mcc_read_segments_obj_id_cb(struct bt_conn *conn, uint8_t err,
@ -679,6 +695,7 @@ static void mcs_write_current_group_obj_id_cb(struct bt_conn *conn, uint8_t err,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
static void mcc_playing_order_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_playing_order_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -712,7 +729,9 @@ static uint8_t mcc_read_playing_order_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
static void mcs_write_playing_order_cb(struct bt_conn *conn, uint8_t err, static void mcs_write_playing_order_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_write_params *params) struct bt_gatt_write_params *params)
{ {
@ -735,7 +754,9 @@ static void mcs_write_playing_order_cb(struct bt_conn *conn, uint8_t err,
mcc_cb->set_playing_order(conn, cb_err, order); mcc_cb->set_playing_order(conn, cb_err, order);
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
static uint8_t mcc_read_playing_orders_supported_cb(struct bt_conn *conn, uint8_t err, static uint8_t mcc_read_playing_orders_supported_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_read_params *params, struct bt_gatt_read_params *params,
const void *data, uint16_t length) const void *data, uint16_t length)
@ -762,7 +783,9 @@ static uint8_t mcc_read_playing_orders_supported_cb(struct bt_conn *conn, uint8_
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
static void mcc_media_state_cb(struct bt_conn *conn, uint8_t err, const void *data, uint16_t length) static void mcc_media_state_cb(struct bt_conn *conn, uint8_t err, const void *data, uint16_t length)
{ {
int cb_err = err; int cb_err = err;
@ -795,7 +818,9 @@ static uint8_t mcc_read_media_state_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
static void mcs_write_cp_cb(struct bt_conn *conn, uint8_t err, static void mcs_write_cp_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_write_params *params) struct bt_gatt_write_params *params)
{ {
@ -829,7 +854,9 @@ static void mcs_write_cp_cb(struct bt_conn *conn, uint8_t err,
mcc_cb->send_cmd(conn, cb_err, &cmd); mcc_cb->send_cmd(conn, cb_err, &cmd);
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
static void mcc_opcodes_supported_cb(struct bt_conn *conn, uint8_t err, const void *data, static void mcc_opcodes_supported_cb(struct bt_conn *conn, uint8_t err, const void *data,
uint16_t length) uint16_t length)
{ {
@ -864,6 +891,7 @@ static uint8_t mcc_read_opcodes_supported_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
static void mcs_write_scp_cb(struct bt_conn *conn, uint8_t err, static void mcs_write_scp_cb(struct bt_conn *conn, uint8_t err,
@ -935,6 +963,7 @@ static uint8_t mcc_read_search_results_obj_id_cb(struct bt_conn *conn, uint8_t e
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
static uint8_t mcc_read_content_control_id_cb(struct bt_conn *conn, uint8_t err, static uint8_t mcc_read_content_control_id_cb(struct bt_conn *conn, uint8_t err,
struct bt_gatt_read_params *params, struct bt_gatt_read_params *params,
const void *data, uint16_t length) const void *data, uint16_t length)
@ -962,6 +991,7 @@ static uint8_t mcc_read_content_control_id_cb(struct bt_conn *conn, uint8_t err,
return BT_GATT_ITER_STOP; return BT_GATT_ITER_STOP;
} }
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
static uint8_t mcs_notify_handler(struct bt_conn *conn, static uint8_t mcs_notify_handler(struct bt_conn *conn,
struct bt_gatt_subscribe_params *params, struct bt_gatt_subscribe_params *params,
@ -1007,25 +1037,35 @@ static uint8_t mcs_notify_handler(struct bt_conn *conn,
mcc_cb->track_changed_ntf(conn, cb_err); mcc_cb->track_changed_ntf(conn, cb_err);
} }
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION)
} else if (handle == mcs_inst->track_title_handle) { } else if (handle == mcs_inst->track_title_handle) {
LOG_DBG("Track Title notification"); LOG_DBG("Track Title notification");
mcc_track_title_cb(conn, 0, data, length); mcc_track_title_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
} else if (handle == mcs_inst->track_duration_handle) { } else if (handle == mcs_inst->track_duration_handle) {
LOG_DBG("Track Duration notification"); LOG_DBG("Track Duration notification");
mcc_track_duration_cb(conn, 0, data, length); mcc_track_duration_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
} else if (handle == mcs_inst->track_position_handle) { } else if (handle == mcs_inst->track_position_handle) {
LOG_DBG("Track Position notification"); LOG_DBG("Track Position notification");
mcc_track_position_cb(conn, 0, data, length); mcc_track_position_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
} else if (handle == mcs_inst->playback_speed_handle) { } else if (handle == mcs_inst->playback_speed_handle) {
LOG_DBG("Playback Speed notification"); LOG_DBG("Playback Speed notification");
mcc_playback_speed_cb(conn, 0, data, length); mcc_playback_speed_cb(conn, 0, data, length);
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
} else if (handle == mcs_inst->seeking_speed_handle) { } else if (handle == mcs_inst->seeking_speed_handle) {
LOG_DBG("Seeking Speed notification"); LOG_DBG("Seeking Speed notification");
mcc_seeking_speed_cb(conn, 0, data, length); mcc_seeking_speed_cb(conn, 0, data, length);
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (handle == mcs_inst->current_track_obj_id_handle) { } else if (handle == mcs_inst->current_track_obj_id_handle) {
@ -1045,13 +1085,17 @@ static uint8_t mcs_notify_handler(struct bt_conn *conn,
mcc_current_group_obj_id_cb(conn, 0, data, length); mcc_current_group_obj_id_cb(conn, 0, data, length);
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
} else if (handle == mcs_inst->playing_order_handle) { } else if (handle == mcs_inst->playing_order_handle) {
LOG_DBG("Playing Order notification"); LOG_DBG("Playing Order notification");
mcc_playing_order_cb(conn, 0, data, length); mcc_playing_order_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
} else if (handle == mcs_inst->media_state_handle) { } else if (handle == mcs_inst->media_state_handle) {
LOG_DBG("Media State notification"); LOG_DBG("Media State notification");
mcc_media_state_cb(conn, 0, data, length); mcc_media_state_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
} else if (handle == mcs_inst->cp_handle) { } else if (handle == mcs_inst->cp_handle) {
/* The control point is is a special case - only */ /* The control point is is a special case - only */
@ -1075,9 +1119,11 @@ static uint8_t mcs_notify_handler(struct bt_conn *conn,
mcc_cb->cmd_ntf(conn, cb_err, &ntf); mcc_cb->cmd_ntf(conn, cb_err, &ntf);
} }
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
} else if (handle == mcs_inst->opcodes_supported_handle) { } else if (handle == mcs_inst->opcodes_supported_handle) {
LOG_DBG("Opcodes Supported notification"); LOG_DBG("Opcodes Supported notification");
mcc_opcodes_supported_cb(conn, 0, data, length); mcc_opcodes_supported_cb(conn, 0, data, length);
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (handle == mcs_inst->scp_handle) { } else if (handle == mcs_inst->scp_handle) {
@ -1122,21 +1168,37 @@ static void reset_mcs_inst(struct mcs_instance_t *mcs_inst, struct bt_conn *conn
*/ */
(void)bt_gatt_unsubscribe(conn, &mcs_inst->player_name_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->player_name_sub_params);
(void)bt_gatt_unsubscribe(conn, &mcs_inst->track_changed_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->track_changed_sub_params);
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->track_title_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->track_title_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->track_duration_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->track_duration_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->track_position_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->track_position_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->playback_speed_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->playback_speed_sub_params);
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->seeking_speed_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->seeking_speed_sub_params);
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
(void)bt_gatt_unsubscribe(conn, &mcs_inst->current_track_obj_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->current_track_obj_sub_params);
(void)bt_gatt_unsubscribe(conn, &mcs_inst->next_track_obj_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->next_track_obj_sub_params);
(void)bt_gatt_unsubscribe(conn, &mcs_inst->parent_group_obj_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->parent_group_obj_sub_params);
(void)bt_gatt_unsubscribe(conn, &mcs_inst->current_group_obj_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->current_group_obj_sub_params);
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->playing_order_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->playing_order_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->media_state_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->media_state_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
(void)bt_gatt_unsubscribe(conn, &mcs_inst->cp_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->cp_sub_params);
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
(void)bt_gatt_unsubscribe(conn, &mcs_inst->opcodes_supported_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->opcodes_supported_sub_params);
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
(void)bt_gatt_unsubscribe(conn, &mcs_inst->scp_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->scp_sub_params);
(void)bt_gatt_unsubscribe(conn, &mcs_inst->search_results_obj_sub_params); (void)bt_gatt_unsubscribe(conn, &mcs_inst->search_results_obj_sub_params);
@ -1428,31 +1490,41 @@ static bool subscribe_next_mcs_char(struct mcs_instance_t *mcs_inst,
mcs_inst->track_changed_sub_params.disc_params == NULL) { mcs_inst->track_changed_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->track_changed_sub_params; sub_params = &mcs_inst->track_changed_sub_params;
handle = mcs_inst->track_changed_handle; handle = mcs_inst->track_changed_handle;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION)
} else if (mcs_inst->track_title_handle && } else if (mcs_inst->track_title_handle &&
mcs_inst->track_title_sub_params.value && mcs_inst->track_title_sub_params.value &&
mcs_inst->track_title_sub_params.disc_params == NULL) { mcs_inst->track_title_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->track_title_sub_params; sub_params = &mcs_inst->track_title_sub_params;
handle = mcs_inst->track_title_handle; handle = mcs_inst->track_title_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
} else if (mcs_inst->track_duration_handle && } else if (mcs_inst->track_duration_handle &&
mcs_inst->track_duration_sub_params.value && mcs_inst->track_duration_sub_params.value &&
mcs_inst->track_duration_sub_params.disc_params == NULL) { mcs_inst->track_duration_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->track_duration_sub_params; sub_params = &mcs_inst->track_duration_sub_params;
handle = mcs_inst->track_duration_handle; handle = mcs_inst->track_duration_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
} else if (mcs_inst->track_position_handle && } else if (mcs_inst->track_position_handle &&
mcs_inst->track_position_sub_params.value && mcs_inst->track_position_sub_params.value &&
mcs_inst->track_position_sub_params.disc_params == NULL) { mcs_inst->track_position_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->track_position_sub_params; sub_params = &mcs_inst->track_position_sub_params;
handle = mcs_inst->track_position_handle; handle = mcs_inst->track_position_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
} else if (mcs_inst->playback_speed_handle && } else if (mcs_inst->playback_speed_handle &&
mcs_inst->playback_speed_sub_params.value && mcs_inst->playback_speed_sub_params.value &&
mcs_inst->playback_speed_sub_params.disc_params == NULL) { mcs_inst->playback_speed_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->playback_speed_sub_params; sub_params = &mcs_inst->playback_speed_sub_params;
handle = mcs_inst->playback_speed_handle; handle = mcs_inst->playback_speed_handle;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
} else if (mcs_inst->seeking_speed_handle && } else if (mcs_inst->seeking_speed_handle &&
mcs_inst->seeking_speed_sub_params.value && mcs_inst->seeking_speed_sub_params.value &&
mcs_inst->seeking_speed_sub_params.disc_params == NULL) { mcs_inst->seeking_speed_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->seeking_speed_sub_params; sub_params = &mcs_inst->seeking_speed_sub_params;
handle = mcs_inst->seeking_speed_handle; handle = mcs_inst->seeking_speed_handle;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (mcs_inst->current_track_obj_id_handle && } else if (mcs_inst->current_track_obj_id_handle &&
mcs_inst->current_track_obj_sub_params.value && mcs_inst->current_track_obj_sub_params.value &&
@ -1475,26 +1547,32 @@ static bool subscribe_next_mcs_char(struct mcs_instance_t *mcs_inst,
sub_params = &mcs_inst->current_group_obj_sub_params; sub_params = &mcs_inst->current_group_obj_sub_params;
handle = mcs_inst->current_group_obj_id_handle; handle = mcs_inst->current_group_obj_id_handle;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
} else if (mcs_inst->playing_order_handle && } else if (mcs_inst->playing_order_handle &&
mcs_inst->playing_order_sub_params.value && mcs_inst->playing_order_sub_params.value &&
mcs_inst->playing_order_sub_params.disc_params == NULL) { mcs_inst->playing_order_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->playing_order_sub_params; sub_params = &mcs_inst->playing_order_sub_params;
handle = mcs_inst->playing_order_handle; handle = mcs_inst->playing_order_handle;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
} else if (mcs_inst->media_state_handle && } else if (mcs_inst->media_state_handle &&
mcs_inst->media_state_sub_params.value && mcs_inst->media_state_sub_params.value &&
mcs_inst->media_state_sub_params.disc_params == NULL) { mcs_inst->media_state_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->media_state_sub_params; sub_params = &mcs_inst->media_state_sub_params;
handle = mcs_inst->media_state_handle; handle = mcs_inst->media_state_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
} else if (mcs_inst->cp_handle && } else if (mcs_inst->cp_handle &&
mcs_inst->cp_sub_params.value && mcs_inst->cp_sub_params.value &&
mcs_inst->cp_sub_params.disc_params == NULL) { mcs_inst->cp_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->cp_sub_params; sub_params = &mcs_inst->cp_sub_params;
handle = mcs_inst->cp_handle; handle = mcs_inst->cp_handle;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
} else if (mcs_inst->opcodes_supported_handle && } else if (mcs_inst->opcodes_supported_handle &&
mcs_inst->opcodes_supported_sub_params.value && mcs_inst->opcodes_supported_sub_params.value &&
mcs_inst->opcodes_supported_sub_params.disc_params == NULL) { mcs_inst->opcodes_supported_sub_params.disc_params == NULL) {
sub_params = &mcs_inst->opcodes_supported_sub_params; sub_params = &mcs_inst->opcodes_supported_sub_params;
handle = mcs_inst->opcodes_supported_handle; handle = mcs_inst->opcodes_supported_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (mcs_inst->scp_handle && } else if (mcs_inst->scp_handle &&
mcs_inst->scp_sub_params.value && mcs_inst->scp_sub_params.value &&
@ -1567,9 +1645,11 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
LOG_DBG("Icon Object, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Icon Object, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->icon_obj_id_handle = chrc->value_handle; mcs_inst->icon_obj_id_handle = chrc->value_handle;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_ICON_URL)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_ICON_URL)) {
LOG_DBG("Icon URL, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Icon URL, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->icon_url_handle = chrc->value_handle; mcs_inst->icon_url_handle = chrc->value_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_CHANGED)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_CHANGED)) {
LOG_DBG("Track Changed, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Track Changed, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->track_changed_handle = chrc->value_handle; mcs_inst->track_changed_handle = chrc->value_handle;
@ -1577,13 +1657,18 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->track_changed_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->track_changed_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_TITLE)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_TITLE)) {
LOG_DBG("Track Title, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Track Title, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->track_title_handle = chrc->value_handle; mcs_inst->track_title_handle = chrc->value_handle;
#if defined(BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION)
mcs_inst->track_title_sub_params.disc_params = NULL; mcs_inst->track_title_sub_params.disc_params = NULL;
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->track_title_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->track_title_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION) */
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_DURATION)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_DURATION)) {
LOG_DBG("Track Duration, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Track Duration, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->track_duration_handle = chrc->value_handle; mcs_inst->track_duration_handle = chrc->value_handle;
@ -1591,20 +1676,32 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->track_duration_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->track_duration_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION) || defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_POSITION)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_POSITION)) {
LOG_DBG("Track Position, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Track Position, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->track_position_handle = chrc->value_handle; mcs_inst->track_position_handle = chrc->value_handle;
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
mcs_inst->track_position_sub_params.disc_params = NULL; mcs_inst->track_position_sub_params.disc_params = NULL;
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->track_position_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->track_position_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) || defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED) || defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYBACK_SPEED)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYBACK_SPEED)) {
LOG_DBG("Playback Speed, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Playback Speed, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->playback_speed_handle = chrc->value_handle; mcs_inst->playback_speed_handle = chrc->value_handle;
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
mcs_inst->playback_speed_sub_params.disc_params = NULL; mcs_inst->playback_speed_sub_params.disc_params = NULL;
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->playback_speed_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->playback_speed_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) ||
* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
*/
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_SEEKING_SPEED)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_SEEKING_SPEED)) {
LOG_DBG("Seeking Speed, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Seeking Speed, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->seeking_speed_handle = chrc->value_handle; mcs_inst->seeking_speed_handle = chrc->value_handle;
@ -1612,6 +1709,7 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->seeking_speed_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->seeking_speed_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_SEGMENTS_OBJ_ID)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_TRACK_SEGMENTS_OBJ_ID)) {
LOG_DBG("Track Segments Object, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Track Segments Object, UUID: %s", bt_uuid_str(chrc->uuid));
@ -1648,16 +1746,23 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
BT_GATT_CCC_NOTIFY; BT_GATT_CCC_NOTIFY;
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) || defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYING_ORDER)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYING_ORDER)) {
LOG_DBG("Playing Order, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Playing Order, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->playing_order_handle = chrc->value_handle; mcs_inst->playing_order_handle = chrc->value_handle;
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
mcs_inst->playing_order_sub_params.disc_params = NULL; mcs_inst->playing_order_sub_params.disc_params = NULL;
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->playing_order_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->playing_order_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) || defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYING_ORDERS)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_PLAYING_ORDERS)) {
LOG_DBG("Playing Orders supported, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Playing Orders supported, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->playing_orders_supported_handle = chrc->value_handle; mcs_inst->playing_orders_supported_handle = chrc->value_handle;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_STATE)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_STATE)) {
LOG_DBG("Media State, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Media State, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->media_state_handle = chrc->value_handle; mcs_inst->media_state_handle = chrc->value_handle;
@ -1665,6 +1770,7 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->media_state_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->media_state_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_CONTROL_POINT)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_CONTROL_POINT)) {
LOG_DBG("Media Control Point, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Media Control Point, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->cp_handle = chrc->value_handle; mcs_inst->cp_handle = chrc->value_handle;
@ -1672,6 +1778,7 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
if (chrc->properties & BT_GATT_CHRC_NOTIFY) { if (chrc->properties & BT_GATT_CHRC_NOTIFY) {
mcs_inst->cp_sub_params.value = BT_GATT_CCC_NOTIFY; mcs_inst->cp_sub_params.value = BT_GATT_CCC_NOTIFY;
} }
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_CONTROL_OPCODES)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_MEDIA_CONTROL_OPCODES)) {
LOG_DBG("Media control opcodes supported, UUID: %s", LOG_DBG("Media control opcodes supported, UUID: %s",
bt_uuid_str(chrc->uuid)); bt_uuid_str(chrc->uuid));
@ -1681,6 +1788,7 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
mcs_inst->opcodes_supported_sub_params.value = mcs_inst->opcodes_supported_sub_params.value =
BT_GATT_CCC_NOTIFY; BT_GATT_CCC_NOTIFY;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_SEARCH_CONTROL_POINT)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_MCS_SEARCH_CONTROL_POINT)) {
LOG_DBG("Search control point, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Search control point, UUID: %s", bt_uuid_str(chrc->uuid));
@ -1698,9 +1806,11 @@ static uint8_t discover_mcs_char_func(struct bt_conn *conn,
BT_GATT_CCC_NOTIFY; BT_GATT_CCC_NOTIFY;
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
} else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_CCID)) { } else if (!bt_uuid_cmp(chrc->uuid, BT_UUID_CCID)) {
LOG_DBG("Content Control ID, UUID: %s", bt_uuid_str(chrc->uuid)); LOG_DBG("Content Control ID, UUID: %s", bt_uuid_str(chrc->uuid));
mcs_inst->content_control_id_handle = chrc->value_handle; mcs_inst->content_control_id_handle = chrc->value_handle;
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
} }
@ -1937,6 +2047,7 @@ int bt_mcc_read_icon_obj_id(struct bt_conn *conn)
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
int bt_mcc_read_icon_url(struct bt_conn *conn) int bt_mcc_read_icon_url(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -1974,7 +2085,9 @@ int bt_mcc_read_icon_url(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
int bt_mcc_read_track_title(struct bt_conn *conn) int bt_mcc_read_track_title(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2012,7 +2125,9 @@ int bt_mcc_read_track_title(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
int bt_mcc_read_track_duration(struct bt_conn *conn) int bt_mcc_read_track_duration(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2050,7 +2165,9 @@ int bt_mcc_read_track_duration(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
int bt_mcc_read_track_position(struct bt_conn *conn) int bt_mcc_read_track_position(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2088,7 +2205,9 @@ int bt_mcc_read_track_position(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos) int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2131,7 +2250,9 @@ int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
int bt_mcc_read_playback_speed(struct bt_conn *conn) int bt_mcc_read_playback_speed(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2169,7 +2290,9 @@ int bt_mcc_read_playback_speed(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed) int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2212,7 +2335,9 @@ int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed)
} }
return err; return err;
} }
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
int bt_mcc_read_seeking_speed(struct bt_conn *conn) int bt_mcc_read_seeking_speed(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2250,6 +2375,7 @@ int bt_mcc_read_seeking_speed(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
int bt_mcc_read_segments_obj_id(struct bt_conn *conn) int bt_mcc_read_segments_obj_id(struct bt_conn *conn)
@ -2584,6 +2710,7 @@ int bt_mcc_set_current_group_obj_id(struct bt_conn *conn, uint64_t obj_id)
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
int bt_mcc_read_playing_order(struct bt_conn *conn) int bt_mcc_read_playing_order(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2621,7 +2748,9 @@ int bt_mcc_read_playing_order(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order) int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2672,7 +2801,9 @@ int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
int bt_mcc_read_playing_orders_supported(struct bt_conn *conn) int bt_mcc_read_playing_orders_supported(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2710,7 +2841,9 @@ int bt_mcc_read_playing_orders_supported(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
int bt_mcc_read_media_state(struct bt_conn *conn) int bt_mcc_read_media_state(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2748,7 +2881,9 @@ int bt_mcc_read_media_state(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd) int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2810,7 +2945,9 @@ int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
int bt_mcc_read_opcodes_supported(struct bt_conn *conn) int bt_mcc_read_opcodes_supported(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2848,6 +2985,7 @@ int bt_mcc_read_opcodes_supported(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
int bt_mcc_send_search(struct bt_conn *conn, const struct mpl_search *search) int bt_mcc_send_search(struct bt_conn *conn, const struct mpl_search *search)
@ -2944,6 +3082,7 @@ int bt_mcc_read_search_results_obj_id(struct bt_conn *conn)
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
int bt_mcc_read_content_control_id(struct bt_conn *conn) int bt_mcc_read_content_control_id(struct bt_conn *conn)
{ {
struct mcs_instance_t *mcs_inst; struct mcs_instance_t *mcs_inst;
@ -2981,6 +3120,7 @@ int bt_mcc_read_content_control_id(struct bt_conn *conn)
} }
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS

View file

@ -25,13 +25,26 @@ struct mcs_instance_t {
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
uint16_t icon_obj_id_handle; uint16_t icon_obj_id_handle;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
uint16_t icon_url_handle; uint16_t icon_url_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
uint16_t track_changed_handle; uint16_t track_changed_handle;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
uint16_t track_title_handle; uint16_t track_title_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
uint16_t track_duration_handle; uint16_t track_duration_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION) || defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
uint16_t track_position_handle; uint16_t track_position_handle;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) || defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED) || defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
uint16_t playback_speed_handle; uint16_t playback_speed_handle;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) || */
/* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
uint16_t seeking_speed_handle; uint16_t seeking_speed_handle;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
uint16_t segments_obj_id_handle; uint16_t segments_obj_id_handle;
uint16_t current_track_obj_id_handle; uint16_t current_track_obj_id_handle;
@ -39,16 +52,26 @@ struct mcs_instance_t {
uint16_t current_group_obj_id_handle; uint16_t current_group_obj_id_handle;
uint16_t parent_group_obj_id_handle; uint16_t parent_group_obj_id_handle;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) || defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
uint16_t playing_order_handle; uint16_t playing_order_handle;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) || defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
uint16_t playing_orders_supported_handle; uint16_t playing_orders_supported_handle;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
uint16_t media_state_handle; uint16_t media_state_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
uint16_t cp_handle; uint16_t cp_handle;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
uint16_t opcodes_supported_handle; uint16_t opcodes_supported_handle;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
uint16_t scp_handle; uint16_t scp_handle;
uint16_t search_results_obj_id_handle; uint16_t search_results_obj_id_handle;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
uint16_t content_control_id_handle; uint16_t content_control_id_handle;
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
/* The write buffer is used for /* The write buffer is used for
@ -84,21 +107,37 @@ struct mcs_instance_t {
struct bt_gatt_subscribe_params player_name_sub_params; struct bt_gatt_subscribe_params player_name_sub_params;
struct bt_gatt_subscribe_params track_changed_sub_params; struct bt_gatt_subscribe_params track_changed_sub_params;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION)
struct bt_gatt_subscribe_params track_title_sub_params; struct bt_gatt_subscribe_params track_title_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE_ENABLE_SUBSCRIPTION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
struct bt_gatt_subscribe_params track_duration_sub_params; struct bt_gatt_subscribe_params track_duration_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
struct bt_gatt_subscribe_params track_position_sub_params; struct bt_gatt_subscribe_params track_position_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION)*/
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
struct bt_gatt_subscribe_params playback_speed_sub_params; struct bt_gatt_subscribe_params playback_speed_sub_params;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
struct bt_gatt_subscribe_params seeking_speed_sub_params; struct bt_gatt_subscribe_params seeking_speed_sub_params;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
struct bt_gatt_subscribe_params current_track_obj_sub_params; struct bt_gatt_subscribe_params current_track_obj_sub_params;
struct bt_gatt_subscribe_params next_track_obj_sub_params; struct bt_gatt_subscribe_params next_track_obj_sub_params;
struct bt_gatt_subscribe_params parent_group_obj_sub_params; struct bt_gatt_subscribe_params parent_group_obj_sub_params;
struct bt_gatt_subscribe_params current_group_obj_sub_params; struct bt_gatt_subscribe_params current_group_obj_sub_params;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
struct bt_gatt_subscribe_params playing_order_sub_params; struct bt_gatt_subscribe_params playing_order_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
struct bt_gatt_subscribe_params media_state_sub_params; struct bt_gatt_subscribe_params media_state_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
struct bt_gatt_subscribe_params cp_sub_params; struct bt_gatt_subscribe_params cp_sub_params;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
struct bt_gatt_subscribe_params opcodes_supported_sub_params; struct bt_gatt_subscribe_params opcodes_supported_sub_params;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
struct bt_gatt_subscribe_params scp_sub_params; struct bt_gatt_subscribe_params scp_sub_params;
struct bt_gatt_subscribe_params search_results_obj_sub_params; struct bt_gatt_subscribe_params search_results_obj_sub_params;

View file

@ -278,6 +278,7 @@ static void mcc_read_icon_obj_id_cb(struct bt_conn *conn, int err, uint64_t id)
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url) static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url)
{ {
if (err) { if (err) {
@ -290,6 +291,7 @@ static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url)
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err) static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err)
{ {
@ -305,6 +307,7 @@ static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err)
} }
} }
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *title) static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *title)
{ {
if (err) { if (err) {
@ -317,7 +320,9 @@ static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *t
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t dur) static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t dur)
{ {
if (err) { if (err) {
@ -330,7 +335,9 @@ static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t du
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t pos) static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t pos)
{ {
if (err) { if (err) {
@ -343,7 +350,9 @@ static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t po
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos) static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos)
{ {
if (err) { if (err) {
@ -356,7 +365,9 @@ static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed) static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed)
{ {
if (err) { if (err) {
@ -369,7 +380,9 @@ static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err, int8_t spe
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed) static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed)
{ {
if (err) { if (err) {
@ -382,7 +395,9 @@ static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t spee
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err, int8_t speed) static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err, int8_t speed)
{ {
if (err) { if (err) {
@ -395,6 +410,7 @@ static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err, int8_t spee
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS #ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
static void mcc_read_segments_obj_id_cb(struct bt_conn *conn, int err, uint64_t id) static void mcc_read_segments_obj_id_cb(struct bt_conn *conn, int err, uint64_t id)
@ -470,6 +486,7 @@ static void mcc_read_current_group_obj_id_cb(struct bt_conn *conn, int err, uint
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t order) static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t order)
{ {
if (err) { if (err) {
@ -482,7 +499,9 @@ static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t ord
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t order) static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t order)
{ {
if (err) { if (err) {
@ -495,7 +514,9 @@ static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t orde
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err, uint16_t orders) static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err, uint16_t orders)
{ {
if (err) { if (err) {
@ -508,7 +529,9 @@ static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err,
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state) static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state)
{ {
if (err) { if (err) {
@ -521,7 +544,9 @@ static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd *cmd) static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd *cmd)
{ {
if (err) { if (err) {
@ -535,6 +560,7 @@ static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err, static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err,
const struct mpl_cmd_ntf *ntf) const struct mpl_cmd_ntf *ntf)
@ -551,6 +577,7 @@ static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err,
} }
} }
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err, uint32_t opcodes) static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err, uint32_t opcodes)
{ {
if (err) { if (err) {
@ -563,6 +590,7 @@ static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err, uint32_
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS #ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
static void mcc_send_search_cb(struct bt_conn *conn, int err, const struct mpl_search *search) static void mcc_send_search_cb(struct bt_conn *conn, int err, const struct mpl_search *search)
@ -605,6 +633,7 @@ static void mcc_read_search_results_obj_id_cb(struct bt_conn *conn, int err, uin
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_t ccid) static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_t ccid)
{ {
if (err) { if (err) {
@ -617,6 +646,7 @@ static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_
LOG_DBG("No callback"); LOG_DBG("No callback");
} }
} }
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */
@ -672,15 +702,31 @@ int media_proxy_ctrl_discover_player(struct bt_conn *conn)
#ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS #ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
mprx.mcc_cbs.read_icon_obj_id = mcc_read_icon_obj_id_cb; mprx.mcc_cbs.read_icon_obj_id = mcc_read_icon_obj_id_cb;
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
mprx.mcc_cbs.read_icon_url = mcc_read_icon_url_cb; mprx.mcc_cbs.read_icon_url = mcc_read_icon_url_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
mprx.mcc_cbs.track_changed_ntf = mcc_track_changed_ntf_cb; mprx.mcc_cbs.track_changed_ntf = mcc_track_changed_ntf_cb;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
mprx.mcc_cbs.read_track_title = mcc_read_track_title_cb; mprx.mcc_cbs.read_track_title = mcc_read_track_title_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
mprx.mcc_cbs.read_track_duration = mcc_read_track_duration_cb; mprx.mcc_cbs.read_track_duration = mcc_read_track_duration_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
mprx.mcc_cbs.read_track_position = mcc_read_track_position_cb; mprx.mcc_cbs.read_track_position = mcc_read_track_position_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
mprx.mcc_cbs.set_track_position = mcc_set_track_position_cb; mprx.mcc_cbs.set_track_position = mcc_set_track_position_cb;
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
mprx.mcc_cbs.read_playback_speed = mcc_read_playback_speed_cb; mprx.mcc_cbs.read_playback_speed = mcc_read_playback_speed_cb;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
mprx.mcc_cbs.set_playback_speed = mcc_set_playback_speed_cb; mprx.mcc_cbs.set_playback_speed = mcc_set_playback_speed_cb;
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
mprx.mcc_cbs.read_seeking_speed = mcc_read_seeking_speed_cb; mprx.mcc_cbs.read_seeking_speed = mcc_read_seeking_speed_cb;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS #ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
mprx.mcc_cbs.read_segments_obj_id = mcc_read_segments_obj_id_cb; mprx.mcc_cbs.read_segments_obj_id = mcc_read_segments_obj_id_cb;
mprx.mcc_cbs.read_current_track_obj_id = mcc_read_current_track_obj_id_cb; mprx.mcc_cbs.read_current_track_obj_id = mcc_read_current_track_obj_id_cb;
@ -688,19 +734,33 @@ int media_proxy_ctrl_discover_player(struct bt_conn *conn)
mprx.mcc_cbs.read_parent_group_obj_id = mcc_read_parent_group_obj_id_cb; mprx.mcc_cbs.read_parent_group_obj_id = mcc_read_parent_group_obj_id_cb;
mprx.mcc_cbs.read_current_group_obj_id = mcc_read_current_group_obj_id_cb; mprx.mcc_cbs.read_current_group_obj_id = mcc_read_current_group_obj_id_cb;
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
mprx.mcc_cbs.read_playing_order = mcc_read_playing_order_cb; mprx.mcc_cbs.read_playing_order = mcc_read_playing_order_cb;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
mprx.mcc_cbs.set_playing_order = mcc_set_playing_order_cb; mprx.mcc_cbs.set_playing_order = mcc_set_playing_order_cb;
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
mprx.mcc_cbs.read_playing_orders_supported = mcc_read_playing_orders_supported_cb; mprx.mcc_cbs.read_playing_orders_supported = mcc_read_playing_orders_supported_cb;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
mprx.mcc_cbs.read_media_state = mcc_read_media_state_cb; mprx.mcc_cbs.read_media_state = mcc_read_media_state_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
mprx.mcc_cbs.send_cmd = mcc_send_cmd_cb; mprx.mcc_cbs.send_cmd = mcc_send_cmd_cb;
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
mprx.mcc_cbs.cmd_ntf = mcc_cmd_ntf_cb; mprx.mcc_cbs.cmd_ntf = mcc_cmd_ntf_cb;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
mprx.mcc_cbs.read_opcodes_supported = mcc_read_opcodes_supported_cb; mprx.mcc_cbs.read_opcodes_supported = mcc_read_opcodes_supported_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS #ifdef CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS
mprx.mcc_cbs.send_search = mcc_send_search_cb; mprx.mcc_cbs.send_search = mcc_send_search_cb;
mprx.mcc_cbs.search_ntf = mcc_search_ntf_cb; mprx.mcc_cbs.search_ntf = mcc_search_ntf_cb;
mprx.mcc_cbs.read_search_results_obj_id = mcc_read_search_results_obj_id_cb; mprx.mcc_cbs.read_search_results_obj_id = mcc_read_search_results_obj_id_cb;
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL_OBJECTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
mprx.mcc_cbs.read_content_control_id = mcc_read_content_control_id_cb; mprx.mcc_cbs.read_content_control_id = mcc_read_content_control_id_cb;
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
err = bt_mcc_init(&mprx.mcc_cbs); err = bt_mcc_init(&mprx.mcc_cbs);
if (err) { if (err) {
@ -825,11 +885,11 @@ int media_proxy_ctrl_get_icon_url(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_icon_url(mprx.remote_player.conn); return bt_mcc_read_icon_url(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL */
return -EINVAL; return -EINVAL;
} }
@ -860,11 +920,11 @@ int media_proxy_ctrl_get_track_title(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_track_title(mprx.remote_player.conn); return bt_mcc_read_track_title(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_TRACK_TITLE */
return -EINVAL; return -EINVAL;
} }
@ -896,11 +956,11 @@ int media_proxy_ctrl_get_track_duration(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_track_duration(mprx.remote_player.conn); return bt_mcc_read_track_duration(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_TRACK_DURATION */
return -EINVAL; return -EINVAL;
} }
@ -932,11 +992,11 @@ int media_proxy_ctrl_get_track_position(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_track_position(mprx.remote_player.conn); return bt_mcc_read_track_position(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_TRACK_POSITION */
return -EINVAL; return -EINVAL;
} }
@ -967,11 +1027,11 @@ int media_proxy_ctrl_set_track_position(struct media_player *player, int32_t pos
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && CONFIG_BT_MCC_SET_TRACK_POSITION
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_set_track_position(mprx.remote_player.conn, position); return bt_mcc_set_track_position(mprx.remote_player.conn, position);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_SET_TRACK_POSITION */
return -EINVAL; return -EINVAL;
} }
@ -1002,11 +1062,11 @@ int media_proxy_ctrl_get_playback_speed(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_playback_speed(mprx.remote_player.conn); return bt_mcc_read_playback_speed(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_PLAYBACK_SPEED */
return -EINVAL; return -EINVAL;
} }
@ -1037,11 +1097,11 @@ int media_proxy_ctrl_set_playback_speed(struct media_player *player, int8_t spee
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_set_playback_speed(mprx.remote_player.conn, speed); return bt_mcc_set_playback_speed(mprx.remote_player.conn, speed);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_SET_PLAYBACK_SPEED */
return -EINVAL; return -EINVAL;
} }
@ -1072,11 +1132,11 @@ int media_proxy_ctrl_get_seeking_speed(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_seeking_speed(mprx.remote_player.conn); return bt_mcc_read_seeking_speed(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_SEEKING_SPEED */
return -EINVAL; return -EINVAL;
} }
@ -1409,12 +1469,12 @@ int media_proxy_ctrl_get_playing_order(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
LOG_DBG("Remote player"); LOG_DBG("Remote player");
return bt_mcc_read_playing_order(mprx.remote_player.conn); return bt_mcc_read_playing_order(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_PLAYING_ORDER */
return -EINVAL; return -EINVAL;
} }
@ -1445,11 +1505,11 @@ int media_proxy_ctrl_set_playing_order(struct media_player *player, uint8_t orde
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_set_playing_order(mprx.remote_player.conn, order); return bt_mcc_set_playing_order(mprx.remote_player.conn, order);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_SET_PLAYING_ORDER */
return -EINVAL; return -EINVAL;
} }
@ -1481,11 +1541,12 @@ int media_proxy_ctrl_get_playing_orders_supported(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && \
defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_playing_orders_supported(mprx.remote_player.conn); return bt_mcc_read_playing_orders_supported(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED */
return -EINVAL; return -EINVAL;
} }
@ -1516,11 +1577,11 @@ int media_proxy_ctrl_get_media_state(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_media_state(mprx.remote_player.conn); return bt_mcc_read_media_state(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_MEDIA_STATE */
return -EINVAL; return -EINVAL;
} }
@ -1551,11 +1612,11 @@ int media_proxy_ctrl_send_command(struct media_player *player, const struct mpl_
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_send_cmd(mprx.remote_player.conn, cmd); return bt_mcc_send_cmd(mprx.remote_player.conn, cmd);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT */
return -EINVAL; return -EINVAL;
} }
@ -1587,11 +1648,14 @@ int media_proxy_ctrl_get_commands_supported(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && \
defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_opcodes_supported(mprx.remote_player.conn); return bt_mcc_read_opcodes_supported(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL &&
* CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED
*/
return -EINVAL; return -EINVAL;
} }
@ -1693,11 +1757,11 @@ uint8_t media_proxy_ctrl_get_content_ctrl_id(struct media_player *player)
} }
#endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */ #endif /* CONFIG_MCTL_LOCAL_PLAYER_LOCAL_CONTROL */
#if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) #if defined(CONFIG_MCTL_REMOTE_PLAYER_CONTROL) && defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
if (mprx.remote_player.registered && player == &mprx.remote_player) { if (mprx.remote_player.registered && player == &mprx.remote_player) {
return bt_mcc_read_content_control_id(mprx.remote_player.conn); return bt_mcc_read_content_control_id(mprx.remote_player.conn);
} }
#endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL */ #endif /* CONFIG_MCTL_REMOTE_PLAYER_CONTROL && CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID */
return -EINVAL; return -EINVAL;
} }

View file

@ -78,6 +78,7 @@ static void mcc_read_icon_obj_id_cb(struct bt_conn *conn, int err, uint64_t id)
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url) static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url)
{ {
if (err) { if (err) {
@ -87,7 +88,9 @@ static void mcc_read_icon_url_cb(struct bt_conn *conn, int err, const char *url)
shell_print(ctx_shell, "Icon URL: 0x%s", url); shell_print(ctx_shell, "Icon URL: 0x%s", url);
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *title) static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *title)
{ {
if (err) { if (err) {
@ -97,6 +100,7 @@ static void mcc_read_track_title_cb(struct bt_conn *conn, int err, const char *t
shell_print(ctx_shell, "Track title: %s", title); shell_print(ctx_shell, "Track title: %s", title);
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err) static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err)
{ {
@ -108,6 +112,7 @@ static void mcc_track_changed_ntf_cb(struct bt_conn *conn, int err)
shell_print(ctx_shell, "Track changed"); shell_print(ctx_shell, "Track changed");
} }
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t dur) static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t dur)
{ {
if (err) { if (err) {
@ -117,7 +122,9 @@ static void mcc_read_track_duration_cb(struct bt_conn *conn, int err, int32_t du
shell_print(ctx_shell, "Track duration: %d", dur); shell_print(ctx_shell, "Track duration: %d", dur);
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t pos) static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t pos)
{ {
if (err) { if (err) {
@ -127,7 +134,9 @@ static void mcc_read_track_position_cb(struct bt_conn *conn, int err, int32_t po
shell_print(ctx_shell, "Track Position: %d", pos); shell_print(ctx_shell, "Track Position: %d", pos);
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos) static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos)
{ {
if (err) { if (err) {
@ -137,7 +146,9 @@ static void mcc_set_track_position_cb(struct bt_conn *conn, int err, int32_t pos
shell_print(ctx_shell, "Track Position: %d", pos); shell_print(ctx_shell, "Track Position: %d", pos);
} }
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err, static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err,
int8_t speed) int8_t speed)
{ {
@ -148,7 +159,9 @@ static void mcc_read_playback_speed_cb(struct bt_conn *conn, int err,
shell_print(ctx_shell, "Playback speed: %d", speed); shell_print(ctx_shell, "Playback speed: %d", speed);
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed) static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t speed)
{ {
if (err) { if (err) {
@ -158,7 +171,9 @@ static void mcc_set_playback_speed_cb(struct bt_conn *conn, int err, int8_t spee
shell_print(ctx_shell, "Playback speed: %d", speed); shell_print(ctx_shell, "Playback speed: %d", speed);
} }
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err, static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err,
int8_t speed) int8_t speed)
{ {
@ -169,6 +184,7 @@ static void mcc_read_seeking_speed_cb(struct bt_conn *conn, int err,
shell_print(ctx_shell, "Seeking speed: %d", speed); shell_print(ctx_shell, "Seeking speed: %d", speed);
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
@ -311,6 +327,7 @@ static void mcc_set_current_group_obj_id_cb(struct bt_conn *conn, int err,
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t order) static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t order)
{ {
if (err) { if (err) {
@ -320,7 +337,9 @@ static void mcc_read_playing_order_cb(struct bt_conn *conn, int err, uint8_t ord
shell_print(ctx_shell, "Playing order: %d", order); shell_print(ctx_shell, "Playing order: %d", order);
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t order) static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t order)
{ {
if (err) { if (err) {
@ -330,7 +349,9 @@ static void mcc_set_playing_order_cb(struct bt_conn *conn, int err, uint8_t orde
shell_print(ctx_shell, "Playing order: %d", order); shell_print(ctx_shell, "Playing order: %d", order);
} }
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err, static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err,
uint16_t orders) uint16_t orders)
{ {
@ -342,7 +363,9 @@ static void mcc_read_playing_orders_supported_cb(struct bt_conn *conn, int err,
shell_print(ctx_shell, "Playing orders supported: %d", orders); shell_print(ctx_shell, "Playing orders supported: %d", orders);
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state) static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state)
{ {
if (err) { if (err) {
@ -352,7 +375,9 @@ static void mcc_read_media_state_cb(struct bt_conn *conn, int err, uint8_t state
shell_print(ctx_shell, "Media State: %d", state); shell_print(ctx_shell, "Media State: %d", state);
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd *cmd) static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd *cmd)
{ {
if (err) { if (err) {
@ -364,6 +389,7 @@ static void mcc_send_cmd_cb(struct bt_conn *conn, int err, const struct mpl_cmd
shell_print(ctx_shell, "Command opcode: %d, param: %d", cmd->opcode, cmd->param); shell_print(ctx_shell, "Command opcode: %d, param: %d", cmd->opcode, cmd->param);
} }
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err, static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err,
const struct mpl_cmd_ntf *ntf) const struct mpl_cmd_ntf *ntf)
@ -379,6 +405,7 @@ static void mcc_cmd_ntf_cb(struct bt_conn *conn, int err,
ntf->requested_opcode, ntf->result_code); ntf->requested_opcode, ntf->result_code);
} }
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err, static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err,
uint32_t opcodes) uint32_t opcodes)
{ {
@ -390,6 +417,7 @@ static void mcc_read_opcodes_supported_cb(struct bt_conn *conn, int err,
shell_print(ctx_shell, "Opcodes supported: %d", opcodes); shell_print(ctx_shell, "Opcodes supported: %d", opcodes);
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
static void mcc_send_search_cb(struct bt_conn *conn, int err, static void mcc_send_search_cb(struct bt_conn *conn, int err,
@ -439,6 +467,7 @@ static void mcc_read_search_results_obj_id_cb(struct bt_conn *conn, int err,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_t ccid) static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_t ccid)
{ {
if (err) { if (err) {
@ -448,6 +477,7 @@ static void mcc_read_content_control_id_cb(struct bt_conn *conn, int err, uint8_
shell_print(ctx_shell, "Content Control ID: %d", ccid); shell_print(ctx_shell, "Content Control ID: %d", ccid);
} }
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
/**** Callback functions for the included Object Transfer service *************/ /**** Callback functions for the included Object Transfer service *************/
@ -569,15 +599,31 @@ static int cmd_mcc_init(const struct shell *sh, size_t argc, char **argv)
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
cb.read_icon_obj_id = mcc_read_icon_obj_id_cb; cb.read_icon_obj_id = mcc_read_icon_obj_id_cb;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
cb.read_icon_url = mcc_read_icon_url_cb; cb.read_icon_url = mcc_read_icon_url_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
cb.track_changed_ntf = mcc_track_changed_ntf_cb; cb.track_changed_ntf = mcc_track_changed_ntf_cb;
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
cb.read_track_title = mcc_read_track_title_cb; cb.read_track_title = mcc_read_track_title_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
cb.read_track_duration = mcc_read_track_duration_cb; cb.read_track_duration = mcc_read_track_duration_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
cb.read_track_position = mcc_read_track_position_cb; cb.read_track_position = mcc_read_track_position_cb;
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
cb.set_track_position = mcc_set_track_position_cb; cb.set_track_position = mcc_set_track_position_cb;
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
cb.read_playback_speed = mcc_read_playback_speed_cb; cb.read_playback_speed = mcc_read_playback_speed_cb;
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
cb.set_playback_speed = mcc_set_playback_speed_cb; cb.set_playback_speed = mcc_set_playback_speed_cb;
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
cb.read_seeking_speed = mcc_read_seeking_speed_cb; cb.read_seeking_speed = mcc_read_seeking_speed_cb;
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
cb.read_segments_obj_id = mcc_read_segments_obj_id_cb; cb.read_segments_obj_id = mcc_read_segments_obj_id_cb;
cb.read_current_track_obj_id = mcc_read_current_track_obj_id_cb; cb.read_current_track_obj_id = mcc_read_current_track_obj_id_cb;
@ -588,19 +634,33 @@ static int cmd_mcc_init(const struct shell *sh, size_t argc, char **argv)
cb.read_current_group_obj_id = mcc_read_current_group_obj_id_cb; cb.read_current_group_obj_id = mcc_read_current_group_obj_id_cb;
cb.set_current_group_obj_id = mcc_set_current_group_obj_id_cb; cb.set_current_group_obj_id = mcc_set_current_group_obj_id_cb;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
cb.read_playing_order = mcc_read_playing_order_cb; cb.read_playing_order = mcc_read_playing_order_cb;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
cb.set_playing_order = mcc_set_playing_order_cb; cb.set_playing_order = mcc_set_playing_order_cb;
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
cb.read_playing_orders_supported = mcc_read_playing_orders_supported_cb; cb.read_playing_orders_supported = mcc_read_playing_orders_supported_cb;
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
cb.read_media_state = mcc_read_media_state_cb; cb.read_media_state = mcc_read_media_state_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
cb.send_cmd = mcc_send_cmd_cb; cb.send_cmd = mcc_send_cmd_cb;
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
cb.cmd_ntf = mcc_cmd_ntf_cb; cb.cmd_ntf = mcc_cmd_ntf_cb;
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
cb.read_opcodes_supported = mcc_read_opcodes_supported_cb; cb.read_opcodes_supported = mcc_read_opcodes_supported_cb;
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
cb.send_search = mcc_send_search_cb; cb.send_search = mcc_send_search_cb;
cb.search_ntf = mcc_search_ntf_cb; cb.search_ntf = mcc_search_ntf_cb;
cb.read_search_results_obj_id = mcc_read_search_results_obj_id_cb; cb.read_search_results_obj_id = mcc_read_search_results_obj_id_cb;
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
cb.read_content_control_id = mcc_read_content_control_id_cb; cb.read_content_control_id = mcc_read_content_control_id_cb;
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
cb.otc_obj_selected = mcc_otc_obj_selected_cb; cb.otc_obj_selected = mcc_otc_obj_selected_cb;
cb.otc_obj_metadata = mcc_otc_obj_metadata_cb; cb.otc_obj_metadata = mcc_otc_obj_metadata_cb;
@ -670,6 +730,7 @@ static int cmd_mcc_read_icon_obj_id(const struct shell *sh, size_t argc,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
static int cmd_mcc_read_icon_url(const struct shell *sh, size_t argc, static int cmd_mcc_read_icon_url(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -681,7 +742,9 @@ static int cmd_mcc_read_icon_url(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
static int cmd_mcc_read_track_title(const struct shell *sh, size_t argc, static int cmd_mcc_read_track_title(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -693,7 +756,9 @@ static int cmd_mcc_read_track_title(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
static int cmd_mcc_read_track_duration(const struct shell *sh, size_t argc, static int cmd_mcc_read_track_duration(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -705,7 +770,9 @@ static int cmd_mcc_read_track_duration(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
static int cmd_mcc_read_track_position(const struct shell *sh, size_t argc, static int cmd_mcc_read_track_position(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -717,7 +784,9 @@ static int cmd_mcc_read_track_position(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
static int cmd_mcc_set_track_position(const struct shell *sh, size_t argc, static int cmd_mcc_set_track_position(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -743,8 +812,10 @@ static int cmd_mcc_set_track_position(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
static int cmd_mcc_read_playback_speed(const struct shell *sh, size_t argc, static int cmd_mcc_read_playback_speed(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -756,8 +827,10 @@ static int cmd_mcc_read_playback_speed(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
static int cmd_mcc_set_playback_speed(const struct shell *sh, size_t argc, static int cmd_mcc_set_playback_speed(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -783,7 +856,9 @@ static int cmd_mcc_set_playback_speed(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
static int cmd_mcc_read_seeking_speed(const struct shell *sh, size_t argc, static int cmd_mcc_read_seeking_speed(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -795,6 +870,7 @@ static int cmd_mcc_read_seeking_speed(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
@ -938,6 +1014,7 @@ static int cmd_mcc_set_current_group_obj_id(const struct shell *sh, size_t argc,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
static int cmd_mcc_read_playing_order(const struct shell *sh, size_t argc, static int cmd_mcc_read_playing_order(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -949,7 +1026,9 @@ static int cmd_mcc_read_playing_order(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
static int cmd_mcc_set_playing_order(const struct shell *sh, size_t argc, static int cmd_mcc_set_playing_order(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -975,7 +1054,9 @@ static int cmd_mcc_set_playing_order(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
static int cmd_mcc_read_playing_orders_supported(const struct shell *sh, static int cmd_mcc_read_playing_orders_supported(const struct shell *sh,
size_t argc, char *argv[]) size_t argc, char *argv[])
{ {
@ -987,7 +1068,9 @@ static int cmd_mcc_read_playing_orders_supported(const struct shell *sh,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
static int cmd_mcc_read_media_state(const struct shell *sh, size_t argc, static int cmd_mcc_read_media_state(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -999,7 +1082,9 @@ static int cmd_mcc_read_media_state(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
static int cmd_mcc_play(const struct shell *sh, size_t argc, char *argv[]) static int cmd_mcc_play(const struct shell *sh, size_t argc, char *argv[])
{ {
const struct mpl_cmd cmd = { const struct mpl_cmd cmd = {
@ -1430,7 +1515,9 @@ static int cmd_mcc_goto_group(const struct shell *sh, size_t argc, char *argv[])
return err; return err;
} }
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
static int cmd_mcc_read_opcodes_supported(const struct shell *sh, size_t argc, static int cmd_mcc_read_opcodes_supported(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -1442,6 +1529,7 @@ static int cmd_mcc_read_opcodes_supported(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
static int cmd_mcc_send_search_raw(const struct shell *sh, size_t argc, static int cmd_mcc_send_search_raw(const struct shell *sh, size_t argc,
@ -1632,6 +1720,7 @@ static int cmd_mcc_read_search_results_obj_id(const struct shell *sh,
} }
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
static int cmd_mcc_read_content_control_id(const struct shell *sh, size_t argc, static int cmd_mcc_read_content_control_id(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -1643,6 +1732,7 @@ static int cmd_mcc_read_content_control_id(const struct shell *sh, size_t argc,
} }
return result; return result;
} }
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
@ -1867,22 +1957,38 @@ SHELL_STATIC_SUBCMD_SET_CREATE(mcc_cmds,
SHELL_CMD_ARG(read_icon_obj_id, NULL, "Read Icon Object ID", SHELL_CMD_ARG(read_icon_obj_id, NULL, "Read Icon Object ID",
cmd_mcc_read_icon_obj_id, 1, 0), cmd_mcc_read_icon_obj_id, 1, 0),
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL)
SHELL_CMD_ARG(read_icon_url, NULL, "Read Icon URL", SHELL_CMD_ARG(read_icon_url, NULL, "Read Icon URL",
cmd_mcc_read_icon_url, 1, 0), cmd_mcc_read_icon_url, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_PLAYER_ICON_URL) */
#if defined(CONFIG_BT_MCC_READ_TRACK_TITLE)
SHELL_CMD_ARG(read_track_title, NULL, "Read Track Title", SHELL_CMD_ARG(read_track_title, NULL, "Read Track Title",
cmd_mcc_read_track_title, 1, 0), cmd_mcc_read_track_title, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_TITLE) */
#if defined(CONFIG_BT_MCC_READ_TRACK_DURATION)
SHELL_CMD_ARG(read_track_duration, NULL, "Read Track Duration", SHELL_CMD_ARG(read_track_duration, NULL, "Read Track Duration",
cmd_mcc_read_track_duration, 1, 0), cmd_mcc_read_track_duration, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_DURATION) */
#if defined(CONFIG_BT_MCC_READ_TRACK_POSITION)
SHELL_CMD_ARG(read_track_position, NULL, "Read Track Position", SHELL_CMD_ARG(read_track_position, NULL, "Read Track Position",
cmd_mcc_read_track_position, 1, 0), cmd_mcc_read_track_position, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_SET_TRACK_POSITION)
SHELL_CMD_ARG(set_track_position, NULL, "Set Track position <position>", SHELL_CMD_ARG(set_track_position, NULL, "Set Track position <position>",
cmd_mcc_set_track_position, 2, 0), cmd_mcc_set_track_position, 2, 0),
#endif /* defined(CONFIG_BT_MCC_SET_TRACK_POSITION) */
#if defined(CONFIG_BT_MCC_READ_PLAYBACK_SPEED)
SHELL_CMD_ARG(read_playback_speed, NULL, "Read Playback Speed", SHELL_CMD_ARG(read_playback_speed, NULL, "Read Playback Speed",
cmd_mcc_read_playback_speed, 1, 0), cmd_mcc_read_playback_speed, 1, 0),
#endif /* defined (CONFIG_BT_MCC_READ_PLAYBACK_SPEED */
#if defined(CONFIG_BT_MCC_SET_PLAYBACK_SPEED)
SHELL_CMD_ARG(set_playback_speed, NULL, "Set Playback Speed <speed>", SHELL_CMD_ARG(set_playback_speed, NULL, "Set Playback Speed <speed>",
cmd_mcc_set_playback_speed, 2, 0), cmd_mcc_set_playback_speed, 2, 0),
#endif /* defined (CONFIG_BT_MCC_SET_PLAYBACK_SPEED) */
#if defined(CONFIG_BT_MCC_READ_SEEKING_SPEED)
SHELL_CMD_ARG(read_seeking_speed, NULL, "Read Seeking Speed", SHELL_CMD_ARG(read_seeking_speed, NULL, "Read Seeking Speed",
cmd_mcc_read_seeking_speed, 1, 0), cmd_mcc_read_seeking_speed, 1, 0),
#endif /* defined (CONFIG_BT_MCC_READ_SEEKING_SPEED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
SHELL_CMD_ARG(read_track_segments_obj_id, NULL, SHELL_CMD_ARG(read_track_segments_obj_id, NULL,
"Read Track Segments Object ID", "Read Track Segments Object ID",
@ -1909,15 +2015,24 @@ SHELL_STATIC_SUBCMD_SET_CREATE(mcc_cmds,
"Set Current Group Object ID <id: 48 bits or less>", "Set Current Group Object ID <id: 48 bits or less>",
cmd_mcc_set_current_group_obj_id, 2, 0), cmd_mcc_set_current_group_obj_id, 2, 0),
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER)
SHELL_CMD_ARG(read_playing_order, NULL, "Read Playing Order", SHELL_CMD_ARG(read_playing_order, NULL, "Read Playing Order",
cmd_mcc_read_playing_order, 1, 0), cmd_mcc_read_playing_order, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_SET_PLAYING_ORDER)
SHELL_CMD_ARG(set_playing_order, NULL, "Set Playing Order <order>", SHELL_CMD_ARG(set_playing_order, NULL, "Set Playing Order <order>",
cmd_mcc_set_playing_order, 2, 0), cmd_mcc_set_playing_order, 2, 0),
#endif /* defined(CONFIG_BT_MCC_SET_PLAYING_ORDER) */
#if defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED)
SHELL_CMD_ARG(read_playing_orders_supported, NULL, SHELL_CMD_ARG(read_playing_orders_supported, NULL,
"Read Playing Orders Supported", "Read Playing Orders Supported",
cmd_mcc_read_playing_orders_supported, 1, 0), cmd_mcc_read_playing_orders_supported, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_PLAYING_ORDER_SUPPORTED) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_STATE)
SHELL_CMD_ARG(read_media_state, NULL, "Read Media State", SHELL_CMD_ARG(read_media_state, NULL, "Read Media State",
cmd_mcc_read_media_state, 1, 0), cmd_mcc_read_media_state, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_STATE) */
#if defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT)
SHELL_CMD_ARG(play, NULL, "Send the play command", cmd_mcc_play, 1, 0), SHELL_CMD_ARG(play, NULL, "Send the play command", cmd_mcc_play, 1, 0),
SHELL_CMD_ARG(pause, NULL, "Send the pause command", SHELL_CMD_ARG(pause, NULL, "Send the pause command",
cmd_mcc_pause, 1, 0), cmd_mcc_pause, 1, 0),
@ -1962,8 +2077,11 @@ SHELL_STATIC_SUBCMD_SET_CREATE(mcc_cmds,
SHELL_CMD_ARG(goto_group, NULL, SHELL_CMD_ARG(goto_group, NULL,
"Send the goto group command <int32_t: group>", "Send the goto group command <int32_t: group>",
cmd_mcc_goto_group, 2, 0), cmd_mcc_goto_group, 2, 0),
#endif /* defined(CONFIG_BT_MCC_SET_MEDIA_CONTROL_POINT) */
#if defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED)
SHELL_CMD_ARG(read_opcodes_supported, NULL, "Send the Read Opcodes Supported", SHELL_CMD_ARG(read_opcodes_supported, NULL, "Send the Read Opcodes Supported",
cmd_mcc_read_opcodes_supported, 1, 0), cmd_mcc_read_opcodes_supported, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_MEDIA_CONTROL_POINT_OPCODES_SUPPORTED) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
SHELL_CMD_ARG(send_search_raw, NULL, "Send search <search control item sequence>", SHELL_CMD_ARG(send_search_raw, NULL, "Send search <search control item sequence>",
cmd_mcc_send_search_raw, 2, 0), cmd_mcc_send_search_raw, 2, 0),
@ -1982,8 +2100,10 @@ SHELL_STATIC_SUBCMD_SET_CREATE(mcc_cmds,
"Read Search Results Object ID", "Read Search Results Object ID",
cmd_mcc_read_search_results_obj_id, 1, 0), cmd_mcc_read_search_results_obj_id, 1, 0),
#endif /* CONFIG_BT_MCC_OTS */ #endif /* CONFIG_BT_MCC_OTS */
#if defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID)
SHELL_CMD_ARG(read_content_control_id, NULL, "Read Content Control ID", SHELL_CMD_ARG(read_content_control_id, NULL, "Read Content Control ID",
cmd_mcc_read_content_control_id, 1, 0), cmd_mcc_read_content_control_id, 1, 0),
#endif /* defined(CONFIG_BT_MCC_READ_CONTENT_CONTROL_ID) */
#ifdef CONFIG_BT_MCC_OTS #ifdef CONFIG_BT_MCC_OTS
SHELL_CMD_ARG(ots_read_features, NULL, "Read OTC Features", SHELL_CMD_ARG(ots_read_features, NULL, "Read OTC Features",
cmd_mcc_otc_read_features, 1, 0), cmd_mcc_otc_read_features, 1, 0),

View file

@ -181,6 +181,12 @@ tests:
extra_configs: extra_configs:
- CONFIG_BT_MCC_OTS=n - CONFIG_BT_MCC_OTS=n
tags: bluetooth tags: bluetooth
bluetooth.shell.audio.mcc_minimal:
extra_args: CONF_FILE="audio.conf"
build_only: true
extra_configs:
- CONFIG_BT_MCC_MINIMAL=y
tags: bluetooth
bluetooth.shell.audio.no_otsc: bluetooth.shell.audio.no_otsc:
extra_args: CONF_FILE="audio.conf" extra_args: CONF_FILE="audio.conf"
build_only: true build_only: true