Bluetooth: Audio: Add media player icon URL changed callback

Add support for notifying MCS a player icon URL change.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
Emil Gydesen 2023-02-08 17:33:37 +01:00 committed by Carles Cufí
commit 281d0a3fc8
7 changed files with 47 additions and 0 deletions

View file

@ -1457,6 +1457,15 @@ struct bt_ots *bt_mcs_get_ots(void);
*/ */
void media_proxy_pl_name_cb(const char *name); void media_proxy_pl_name_cb(const char *name);
/**
* @brief Player icon URL changed callback
*
* To be called when the player's icon URL is changed.
*
* @param url The URL of the player's icon
*/
void media_proxy_pl_icon_url_cb(const char *url);
/** /**
* @brief Track changed callback * @brief Track changed callback
* *

View file

@ -830,6 +830,11 @@ void media_proxy_sctrl_player_name_cb(const char *name)
notify_string(BT_UUID_MCS_PLAYER_NAME, name); notify_string(BT_UUID_MCS_PLAYER_NAME, name);
} }
void media_proxy_sctrl_icon_url_cb(const char *name)
{
/* TODO*/
}
void media_proxy_sctrl_track_changed_cb(void) void media_proxy_sctrl_track_changed_cb(void)
{ {
LOG_DBG("Notifying track change"); LOG_DBG("Notifying track change");
@ -992,6 +997,7 @@ int bt_mcs_init(struct bt_ots_cb *ots_cbs)
/* Set up the callback structure */ /* Set up the callback structure */
cbs.player_name = media_proxy_sctrl_player_name_cb; cbs.player_name = media_proxy_sctrl_player_name_cb;
cbs.icon_url = media_proxy_sctrl_icon_url_cb;
cbs.track_changed = media_proxy_sctrl_track_changed_cb; cbs.track_changed = media_proxy_sctrl_track_changed_cb;
cbs.track_title = media_proxy_sctrl_track_title_cb; cbs.track_title = media_proxy_sctrl_track_title_cb;
cbs.track_duration = media_proxy_sctrl_track_duration_cb; cbs.track_duration = media_proxy_sctrl_track_duration_cb;

View file

@ -1891,6 +1891,17 @@ void media_proxy_pl_name_cb(const char *name)
} }
} }
void media_proxy_pl_icon_url_cb(const char *url)
{
mprx.sctrlr.cbs->icon_url(url);
if (mprx.ctrlr.cbs && mprx.ctrlr.cbs->player_name_recv) {
mprx.ctrlr.cbs->icon_url_recv(&mprx.local_player, 0, url);
} else {
LOG_DBG("No ctrlr player icon URL callback");
}
}
void media_proxy_pl_track_changed_cb(void) void media_proxy_pl_track_changed_cb(void)
{ {
mprx.sctrlr.cbs->track_changed(); mprx.sctrlr.cbs->track_changed();

View file

@ -32,6 +32,8 @@
struct media_proxy_sctrl_cbs { struct media_proxy_sctrl_cbs {
void (*player_name)(const char *name); void (*player_name)(const char *name);
void (*icon_url)(const char *url);
void (*track_changed)(void); void (*track_changed)(void);
void (*track_title)(const char *title); void (*track_title)(const char *title);

View file

@ -2893,6 +2893,11 @@ void mpl_test_player_name_changed_cb(void)
media_proxy_pl_name_cb(pl.name); media_proxy_pl_name_cb(pl.name);
} }
void mpl_test_player_icon_url_changed_cb(void)
{
media_proxy_pl_icon_url_cb(pl.icon_url);
}
void mpl_test_track_changed_cb(void) void mpl_test_track_changed_cb(void)
{ {
media_proxy_pl_track_changed_cb(); media_proxy_pl_track_changed_cb();

View file

@ -103,6 +103,9 @@ void mpl_test_media_state_set(uint8_t state);
/** Trigger player name changed callback */ /** Trigger player name changed callback */
void mpl_test_player_name_changed_cb(void); void mpl_test_player_name_changed_cb(void);
/** Trigger player name changed callback */
void mpl_test_player_icon_url_changed_cb(void);
/* Trigger track changed callback */ /* Trigger track changed callback */
void mpl_test_track_changed_cb(void); void mpl_test_track_changed_cb(void);

View file

@ -80,6 +80,14 @@ int cmd_mpl_test_player_name_cb(const struct shell *sh, size_t argc,
return 0; return 0;
} }
int cmd_mpl_test_player_icon_url_cb(const struct shell *sh, size_t argc,
char *argv[])
{
mpl_test_player_icon_url_changed_cb();
return 0;
}
int cmd_mpl_test_track_changed_cb(const struct shell *sh, size_t argc, int cmd_mpl_test_track_changed_cb(const struct shell *sh, size_t argc,
char *argv[]) char *argv[])
{ {
@ -211,6 +219,9 @@ SHELL_STATIC_SUBCMD_SET_CREATE(mpl_cmds,
SHELL_CMD_ARG(player_name_changed_cb, NULL, SHELL_CMD_ARG(player_name_changed_cb, NULL,
"Trigger Player Name changed callback (test)", "Trigger Player Name changed callback (test)",
cmd_mpl_test_player_name_cb, 1, 0), cmd_mpl_test_player_name_cb, 1, 0),
SHELL_CMD_ARG(player_icon_url_changed_cb, NULL,
"Trigger Player icon URL changed callback (test)",
cmd_mpl_test_player_icon_url_cb, 1, 0),
SHELL_CMD_ARG(track_changed_cb, NULL, SHELL_CMD_ARG(track_changed_cb, NULL,
"Trigger Track Changed callback (test)", "Trigger Track Changed callback (test)",
cmd_mpl_test_track_changed_cb, 1, 0), cmd_mpl_test_track_changed_cb, 1, 0),