blob: 517e4951920dbcca8b900cbbabc990b1beec726f [file] [log] [blame]
/** @file
* @brief Header for Bluetooth TMAP.
*
* Copyright 2023 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_
#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_
#include <zephyr/sys/util.h>
/** @brief TMAP Role characteristic */
enum bt_tmap_role {
BT_TMAP_ROLE_CG = BIT(0),
BT_TMAP_ROLE_CT = BIT(1),
BT_TMAP_ROLE_UMS = BIT(2),
BT_TMAP_ROLE_UMR = BIT(3),
BT_TMAP_ROLE_BMS = BIT(4),
BT_TMAP_ROLE_BMR = BIT(5),
};
/** @brief TMAP callback structure. */
struct bt_tmap_cb {
/** @brief TMAP discovery complete callback
*
* This callback notifies the application about the value of the
* TMAP Role characteristic on the peer.
*
* @param role Peer TMAP role(s).
* @param conn Pointer to the connection
* @param err 0 if success, ATT error received from server otherwise.
*/
void (*discovery_complete)(enum bt_tmap_role role, struct bt_conn *conn, int err);
};
/**
* @brief Adds TMAS instance to database and sets the received TMAP role(s).
*
* @param role TMAP role(s) of the device (one or multiple).
*
* @return 0 on success or negative error value on failure.
*/
int bt_tmap_register(enum bt_tmap_role role);
/**
* @brief Perform service discovery as TMAP Client
*
* @param conn Pointer to the connection.
* @param tmap_cb Pointer to struct of TMAP callbacks.
*
* @return 0 on success or negative error value on failure.
*/
int bt_tmap_discover(struct bt_conn *conn, struct bt_tmap_cb *tmap_cb);
/**
* @brief Set one or multiple TMAP roles dynamically.
* Previously registered value will be overwritten.
*
* @param role TMAP role(s).
*
*/
void bt_tmap_set_role(enum bt_tmap_role role);
#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_ */