2025-11-25 10:21:47 +08:00

128 lines
3.7 KiB
C

#ifndef _BAP_H_
#define _BAP_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "ble_audio_def.h"
#include "pacs_client.h"
#include "codec_qos.h"
//#include "ascs_def.h"
#define BAP_BROADCAST_SOURCE_ROLE 0x01
#define BAP_BROADCAST_SINK_ROLE 0x02
#define BAP_BROADCAST_ASSISTANT_ROLE 0x04
#define BAP_SCAN_DELEGATOR_ROLE 0x08
#define BAP_UNICAST_CLT_SRC_ROLE 0x10
#define BAP_UNICAST_CLT_SNK_ROLE 0x20
#define BAP_UNICAST_SRV_SRC_ROLE 0x40
#define BAP_UNICAST_SRV_SNK_ROLE 0x80
typedef struct
{
uint8_t role_mask;
uint8_t brs_num; //use isoc_big_receiver_num
uint8_t snk_ase_num;
uint8_t src_ase_num;
bool init_gap;
//for BAP_UNICAST_CLT_SRC_ROLE, BAP_UNICAST_CLT_SNK_ROLE
uint8_t isoc_cig_max_num;
//for BAP_UNICAST_CLT_SRC_ROLE, BAP_UNICAST_CLT_SNK_ROLE, BAP_UNICAST_SRV_SRC_ROLE, BAP_UNICAST_SRV_SNK_ROLE
uint8_t isoc_cis_max_num;
//for BAP_BROADCAST_SOURCE_ROLE
uint8_t pa_adv_num;
uint8_t isoc_big_broadcaster_num;
uint8_t isoc_bis_broadcaster_num;
//for BAP_BROADCAST_SINK_ROLE and BAP_BROADCAST_ASSISTANT_ROLE
uint8_t pa_sync_num;
uint8_t isoc_big_receiver_num;
uint8_t isoc_bis_receiver_num;
} T_BAP_ROLE_INFO;
#if LE_AUDIO_PACS_CLIENT_SUPPORT
#define PACS_AUDIO_AVAILABLE_CONTEXTS_EXIST 0x01
#define PACS_AUDIO_SUPPORTED_CONTEXTS_EXIST 0x02
#define PACS_SINK_AUDIO_LOC_EXIST 0x04
#define PACS_SINK_PAC_EXIST 0x08
#define PACS_SOURCE_AUDIO_LOC_EXIST 0x10
#define PACS_SOURCE_PAC_EXIST 0x20
typedef struct
{
uint16_t value_exist;
uint8_t sink_pac_num;
uint8_t source_pac_num;
uint32_t snk_audio_loc;
uint32_t src_audio_loc;
uint16_t snk_sup_context;
uint16_t src_sup_context;
uint16_t snk_avail_context;
uint16_t src_avail_context;
} T_BAP_PACS_INFO;
typedef struct
{
uint8_t codec_id[CODEC_ID_LEN];
uint16_t handle;
uint16_t pref_audio_contexts;
T_CODEC_CAP codec_cap;
uint32_t lc3_sup_cfg_bits;
} T_BAP_PAC_RECORD;
//LE_AUDIO_MSG_BAP_PACS_DIS_DONE
typedef struct
{
uint16_t conn_handle;
bool is_found;
uint8_t sink_pac_num;
uint8_t source_pac_num;
} T_BAP_PACS_DIS_DONE;
//LE_AUDIO_MSG_BAP_PAC_NOTIFY
typedef struct
{
uint16_t conn_handle;
uint16_t handle;
} T_BAP_PAC_NOTIFY;
bool bap_pacs_get_info(uint16_t conn_handle, T_BAP_PACS_INFO *p_pacs_info);
bool bap_pacs_get_pac_record(uint16_t conn_handle, T_AUDIO_DIRECTION direction, uint8_t *p_pac_num,
T_BAP_PAC_RECORD *p_pac_tbl);
bool bap_pacs_get_pac_record_by_handle(uint16_t conn_handle, uint16_t handle, uint8_t *p_pac_num,
T_BAP_PAC_RECORD *p_pac_tbl);
uint32_t bap_pacs_get_lc3_snk_table_msk(uint16_t conn_handle, uint16_t prefer_context,
uint8_t chl_cnt,
uint8_t block_num);
uint32_t bap_pacs_get_lc3_src_table_msk(uint16_t conn_handle, uint16_t prefer_context,
uint8_t chl_cnt,
uint8_t block_num);
#endif
#if LE_AUDIO_ASCS_CLIENT_SUPPORT
#define ASE_ID_MAX_NUM 8
//LE_AUDIO_MSG_BAP_ASCS_DIS_DONE
typedef struct
{
uint16_t conn_handle;
bool is_found;
uint8_t sink_ase_num;
uint8_t sink_ase_id[ASE_ID_MAX_NUM];
uint8_t source_ase_num;
uint8_t source_ase_id[ASE_ID_MAX_NUM];
} T_BAP_ASCS_DIS_DONE;
#endif
bool bap_role_init(T_BAP_ROLE_INFO *p_role_info);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif