feat(bt/bluedroid): Support BLE iso in bluedroid host

This commit is contained in:
zhiweijian
2025-04-02 10:31:04 +08:00
parent 352ee491db
commit e3bf21b31a
41 changed files with 5344 additions and 30 deletions
@@ -10,6 +10,6 @@
#include "bt_common.h"
void btm_acl_connected(BD_ADDR bda, UINT16 handle, UINT8 link_type, UINT8 enc_mode, UINT8 status);
void btm_acl_disconnected(UINT16 handle, UINT8 reason);
BOOLEAN btm_acl_disconnected(UINT16 handle, UINT8 reason);
#endif /* ACL_HCI_LINK_INTERFACE_H */
@@ -1072,9 +1072,41 @@ typedef void (tBTM_SET_VENDOR_EVT_MASK_CBACK) (tBTM_STATUS status);
#define BTM_BLE_GAP_PERIODIC_ADV_SYNC_TRANS_RECV_EVT 39
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#define BTM_BLE_GAP_SET_PRIVACY_MODE_COMPLETE_EVT 40
#define BTM_BLE_5_GAP_UNKNOWN_EVT 41
#define BTM_BLE_5_GAP_UNKNOWN_EVT 50
typedef UINT8 tBTM_BLE_5_GAP_EVENT;
#if (BLE_FEAT_ISO_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#define BTM_BLE_ISO_BIG_CREATE_COMPLETE_EVT 1
#define BTM_BLE_ISO_BIG_TERMINATE_COMPLETE_EVT 2
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define BTM_BLE_ISO_BIG_SYNC_ESTABLISHED_EVT 3
#define BTM_BLE_ISO_BIG_SYNC_LOST_EVT 4
#define BTM_BLE_ISO_BIG_SYNC_TERMINATE_COMPLETE_EVT 5
#define BTM_BLE_ISO_BIGINFO_ADV_REPORT_EVT 6
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define BTM_BLE_ISO_DATA_PATH_UPFATE_EVT 7
#define BTM_BLE_ISO_SET_HOST_FEATURE_EVT 8
#define BTM_BLE_ISO_READ_TX_SYNC_EVT 9
#define BTM_BLE_ISO_READ_LINK_QUALITY_EVT 10
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
#define BTM_BLE_ISO_SET_CIG_PARAMS_EVT 11
#define BTM_BLE_ISO_CREATE_CIS_EVT 12
#define BTM_BLE_ISO_REMOVE_CIG_EVT 13
#endif // #if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
#define BTM_BLE_ISO_ACCEPT_CIS_REQ_EVT 14
#define BTM_BLE_ISO_REJECT_CIS_REQ_EVT 15
#endif // #if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
#define BTM_BLE_ISO_CIS_ESTABLISHED_EVT 16
#define BTM_BLE_ISO_CIS_REQUEST_EVT 17
#define BTM_BLE_ISO_CIS_DISCONNECTED_EVT 18
#define BTM_BLE_ISO_UNKNOWN_EVT 19
typedef UINT8 tBTM_BLE_ISO_EVENT;
#endif // #if (BLE_FEAT_ISO_EN == TRUE)
#define BTM_BLE_EXT_ADV_DATA_COMPLETE 0x00
#define BTM_BLE_EXT_ADV_DATA_INCOMPLETE 0x01
#define BTM_BLE_EXT_ADV_DATA_TRUNCATED 0x02
@@ -1328,6 +1360,204 @@ typedef struct {
} tBTM_BLE_PERIOD_ADV_SYNC_TRANS_RECV;
#endif //#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#if (BLE_FEAT_ISO_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
typedef struct {
UINT8 status;
UINT8 big_handle;
UINT32 big_sync_delay;
UINT32 transport_latency;
UINT8 phy;
UINT8 nse;
UINT8 bn;
UINT8 pto;
UINT8 irc;
UINT16 max_pdu;
UINT16 iso_interval;
UINT8 num_bis;
UINT16 bis_handle[BLE_ISO_BIS_MAX_COUNT];
} tBTM_BLE_BIG_CREATE_CMPL;
typedef struct {
UINT8 status;
UINT8 big_handle;
UINT8 reason;
} tBTM_BLE_BIG_TERMINATE_CMPL;
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
typedef struct {
UINT8 status;
UINT8 big_handle;
UINT32 transport_latency_big;
UINT8 nse;
UINT8 bn;
UINT8 pto;
UINT8 irc;
UINT16 max_pdu;
UINT16 iso_interval;
uint8_t num_bis;
uint16_t bis_handle[BLE_ISO_BIS_MAX_COUNT];
} tBTM_BLE_BIG_SYNC_ESTAB_CMPL;
typedef struct {
UINT8 big_handle;
UINT8 reason;
} tBTM_BLE_BIG_SYNC_LOST_EVT;
typedef struct {
UINT16 sync_handle;
UINT8 num_bis;
UINT8 nse;
UINT16 iso_interval;
UINT8 bn;
UINT8 pto;
UINT8 irc;
UINT16 max_pdu;
UINT32 sdu_interval;
UINT32 max_sdu;
UINT8 phy;
UINT8 framing;
UINT8 encryption;
} tBTM_BLE_BIGINFO_ADV_REPORT_EVT;
typedef struct {
UINT8 status;
UINT16 big_hdl;
} tBTM_BLE_BIG_SYNC_TERMINATE_EVT;
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_EN == TRUE)
typedef struct {
UINT8 status;
UINT16 conn_handle;
UINT32 cig_sync_delay;
UINT32 cis_sync_delay;
UINT32 trans_lat_c_to_p;
UINT32 trans_lat_p_to_c;
UINT8 phy_c_to_p;
UINT8 phy_p_to_c;
UINT8 nse;
UINT8 bn_c_to_p;
UINT8 bn_p_to_c;
UINT8 ft_c_to_p;
UINT8 ft_p_to_c;
UINT16 max_pdu_c_to_p;
UINT16 max_pdu_p_to_c;
UINT16 iso_interval;
#if (BLE_FEAT_ISO_60_EN == TRUE)
UINT32 sub_interval;
UINT16 max_sdu_c_to_p;
UINT16 max_sdu_p_to_c;
UINT32 sdu_int_c_to_p;
UINT32 sdu_int_p_to_c;
UINT8 framing;
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
} tBTM_BLE_CIS_ESTABLISHED_CMPL;
typedef struct {
UINT16 cis_handle;
UINT8 reason;
} tBTM_BLE_CIS_DISCON_CMPL;
#endif // #if (BLE_FEAT_ISO_CIG_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
typedef struct {
UINT8 status;
UINT16 cis_handle;
} tBTM_BLE_ISO_REJECT_CIS_REQ_EVT;
typedef struct {
UINT16 acl_handle;
UINT16 cis_handle;
UINT8 cig_id;
UINT8 cis_id;
} tBTM_BLE_CIS_REQUEST_CMPL;
#endif // #if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
typedef enum {
BTM_BLE_ISO_DATA_PATH_UNKNOWN = 0,
BTM_BLE_ISO_DATA_PATH_SETUP = 1,
BTM_BLE_ISO_DATA_PATH_REMOVE = 2,
BTM_BLE_ISO_DATA_PATH_MAX,
} tBTM_BLE_ISO_DATA_PATH_UPDATE_TYPE;
typedef struct {
UINT8 status;
tBTM_BLE_ISO_DATA_PATH_UPDATE_TYPE op_type;
UINT16 conn_hdl;
} tBTM_BLE_ISO_DATA_PATH_UPDATE_EVT;
typedef struct {
UINT8 status;
UINT16 conn_hdl;
UINT16 pkt_seq_num;
UINT32 tx_time_stamp;
UINT32 time_offset;
} tBTM_BLE_ISO_READ_TX_SYNC_EVT;
typedef struct {
UINT8 status;
UINT16 conn_hdl;
UINT32 tx_unacked_pkts;
UINT32 tx_flushed_pkts;
UINT32 tx_last_subevt_pkts;
UINT32 retransmitted_pkts;
UINT32 crc_error_pkts;
UINT32 rx_unreceived_pkts;
UINT32 duplicate_pkts;
} tBTM_BLE_ISO_READ_LINK_QUALITY_EVT;
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
typedef struct {
UINT8 status;
UINT8 cig_id;
UINT8 cis_count;
UINT16 conn_hdl[BLE_ISO_CIS_MAX_COUNT];
} tBTM_BLE_ISO_SET_CIG_PARAMS_EVT;
typedef struct {
UINT8 status;
UINT8 cig_id;
} tBTM_BLE_ISO_REMOVE_CIG_EVT;
#endif // #if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
typedef union {
UINT8 status;
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
tBTM_BLE_BIG_CREATE_CMPL btm_big_cmpl;
tBTM_BLE_BIG_TERMINATE_CMPL btm_big_term;
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
tBTM_BLE_BIG_SYNC_ESTAB_CMPL btm_big_sync_estab;
tBTM_BLE_BIG_SYNC_LOST_EVT btm_big_sync_lost;
tBTM_BLE_BIGINFO_ADV_REPORT_EVT btm_biginfo_report;
tBTM_BLE_BIG_SYNC_TERMINATE_EVT btm_big_sync_ter;
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
tBTM_BLE_ISO_DATA_PATH_UPDATE_EVT btm_data_path_update;
tBTM_BLE_ISO_READ_TX_SYNC_EVT btm_read_tx_sync;
tBTM_BLE_ISO_READ_LINK_QUALITY_EVT btm_read_link_quality;
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
tBTM_BLE_ISO_SET_CIG_PARAMS_EVT btm_set_cig_params;
tBTM_BLE_ISO_REMOVE_CIG_EVT btm_remove_cig;
#endif // #if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
tBTM_BLE_ISO_REJECT_CIS_REQ_EVT btm_reject_cis_req;
tBTM_BLE_CIS_REQUEST_CMPL btm_cis_request_evt;
#endif // #if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_EN == TRUE)
tBTM_BLE_CIS_ESTABLISHED_CMPL btm_cis_established_evt;
tBTM_BLE_CIS_DISCON_CMPL btm_cis_disconnectd_evt;
#endif // #if (BLE_FEAT_ISO_CIG_EN == TRUE)
} tBTM_BLE_ISO_CB_PARAMS;
typedef void (*tBTM_BLE_ISO_CBACK)(tBTM_BLE_ISO_EVENT event, tBTM_BLE_ISO_CB_PARAMS *params);
#endif // #if (BLE_FEAT_ISO_EN == TRUE)
typedef union {
UINT8 status;
tBTM_BLE_READ_PHY_CMPL read_phy;
@@ -2834,4 +3064,54 @@ void BTM_BlePeriodicAdvSetInfoTrans(BD_ADDR bd_addr, UINT16 service_data, UINT8
void BTM_BleSetPeriodicAdvSyncTransParams(BD_ADDR bd_addr, UINT8 mode, UINT16 skip, UINT16 sync_timeout, UINT8 cte_type);
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#if (BLE_FEAT_ISO_EN == TRUE)
void BTM_BleIsoRegisterCallback(tBTM_BLE_ISO_CBACK cb);
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
tBTM_STATUS BTM_BleBigCreate(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
uint32_t sdu_interval, uint16_t max_sdu, uint16_t max_transport_latency,
uint8_t rtn, uint8_t phy, uint8_t packing, uint8_t framing,
uint8_t encryption, uint8_t *broadcast_code);
tBTM_STATUS BTM_BleBigCreateTest(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
uint32_t sdu_interval, uint16_t iso_interval, uint8_t nse,
uint16_t max_sdu, uint16_t max_pdu, uint8_t phy,
uint8_t packing, uint8_t framing, uint8_t bn, uint8_t irc,
uint8_t pto, uint8_t encryption, uint8_t *broadcast_code);
tBTM_STATUS BTM_BleBigTerminate(UINT8 big_handle, UINT8 reason);
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
tBTM_STATUS BTM_BleBigSyncCreate(uint8_t big_handle, uint16_t sync_handle,
uint8_t encryption, uint8_t *bc_code,
uint8_t mse, uint16_t big_sync_timeout,
uint8_t num_bis, uint8_t *bis);
tBTM_STATUS BTM_BleBigSyncTerminate(uint8_t big_handle);
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
tBTM_STATUS BTM_BleIsoSetDataPath(uint16_t conn_handle, uint8_t data_path_dir, uint8_t data_path_id, uint8_t coding_fmt,
uint16_t company_id, uint16_t vs_codec_id, uint32_t controller_delay, uint8_t codec_len,
uint8_t *codec_cfg);
tBTM_STATUS BTM_BleIsoRemoveDataPath(uint16_t conn_handle, uint8_t data_path_dir);
tBTM_STATUS BTM_BleIsoSetHostFeature(uint16_t bit_num, uint8_t bit_val);
tBTM_STATUS BTM_BleIsoReadTxSync(uint16_t iso_hdl);
tBTM_STATUS BTM_BleIsoReadLinkQuality(uint16_t iso_hdl);
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
tBTM_STATUS BTM_BleSetCigParams(uint8_t cig_id, uint32_t sdu_int_c_to_p, uint32_t sdu_int_p_to_c, uint8_t worse_case_SCA, uint8_t packing,
uint8_t framing, uint16_t mtl_c_to_p, uint16_t mtl_p_to_c, uint8_t cis_cnt, uint8_t *cis_params);
tBTM_STATUS BTM_BleSetCigParamsTest(uint8_t cig_id, uint32_t sdu_int_c_to_p, uint32_t sdu_int_p_to_c, uint8_t ft_c_to_p, uint8_t ft_p_to_c, uint16_t iso_interval,
uint8_t worse_case_SCA, uint8_t packing, uint8_t framing, uint8_t cis_cnt, uint8_t *cis_params);
tBTM_STATUS BTM_BleCreateCis(uint8_t cis_count, uint8_t *cis_hdls);
tBTM_STATUS BTM_BleRemoveCig(uint8_t cig_id);
#endif // #if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
tBTM_STATUS BTM_BleAcceptCisReq(uint16_t cis_handle);
tBTM_STATUS BTM_BleRejectCisReq(uint16_t cis_handle, uint8_t reason);
#endif // #if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_EN == TRUE)
tBTM_STATUS BTM_BleDisconCis(uint16_t cis_handle, uint8_t reason);
#endif // #if (BLE_FEAT_ISO_CIG_EN == TRUE)
#endif // #if (BLE_FEAT_ISO_EN == TRUE)
#endif
@@ -397,6 +397,24 @@
#define HCI_BLE_SET_PAST_PARAMS (0x005C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_DEFAULT_PAST_PARAMS (0x005D | HCI_GRP_BLE_CMDS)
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#define HCI_BLE_READ_BUFFER_SZIE_V2 (0x0060 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_READ_TX_SYNC (0x0061 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_CIG_PARAMS (0x0062 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_CIG_PARAMS_TEST (0x0063 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_CREATE_CIS (0x0064 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_REMOVE_CIG (0x0065 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_ACCEPT_CIS_REQ (0x0066 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_REJECT_CIS_REQ (0x0067 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_CREATE_BIG (0x0068 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_CREATE_BIG_TEST (0x0069 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_TERMINATE_BIG (0x006A | HCI_GRP_BLE_CMDS)
#define HCI_BLE_BIG_CREATE_SYNC (0x006B | HCI_GRP_BLE_CMDS)
#define HCI_BLE_BIG_TERMINATE_SYNC (0x006C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_DATA_PATH (0x006E | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_REMOVE_DATA_PATH (0x006F | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_HOST_FEATURE (0x0074 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_READ_ISO_LINK_QUALITY (0x0075 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_HOST_FEATURE_V2 (0x0097 | HCI_GRP_BLE_CMDS)
// Vendor OGF define
#define HCI_VENDOR_OGF 0x3F
@@ -842,6 +860,21 @@
#define HCI_BLE_PERIOD_ADV_SYNC_TRANS_RECV_EVT 0x18
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#if (BLE_FEAT_ISO_EN == TRUE)
#define HCI_BLE_CIS_ESTABLISHED_V1_EVT 0x19
#define HCI_BLE_CIS_REQUEST_EVT 0x1A
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#define HCI_BLE_BIG_CREATE_COMPLETE_EVT 0x1B
#define HCI_BLE_BIG_TERMINATE_COMPLETE_EVT 0x1C
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define HCI_BLE_BIG_SYNC_ESTABLISHED_EVT 0x1D
#define HCI_BLE_BIG_SYNC_LOST_EVT 0x1E
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define HCI_BLE_BIGINFO_ADV_REPORT_EVT 0x22
#define HCI_BLE_CIS_ESTABLISHED_V2_EVT 0x2A
#endif // #if (BLE_FEAT_ISO_EN == TRUE)
/* Definitions for LE Channel Map */
#define HCI_BLE_CHNL_MAP_SIZE 5
@@ -1083,4 +1083,106 @@ BOOLEAN btsnd_hcic_ble_set_periodic_adv_sync_trans_params(UINT16 conn_handle, UI
UINT8 btsnd_hcic_ble_set_default_periodic_adv_sync_trans_params(UINT8 mode, UINT16 skip, UINT16 sync_timeout, UINT8 cte_type);
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#if (BLE_FEAT_ISO_EN == TRUE)
#define HCIC_PARAM_SIZE_ISO_READ_TX_SYNC_PARAMS 2
#define HCIC_PARAM_SIZE_ISO_SET_CIG_PARAMS 15
#define HCIC_PARAM_SIZE_ISO_SET_CIG_TEST_PARAMS 15
#define HCIC_PARAM_SIZE_ISO_CREATE_CIS_PARAMS 1
#define HCIC_PARAM_SIZE_ISO_REMOVE_CIG_PARAMS 1
#define HCIC_PARAM_SIZE_ISO_ACCEPT_CIS_REQ_PARAMS 2
#define HCIC_PARAM_SIZE_ISO_REJECT_CIS_REQ_PARAMS 3
#define HCIC_PARAM_SIZE_ISO_READ_LINK_QUALITY_PARAMS 2
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#define HCIC_PARAM_SIZE_BIG_CREATE_PARAMS 31
#define HCIC_PARAM_SIZE_BIG_CREATE_TEST_PARAMS 36
#define HCIC_PARAM_SIZE_BIG_TERMINATE_PARAMS 2
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define HCIC_PARAM_SIZE_BIG_SYNC_CREATE_PARAMS 55
#define HCIC_PARAM_SIZE_BIG_SYNC_TERMINATE_PARAMS 1
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define HCIC_PARAM_SIZE_ISO_SET_DATA_PATH_PARAMS 13
#define HCIC_PARAM_SIZE_ISO_REMOVE_DATA_PATH_PARAMS 3
#define HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS 2
#define HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS_V2 3
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
struct ble_hci_le_cis_params {
uint8_t cis_id;
uint16_t max_sdu_c_to_p;
uint16_t max_sdu_p_to_c;
uint8_t phy_c_to_p;
uint8_t phy_p_to_c;
uint8_t rtn_c_to_p;
uint8_t rtn_p_to_c;
} __attribute__((packed));
struct ble_hci_le_cis_params_test {
uint8_t cis_id;
uint8_t nse;
uint16_t max_sdu_c_to_p;
uint16_t max_sdu_p_to_c;
uint16_t max_pdu_c_to_p;
uint16_t max_pdu_p_to_c;
uint8_t phy_c_to_p;
uint8_t phy_p_to_c;
uint8_t bn_c_to_p;
uint8_t bn_p_to_c;
} __attribute__((packed));
struct ble_hci_cis_hdls {
uint16_t cis_hdl;
uint16_t acl_hdl;
}__attribute__((packed));
UINT8 btsnd_hcic_ble_iso_set_cig_params(uint8_t cig_id, uint32_t sdu_int_c_to_p, uint32_t sdu_int_p_to_c, uint8_t worse_case_SCA, uint8_t packing,
uint8_t framing, uint16_t mtl_c_to_p, uint16_t mtl_p_to_c, uint8_t cis_cnt, struct ble_hci_le_cis_params *cis_params);
UINT8 btsnd_hcic_ble_iso_set_cig_params_test(uint8_t cig_id, uint32_t sdu_int_c_to_p, uint32_t sdu_int_p_to_c, uint8_t ft_c_to_p, uint8_t ft_p_to_c,
uint16_t iso_interval, uint8_t worse_case_SCA, uint8_t packing, uint8_t framing, uint8_t cis_cnt,
struct ble_hci_le_cis_params_test *cis_params_test);
UINT8 btsnd_hcic_ble_iso_create_cis(uint8_t cis_count, struct ble_hci_cis_hdls *cis_hdls);
UINT8 btsnd_hcic_ble_iso_remove_cig(uint8_t cig_id);
#endif // (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
#if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
UINT8 btsnd_hcic_ble_iso_accept_cis_req(uint16_t cis_handle);
UINT8 btsnd_hcic_ble_iso_reject_cis_req(uint16_t cis_handle, uint8_t reason);
#endif // #if (BLE_FEAT_ISO_CIG_PERIPHERAL_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
UINT8 btsnd_hcic_ble_big_create(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
uint32_t sdu_interval, uint16_t max_sdu, uint16_t max_transport_latency,
uint8_t rtn, uint8_t phy, uint8_t packing, uint8_t framing,
uint8_t encryption, uint8_t *broadcast_code);
UINT8 btsnd_hcic_ble_big_create_test(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
uint32_t sdu_interval, uint16_t iso_interval, uint8_t nse,
uint16_t max_sdu, uint16_t max_pdu, uint8_t phy,
uint8_t packing, uint8_t framing, uint8_t bn, uint8_t irc,
uint8_t pto, uint8_t encryption, uint8_t *broadcast_code);
UINT8 btsnd_hcic_ble_big_terminate(uint8_t big_handle, uint8_t reason);
#endif // #if (BLE_FEAT_ISO_BIG_BROCASTER_EN == TRUE)
#if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
UINT8 btsnd_hcic_ble_big_sync_create(uint8_t big_handle, uint16_t sync_handle,
uint8_t encryption, uint8_t *bc_code,
uint8_t mse, uint16_t big_sync_timeout,
uint8_t num_bis, uint8_t *bis);
UINT8 btsnd_hcic_ble_big_sync_terminate(uint8_t big_handle);
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
UINT8 btsnd_hcic_ble_iso_set_data_path(uint16_t conn_handle, uint8_t data_path_dir, uint8_t data_path_id, uint8_t coding_fmt,
uint16_t company_id, uint16_t vs_codec_id, uint32_t controller_delay, uint8_t codec_len,
uint8_t *codec_cfg);
UINT8 btsnd_hcic_ble_iso_remove_data_path(uint16_t conn_handle, uint8_t data_path_dir);
UINT8 btsnd_hcic_ble_iso_set_host_feature(uint16_t bit_num, uint8_t bit_val);
UINT8 btsnd_hcic_ble_iso_read_tx_sync(uint16_t iso_hdl);
UINT8 btsnd_hcic_ble_iso_read_iso_link_quality(uint16_t iso_hdl);
#endif // #if (BLE_FEAT_ISO_EN == TRUE)
#endif