Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mcc.h
Go to the documentation of this file.
1
15/*
16 * Copyright (c) 2019 - 2021 Nordic Semiconductor ASA
17 *
18 * SPDX-License-Identifier: Apache-2.0
19 */
20
21#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC_
22#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC_
23
24#include <stdint.h>
25
27#include <zephyr/net/buf.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/**** Callback functions ******************************************************/
35
44typedef void (*bt_mcc_discover_mcs_cb)(struct bt_conn *conn, int err);
45
55typedef void (*bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const char *name);
56
57#ifdef CONFIG_BT_OTS_CLIENT
67typedef void (*bt_mcc_read_icon_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
68#endif /* CONFIG_BT_OTS_CLIENT */
69
79typedef void (*bt_mcc_read_icon_url_cb)(struct bt_conn *conn, int err, const char *icon_url);
80
92typedef void (*bt_mcc_track_changed_ntf_cb)(struct bt_conn *conn, int err);
93
94
104typedef void (*bt_mcc_read_track_title_cb)(struct bt_conn *conn, int err, const char *title);
105
115typedef void (*bt_mcc_read_track_duration_cb)(struct bt_conn *conn, int err, int32_t dur);
116
126typedef void (*bt_mcc_read_track_position_cb)(struct bt_conn *conn, int err, int32_t pos);
127
137typedef void (*bt_mcc_set_track_position_cb)(struct bt_conn *conn, int err, int32_t pos);
138
148typedef void (*bt_mcc_read_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed);
149
159typedef void (*bt_mcc_set_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed);
160
170typedef void (*bt_mcc_read_seeking_speed_cb)(struct bt_conn *conn, int err, int8_t speed);
171
172#ifdef CONFIG_BT_OTS_CLIENT
182typedef void (*bt_mcc_read_segments_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
183
193typedef void (*bt_mcc_read_current_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
194
204typedef void (*bt_mcc_set_current_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
205
215typedef void (*bt_mcc_read_next_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
216
226typedef void (*bt_mcc_set_next_track_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
227
237typedef void (*bt_mcc_read_parent_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
238
248typedef void (*bt_mcc_read_current_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t id);
249
259typedef void (*bt_mcc_set_current_group_obj_id_cb)(struct bt_conn *conn, int err, uint64_t obj_id);
260
261#endif /* CONFIG_BT_OTS_CLIENT */
262
272typedef void (*bt_mcc_read_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order);
273
283typedef void (*bt_mcc_set_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order);
284
294typedef void (*bt_mcc_read_playing_orders_supported_cb)(struct bt_conn *conn, int err,
295 uint16_t orders);
296
306typedef void (*bt_mcc_read_media_state_cb)(struct bt_conn *conn, int err, uint8_t state);
307
317typedef void (*bt_mcc_send_cmd_cb)(struct bt_conn *conn, int err, const struct mpl_cmd *cmd);
318
332typedef void (*bt_mcc_cmd_ntf_cb)(struct bt_conn *conn, int err, const struct mpl_cmd_ntf *ntf);
333
343typedef void (*bt_mcc_read_opcodes_supported_cb)(struct bt_conn *conn, int err,
344 uint32_t opcodes);
345
346#ifdef CONFIG_BT_OTS_CLIENT
356typedef void (*bt_mcc_send_search_cb)(struct bt_conn *conn, int err,
357 const struct mpl_search *search);
358
372typedef void (*bt_mcc_search_ntf_cb)(struct bt_conn *conn, int err,
373 uint8_t result_code);
374
388typedef void (*bt_mcc_read_search_results_obj_id_cb)(struct bt_conn *conn,
389 int err, uint64_t id);
390#endif /* CONFIG_BT_OTS_CLIENT */
391
401typedef void (*bt_mcc_read_content_control_id_cb)(struct bt_conn *conn,
402 int err, uint8_t ccid);
403#ifdef CONFIG_BT_OTS_CLIENT
404/**** Callback functions for the included Object Transfer service *************/
405
414typedef void (*bt_mcc_otc_obj_selected_cb)(struct bt_conn *conn, int err);
415
424typedef void (*bt_mcc_otc_obj_metadata_cb)(struct bt_conn *conn, int err);
425
437typedef void (*bt_mcc_otc_read_icon_object_cb)(struct bt_conn *conn, int err,
438 struct net_buf_simple *buf);
439
451typedef void (*bt_mcc_otc_read_track_segments_object_cb)(struct bt_conn *conn, int err,
452 struct net_buf_simple *buf);
453
465typedef void (*bt_mcc_otc_read_current_track_object_cb)(struct bt_conn *conn, int err,
466 struct net_buf_simple *buf);
467
479typedef void (*bt_mcc_otc_read_next_track_object_cb)(struct bt_conn *conn, int err,
480 struct net_buf_simple *buf);
481
493typedef void (*bt_mcc_otc_read_parent_group_object_cb)(struct bt_conn *conn, int err,
494 struct net_buf_simple *buf);
495
507typedef void (*bt_mcc_otc_read_current_group_object_cb)(struct bt_conn *conn, int err,
508 struct net_buf_simple *buf);
509
510#endif /* CONFIG_BT_OTS_CLIENT */
511
512
516struct bt_mcc_cb {
519#ifdef CONFIG_BT_OTS_CLIENT
520 bt_mcc_read_icon_obj_id_cb read_icon_obj_id;
521#endif /* CONFIG_BT_OTS_CLIENT */
531#ifdef CONFIG_BT_OTS_CLIENT
532 bt_mcc_read_segments_obj_id_cb read_segments_obj_id;
533 bt_mcc_read_current_track_obj_id_cb read_current_track_obj_id;
534 bt_mcc_set_current_track_obj_id_cb set_current_track_obj_id;
535 bt_mcc_read_next_track_obj_id_cb read_next_track_obj_id;
536 bt_mcc_set_next_track_obj_id_cb set_next_track_obj_id;
537 bt_mcc_read_current_group_obj_id_cb read_current_group_obj_id;
538 bt_mcc_set_current_group_obj_id_cb set_current_group_obj_id;
539 bt_mcc_read_parent_group_obj_id_cb read_parent_group_obj_id;
540#endif /* CONFIG_BT_OTS_CLIENT */
548#ifdef CONFIG_BT_OTS_CLIENT
549 bt_mcc_send_search_cb send_search;
550 bt_mcc_search_ntf_cb search_ntf;
551 bt_mcc_read_search_results_obj_id_cb read_search_results_obj_id;
552#endif /* CONFIG_BT_OTS_CLIENT */
554#ifdef CONFIG_BT_OTS_CLIENT
555 bt_mcc_otc_obj_selected_cb otc_obj_selected;
556 bt_mcc_otc_obj_metadata_cb otc_obj_metadata;
557 bt_mcc_otc_read_icon_object_cb otc_icon_object;
558 bt_mcc_otc_read_track_segments_object_cb otc_track_segments_object;
559 bt_mcc_otc_read_current_track_object_cb otc_current_track_object;
560 bt_mcc_otc_read_next_track_object_cb otc_next_track_object;
561 bt_mcc_otc_read_current_group_object_cb otc_current_group_object;
562 bt_mcc_otc_read_parent_group_object_cb otc_parent_group_object;
563#endif /* CONFIG_BT_OTS_CLIENT */
564};
565
566/**** Functions ***************************************************************/
567
575int bt_mcc_init(struct bt_mcc_cb *cb);
576
577
592int bt_mcc_discover_mcs(struct bt_conn *conn, bool subscribe);
593
601int bt_mcc_read_player_name(struct bt_conn *conn);
602
603#ifdef CONFIG_BT_OTS_CLIENT
611int bt_mcc_read_icon_obj_id(struct bt_conn *conn);
612#endif /* CONFIG_BT_OTS_CLIENT */
613
621int bt_mcc_read_icon_url(struct bt_conn *conn);
622
630int bt_mcc_read_track_title(struct bt_conn *conn);
631
639int bt_mcc_read_track_duration(struct bt_conn *conn);
640
648int bt_mcc_read_track_position(struct bt_conn *conn);
649
658int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos);
659
667int bt_mcc_read_playback_speed(struct bt_conn *conn);
668
677int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed);
678
686int bt_mcc_read_seeking_speed(struct bt_conn *conn);
687
688#ifdef CONFIG_BT_OTS_CLIENT
696int bt_mcc_read_segments_obj_id(struct bt_conn *conn);
697
705int bt_mcc_read_current_track_obj_id(struct bt_conn *conn);
706
717int bt_mcc_set_current_track_obj_id(struct bt_conn *conn, uint64_t id);
718
727int bt_mcc_read_next_track_obj_id(struct bt_conn *conn);
728
739int bt_mcc_set_next_track_obj_id(struct bt_conn *conn, uint64_t id);
740
748int bt_mcc_read_current_group_obj_id(struct bt_conn *conn);
749
760int bt_mcc_set_current_group_obj_id(struct bt_conn *conn, uint64_t id);
761
769int bt_mcc_read_parent_group_obj_id(struct bt_conn *conn);
770#endif /* CONFIG_BT_OTS_CLIENT */
771
779int bt_mcc_read_playing_order(struct bt_conn *conn);
780
789int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order);
790
798int bt_mcc_read_playing_orders_supported(struct bt_conn *conn);
799
807int bt_mcc_read_media_state(struct bt_conn *conn);
808
819int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd);
820
828int bt_mcc_read_opcodes_supported(struct bt_conn *conn);
829
830#ifdef CONFIG_BT_OTS_CLIENT
841int bt_mcc_send_search(struct bt_conn *conn, const struct mpl_search *search);
842
850int bt_mcc_read_search_results_obj_id(struct bt_conn *conn);
851#endif /* CONFIG_BT_OTS_CLIENT */
852
860int bt_mcc_read_content_control_id(struct bt_conn *conn);
861
862#ifdef CONFIG_BT_OTS_CLIENT
870int bt_mcc_otc_read_object_metadata(struct bt_conn *conn);
871
879int bt_mcc_otc_read_icon_object(struct bt_conn *conn);
880
888int bt_mcc_otc_read_track_segments_object(struct bt_conn *conn);
889
897int bt_mcc_otc_read_current_track_object(struct bt_conn *conn);
898
906int bt_mcc_otc_read_next_track_object(struct bt_conn *conn);
907
915int bt_mcc_otc_read_current_group_object(struct bt_conn *conn);
916
924int bt_mcc_otc_read_parent_group_object(struct bt_conn *conn);
925
926#if defined(CONFIG_BT_MCC_SHELL)
927struct bt_ots_client *bt_mcc_otc_inst(struct bt_conn *conn);
928#endif /* defined(CONFIG_BT_MCC_SHELL) */
929#endif /* CONFIG_BT_OTS_CLIENT */
930
931#ifdef __cplusplus
932}
933#endif
934
939#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MCC__ */
Bluetooth connection handling.
int bt_mcc_set_playing_order(struct bt_conn *conn, uint8_t order)
Set Playing Order.
int bt_mcc_read_playing_order(struct bt_conn *conn)
Read Playing Order.
void(* bt_mcc_set_track_position_cb)(struct bt_conn *conn, int err, int32_t pos)
Callback function for bt_mcc_set_track_position()
Definition: mcc.h:137
void(* bt_mcc_read_track_position_cb)(struct bt_conn *conn, int err, int32_t pos)
Callback function for bt_mcc_read_track_position()
Definition: mcc.h:126
void(* bt_mcc_set_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed)
Callback function for bt_mcc_set_playback_speed()
Definition: mcc.h:159
int bt_mcc_set_playback_speed(struct bt_conn *conn, int8_t speed)
Set Playback Speed.
void(* bt_mcc_set_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order)
Callback function for bt_mcc_set_playing_order()
Definition: mcc.h:283
void(* bt_mcc_read_media_state_cb)(struct bt_conn *conn, int err, uint8_t state)
Callback function for bt_mcc_read_media_state()
Definition: mcc.h:306
void(* bt_mcc_read_seeking_speed_cb)(struct bt_conn *conn, int err, int8_t speed)
Callback function for bt_mcc_read_seeking_speed()
Definition: mcc.h:170
int bt_mcc_read_seeking_speed(struct bt_conn *conn)
Read Seeking speed.
int bt_mcc_read_icon_url(struct bt_conn *conn)
Read Icon Object URL.
int bt_mcc_send_cmd(struct bt_conn *conn, const struct mpl_cmd *cmd)
Send a command.
int bt_mcc_read_track_duration(struct bt_conn *conn)
Read Track Duration.
void(* bt_mcc_cmd_ntf_cb)(struct bt_conn *conn, int err, const struct mpl_cmd_ntf *ntf)
Callback function for command notifications.
Definition: mcc.h:332
void(* bt_mcc_track_changed_ntf_cb)(struct bt_conn *conn, int err)
Callback function for track changed notifications.
Definition: mcc.h:92
int bt_mcc_read_opcodes_supported(struct bt_conn *conn)
Read Opcodes Supported.
void(* bt_mcc_read_track_title_cb)(struct bt_conn *conn, int err, const char *title)
Callback function for bt_mcc_read_track_title()
Definition: mcc.h:104
void(* bt_mcc_read_playback_speed_cb)(struct bt_conn *conn, int err, int8_t speed)
Callback function for bt_mcc_read_playback_speed()
Definition: mcc.h:148
int bt_mcc_read_player_name(struct bt_conn *conn)
Read Media Player Name.
int bt_mcc_read_content_control_id(struct bt_conn *conn)
Read Content Control ID.
void(* bt_mcc_read_track_duration_cb)(struct bt_conn *conn, int err, int32_t dur)
Callback function for bt_mcc_read_track_duration()
Definition: mcc.h:115
int bt_mcc_read_track_title(struct bt_conn *conn)
Read Track Title.
int bt_mcc_init(struct bt_mcc_cb *cb)
Initialize Media Control Client.
int bt_mcc_discover_mcs(struct bt_conn *conn, bool subscribe)
Discover Media Control Service.
int bt_mcc_read_playback_speed(struct bt_conn *conn)
Read Playback speed.
void(* bt_mcc_read_player_name_cb)(struct bt_conn *conn, int err, const char *name)
Callback function for bt_mcc_read_player_name()
Definition: mcc.h:55
void(* bt_mcc_read_icon_url_cb)(struct bt_conn *conn, int err, const char *icon_url)
Callback function for bt_mcc_read_icon_url()
Definition: mcc.h:79
void(* bt_mcc_discover_mcs_cb)(struct bt_conn *conn, int err)
Callback function for bt_mcc_discover_mcs()
Definition: mcc.h:44
void(* bt_mcc_read_opcodes_supported_cb)(struct bt_conn *conn, int err, uint32_t opcodes)
Callback function for bt_mcc_read_opcodes_supported()
Definition: mcc.h:343
int bt_mcc_read_media_state(struct bt_conn *conn)
Read Media State.
void(* bt_mcc_read_playing_orders_supported_cb)(struct bt_conn *conn, int err, uint16_t orders)
Callback function for bt_mcc_read_playing_orders_supported()
Definition: mcc.h:294
int bt_mcc_set_track_position(struct bt_conn *conn, int32_t pos)
Set Track position.
void(* bt_mcc_read_content_control_id_cb)(struct bt_conn *conn, int err, uint8_t ccid)
Callback function for bt_mcc_read_content_control_id()
Definition: mcc.h:401
void(* bt_mcc_send_cmd_cb)(struct bt_conn *conn, int err, const struct mpl_cmd *cmd)
Callback function for bt_mcc_send_cmd()
Definition: mcc.h:317
int bt_mcc_read_track_position(struct bt_conn *conn)
Read Track Position.
int bt_mcc_read_playing_orders_supported(struct bt_conn *conn)
Read Playing Orders Supported.
void(* bt_mcc_read_playing_order_cb)(struct bt_conn *conn, int err, uint8_t order)
Callback function for bt_mcc_read_playing_order()
Definition: mcc.h:272
static void cmd(uint32_t command)
Execute a display list command by co-processor engine.
Definition: ft8xx_reference_api.h:153
Buffer management.
state
Definition: parser_state.h:29
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__INT32_TYPE__ int32_t
Definition: stdint.h:74
__UINT64_TYPE__ uint64_t
Definition: stdint.h:91
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT8_TYPE__ int8_t
Definition: stdint.h:72
Media control client callbacks.
Definition: mcc.h:516
bt_mcc_set_playing_order_cb set_playing_order
Definition: mcc.h:542
bt_mcc_discover_mcs_cb discover_mcs
Definition: mcc.h:517
bt_mcc_read_playing_order_cb read_playing_order
Definition: mcc.h:541
bt_mcc_read_media_state_cb read_media_state
Definition: mcc.h:544
bt_mcc_read_track_title_cb read_track_title
Definition: mcc.h:524
bt_mcc_read_playback_speed_cb read_playback_speed
Definition: mcc.h:528
bt_mcc_set_playback_speed_cb set_playback_speed
Definition: mcc.h:529
bt_mcc_read_seeking_speed_cb read_seeking_speed
Definition: mcc.h:530
bt_mcc_cmd_ntf_cb cmd_ntf
Definition: mcc.h:546
bt_mcc_read_track_duration_cb read_track_duration
Definition: mcc.h:525
bt_mcc_read_icon_url_cb read_icon_url
Definition: mcc.h:522
bt_mcc_send_cmd_cb send_cmd
Definition: mcc.h:545
bt_mcc_read_playing_orders_supported_cb read_playing_orders_supported
Definition: mcc.h:543
bt_mcc_track_changed_ntf_cb track_changed_ntf
Definition: mcc.h:523
bt_mcc_read_track_position_cb read_track_position
Definition: mcc.h:526
bt_mcc_read_opcodes_supported_cb read_opcodes_supported
Definition: mcc.h:547
bt_mcc_read_content_control_id_cb read_content_control_id
Definition: mcc.h:553
bt_mcc_read_player_name_cb read_player_name
Definition: mcc.h:518
bt_mcc_set_track_position_cb set_track_position
Definition: mcc.h:527
OTS client instance.
Definition: ots.h:819
Media command notification.
Definition: media_proxy.h:64
Media player command.
Definition: media_proxy.h:55
Search.
Definition: media_proxy.h:81
char search[64]
Definition: media_proxy.h:83
Simple network buffer representation.
Definition: buf.h:83