aboutsummaryrefslogtreecommitdiff
path: root/inc/bluetooth/leaudio/bass_def.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/bluetooth/leaudio/bass_def.h')
-rw-r--r--inc/bluetooth/leaudio/bass_def.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/inc/bluetooth/leaudio/bass_def.h b/inc/bluetooth/leaudio/bass_def.h
new file mode 100644
index 0000000..047ba88
--- /dev/null
+++ b/inc/bluetooth/leaudio/bass_def.h
@@ -0,0 +1,154 @@
+#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