Line data Source code
1 1 : /**
2 : * @file
3 : * @brief Header for Bluetooth TMAP.
4 : *
5 : * Copyright 2023 NXP
6 : * Copyright (c) 2024-2025 Nordic Semiconductor ASA
7 : *
8 : * SPDX-License-Identifier: Apache-2.0
9 : */
10 :
11 : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_
12 : #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_
13 :
14 : /**
15 : * @brief Telephone and Media Audio Profile (TMAP)
16 : *
17 : * @defgroup bt_tmap Telephone and Media Audio Profile (TMAP)
18 : *
19 : * @since 3.4
20 : * @version 0.8.0
21 : *
22 : * @ingroup bluetooth
23 : * @{
24 : *
25 : * The Telephone and Media Audio Profile (TMAP) uses a collection of Bluetooth features and profiles
26 : * to enable interoperability between devices for telephony and media audio.
27 : */
28 :
29 : #include <zephyr/autoconf.h>
30 : #include <zephyr/bluetooth/conn.h>
31 : #include <zephyr/sys/util.h>
32 : #include <zephyr/sys/util_macro.h>
33 :
34 : /** @brief TMAP Role characteristic */
35 1 : enum bt_tmap_role {
36 : /**
37 : * @brief TMAP Call Gateway role
38 : *
39 : * This role is defined to telephone and VoIP applications using the Call Control Profile
40 : * to control calls on a remote TMAP Call Terminal.
41 : * Audio streams in this role are typically bi-directional.
42 : */
43 : BT_TMAP_ROLE_CG = BIT(0),
44 : /**
45 : * @brief TMAP Call Terminal role
46 : *
47 : * This role is defined to telephone and VoIP applications using the Call Control Profile
48 : * to expose calls to remote TMAP Call Gateways.
49 : * Audio streams in this role are typically bi-directional.
50 : */
51 : BT_TMAP_ROLE_CT = BIT(1),
52 : /**
53 : * @brief TMAP Unicast Media Sender role
54 : *
55 : * This role is defined send media audio to TMAP Unicast Media Receivers.
56 : * Audio streams in this role are typically uni-directional.
57 : */
58 : BT_TMAP_ROLE_UMS = BIT(2),
59 : /**
60 : * @brief TMAP Unicast Media Receiver role
61 : *
62 : * This role is defined receive media audio to TMAP Unicast Media Senders.
63 : * Audio streams in this role are typically uni-directional.
64 : */
65 : BT_TMAP_ROLE_UMR = BIT(3),
66 : /**
67 : * @brief TMAP Broadcast Media Sender role
68 : *
69 : * This role is defined send media audio to TMAP Broadcast Media Receivers.
70 : * Audio streams in this role are always uni-directional.
71 : */
72 : BT_TMAP_ROLE_BMS = BIT(4),
73 : /**
74 : * @brief TMAP Broadcast Media Receiver role
75 : *
76 : * This role is defined send media audio to TMAP Broadcast Media Senders.
77 : * Audio streams in this role are always uni-directional.
78 : */
79 : BT_TMAP_ROLE_BMR = BIT(5),
80 : };
81 :
82 : /** @brief TMAP callback structure. */
83 1 : struct bt_tmap_cb {
84 : /**
85 : * @brief TMAP discovery complete callback
86 : *
87 : * This callback notifies the application about the value of the
88 : * TMAP Role characteristic on the peer.
89 : *
90 : * @param role Peer TMAP role(s).
91 : * @param conn Pointer to the connection
92 : * @param err 0 if success, ATT error received from server otherwise.
93 : */
94 1 : void (*discovery_complete)(enum bt_tmap_role role, struct bt_conn *conn, int err);
95 : };
96 :
97 : /**
98 : * @brief Adds TMAS instance to database and sets the received TMAP role(s).
99 : *
100 : * @param role TMAP role(s) of the device (one or multiple).
101 : *
102 : * @return 0 on success or negative error value on failure.
103 : */
104 1 : int bt_tmap_register(enum bt_tmap_role role);
105 :
106 : /**
107 : * @brief Perform service discovery as TMAP Client
108 : *
109 : * @param conn Pointer to the connection.
110 : * @param tmap_cb Pointer to struct of TMAP callbacks.
111 : *
112 : * @return 0 on success or negative error value on failure.
113 : */
114 1 : int bt_tmap_discover(struct bt_conn *conn, const struct bt_tmap_cb *tmap_cb);
115 :
116 : /**
117 : * @brief Set one or multiple TMAP roles dynamically.
118 : * Previously registered value will be overwritten.
119 : *
120 : * @param role TMAP role(s).
121 : *
122 : */
123 1 : void bt_tmap_set_role(enum bt_tmap_role role);
124 :
125 : /**
126 : * @}
127 : */
128 :
129 : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_ */
|