155 lines
3.8 KiB
C
155 lines
3.8 KiB
C
#ifndef _BASS_DEF_H_
|
|
#define _BASS_DEF_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
#include "gap.h"
|
|
#include "metadata_def.h"
|
|
#include "ble_audio_def.h"
|
|
|
|
#define ATT_ERR_BASS_OPCODE_NOT_SUPPORT 0x80
|
|
#define ATT_ERR_BASS_INVALID_SRC_ID 0x81
|
|
|
|
#define BASS_FAILED_TO_SYNC_TO_BIG 0xFFFFFFFF
|
|
#define BASS_CP_BIS_SYNC_NO_PREFER 0xFFFFFFFF
|
|
#define BASS_PA_INTERVAL_UNKNOWN 0xFFFF
|
|
|
|
#define BASS_BRS_DATA_MIN_LEN 15
|
|
// BASS CP minimum possible total length
|
|
#define BASS_CP_OP_MIN_LEN 1
|
|
#define BASS_CP_OP_REMOTE_SCAN_STOP_LEN 1
|
|
#define BASS_CP_OP_REMOTE_SCAN_START_LEN 1
|
|
#define BASS_CP_OP_ADD_SOURCE_MIN_LEN 16
|
|
#define BASS_CP_OP_MODIFY_SOURCE_MIN_LEN 6
|
|
#define BASS_CP_OP_SET_BROADCAST_CODE_LEN 18
|
|
#define BASS_CP_OP_REMOVE_SOURCE_LEN 2
|
|
|
|
#define BASS_BRA_INC_BST_CODE_LEN 31
|
|
|
|
#define BASS_BRS_CHAR_MAX_NUM 4
|
|
#define GATT_UUID_BASS 0x184F
|
|
#define BASS_UUID_CHAR_BROADCAST_AUDIO_SCAN_CP 0x2BC7
|
|
#define BASS_UUID_CHAR_BROADCAST_RECEIVE_STATE 0x2BC8
|
|
|
|
typedef enum
|
|
{
|
|
PA_SYNC_STATE_NOT_SYNC = 0x00,
|
|
PA_SYNC_STATE_SYNCINFO_REQ = 0x01,
|
|
PA_SYNC_STATE_SYNC = 0x02,
|
|
PA_SYNC_STATE_FAILED = 0x03,
|
|
PA_SYNC_STATE_NO_PAST = 0x04,
|
|
} T_PA_SYNC_STATE;
|
|
|
|
typedef enum
|
|
{
|
|
BIG_NOT_ENCRYPTED = 0x00,
|
|
BIG_BROADCAST_CODE_REQUIRED = 0x01,
|
|
BIG_DECRYPTING = 0x02,
|
|
BIG_BAD_CODE = 0x03,
|
|
} T_BIG_ENCRYPTION_STATE;
|
|
|
|
typedef enum
|
|
{
|
|
BASS_CP_OP_REMOTE_SCAN_STOP = 0x00,
|
|
BASS_CP_OP_REMOTE_SCAN_START = 0x01,
|
|
BASS_CP_OP_ADD_SOURCE = 0x02,
|
|
BASS_CP_OP_MODIFY_SOURCE = 0x03,
|
|
BASS_CP_OP_SET_BROADCAST_CODE = 0x04,
|
|
BASS_CP_OP_REMOVE_SOURCE = 0x05,
|
|
} T_BASS_CP_OP;
|
|
|
|
typedef enum
|
|
{
|
|
BASS_PA_NOT_SYNC = 0x00,
|
|
BASS_PA_SYNC_PAST = 0x01,
|
|
BASS_PA_SYNC_NO_PAST = 0x02,
|
|
} T_BASS_PA_SYNC;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t adv_a_match_ext_adv; //AdvA in PAST matches AdvA in ADB_EXT_IND, 0b0=Yes, 0b1=No/Do't know
|
|
uint8_t adv_a_match_src;//AdvA in PAST matches Source_Address, 0b0=Yes, 0b1=No/Do't know
|
|
uint8_t source_id;
|
|
} T_BASS_PAST_SRV_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t bis_sync;
|
|
uint8_t metadata_len;
|
|
uint8_t *p_metadata;
|
|
} T_BASS_CP_BIS_INFO;
|
|
|
|
typedef struct
|
|
{
|
|
bool brs_is_used;
|
|
//Broadcast Receive State Field
|
|
uint8_t source_id;
|
|
uint8_t source_address_type;
|
|
uint8_t source_address[GAP_BD_ADDR_LEN];
|
|
uint8_t source_adv_sid;
|
|
uint8_t broadcast_id[BROADCAST_ID_LEN];
|
|
T_PA_SYNC_STATE pa_sync_state;
|
|
uint32_t bis_sync_state;
|
|
T_BIG_ENCRYPTION_STATE big_encryption;
|
|
uint8_t bad_code[BROADCAST_CODE_LEN];
|
|
uint8_t num_subgroups;
|
|
uint16_t bis_info_size;
|
|
T_BASS_CP_BIS_INFO *p_cp_bis_info;
|
|
} T_BASS_BRS_DATA;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t advertiser_address_type;
|
|
uint8_t advertiser_address[GAP_BD_ADDR_LEN];
|
|
uint8_t advertiser_sid;
|
|
uint8_t broadcast_id[BROADCAST_ID_LEN];
|
|
T_BASS_PA_SYNC pa_sync;
|
|
uint16_t pa_interval;
|
|
uint8_t num_subgroups;
|
|
uint16_t bis_info_size;
|
|
T_BASS_CP_BIS_INFO *p_cp_bis_info;
|
|
} T_BASS_CP_ADD_SOURCE;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t source_id;
|
|
T_BASS_PA_SYNC pa_sync;
|
|
uint16_t pa_interval;
|
|
uint8_t num_subgroups;
|
|
uint16_t bis_info_size;
|
|
T_BASS_CP_BIS_INFO *p_cp_bis_info;
|
|
} T_BASS_CP_MODIFY_SOURCE;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t source_id;
|
|
uint8_t broadcast_code[BROADCAST_CODE_LEN];
|
|
} T_BASS_CP_SET_BROADCAST_CODE;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t source_id;
|
|
} T_BASS_CP_REMOVE_SOURCE;
|
|
|
|
typedef union
|
|
{
|
|
T_BASS_CP_ADD_SOURCE add_source;
|
|
T_BASS_CP_MODIFY_SOURCE modify_source;
|
|
T_BASS_CP_SET_BROADCAST_CODE set_broadcast_code;
|
|
T_BASS_CP_REMOVE_SOURCE remove_source;
|
|
} T_BASS_CP_PARAM;
|
|
|
|
typedef struct
|
|
{
|
|
T_BASS_CP_OP opcode;
|
|
T_BASS_CP_PARAM param;
|
|
} T_BASS_CP_DATA;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif
|