summaryrefslogtreecommitdiff
path: root/lib/bt/host/bluedroid/stack/include
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bt/host/bluedroid/stack/include')
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/a2d_sbc.h7
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/acl_hci_link_interface.h2
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/avdt_api.h12
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/avrc_api.h8
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/avrc_defs.h5
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/bt_types.h1
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/btm_api.h60
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/btm_ble_api.h659
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/dyn_mem.h16
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/gatt_api.h2
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/goep_common.h19
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/goepc_api.h82
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/hcidefs.h140
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/hcimsgs.h182
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/obex_api.h271
-rw-r--r--lib/bt/host/bluedroid/stack/include/stack/sdp_api.h16
16 files changed, 1393 insertions, 89 deletions
diff --git a/lib/bt/host/bluedroid/stack/include/stack/a2d_sbc.h b/lib/bt/host/bluedroid/stack/include/stack/a2d_sbc.h
index 065f264f..088d11ab 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/a2d_sbc.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/a2d_sbc.h
@@ -30,7 +30,12 @@
/* the length of the SBC Media Payload header. */
#define A2D_SBC_MPL_HDR_LEN 1
-/* the LOSC of SBC media codec capabilitiy */
+/* CIE offset in the info byte sequence */
+#define A2D_SBC_CIE_OFF 3
+/* CIE length in the info byte sequence */
+#define A2D_SBC_CIE_LEN 4
+
+/* the LOSC of SBC media codec capability */
#define A2D_SBC_INFO_LEN 6
/* for Codec Specific Information Element */
diff --git a/lib/bt/host/bluedroid/stack/include/stack/acl_hci_link_interface.h b/lib/bt/host/bluedroid/stack/include/stack/acl_hci_link_interface.h
index f62c654f..60c0f26a 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/acl_hci_link_interface.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/acl_hci_link_interface.h
@@ -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 */
diff --git a/lib/bt/host/bluedroid/stack/include/stack/avdt_api.h b/lib/bt/host/bluedroid/stack/include/stack/avdt_api.h
index 42a1f855..00c16f49 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/avdt_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/avdt_api.h
@@ -519,6 +519,18 @@ extern UINT16 AVDT_CreateStream(UINT8 *p_handle, tAVDT_CS *p_cs);
/*******************************************************************************
**
+** Function AVDT_UpdateCodecInfo
+**
+** Description Update codec capability for a stream endpoint.
+**
+**
+** Returns AVDT_SUCCESS if successful, otherwise error.
+**
+*******************************************************************************/
+extern UINT16 AVDT_UpdateCodecInfo(UINT8 handle, UINT8 num_codec, UINT8 *codec_info, UINT16 codec_info_len);
+
+/*******************************************************************************
+**
** Function AVDT_RemoveStream
**
** Description Remove a stream endpoint. This function is called when
diff --git a/lib/bt/host/bluedroid/stack/include/stack/avrc_api.h b/lib/bt/host/bluedroid/stack/include/stack/avrc_api.h
index 21f4bee5..2985c65c 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/avrc_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/avrc_api.h
@@ -99,6 +99,9 @@
#define AVRC_SUPF_CT_CAT3 0x0004 /* Category 3 */
#define AVRC_SUPF_CT_CAT4 0x0008 /* Category 4 */
#define AVRC_SUPF_CT_BROWSE 0x0040 /* Browsing */
+#define AVRC_SUPF_CT_COVER_ART_GIP 0x0080 /* Cover Art GetImageProperties */
+#define AVRC_SUPF_CT_COVER_ART_GI 0x0100 /* Cover Art GetImage */
+#define AVRC_SUPF_CT_COVER_ART_GLT 0x0200 /* Cover Art GetLinkedThumbnail */
#define AVRC_SUPF_TG_CAT1 0x0001 /* Category 1 */
#define AVRC_SUPF_TG_CAT2 0x0002 /* Category 2 */
@@ -107,7 +110,8 @@
#define AVRC_SUPF_TG_APP_SETTINGS 0x0010 /* Player Application Settings */
#define AVRC_SUPF_TG_GROUP_NAVI 0x0020 /* Group Navigation */
#define AVRC_SUPF_TG_BROWSE 0x0040 /* Browsing */
-#define AVRC_SUPF_TG_MULTI_PLAYER 0x0080 /* Muliple Media Player */
+#define AVRC_SUPF_TG_MULTI_PLAYER 0x0080 /* Multiple Media Player */
+#define AVRC_SUPF_TG_COVER_ART 0x0100 /* Cover Art */
#define AVRC_META_SUCCESS AVRC_SUCCESS
#define AVRC_META_FAIL AVRC_FAIL
@@ -561,7 +565,7 @@ extern bt_status_t AVRC_Init(void);
**
** Function AVRC_Deinit
**
-** Description This function is called at stack shotdown to free the
+** Description This function is called at stack shutdown to free the
** control block (if using dynamic memory), and deinitializes the
** control block and tracing level.
**
diff --git a/lib/bt/host/bluedroid/stack/include/stack/avrc_defs.h b/lib/bt/host/bluedroid/stack/include/stack/avrc_defs.h
index c90fa6cf..06f73c29 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/avrc_defs.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/avrc_defs.h
@@ -35,6 +35,7 @@
#define AVRC_REV_1_3 0x0103
#define AVRC_REV_1_4 0x0104
#define AVRC_REV_1_5 0x0105
+#define AVRC_REV_1_6 0x0106
#define AVRC_PACKET_LEN 512 /* Per the spec, you must support 512 byte RC packets */
@@ -185,7 +186,7 @@
#define AVRC_PKT_END 3
#define AVRC_PKT_TYPE_MASK 3
-/* Define the PDUs carried in the vendor dependant data
+/* Define the PDUs carried in the vendor dependent data
*/
#define AVRC_PDU_GET_CAPABILITIES 0x10
#define AVRC_PDU_LIST_PLAYER_APP_ATTR 0x11
@@ -297,7 +298,7 @@ typedef UINT8 tAVRC_BATTERY_STATUS;
#define AVRC_MEDIA_ATTR_ID_TRACK_NUM 0x00000004
#define AVRC_MEDIA_ATTR_ID_NUM_TRACKS 0x00000005
#define AVRC_MEDIA_ATTR_ID_GENRE 0x00000006
-#define AVRC_MEDIA_ATTR_ID_PLAYING_TIME 0x00000007 /* in miliseconds */
+#define AVRC_MEDIA_ATTR_ID_PLAYING_TIME 0x00000007 /* in milliseconds */
#define AVRC_MAX_NUM_MEDIA_ATTR_ID 7
/* Define the possible values of play state
diff --git a/lib/bt/host/bluedroid/stack/include/stack/bt_types.h b/lib/bt/host/bluedroid/stack/include/stack/bt_types.h
index 5d817632..4050b79d 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/bt_types.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/bt_types.h
@@ -486,6 +486,7 @@ typedef struct {
#define BLE_ADDR_RANDOM_ID 0x03
#define BLE_ADDR_TYPE_MAX BLE_ADDR_RANDOM_ID
#define BLE_ADDR_UNKNOWN_TYPE 0XFF
+#define BLE_ADDR_ANONYMOUS 0xFF
typedef UINT8 tBLE_ADDR_TYPE;
#define BLE_ADDR_TYPE_MASK (BLE_ADDR_RANDOM | BLE_ADDR_PUBLIC)
diff --git a/lib/bt/host/bluedroid/stack/include/stack/btm_api.h b/lib/bt/host/bluedroid/stack/include/stack/btm_api.h
index 32420f75..3415df5d 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/btm_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/btm_api.h
@@ -75,6 +75,7 @@ enum {
BTM_SET_STATIC_RAND_ADDR_FAIL, /* 25 Command failed */
BTM_INVALID_STATIC_RAND_ADDR, /* 26 invalid static rand addr */
BTM_SEC_DEV_REC_REMOVED, /* 27 Device record relate to the bd_addr is removed */
+ BTM_HCI_ERROR = 128, /* 128 HCI error code from controller (0x80) */
};
typedef uint8_t tBTM_STATUS;
@@ -200,6 +201,8 @@ typedef void (tBTM_SET_LOCAL_PRIVACY_CBACK) (UINT8 status);
typedef void (tBTM_SET_RPA_TIMEOUT_CMPL_CBACK) (UINT8 status);
typedef void (tBTM_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK) (UINT8 status);
+
+typedef void (tBTM_BLE_VENDOR_HCI_EVT_CBACK) (UINT8 subevt_code, UINT8 param_len, UINT8 *params);
/*******************************
** Device Coexist status
********************************/
@@ -456,22 +459,22 @@ typedef enum {
#define BTM_COD_SERVICE_INFORMATION 0x8000
/* class of device field macros */
-#define BTM_COD_FORMAT_TYPE(u8, pd) {u8 = pd[2]&0x03;}
+#define BTM_COD_RESERVED_2(u8, pd) {u8 = pd[2]&0x03;}
#define BTM_COD_MINOR_CLASS(u8, pd) {u8 = pd[2]&0xFC;}
#define BTM_COD_MAJOR_CLASS(u8, pd) {u8 = pd[1]&0x1F;}
#define BTM_COD_SERVICE_CLASS(u16, pd) {u16 = pd[0]; u16<<=8; u16 += pd[1]&0xE0;}
/* to set the fields (assumes that format type is always 0) */
-#define FIELDS_TO_COD(pd, mn, mj, sv) {pd[2] = mn; pd[1] = \
- mj+ ((sv)&BTM_COD_SERVICE_CLASS_LO_B); \
- pd[0] = (sv) >> 8;}
+#define FIELDS_TO_COD(pd, rs, mn, mj, sv) {pd[2] = (mn & BTM_COD_MINOR_CLASS_MASK) + (rs & BTM_COD_RESERVED_2_MASK); \
+ pd[1] = mj+ ((sv)&BTM_COD_SERVICE_CLASS_LO_B); \
+ pd[0] = (sv) >> 8;}
/* the COD masks */
-#define BTM_COD_FORMAT_TYPE_MASK 0x03
#define BTM_COD_MINOR_CLASS_MASK 0xFC
#define BTM_COD_MAJOR_CLASS_MASK 0x1F
#define BTM_COD_SERVICE_CLASS_LO_B 0x00E0
#define BTM_COD_SERVICE_CLASS_MASK 0xFFE0
+#define BTM_COD_RESERVED_2_MASK 0x03
/* BTM service definitions
** Used for storing EIR data to bit mask
@@ -808,6 +811,16 @@ typedef struct {
BD_ADDR rem_bda;
} tBTM_RSSI_RESULTS;
+/* Structure returned with read channel map event (in tBTM_CMPL_CB callback function)
+** in response to BTM_ReadChannelMap call.
+*/
+typedef struct {
+ tBTM_STATUS status; /* BTM operation status */
+ UINT8 hci_status; /* HCI command complete status */
+ UINT8 channel_map[5]; /* Channel map (5 bytes) */
+ BD_ADDR rem_bda; /* Remote device Bluetooth address */
+} tBTM_BLE_CH_MAP_RESULTS;
+
/* Structure returned with read current TX power event (in tBTM_CMPL_CB callback function)
** in response to BTM_ReadTxPower call.
*/
@@ -1027,9 +1040,6 @@ typedef void (tBTM_ACL_DB_CHANGE_CB) (BD_ADDR p_bda, DEV_CLASS p_dc,
#define BTM_INVALID_SCO_INDEX 0xFFFF
#define BTM_INVALID_HCI_HANDLE 0xFFFF
-/* Define an invalid SCO disconnect reason */
-#define BTM_INVALID_SCO_DISC_REASON 0xFFFF
-
/* Define first active SCO index */
#define BTM_FIRST_ACTIVE_SCO_INDEX BTM_MAX_SCO_LINKS
@@ -3024,7 +3034,19 @@ tBTM_STATUS BTM_SwitchRole (BD_ADDR remote_bd_addr,
//extern
tBTM_STATUS BTM_ReadRSSI (BD_ADDR remote_bda, tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb);
-
+/*******************************************************************************
+**
+** Function BTM_ReadChannelMap
+**
+** Description This function is called to read the current channel map
+** for the given connection. The results are returned via
+** the callback (tBTM_BLE_CH_MAP_RESULTS).
+**
+** Returns BTM_CMD_STARTED if successfully initiated or error code
+**
+*******************************************************************************/
+tBTM_STATUS BTM_ReadChannelMap(BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb);
+#if (BLE_HOST_READ_TX_POWER_EN == TRUE)
/*******************************************************************************
**
** Function BTM_ReadTxPower
@@ -3045,10 +3067,13 @@ tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda,
tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb);
tBTM_STATUS BTM_BleReadAdvTxPower(tBTM_CMPL_CB *p_cb);
+#endif // #if (BLE_HOST_READ_TX_POWER_EN == TRUE)
void BTM_BleGetWhiteListSize(uint16_t *length);
-
+#if (BLE_50_EXTEND_SYNC_EN == TRUE)
+void BTM_BleGetPeriodicAdvListSize(uint8_t *size);
+#endif //#if (BLE_50_EXTEND_SYNC_EN == TRUE)
/*******************************************************************************
**
** Function BTM_ReadLinkQuality
@@ -3262,21 +3287,6 @@ UINT8 *BTM_ReadScoBdAddr (UINT16 sco_inx);
/*******************************************************************************
**
-** Function BTM_ReadScoDiscReason
-**
-** Description This function is returns the reason why an (e)SCO connection
-** has been removed. It contains the value until read, or until
-** another (e)SCO connection has disconnected.
-**
-** Returns HCI reason or BTM_INVALID_SCO_DISC_REASON if not set.
-**
-*******************************************************************************/
-//extern
-UINT16 BTM_ReadScoDiscReason (void);
-
-
-/*******************************************************************************
-**
** Function BTM_SetEScoMode
**
** Description This function sets up the negotiated parameters for SCO or
diff --git a/lib/bt/host/bluedroid/stack/include/stack/btm_ble_api.h b/lib/bt/host/bluedroid/stack/include/stack/btm_ble_api.h
index 1bea9908..7ec384ef 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/btm_ble_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/btm_ble_api.h
@@ -367,7 +367,6 @@ typedef UINT32 tBTM_BLE_AD_MASK;
#define BTM_BLE_AD_TYPE_MANU HCI_EIR_MANUFACTURER_SPECIFIC_TYPE /* 0xff */
typedef UINT8 tBTM_BLE_AD_TYPE;
-#define BTM_BLE_LONG_ADV_MAX_LEN 249
/* Security settings used with L2CAP LE COC */
#define BTM_SEC_LE_LINK_ENCRYPTED 0x01
@@ -395,7 +394,9 @@ typedef UINT8 tBTM_BLE_ADV_TX_POWER;
/* adv tx power in dBm */
typedef struct {
+#if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
UINT8 adv_inst_max; /* max adv instance supported in controller */
+#endif // #if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
UINT8 rpa_offloading;
UINT16 tot_scan_results_strg;
UINT8 max_irk_list_sz;
@@ -499,6 +500,7 @@ typedef struct {
tBTM_BLE_ADV_TX_POWER tx_power;
} tBTM_BLE_ADV_PARAMS;
+#if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
typedef struct {
UINT8 *p_sub_code; /* dynamic array to store sub code */
UINT8 *p_inst_id; /* dynamic array to store instance id */
@@ -530,6 +532,7 @@ typedef struct {
tBTM_BLE_MULTI_ADV_INST *p_adv_inst; /* dynamic array to store adv instance */
tBTM_BLE_MULTI_ADV_OPQ op_q;
} tBTM_BLE_MULTI_ADV_CB;
+#endif // #if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
typedef UINT8 tGATT_IF;
@@ -810,15 +813,16 @@ typedef struct {
typedef struct {
UINT8 filter_policy;
- #if (CONFIG_BT_BLE_FEAT_CREATE_SYNC_ENH)
+#if (BLE_FEAT_CREATE_SYNC_ENH == TRUE)
UINT8 reports_disabled;
UINT8 filter_duplicates;
- #endif
+#endif // (BLE_FEAT_CREATE_SYNC_ENH == TRUE)
UINT8 sid;
tBLE_ADDR_TYPE addr_type;
BD_ADDR addr;
UINT16 skip;
UINT16 sync_timeout;
+ UINT8 sync_cte_type;
} tBTM_BLE_Periodic_Sync_Params;
typedef struct {
@@ -944,6 +948,7 @@ typedef UINT8 tBTM_BLE_CONN_TYPE;
#define ADV_INFO_PRESENT 0x00
#define NO_ADV_INFO_PRESENT 0x01
+#if (BLE_HOST_TRACK_ADVERTISER_EN == TRUE)
typedef btgatt_track_adv_info_t tBTM_BLE_TRACK_ADV_DATA;
typedef void (tBTM_BLE_TRACK_ADV_CBACK)(tBTM_BLE_TRACK_ADV_DATA *p_track_adv_data);
@@ -961,6 +966,7 @@ enum {
};
typedef UINT8 tBTM_BLE_TRACK_ADV_ACTION;
+#endif // #if (BLE_HOST_TRACK_ADVERTISER_EN == TRUE)
#define BTM_BLE_MULTI_ADV_INVALID 0
@@ -1007,11 +1013,14 @@ typedef void (tBTM_START_STOP_ADV_CMPL_CBACK) (UINT8 status);
typedef void (tBTM_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK) (tBTM_STATUS status, uint8_t subcode, uint32_t length, uint8_t *device_info);
typedef void (tBTM_CLEAR_ADV_CMPL_CBACK) (UINT8 status);
typedef void (tBTM_SET_PRIVACY_MODE_CMPL_CBACK) (tBTM_STATUS status);
+typedef void (tBTM_SET_CSA_SUPPORT_CMPL_CBACK) (tBTM_STATUS status);
+typedef void (tBTM_SET_VENDOR_EVT_MASK_CBACK) (tBTM_STATUS status);
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTM_BLE_5_GAP_READ_PHY_COMPLETE_EVT 1
#define BTM_BLE_5_GAP_SET_PREFERED_DEFAULT_PHY_COMPLETE_EVT 2
#define BTM_BLE_5_GAP_SET_PREFERED_PHY_COMPLETE_EVT 3
+#if (BLE_50_EXTEND_ADV_EN == TRUE)
#define BTM_BLE_5_GAP_EXT_ADV_SET_RAND_ADDR_COMPLETE_EVT 4
#define BTM_BLE_5_GAP_EXT_ADV_SET_PARAMS_COMPLETE_EVT 5
#define BTM_BLE_5_GAP_EXT_ADV_DATA_SET_COMPLETE_EVT 6
@@ -1020,29 +1029,42 @@ typedef void (tBTM_SET_PRIVACY_MODE_CMPL_CBACK) (tBTM_STATUS status);
#define BTM_BLE_5_GAP_EXT_ADV_STOP_COMPLETE_EVT 9
#define BTM_BLE_5_GAP_EXT_ADV_SET_REMOVE_COMPLETE_EVT 10
#define BTM_BLE_5_GAP_EXT_ADV_SET_CLEAR_COMPLETE_EVT 11
+#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
+#if (BLE_50_PERIODIC_ADV_EN == TRUE)
#define BTM_BLE_5_GAP_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT 12
#define BTM_BLE_5_GAP_PERIODIC_ADV_DATA_SET_COMPLETE_EVT 13
#define BTM_BLE_5_GAP_PERIODIC_ADV_START_COMPLETE_EVT 14
#define BTM_BLE_5_GAP_PERIODIC_ADV_STOP_COMPLETE_EVT 15
+#endif // #if (BLE_50_PERIODIC_ADV_EN == TRUE)
+#if (BLE_50_EXTEND_SYNC_EN == TRUE)
#define BTM_BLE_5_GAP_PERIODIC_ADV_CREATE_SYNC_COMPLETE_EVT 16
#define BTM_BLE_5_GAP_PERIODIC_ADV_SYNC_CANCEL_COMPLETE_EVT 17
#define BTM_BLE_5_GAP_PERIODIC_ADV_SYNC_TERMINATE_COMPLETE_EVT 18
#define BTM_BLE_5_GAP_PERIODIC_ADV_ADD_DEV_COMPLETE_EVT 19
#define BTM_BLE_5_GAP_PERIODIC_ADV_REMOVE_DEV_COMPLETE_EVT 20
#define BTM_BLE_5_GAP_PERIODIC_ADV_CLEAR_DEV_COMPLETE_EVT 21
+#endif // #if (BLE_50_EXTEND_SYNC_EN == TRUE)
+#if (BLE_50_EXTEND_SCAN_EN == TRUE)
#define BTM_BLE_5_GAP_SET_EXT_SCAN_PARAMS_COMPLETE_EVT 22
#define BTM_BLE_5_GAP_EXT_SCAN_START_COMPLETE_EVT 23
#define BTM_BLE_5_GAP_EXT_SCAN_STOP_COMPLETE_EVT 24
+#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
#define BTM_BLE_5_GAP_PREFER_EXT_CONN_PARAMS_SET_COMPLETE_EVT 25
#define BTM_BLE_5_GAP_PHY_UPDATE_COMPLETE_EVT 26
+#if (BLE_50_EXTEND_SCAN_EN == TRUE)
#define BTM_BLE_5_GAP_EXT_ADV_REPORT_EVT 27
#define BTM_BLE_5_GAP_SCAN_TIMEOUT_EVT 28
+#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
+#if (BLE_50_EXTEND_ADV_EN == TRUE)
#define BTM_BLE_5_GAP_ADV_TERMINATED_EVT 29
#define BTM_BLE_5_GAP_SCAN_REQ_RECEIVED_EVT 30
+#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
#define BTM_BLE_5_GAP_CHANNEL_SELETE_ALGORITHM_EVT 31
+#if (BLE_50_EXTEND_SYNC_EN == TRUE)
#define BTM_BLE_5_GAP_PERIODIC_ADV_REPORT_EVT 32
#define BTM_BLE_5_GAP_PERIODIC_ADV_SYNC_LOST_EVT 33
#define BTM_BLE_5_GAP_PERIODIC_ADV_SYNC_ESTAB_EVT 34
+#endif // #if (BLE_50_EXTEND_SYNC_EN == TRUE)
#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#define BTM_BLE_GAP_PERIODIC_ADV_RECV_ENABLE_COMPLETE_EVT 35
#define BTM_BLE_GAP_PERIODIC_ADV_SYNC_TRANS_COMPLETE_EVT 36
@@ -1051,9 +1073,76 @@ typedef void (tBTM_SET_PRIVACY_MODE_CMPL_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
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#define BTM_BLE_GAP_ENH_READ_TRANS_POWER_LEVEL_EVT 41
+#define BTM_BLE_GAP_READ_REMOTE_TRANS_POWER_LEVEL_EVT 42
+#define BTM_BLE_GAP_SET_PATH_LOSS_REPORTING_PARAMS_EVT 43
+#define BTM_BLE_GAP_SET_PATH_LOSS_REPORTING_ENABLE_EVT 44
+#define BTM_BLE_GAP_SET_TRANS_POWER_REPORTING_ENABLE_EVT 45
+#define BTM_BLE_GAP_PATH_LOSS_THRESHOLD_EVT 46
+#define BTM_BLE_GAP_TRANMIT_POWER_REPORTING_EVT 47
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#define BTM_BLE_GAP_SET_DEFAULT_SUBRATE_EVT 48
+#define BTM_BLE_GAP_SUBRATE_REQUEST_EVT 49
+#define BTM_BLE_GAP_SUBRATE_CHANGE_EVT 50
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
+#define BTM_BLE_GAP_SET_HOST_FEATURE_EVT 51
+#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
+#define BTM_BLE_5_GAP_UNKNOWN_EVT 52
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_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)
+
+#if (BLE_FEAT_CTE_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#define BTM_BLE_CTE_SET_TRANS_PARAMS_EVT 1
+#define BTM_BLE_CTE_SET_TRANS_ENABLE_EVT 2
+#define BTM_BLE_CTE_SET_IQ_SAMP_ENABLE_EVT 3
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define BTM_BLE_CTE_SET_CONN_RECV_PARAMS_EVT 4
+#define BTM_BLE_CTE_SET_CONN_TRANS_PARAMS_EVT 5
+#define BTM_BLE_CTE_SET_CONN_REQ_ENABLE_EVT 6
+#define BTM_BLE_CTE_SET_CONN_RSP_ENABLE_EVT 7
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define BTM_BLE_CTE_READ_ANT_INFOR_EVT 8
+#define BTM_BLE_CTE_CONNLESS_IQ_REPORT_EVT 9
+#define BTM_BLE_CTE_CONN_IQ_REPORT_EVT 10
+#define BTM_BLE_CTE_REQUEST_FAILED_EVT 11
+typedef UINT8 tBTM_BLE_CTE_EVENT;
+#endif // #if (BLE_FEAT_CTE_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
@@ -1100,46 +1189,58 @@ typedef struct {
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_SET_PERF_PHY_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_EXT_ADV_SET_RAND_ADDR_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_EXT_ADV_SET_PARAMS_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_EXT_ADV_DATA_SET_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_EXT_ADV_SCAN_RSP_DATA_SET_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance_num;
+ UINT8 instance[10];
} tBTM_BLE_EXT_ADV_START_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_EXT_ADV_STOP_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_PERIOD_ADV_SET_PARAMS_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_PERIOD_ADV_DATA_SET_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_PERIOD_ADV_START_CMPL;
typedef struct {
UINT8 status;
+ UINT8 instance;
} tBTM_BLE_PERIOD_ADV_STOP_CMPL;
typedef struct {
@@ -1230,6 +1331,7 @@ typedef struct {
UINT16 sync_handle;
UINT8 tx_power;
INT8 rssi;
+ UINT8 cte_type;
tBTM_BLE_EXT_ADV_DATA_STATUS data_status;
UINT8 data_length;
UINT8 *data;
@@ -1295,39 +1397,409 @@ typedef struct {
} tBTM_BLE_PERIOD_ADV_SYNC_TRANS_RECV;
#endif //#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+ UINT8 phy;
+ INT8 cur_tx_pwr_level;
+ INT8 max_tx_pwr_level;
+} __attribute__((packed)) tBTM_BLE_ENH_TRANS_PWR_LEVEL_CMPL;
+
+typedef struct {
+ UINT8 status;
+} __attribute__((packed)) tBTM_BLE_REMOTE_TRANS_PWR_LEVEL_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_SET_PATH_LOSS_RPTING_PARAMS;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_SET_PATH_LOSS_RPTING_ENABLE;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_SET_TRANS_POWER_RPTING_ENABLE;
+
+typedef struct {
+ UINT16 conn_handle;
+ UINT8 cur_path_loss;
+ UINT8 zone_entered;
+} __attribute__((packed)) tBTM_BLE_PATH_LOSS_THRESHOLD_EVT;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+ UINT8 reason;
+ UINT8 phy;
+ INT8 tx_power_level;
+ UINT8 tx_power_level_flag;
+ INT8 delta;
+} __attribute__((packed)) tBTM_BLE_TRANS_POWER_REPORT_EVT;
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+ UINT16 subrate_factor;
+ UINT16 peripheral_latency;
+ UINT16 continuation_number;
+ UINT16 supervision_timeout;
+} __attribute__((packed)) tBTM_BLE_SUBRATE_CHANGE_EVT;
+#endif // #if (BLE_FEAT_CONN_SUBRATING == 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)
+
+#if (BLE_FEAT_CTE_EN == TRUE)
+typedef struct {
+ UINT8 status;
+} __attribute__((packed)) tBTM_BLE_CTE_SET_TRANS_PARAMS_CMPL;
+
+typedef struct {
+ UINT8 status;
+} __attribute__((packed)) tBTM_BLE_CTE_SET_TRANS_EN_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 sync_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_IQ_SAMP_EN_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_CONN_RECV_PARAMS_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_CONN_TRANS_PARAMS_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_CONN_REQ_ENABLE_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_CONN_RSP_ENABLE_CMPL;
+
+typedef struct {
+ UINT8 status;
+ UINT8 supported_switching_sampling_rates;
+ UINT8 num_ant;
+ UINT8 max_switching_pattern_len;
+ UINT8 max_cte_len;
+} __attribute__((packed)) tBTM_BLE_CTE_READ_ANT_INFOR_CMPL;
+
+typedef struct {
+ UINT16 sync_handle;
+ UINT8 channel_idx;
+ INT16 rssi;
+ UINT8 rssi_ant_id;
+ UINT8 cte_type;
+ UINT8 slot_dur;
+ UINT8 pkt_status;
+ UINT16 periodic_evt_counter;
+ UINT8 sample_count;
+ UINT8 i_sample[0x52];
+ UINT8 q_sample[0x52];
+} __attribute__((packed)) tBTM_BLE_CTE_CONNLESS_IQ_REPORT_EVT;
+
+typedef struct {
+ UINT16 conn_handle;
+ UINT8 rx_phy;
+ UINT8 data_channel_idx;
+ INT16 rssi;
+ UINT8 rssi_ant_id;
+ UINT8 cte_type;
+ UINT8 slot_dur;
+ UINT8 pkt_status;
+ UINT16 conn_evt_counter;
+ UINT8 sample_count;
+ UINT8 i_sample[0x52];
+ UINT8 q_sample[0x52];
+} __attribute__((packed)) tBTM_BLE_CTE_CONN_IQ_REPORT_EVT;
+
+typedef struct {
+ UINT8 status;
+ UINT16 conn_handle;
+} __attribute__((packed)) tBTM_BLE_CTE_REQ_FAILED_EVT;
+
+typedef union {
+ UINT8 status;
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+ tBTM_BLE_CTE_SET_TRANS_PARAMS_CMPL cte_trans_params_cmpl;
+ tBTM_BLE_CTE_SET_TRANS_EN_CMPL cte_trans_en_cmpl;
+ tBTM_BLE_CTE_IQ_SAMP_EN_CMPL cte_iq_samp_en_cmpl;
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+ tBTM_BLE_CTE_CONN_RECV_PARAMS_CMPL cte_recv_params_cmpl;
+ tBTM_BLE_CTE_CONN_TRANS_PARAMS_CMPL cte_conn_trans_params_cmpl;
+ tBTM_BLE_CTE_CONN_REQ_ENABLE_CMPL cte_conn_req_en_cmpl;
+ tBTM_BLE_CTE_CONN_RSP_ENABLE_CMPL cte_conn_rsp_en_cmpl;
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+ tBTM_BLE_CTE_READ_ANT_INFOR_CMPL cte_read_ant_infor_cmpl;
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+ tBTM_BLE_CTE_CONNLESS_IQ_REPORT_EVT cte_connless_iq_rpt;
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+ tBTM_BLE_CTE_CONN_IQ_REPORT_EVT cte_conn_iq_rpt;
+ tBTM_BLE_CTE_REQ_FAILED_EVT cte_req_failed;
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+} tBTM_BLE_CTE_CB_PARAMS;
+
+typedef void (*tBTM_BLE_CTE_CBACK)(tBTM_BLE_CTE_EVENT event, tBTM_BLE_CTE_CB_PARAMS *params);
+#endif // #if (BLE_FEAT_CTE_EN == TRUE)
+
typedef union {
UINT8 status;
tBTM_BLE_READ_PHY_CMPL read_phy;
tBTM_BLE_SET_PREF_DEF_PHY_CMPL set_perf_def_phy;
tBTM_BLE_SET_PERF_PHY_CMPL set_perf_phy;
+#if (BLE_50_EXTEND_ADV_EN == TRUE)
tBTM_BLE_EXT_ADV_SET_RAND_ADDR_CMPL set_ext_rand_addr;
tBTM_BLE_EXT_ADV_SET_PARAMS_CMPL set_params;
tBTM_BLE_EXT_ADV_DATA_SET_CMPL adv_data_set;
tBTM_BLE_EXT_ADV_SCAN_RSP_DATA_SET_CMPL scan_rsp_data_set;
tBTM_BLE_EXT_ADV_START_CMPL adv_start;
tBTM_BLE_EXT_ADV_STOP_CMPL adv_stop;
+#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
+#if (BLE_50_PERIODIC_ADV_EN == TRUE)
tBTM_BLE_PERIOD_ADV_SET_PARAMS_CMPL per_adv_set_params;
tBTM_BLE_PERIOD_ADV_DATA_SET_CMPL per_adv_data_set;
tBTM_BLE_PERIOD_ADV_START_CMPL per_adv_start;
tBTM_BLE_PERIOD_ADV_STOP_CMPL per_adv_stop;
+#endif // #if (BLE_50_PERIODIC_ADV_EN == TRUE)
+#if (BLE_50_EXTEND_SYNC_EN == TRUE)
tBTM_BLE_PERIOD_ADV_SYNC_CREATE_CMPL per_adv_sync_create;
tBTM_BLE_PERIOD_ADV_SYNC_CANCEL_CMPL per_adv_sync_cancel;
tBTM_BLE_PERIOD_ADV_SYNC_TEMINAT_CMPL per_adv_sync_term;
tBTM_BLE_PERIOD_ADV_ADD_DEV_CMPL per_adv_add_dev;
tBTM_BLE_PERIOD_ADV_REMOVE_DEV_CMPL per_adv_remove_dev;
tBTM_BLE_PEROID_ADV_CLEAR_DEV_CMPL per_adv_clear_dev;
+#endif // #if (BLE_50_EXTEND_SYNC_EN == TRUE)
+#if (BLE_50_EXTEND_SCAN_EN == TRUE)
tBTM_BLE_SET_EXT_SCAN_PARAMS_CMPL ext_scan;
tBTM_BLE_EXT_SCAN_START_CMPL scan_start;
tBTM_BLE_EXT_SCAN_STOP_CMPL scan_stop;
+#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
tBTM_BLE_PREF_EXT_CONN_SET_PARAMS_CMPL ext_conn_set_params;
tBTM_BLE_PHY_UPDATE_CMPL phy_update;
+#if (BLE_50_EXTEND_SCAN_EN == TRUE)
tBTM_BLE_EXT_ADV_REPORT ext_adv_report;
+#endif // #if (BLE_50_EXTEND_SCAN_EN == TRUE)
+#if (BLE_50_EXTEND_ADV_EN == TRUE)
tBTM_BLE_ADV_TERMINAT adv_term;
tBTM_BLE_SCAN_REQ_RECEIVED scan_req;
+#endif // #if (BLE_50_EXTEND_ADV_EN == TRUE)
tBTM_BLE_CHANNEL_SEL_ALG channel_sel;
+#if (BLE_50_EXTEND_SYNC_EN == TRUE)
tBTM_PERIOD_ADV_REPORT period_adv_report;
tBTM_BLE_PERIOD_ADV_SYNC_LOST sync_lost;
tBTM_BLE_PERIOD_ADV_SYNC_ESTAB sync_estab;
+#endif // #if (BLE_50_EXTEND_SYNC_EN == TRUE)
#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
tBTM_BLE_PERIOD_ADV_RECV_ENABLE_CMPL per_adv_recv_enable;
tBTM_BLE_PERIOD_ADV_SYNC_TRANS_CMPL per_adv_sync_trans;
@@ -1335,6 +1807,18 @@ typedef union {
tBTM_BLE_SET_PERIOD_ADV_SYNC_TRANS_PARAMS_CMPL set_past_params;
tBTM_BLE_PERIOD_ADV_SYNC_TRANS_RECV past_recv;
#endif //#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+ tBTM_BLE_ENH_TRANS_PWR_LEVEL_CMPL enh_trans_pwr_level_cmpl;
+ tBTM_BLE_REMOTE_TRANS_PWR_LEVEL_CMPL remote_pwr_level_cmpl;
+ tBTM_BLE_SET_PATH_LOSS_RPTING_PARAMS path_loss_rpting_params;
+ tBTM_BLE_SET_PATH_LOSS_RPTING_ENABLE path_loss_rpting_enable;
+ tBTM_BLE_SET_TRANS_POWER_RPTING_ENABLE trans_pwr_rpting_enable;
+ tBTM_BLE_PATH_LOSS_THRESHOLD_EVT path_loss_thres_evt;
+ tBTM_BLE_TRANS_POWER_REPORT_EVT trans_pwr_report_evt;
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+ tBTM_BLE_SUBRATE_CHANGE_EVT subrate_change_evt;
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
} tBTM_BLE_5_GAP_CB_PARAMS;
typedef struct {
@@ -1370,6 +1854,7 @@ extern "C" {
*******************************************************************************/
void BTM_BleRegiseterConnParamCallback(tBTM_UPDATE_CONN_PARAM_CBACK *update_conn_param_cb);
void BTM_BleRegiseterPktLengthChangeCallback(tBTM_SET_PKT_DATA_LENGTH_CBACK *ptk_len_chane_cb);
+void BTM_BleRegisterVendorHciEventCallback(tBTM_BLE_VENDOR_HCI_EVT_CBACK *vendor_hci_evt_cb);
/*******************************************************************************
**
@@ -1413,23 +1898,6 @@ BOOLEAN BTM_SecAddBleKey (BD_ADDR bd_addr, tBTM_LE_KEY_VALUE *p_le_key,
/*******************************************************************************
**
-** Function BTM_BleSetAdvParams
-**
-** Description This function is called to set advertising parameters.
-**
-** Parameters: None.
-**
-** Returns void
-**
-*******************************************************************************/
-//extern
-tBTM_STATUS BTM_BleSetAdvParams(UINT16 adv_int_min, UINT16 adv_int_max,
- tBLE_BD_ADDR *p_dir_bda, tBTM_BLE_ADV_CHNL_MAP chnl_map);
-
-
-
-/*******************************************************************************
-**
** Function BTM_BleSetAdvParamsAll
**
** Description This function is called to set all of the advertising parameters.
@@ -1474,20 +1942,6 @@ tBTM_STATUS BTM_BleWriteAdvData(tBTM_BLE_AD_MASK data_mask,
/*******************************************************************************
**
-** Function BTM_BleWriteLongAdvData
-**
-** Description This function is called to write long advertising data.
-**
-** Parameters: adv_data: long advertising data
-** adv_data_len: the length of long advertising data
-**
-** Returns void
-**
-*******************************************************************************/
-tBTM_STATUS BTM_BleWriteLongAdvData(uint8_t *adv_data, uint8_t adv_data_len);
-
-/*******************************************************************************
-**
** Function BTM_BleWriteAdvDataRaw
**
** Description This function is called to write raw advertising data.
@@ -1539,6 +1993,7 @@ void BTM_BleReadAdvParams (UINT16 *adv_int_min, UINT16 *adv_int_max,
//extern
void BTM_BleObtainVendorCapabilities(tBTM_BLE_VSC_CB *p_cmn_vsc_cb);
+#if (BLE_HOST_BLE_SCAN_PARAM_UNUSED == TRUE)
/*******************************************************************************
**
** Function BTM_BleSetScanParams
@@ -1559,7 +2014,7 @@ void BTM_BleSetScanParams(tGATT_IF client_if, UINT32 scan_interval,
UINT32 scan_window, tBLE_SCAN_MODE scan_type,
tBLE_SCAN_PARAM_SETUP_CBACK scan_setup_status_cback);
-
+#endif // #if (BLE_HOST_BLE_SCAN_PARAM_UNUSED == TRUE)
/*******************************************************************************
**
@@ -1658,6 +2113,7 @@ tBTM_STATUS BTM_BleEnableBatchScan(tBTM_BLE_BATCH_SCAN_MODE scan_mode,
//extern
tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value);
+#if (BLE_HOST_READ_SCAN_REPORTS_EN == TRUE)
/*******************************************************************************
**
** Function BTM_BleReadScanReports
@@ -1673,7 +2129,9 @@ tBTM_STATUS BTM_BleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value);
//extern
tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode,
tBTM_BLE_REF_VALUE ref_value);
+#endif // #if (BLE_HOST_READ_SCAN_REPORTS_EN == TRUE)
+#if (BLE_HOST_TRACK_ADVERTISER_EN == TRUE)
/*******************************************************************************
**
** Function BTM_BleTrackAdvertiser
@@ -1689,6 +2147,7 @@ tBTM_STATUS BTM_BleReadScanReports(tBLE_SCAN_MODE scan_mode,
//extern
tBTM_STATUS BTM_BleTrackAdvertiser(tBTM_BLE_TRACK_ADV_CBACK *p_track_cback,
tBTM_BLE_REF_VALUE ref_value);
+#endif // #if (BLE_HOST_TRACK_ADVERTISER_EN == TRUE)
/*******************************************************************************
**
@@ -2100,7 +2559,7 @@ void BTM_BleReadControllerFeatures(tBTM_BLE_CTRL_FEATURES_CBACK *p_vsc_cback);
**
*******************************************************************************/
//extern
-UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT8 type, UINT8 *p_length);
+UINT8 *BTM_CheckAdvData( UINT8 *p_adv, UINT16 adv_data_len, UINT8 type, UINT8 *p_length);
/*******************************************************************************
**
@@ -2259,6 +2718,7 @@ BOOLEAN BTM_BleLocalPrivacyEnabled(void);
//extern
void BTM_BleEnableMixedPrivacyMode(BOOLEAN mixed_on);
+#if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
/*******************************************************************************
**
** Function BTM_BleMaxMultiAdvInstanceCount
@@ -2270,6 +2730,7 @@ void BTM_BleEnableMixedPrivacyMode(BOOLEAN mixed_on);
*******************************************************************************/
//extern
UINT8 BTM_BleMaxMultiAdvInstanceCount(void);
+#endif // #if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
/*******************************************************************************
**
@@ -2450,6 +2911,7 @@ BOOLEAN BTM_BleSecurityProcedureIsRunning (BD_ADDR bd_addr);
//extern
UINT8 BTM_BleGetSupportedKeySize (BD_ADDR bd_addr);
+#if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
/*******************************************************************************/
/* Multi ADV API */
/*******************************************************************************
@@ -2522,6 +2984,8 @@ tBTM_STATUS BTM_BleCfgAdvInstData (UINT8 inst_id, BOOLEAN is_scan_rsp,
//extern
tBTM_STATUS BTM_BleDisableAdvInstance (UINT8 inst_id);
+#endif // #if (BLE_HOST_BLE_MULTI_ADV_EN == TRUE)
+
/*******************************************************************************
**
** Function BTM_BleAdvFilterParamSetup
@@ -2712,6 +3176,33 @@ BOOLEAN BTM_BleSetPrivacyMode(UINT8 addr_type,
UINT8 privacy_mode,
tBTM_SET_PRIVACY_MODE_CMPL_CBACK *p_callback);
+/*******************************************************************************
+**
+** Function BTM_BleSetCsaSupport
+**
+** Description This function is called to set the ChSel field of Advertising or Initiating PDUs
+**
+** Parameters csa_select - Select LE Channel Selection Algorithm.
+** p_callback - Callback function to be called when the operation is completed.
+**
+** Returns TRUE if the operation was successful, otherwise FALSE.
+**
+*******************************************************************************/
+BOOLEAN BTM_BleSetCsaSupport (UINT8 csa_select, tBTM_SET_CSA_SUPPORT_CMPL_CBACK *p_callback);
+
+/*******************************************************************************
+**
+** Function BTM_BleSetVendorEventMask
+**
+** Description This function is called to set the vendor HCI event mask
+**
+** Parameters evt_mask - vendor HCI event mask.
+** p_callback - Callback function to be called when the operation is completed.
+**
+** Returns TRUE if the operation was successful, otherwise FALSE.
+**
+*******************************************************************************/
+BOOLEAN BTM_BleSetVendorEventMask(UINT32 evt_mask, tBTM_SET_VENDOR_EVT_MASK_CBACK *p_callback);
/*
#ifdef __cplusplus
}
@@ -2762,12 +3253,13 @@ tBTM_STATUS BTM_BleSetExtendedScanParams(tBTM_BLE_EXT_SCAN_PARAMS *params);
tBTM_STATUS BTM_BleExtendedScan(BOOLEAN enable, UINT16 duration, UINT16 period);
void BTM_BleSetPreferExtenedConnParams(BD_ADDR bd_addr, tBTM_EXT_CONN_PARAMS *params);
+#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
+#if (BLE_50_DTM_TEST_EN == TRUE)
void BTM_BleEnhancedReceiverTest(UINT8 rx_freq, UINT8 phy, UINT8 modulation_index, tBTM_CMPL_CB *p_cmd_cmpl_cback);
void BTM_BleEnhancedTransmitterTest(UINT8 tx_freq, UINT8 test_data_len, UINT8 packet_payload, UINT8 phy, tBTM_CMPL_CB *p_cmd_cmpl_cback);
-
-#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
+#endif // #if (BLE_50_DTM_TEST_EN == TRUE)
#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
void BTM_BlePeriodicAdvRecvEnable(UINT16 sync_handle, UINT8 enable);
@@ -2779,4 +3271,93 @@ 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_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)
+#if (BLE_FEAT_CTE_EN == TRUE)
+void BTM_BleCteRegisterCallback(tBTM_BLE_CTE_CBACK cb);
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+tBTM_STATUS BTM_BleSetCteTransParams(uint8_t adv_handle, uint8_t cte_len, uint8_t cte_type, uint8_t cte_count, uint8_t switching_pattern_len, uint8_t *antenna_ids);
+tBTM_STATUS BTM_BleCteSetConnectionlessTransEnable(uint8_t adv_handle, uint8_t cte_en);
+tBTM_STATUS BTM_BleCteSetConnectionlessIqSamplingEnable(uint16_t sync_handle, uint8_t sampling_en, uint8_t slot_dur,
+ uint8_t max_sampled_ctes, uint8_t switching_pattern_len, uint8_t *ant_ids);
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+tBTM_STATUS BTM_BleCteSetConnectionReceiveParams(uint16_t conn_handle, uint8_t sampling_en, uint8_t slot_dur,
+ uint8_t switching_pattern_len, uint8_t *ant_ids);
+tBTM_STATUS BTM_BleCteSetConnectionTransParams(uint16_t conn_handle, uint8_t cte_types, uint8_t switching_pattern_len, uint8_t *ant_ids);
+tBTM_STATUS BTM_BleCteSetConnectionRequestEnable(uint16_t conn_handle, uint8_t enable, uint16_t cte_req_int,
+ uint8_t req_cte_len, uint8_t req_cte_type);
+tBTM_STATUS BTM_BleCteSetConnectionRspEnable(uint16_t conn_handle, uint8_t enable);
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+
+tBTM_STATUS BTM_BleCteReadAntInfor(void);
+
+#endif // #if (BLE_FEAT_CTE_EN == TRUE)
+
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+void BTM_BleEnhReadTransPowerLevel(uint16_t conn_handle, uint8_t phy);
+void BTM_BleReadRemoteTransPwrLevel(uint16_t conn_handle, uint8_t phy);
+void BTM_BleSetPathLossRptParams(uint16_t conn_handle, uint8_t high_threshold, uint8_t high_hysteresis,
+ uint8_t low_threshold, uint8_t low_hysteresis, uint16_t min_time_spent);
+void BTM_BleSetPathLossRptEnable(uint16_t conn_handle, uint8_t enable);
+void BTM_BleSetTransPwrRptEnable(uint16_t conn_handle, uint8_t local_enable, uint8_t remote_enable);
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+void BTM_BleSetDefaultSubrate(UINT16 subrate_min, UINT16 subrate_max, UINT16 max_latency,
+ UINT16 continuation_number, UINT16 supervision_timeout);
+
+void BTM_BleSubrateRequest(UINT16 conn_handle, UINT16 subrate_min, UINT16 subrate_max,
+ UINT16 max_latency, UINT16 continuation_number, UINT16 supervision_timeout);
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
+tBTM_STATUS BTM_BleSetHostFeature(uint16_t bit_num, uint8_t bit_val);
+#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#endif
diff --git a/lib/bt/host/bluedroid/stack/include/stack/dyn_mem.h b/lib/bt/host/bluedroid/stack/include/stack/dyn_mem.h
index fa1ed498..7c208d8c 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/dyn_mem.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/dyn_mem.h
@@ -45,6 +45,8 @@
#define HCRP_DYNAMIC_MEMORY TRUE
#define HFP_DYNAMIC_MEMORY TRUE
#define HID_DYNAMIC_MEMORY TRUE
+#define OBEX_DYNAMIC_MEMORY TRUE
+#define GOEP_DYNAMIC_MEMORY TRUE
#define HSP2_DYNAMIC_MEMORY TRUE
#define ICP_DYNAMIC_MEMORY TRUE
#define OPP_DYNAMIC_MEMORY TRUE
@@ -53,6 +55,8 @@
#define SLIP_DYNAMIC_MEMORY TRUE
#define LLCP_DYNAMIC_MEMORY TRUE
#define BTC_SBC_DEC_DYNAMIC_MEMORY TRUE
+#define BTC_GAP_BT_DYNAMIC_MEMORY TRUE
+#define L2CAP_DYNAMIC_MEMORY TRUE
#else /* #if UC_BT_BLE_DYNAMIC_ENV_MEMORY */
#define BTU_DYNAMIC_MEMORY FALSE
@@ -79,6 +83,8 @@
#define HCRP_DYNAMIC_MEMORY FALSE
#define HFP_DYNAMIC_MEMORY FALSE
#define HID_DYNAMIC_MEMORY FALSE
+#define OBEX_DYNAMIC_MEMORY FALSE
+#define GOEP_DYNAMIC_MEMORY FALSE
#define HSP2_DYNAMIC_MEMORY FALSE
#define ICP_DYNAMIC_MEMORY FALSE
#define OPP_DYNAMIC_MEMORY FALSE
@@ -87,6 +93,8 @@
#define SLIP_DYNAMIC_MEMORY FALSE
#define LLCP_DYNAMIC_MEMORY FALSE
#define BTC_SBC_DEC_DYNAMIC_MEMORY FALSE
+#define BTC_GAP_BT_DYNAMIC_MEMORY FALSE
+#define L2CAP_DYNAMIC_MEMORY FALSE
#endif /* #if UC_BT_BLE_DYNAMIC_ENV_MEMORY */
@@ -191,6 +199,14 @@
#define HID_DYNAMIC_MEMORY FALSE
#endif
+#ifndef OBEX_DYNAMIC_MEMORY
+#define OBEX_DYNAMIC_MEMORY FALSE
+#endif
+
+#ifndef GOEP_DYNAMIC_MEMORY
+#define GOEP_DYNAMIC_MEMORY FALSE
+#endif
+
#ifndef HSP2_DYNAMIC_MEMORY
#define HSP2_DYNAMIC_MEMORY FALSE
#endif
diff --git a/lib/bt/host/bluedroid/stack/include/stack/gatt_api.h b/lib/bt/host/bluedroid/stack/include/stack/gatt_api.h
index fed2ea9a..6c63db62 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/gatt_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/gatt_api.h
@@ -139,7 +139,7 @@ typedef UINT16 tGATT_DISCONN_REASON;
/* max length of an attribute value
*/
#ifndef GATT_MAX_ATTR_LEN
-#define GATT_MAX_ATTR_LEN 512
+#define GATT_MAX_ATTR_LEN GATT_MAX_MTU_SIZE
#endif
/* default GATT MTU size over LE link
diff --git a/lib/bt/host/bluedroid/stack/include/stack/goep_common.h b/lib/bt/host/bluedroid/stack/include/stack/goep_common.h
new file mode 100644
index 00000000..74cb3ca8
--- /dev/null
+++ b/lib/bt/host/bluedroid/stack/include/stack/goep_common.h
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+
+#include "common/bt_target.h"
+
+/* GOEP Client or Server(not supported yet) API return code */
+#define GOEP_SUCCESS 0x00 /* Operation successful */
+#define GOEP_FAILURE 0x01 /* Operation failed */
+#define GOEP_NO_RESOURCES 0x02 /* Not enough resources */
+#define GOEP_BAD_HANDLE 0x04 /* Bad handle */
+#define GOEP_INVALID_PARAM 0x08 /* Invalid parameter */
+#define GOEP_INVALID_STATE 0x10 /* Operation not allow in current state */
+#define GOEP_CONGEST 0x20 /* Congest */
+#define GOEP_TL_ERROR 0x40 /* Lower transport layer error */
diff --git a/lib/bt/host/bluedroid/stack/include/stack/goepc_api.h b/lib/bt/host/bluedroid/stack/include/stack/goepc_api.h
new file mode 100644
index 00000000..f2b93f86
--- /dev/null
+++ b/lib/bt/host/bluedroid/stack/include/stack/goepc_api.h
@@ -0,0 +1,82 @@
+/*
+ * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+
+#include "common/bt_target.h"
+
+#include "stack/goep_common.h"
+#include "stack/obex_api.h"
+
+#if (GOEPC_INCLUDED == TRUE)
+
+enum {
+ GOEPC_OPENED_EVT, /* connection open */
+ GOEPC_CLOSED_EVT, /* disconnect unexpected */
+ GOEPC_MTU_CHANGED_EVT, /* lower layer MTU change */
+ GOEPC_CONGEST_EVT, /* lower layer connection congest */
+ GOEPC_UNCONGEST_EVT, /* lower layer connection uncongest */
+ GOEPC_RESPONSE_EVT /* response from server */
+};
+
+typedef struct {
+ UINT16 peer_mtu; /* peer mtu of lower level connection */
+ UINT16 our_mtu; /* our mtu of lower level connection */
+} tGOEPC_MSG_OPENED;
+
+typedef struct {
+ UINT8 reason; /* connection close reason */
+} tGOEPC_MSG_CLOSED;
+
+typedef struct {
+ UINT16 peer_mtu; /* peer mtu of lower level connection */
+ UINT16 our_mtu; /* our mtu of lower level connection */
+} tGOEPC_MSG_MTU_CHANGED;
+
+typedef struct {
+ UINT8 opcode; /* which opcode that this packet response to */
+ BOOLEAN final; /* whether this is a final packet */
+ BOOLEAN srm_en; /* whether srm is enable */
+ BOOLEAN srm_wait; /* whether srm wait is set, set by peer or by us */
+ BT_HDR *pkt; /* pointer to response packet */
+} tGOEPC_MSG_RESPONSE;
+
+typedef union {
+ tGOEPC_MSG_OPENED opened;
+ tGOEPC_MSG_CLOSED closed;
+ tGOEPC_MSG_MTU_CHANGED mtu_changed;
+ tGOEPC_MSG_RESPONSE response;
+} tGOEPC_MSG;
+
+typedef void (tGOEPC_EVT_CBACK)(UINT16 handle, UINT8 event, tGOEPC_MSG *msg);
+
+/*******************************************************************************
+* The following APIs are called by bluetooth stack automatically
+*******************************************************************************/
+
+extern UINT16 GOEPC_Init(void);
+
+extern void GOEPC_Deinit(void);
+
+/*******************************************************************************
+* The following APIs must be executed in btu task
+*******************************************************************************/
+
+extern UINT16 GOEPC_Open(tOBEX_SVR_INFO *p_svr, tGOEPC_EVT_CBACK callback, UINT16 *out_handle);
+
+extern UINT16 GOEPC_Close(UINT16 handle);
+
+extern UINT16 GOEPC_SendRequest(UINT16 handle);
+
+extern UINT16 GOEPC_PrepareRequest(UINT16 handle, tOBEX_PARSE_INFO *info, UINT16 buff_size);
+
+extern UINT16 GOEPC_DropRequest(UINT16 handle);
+
+extern UINT16 GOEPC_RequestSetSRM(UINT16 handle, BOOLEAN srm_en, BOOLEAN srm_wait);
+
+extern UINT16 GOEPC_RequestAddHeader(UINT16 handle, UINT8 header_id, const UINT8 *data, UINT16 data_len);
+
+#endif /* #if (GOEPC_INCLUDED == TRUE) */
diff --git a/lib/bt/host/bluedroid/stack/include/stack/hcidefs.h b/lib/bt/host/bluedroid/stack/include/stack/hcidefs.h
index 21b14881..23f9b3e6 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/hcidefs.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/hcidefs.h
@@ -357,8 +357,12 @@
#define HCI_BLE_READ_PHY (0x0030 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_DEFAULT_PHY (0x0031 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_PHY (0x0032 | HCI_GRP_BLE_CMDS)
+#endif
+#if (BLE_50_DTM_TEST_EN == TRUE)
#define HCI_BLE_ENH_RX_TEST (0x0033 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ENH_TX_TEST (0x0034 | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_50_DTM_TEST_EN == TRUE)
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCI_BLE_SET_ADV_RAND_ADDR (0x0035 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_EXT_ADV_PARAM (0x0036 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_EXT_ADV_DATA (0x0037 | HCI_GRP_BLE_CMDS)
@@ -386,6 +390,20 @@
#define HCI_BLE_WR_RF_PATH_COMPENSATION (0x004D | HCI_GRP_BLE_CMDS)
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCI_BLE_SET_PRIVACY_MODE (0x004E | HCI_GRP_BLE_CMDS)
+#if (BLE_FEAT_CTE_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#define HCI_BLE_SET_CONNLESS_CTE_TRANS_PARAMS (0x0051 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_CONNLESS_CTE_TRANS_ENABLE (0x0052 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_CONNLESS_IQ_SAMPLING_ENABLE (0x0053 | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define HCI_BLE_SET_CONN_CTE_RECEIVE_PARAMS (0x0054 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_CONN_CTE_TRANS_PARAMS (0x0055 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_CONN_CTE_REQ_ENABLE (0x0056 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_CONN_CTE_RSP_ENABLE (0x0057 | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define HCI_BLE_READ_ANT_INFOR (0x0058 | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_FEAT_CTE_EN == TRUE)
#if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
#define HCI_BLE_SET_PERIOD_ADV_RECV_ENABLE (0x0059 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_PERIOD_ADV_SYNC_TRANS (0x005A | HCI_GRP_BLE_CMDS)
@@ -393,6 +411,38 @@
#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_SET_HOST_FEATURE (0x0074 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_ISO_READ_ISO_LINK_QUALITY (0x0075 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_HOST_FEATURE_V2 (0x0097 | HCI_GRP_BLE_CMDS)
+
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#define HCI_BLE_ENH_READ_TRANS_POWER_LEVEL (0x0076 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_READ_REMOTE_TRANS_POWER_LEVEL (0x0077 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_PATH_LOSS_REPORTING_PARAMS (0x0078 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_PATH_LOSS_REPORTING_ENABLE (0x0079 | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SET_TRANS_POWER_REPORTING_ENABLE (0x007A | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#define HCI_BLE_SET_DEFAULT_SUBRATE (0x007D | HCI_GRP_BLE_CMDS)
+#define HCI_BLE_SUBRATE_REQUEST (0x007E | HCI_GRP_BLE_CMDS)
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
+
// Vendor OGF define
#define HCI_VENDOR_OGF 0x3F
@@ -422,11 +472,20 @@
#define HCI_SUBCODE_BLE_ADV_REPORT_FLOW_CONTROL 0x0A
#define HCI_SUBCODE_BLE_RD_STATIC_ADDR 0x0B
#define HCI_SUBCODE_BLE_CLEAR_ADV 0x0C
+#define HCI_SUBCODE_BLE_SET_CSA_SUPPORT 0x12
+#define HCI_SUBCODE_BLE_SET_VENDOR_EVT_MASK 0x16
#define HCI_SUBCODE_BLE_MAX 0x7F
//ESP BT subcode define
#define HCI_SUBCODE_BT_INIT 0x00
+#define HCI_SUBCODE_BT_WRITE_DM1_ENABLE 0x01
#define HCI_SUBCODE_BT_SET_MIN_ENC_KEY_SIZE 0x02
+#define HCI_SUBCODE_BT_CLK_UPD 0x03
+#define HCI_SUBCODE_BT_SET_AFH 0x07
+#define HCI_SUBCODE_BT_SET_EVT_MASK 0x08
+#define HCI_SUBCODE_BT_SET_AFH_REPORTING_MODE 0x09
+#define HCI_SUBCODE_BT_MASK_RMT_AFH_CH_CLASS 0x0A
+#define HCI_SUBCODE_BT_WR_AUTO_RATE_INIT_ENABLE 0x0B
#define HCI_SUBCODE_BT_MAX 0x7F
#define HCI_ESP_VENDOR_OPCODE_BUILD(ogf, group, subcode) ((ogf << 10) | (group <<7) | (subcode << 0))
@@ -460,16 +519,25 @@
#define HCI_BLE_ENERGY_INFO_OCF HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_ENERGY_INFO)
/* Extended BLE Scan parameters OCF */
#define HCI_BLE_EXTENDED_SCAN_PARAMS_OCF HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_EXTENDED_SCAN_PARAMS)
-/* Long BLE Adv data OCF */
-#define HCI_VENDOR_BLE_LONG_ADV_DATA HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_LONG_ADV)
/* BLE update duplicate scan exceptional list */
#define HCI_VENDOR_BLE_UPDATE_DUPLICATE_EXCEPTIONAL_LIST HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_DUPLICATE_EXCEPTIONAL_LIST)
#define HCI_VENDOR_BLE_SET_ADV_FLOW_CONTROL HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_SET_ADV_FLOW_CONTROL)
#define HCI_VENDOR_BLE_ADV_REPORT_FLOW_CONTROL HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_ADV_REPORT_FLOW_CONTROL)
/* BLE clear legacy advertising */
#define HCI_VENDOR_BLE_CLEAR_ADV HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_CLEAR_ADV)
+/* BLE set CSA support */
+#define HCI_VENDOR_BLE_SET_CSA_SUPPORT HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_SET_CSA_SUPPORT)
+/* BLE set vendor event mask */
+#define HCI_VENDOR_BLE_SET_EVT_MASK HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BLE, HCI_SUBCODE_BLE_SET_VENDOR_EVT_MASK)
//ESP BT HCI CMD
-#define HCI_VENDOR_BT_SET_MIN_ENC_KEY_SIZE HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_SET_MIN_ENC_KEY_SIZE)
+#define HCI_VENDOR_BT_WRITE_DM1_ENABLE HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_WRITE_DM1_ENABLE)
+#define HCI_VENDOR_BT_SET_MIN_ENC_KEY_SIZE HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_SET_MIN_ENC_KEY_SIZE)
+#define HCI_VENDOR_BT_CLK_UPD HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_CLK_UPD)
+#define HCI_VENDOR_BT_SET_AFH HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_SET_AFH)
+#define HCI_VENDOR_BT_SET_EVT_MASK HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_SET_EVT_MASK)
+#define HCI_VENDOR_BT_SET_AFH_REPORTING_MODE HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_SET_AFH_REPORTING_MODE)
+#define HCI_VENDOR_BT_MASK_RMT_AFH_CH_CLASS HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_MASK_RMT_AFH_CH_CLASS)
+#define HCI_VENDOR_BT_WR_AUTO_RATE_INIT_ENABLE HCI_ESP_VENDOR_OPCODE_BUILD(HCI_VENDOR_OGF, HCI_ESP_GROUP_BT, HCI_SUBCODE_BT_WR_AUTO_RATE_INIT_ENABLE)
/* subcode for multi adv feature */
#define BTM_BLE_MULTI_ADV_SET_PARAM 0x01
@@ -820,10 +888,48 @@
#define HCI_BLE_PERIOD_ADV_SYNC_TRANS_RECV_EVT 0x18
#endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE)
+#if (BLE_FEAT_CTE_EN == TRUE)
+#define HCI_BLE_CONNLESS_IQ_REPORT_EVT 0x15
+#define HCI_BLE_CONN_IQ_REPORT_EVT 0x16
+#define HCI_BLE_CTE_REQUEST_FAILED_EVT 0x17
+#endif // #if (BLE_FEAT_CTE_EN == 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)
+
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#define HCI_BLE_PATH_LOSS_THRESHOLD_EVT 0x20
+#define HCI_BLE_TRANS_POWER_REPORTING_EVT 0x21
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#define HCI_BLE_SUBRATE_CHANGE_EVT 0x23
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
+
/* Definitions for LE Channel Map */
#define HCI_BLE_CHNL_MAP_SIZE 5
+#define HCI_VENDOR_SPECIFIC_EVT 0xFF /* Vendor specific events */
+#define HCI_VENDOR_LEGACY_REM_AUTH_EVT_SUBCODE 0x03
+#define HCI_VENDOR_AFH_CHG_EVT_SUBCODE 0x05
+#define HCI_VENDOR_CH_CLASSIFICATION_EVT_SUBCODE 0x06
+#define HCI_VENDOR_CH_CLASSIFICATION_REPORTING_MODE_EVT_SUBCODE 0x07
+
#define HCI_VENDOR_SPECIFIC_EVT 0xFF /* Vendor specific events */
+#define HCI_VSE_LE_SUBEVT_BASE 0xC0 /* BLE vendor event code base */
+#define HCI_VSE_LE_EVT_MAX 0xFF /* BLE vendor event code max */
#define HCI_NAP_TRACE_EVT 0xFF /* was define 0xFE, 0xFD, change to 0xFF
because conflict w/ TCI_EVT and per
specification compliant */
@@ -1871,42 +1977,50 @@ typedef struct {
#define HCI_PING_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_PING_OFF] & HCI_EXT_FEATURE_PING_MASK)
/*
-** LE features encoding - page 0 (the only page for now)
+** LE features encoding - page 0
*/
-/* LE Encryption */
+/* LE Encryption: bit 0 */
#define HCI_LE_FEATURE_LE_ENCRYPTION_MASK 0x01
#define HCI_LE_FEATURE_LE_ENCRYPTION_OFF 0
#define HCI_LE_ENCRYPTION_SUPPORTED(x) ((x)[HCI_LE_FEATURE_LE_ENCRYPTION_OFF] & HCI_LE_FEATURE_LE_ENCRYPTION_MASK)
-/* Connection Parameters Request Procedure */
+/* Connection Parameters Request Procedure: bit 1 */
#define HCI_LE_FEATURE_CONN_PARAM_REQ_MASK 0x02
#define HCI_LE_FEATURE_CONN_PARAM_REQ_OFF 0
#define HCI_LE_CONN_PARAM_REQ_SUPPORTED(x) ((x)[HCI_LE_FEATURE_CONN_PARAM_REQ_OFF] & HCI_LE_FEATURE_CONN_PARAM_REQ_MASK)
-/* Extended Reject Indication */
+/* Extended Reject Indication: bit 2 */
#define HCI_LE_FEATURE_EXT_REJ_IND_MASK 0x04
#define HCI_LE_FEATURE_EXT_REJ_IND_OFF 0
#define HCI_LE_EXT_REJ_IND_SUPPORTED(x) ((x)[HCI_LE_FEATURE_EXT_REJ_IND_OFF] & HCI_LE_FEATURE_EXT_REJ_IND_MASK)
-/* Slave-initiated Features Exchange */
+/* Slave-initiated Features Exchange: bit 3 */
#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK 0x08
#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF 0
#define HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(x) ((x)[HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF] & HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK)
+/* LE Data Packet Length Extension: bit 5 */
+#define HCI_LE_FEATURE_DATA_LEN_EXT_MASK 0x20
+#define HCI_LE_FEATURE_DATA_LEN_EXT_OFF 0
+#define HCI_LE_DATA_LEN_EXT_SUPPORTED(x) ((x)[HCI_LE_FEATURE_DATA_LEN_EXT_OFF] & HCI_LE_FEATURE_DATA_LEN_EXT_MASK)
+
/* Enhanced privacy Feature: bit 6 */
#define HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK 0x40
#define HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF 0
#define HCI_LE_ENHANCED_PRIVACY_SUPPORTED(x) ((x)[HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF] & HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK)
-/* Extended scanner filter policy : 7 */
+/* Extended scanner filter policy: bit 7 */
#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK 0x80
#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF 0
#define HCI_LE_EXT_SCAN_FILTER_POLICY_SUPPORTED(x) ((x)[HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF] & HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK)
-/* Slave-initiated Features Exchange */
-#define HCI_LE_FEATURE_DATA_LEN_EXT_MASK 0x20
-#define HCI_LE_FEATURE_DATA_LEN_EXT_OFF 0
-#define HCI_LE_DATA_LEN_EXT_SUPPORTED(x) ((x)[HCI_LE_FEATURE_DATA_LEN_EXT_OFF] & HCI_LE_FEATURE_DATA_LEN_EXT_MASK)
+/*
+** LE features encoding - page 1
+*/
+/* LE Extended Advertising: bit 12 */
+#define HCI_LE_FEATURE_EXT_ADV_MASK 0x10
+#define HCI_LE_FEATURE_EXT_ADV_OFF 1
+#define HCI_LE_EXT_ADV_SUPPORTED(x) ((x)[HCI_LE_FEATURE_EXT_ADV_OFF] & HCI_LE_FEATURE_EXT_ADV_MASK)
/*
** Local Supported Commands encoding
diff --git a/lib/bt/host/bluedroid/stack/include/stack/hcimsgs.h b/lib/bt/host/bluedroid/stack/include/stack/hcimsgs.h
index 951e5b70..4ee07b4d 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/hcimsgs.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/hcimsgs.h
@@ -759,12 +759,18 @@ void btsnd_hcic_vendor_spec_cmd (BT_HDR *buffer, UINT16 opcode,
#define HCIC_PARAM_SIZE_BLE_UPDATE_ADV_FLOW_CONTROL 2
#define HCIC_PARAM_SIZE_BLE_CLEAR_ADV 0
#define HCIC_PARAM_SIZE_SET_PRIVACY_MODE 8
+#define HCIC_PARAM_SIZE_BLE_SET_CSA_SUPPORT 1
+#define HCIC_PARAM_SIZE_BLE_SET_VENDOR_EVT_MASK 4
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_BLE_READ_PHY 2
#define HCIC_PARAM_SIZE_BLE_SET_DEF_PHY 3
#define HCIC_PARAM_SIZE_BLE_SET_PHY 7
+#endif
+#if (BLE_50_DTM_TEST_EN == TRUE)
#define HCIC_PARAM_SIZE_ENH_RX_TEST 3
#define HCIC_PARAM_SIZE_ENH_TX_TEST 4
+#endif // #if (BLE_50_DTM_TEST_EN == TRUE)
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_EXT_RAND_ADDR 7
#define HCIC_PARAM_SIZE_EXT_ADV_SET_PARAMS 25
#define HCIC_PARAM_SIZE_EXT_ADV_WRITE_DATA 251
@@ -914,7 +920,14 @@ BOOLEAN btsnd_hcic_ble_set_rand_priv_addr_timeout (UINT16 rpa_timout);
BOOLEAN btsnd_hcic_ble_clear_adv(void);
+BOOLEAN btsnd_hcic_ble_set_privacy_mode(UINT8 addr_type, BD_ADDR addr, UINT8 privacy_mode);
+
+BOOLEAN btsnd_hcic_ble_set_csa_support (UINT8 csa_select);
+
+BOOLEAN btsnd_hcic_ble_set_vendor_evt_mask (UINT32 evt_mask);
+
#endif /* BLE_INCLUDED */
+
#if (BLE_50_FEATURE_SUPPORT == TRUE)
typedef struct {
UINT8 scan_type;
@@ -957,14 +970,17 @@ UINT8 btsnd_hcic_ble_set_prefered_default_phy(UINT8 all_phys,
BOOLEAN btsnd_hcic_ble_set_phy(UINT16 conn_handle,
UINT8 all_phys, UINT8 tx_phys,
UINT8 rx_phys, UINT16 phy_options);
-
+#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
+#if (BLE_50_DTM_TEST_EN == TRUE)
UINT8 btsnd_hcic_ble_enhand_rx_test(UINT8 rx_channel, UINT8 phy,
UINT8 modulation_idx);
UINT8 btsnd_hcic_ble_enhand_tx_test(UINT8 tx_channel, UINT8 len,
UINT8 packect,
UINT8 phy);
+#endif // #if (BLE_50_DTM_TEST_EN == TRUE)
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
UINT8 btsnd_hcic_ble_set_extend_rand_address(UINT8 adv_handle, BD_ADDR rand_addr);
UINT8 btsnd_hcic_ble_set_ext_adv_params(UINT8 adv_handle, UINT16 properties, UINT32 interval_min,
@@ -1018,7 +1034,7 @@ BOOLEAN btsnd_hcic_ble_create_ext_conn(tHCI_CreatExtConn *p_conn);
BOOLEAN btsnd_hcic_ble_periodic_adv_create_sync(UINT8 filter_policy, UINT8 adv_sid,
UINT8 adv_addr_type, BD_ADDR adv_addr,
- UINT16 sync_timeout, UINT8 unused);
+ UINT16 sync_timeout, UINT8 sync_cte_type);
UINT8 btsnd_hcic_ble_periodic_adv_create_sync_cancel(void);
@@ -1042,8 +1058,6 @@ UINT8 btsnd_hcic_ble_write_rf_path_compensation(UINT16 rf_tx_path, UINT16 rf_rx_
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
-UINT8 btsnd_hcic_ble_set_privacy_mode(UINT8 addr_type, BD_ADDR addr, UINT8 privacy_mode);
-
#define HCIC_PARAM_SIZE_WRITE_AUTHENT_PAYLOAD_TOUT 4
#define HCI__WRITE_AUTHENT_PAYLOAD_TOUT_HANDLE_OFF 0
@@ -1069,4 +1083,164 @@ 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
+
+#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_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)
+
+#if (BLE_FEAT_CTE_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#define HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_PARAMS 5
+#define HCIC_PARAM_SIZE_SET_CONNLESS_CTE_TRANS_ENABLE 2
+#define HCIC_PARAM_SIZE_SET_CONNLESS_IQ_SAMPLING_ENABLE 6
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define HCIC_PARAM_SIZE_SET_CONN_CTE_RECEIVE_PARAMS 5
+#define HCIC_PARAM_SIZE_SET_CONN_CTE_TRANS_PARAMS 4
+#define HCIC_PARAM_SIZE_CONN_CTE_REQ_ENABLE 7
+#define HCIC_PARAM_SIZE_CONN_CTE_RSP_ENABLE 3
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+#define HCIC_PARAM_SIZE_READ_ANT_INFO 0
+#if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+UINT8 btsnd_hcic_ble_set_connless_cte_trans_params(uint8_t adv_hdl, uint8_t cte_len, uint8_t cte_type,
+ uint8_t cte_cnt, uint8_t switching_pattern_len, uint8_t *antenna_ids);
+UINT8 btsnd_hcic_ble_set_connless_cte_enable(uint8_t adv_hdl, uint8_t cte_en);
+UINT8 btsnd_hcic_ble_set_connless_iq_sampling_enable(uint16_t sync_hdl, uint8_t sampling_en, uint8_t slot_dur,
+ uint8_t max_sampled_ctes, uint8_t switching_pattern_len, uint8_t *antenna_ids);
+#endif // #if (BLE_FEAT_CTE_CONNECTIONLESS_EN == TRUE)
+#if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+UINT8 btsnd_hcic_ble_set_conn_cte_receive_params(uint16_t conn_hdl, uint8_t sampling_en, uint8_t slot_dur,
+ uint8_t switching_pattern_len, uint8_t *antenna_ids);
+UINT8 btsnd_hcic_ble_set_conn_cte_trans_params(uint16_t conn_hdl, uint8_t cte_type, uint8_t switching_pattern_len, uint8_t *antenna_ids);
+UINT8 btsnd_hcic_ble_conn_cte_req_enable(uint16_t conn_hdl, uint8_t enable, uint16_t cte_req_int, uint8_t req_cte_len, uint8_t req_cte_type);
+UINT8 btsnd_hcic_ble_conn_cte_rsp_enable(uint16_t conn_hdl, uint8_t enable);
+#endif // #if (BLE_FEAT_CTE_CONNECTION_EN == TRUE)
+UINT8 btsnd_hcic_ble_read_antenna_info(void);
+#endif // #if (BLE_FEAT_CTE_EN == TRUE)
+
+#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+#define HCIC_PARAM_SIZE_ENH_READ_TRANS_PWR_LEVEL 3
+#define HCIC_PARAM_SIZE_READ_REMOTE_TRANS_PWR_LEVEL 3
+#define HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_PARAMS 8
+#define HCIC_PARAM_SIZE_SET_PATH_LOSS_REPORTING_ENABLE 3
+#define HCIC_PARAM_SIZE_SET_TRANS_PWR_REPORTING_ENABLE 4
+
+UINT8 btsnd_hcic_ble_enh_read_trans_power_level(uint16_t conn_handle, uint8_t phy);
+UINT8 btsnd_hcic_ble_read_remote_trans_power_level(uint16_t conn_handle, uint8_t phy);
+UINT8 btsnd_hcic_ble_set_path_loss_rpt_params(uint16_t conn_handle, uint8_t high_threshold, uint8_t high_hysteresis,
+ uint8_t low_threshold, uint8_t low_hysteresis, uint16_t min_time_spent);
+UINT8 btsnd_hcic_ble_set_path_loss_rpt_enable(uint16_t conn_handle, uint8_t enable);
+UINT8 btsnd_hcic_ble_set_trans_pwr_rpt_enable(uint16_t conn_handle, uint8_t local_enable, uint8_t remote_enable);
+#endif // #if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
+
+#if (BLE_FEAT_CONN_SUBRATING == TRUE)
+#define HCIC_PARAM_SIZE_SET_DEFAULT_SUBRATE_PARAMS_LEN 10
+#define HCIC_PARAM_SIZE_SUBRATE_REQ_LENGTH_PARAMS_LEN 12
+UINT8 btsnd_hcic_ble_set_default_subrate(UINT16 subrate_min, UINT16 subrate_max, UINT16 max_latency,
+ UINT16 continuation_number, UINT16 supervision_timeout);
+
+UINT8 btsnd_hcic_ble_subrate_request(UINT16 conn_handle, UINT16 subrate_min, UINT16 subrate_max, UINT16 max_latency,
+ UINT16 continuation_number, UINT16 supervision_timeout);
+#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
+
+#if (BLE_50_FEATURE_SUPPORT == TRUE)
+#define HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS 2
+#define HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2 3
+UINT8 btsnd_hcic_ble_set_host_feature(uint16_t bit_num, uint8_t bit_val);
+#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
+
#endif
diff --git a/lib/bt/host/bluedroid/stack/include/stack/obex_api.h b/lib/bt/host/bluedroid/stack/include/stack/obex_api.h
new file mode 100644
index 00000000..d22cd33c
--- /dev/null
+++ b/lib/bt/host/bluedroid/stack/include/stack/obex_api.h
@@ -0,0 +1,271 @@
+/*
+ * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#pragma once
+
+#include "common/bt_target.h"
+
+#if (OBEX_INCLUDED == TRUE)
+
+/* API function return value result codes. */
+#define OBEX_SUCCESS 0 /* Operation successful */
+#define OBEX_FAILURE 1 /* Operation failed */
+#define OBEX_NO_RESOURCES 3 /* Not enough resources */
+#define OBEX_BAD_HANDLE 4 /* Bad handle */
+#define OBEX_INVALID_PARAM 5 /* Invalid parameter */
+#define OBEX_NOT_OPEN 6 /* Connection not open */
+#define OBEX_PACKET_TOO_LARGE 7 /* Packet size large than MTU */
+#define OBEX_ERROR_TL 8 /* Operation failed in transport layer */
+
+/*
+* OBEX profile definitions
+*/
+#define OBEX_OPCODE_CONNECT 0x80
+#define OBEX_OPCODE_DISCONNECT 0x81
+#define OBEX_OPCODE_PUT 0x02
+#define OBEX_OPCODE_PUT_FINAL 0x82
+#define OBEX_OPCODE_GET 0x03
+#define OBEX_OPCODE_GET_FINAL 0x83
+#define OBEX_OPCODE_SETPATH 0x85
+#define OBEX_OPCODE_ACTION 0x06
+#define OBEX_OPCODE_SESSION 0x87
+#define OBEX_OPCODE_ABORT 0xFF
+
+#define OBEX_RESPONSE_CODE_CONTINUE 0x10
+#define OBEX_RESPONSE_CODE_OK 0x20
+#define OBEX_RESPONSE_CODE_CREATED 0x21
+#define OBEX_RESPONSE_CODE_ACCEPTED 0x22
+#define OBEX_RESPONSE_CODE_NON_AUTHORITATIVE_INFO 0x23
+#define OBEX_RESPONSE_CODE_NO_CONTENT 0x24
+#define OBEX_RESPONSE_CODE_RESET_CONTENT 0x25
+#define OBEX_RESPONSE_CODE_PARTIAL_CONTENT 0x26
+#define OBEX_RESPONSE_CODE_MULTIPLE_CHOICES 0x30
+#define OBEX_RESPONSE_CODE_MOVED_PERMANENTLY 0x31
+#define OBEX_RESPONSE_CODE_MOVED_TEMPORARILY 0x31
+#define OBEX_RESPONSE_CODE_SEE_OHTER 0x33
+#define OBEX_RESPONSE_CODE_NOT_MODIFIED 0x34
+#define OBEX_RESPONSE_CODE_USE_PROXY 0x35
+#define OBEX_RESPONSE_CODE_BAD_REQUEST 0x40
+#define OBEX_RESPONSE_CODE_UNAUTHORIZED 0x41
+#define OBEX_RESPONSE_CODE_PAYMENT_REQUIRED 0x42
+#define OBEX_RESPONSE_CODE_FORBIDDEN 0x43
+#define OBEX_RESPONSE_CODE_NOT_FOUND 0x44
+#define OBEX_RESPONSE_CODE_METHOD_NOT_ALLOWED 0x45
+#define OBEX_RESPONSE_CODE_NOT_ACCEPTABLE 0x46
+#define OBEX_RESPONSE_CODE_PROXY_AUTHENTICATION_REQUIRED 0x47
+#define OBEX_RESPONSE_CODE_REQUEST_TIME_OUT 0x48
+#define OBEX_RESPONSE_CODE_CONFLICT 0x49
+#define OBEX_RESPONSE_CODE_GONE 0x4A
+#define OBEX_RESPONSE_CODE_LENGTH_REQUIRED 0x4B
+#define OBEX_RESPONSE_CODE_PRECONDITION_FAILED 0x4C
+#define OBEX_RESPONSE_CODE_REQUESTED_ENTITY_TOO_LARGE 0x4D
+#define OBEX_RESPONSE_CODE_REQUEST_URL_TOO_LARGE 0x4E
+#define OBEX_RESPONSE_CODE_UNSUPPORTED_MEDIA_TYPE 0x4F
+#define OBEX_RESPONSE_CODE_INTERNAL_SERVER_ERROR 0x50
+#define OBEX_RESPONSE_CODE_NOT_IMPLEMENTED 0x51
+#define OBEX_RESPONSE_CODE_BAD_GATEWAY 0x52
+#define OBEX_RESPONSE_CODE_SERVICE_UNAVAILABLE 0x53
+#define OBEX_RESPONSE_CODE_GATEWAY_TIMEOUT 0x54
+#define OBEX_RESPONSE_CODE_HTTP_VERSION_NOT_SUPPORTED 0x55
+#define OBEX_RESPONSE_CODE_DATABASE_FULL 0x60
+#define OBEX_RESPONSE_CODE_DATABASE_LOCKED 0x61
+
+#define OBEX_FINAL_BIT_MASK 0x80
+
+#define OBEX_CONNECT_FLAGS 0x01 /* support multiple link */
+#define OBEX_SETPATH_FLAGS 0x03 /* default flags */
+
+#define OBEX_PACKET_LENGTH_MAX (0xFFFF-1)
+#define OBEX_PACKET_LENGTH_MIN 255
+
+#define OBEX_VERSION_NUMBER 0x15
+
+/* Header identifiers */
+#define OBEX_HEADER_ID_U2B_MASK 0xC0 /* upper 2 bits of header ID are user to indicate the header encoding */
+#define OBEX_HEADER_ID_U2B_TYPE1 0x00 /* null terminated Unicode text, length prefixed with 2 byte unsigned integer */
+#define OBEX_HEADER_ID_U2B_TYPE2 0x40 /* byte sequence, length prefixed with 2 byte unsigned integer */
+#define OBEX_HEADER_ID_U2B_TYPE3 0x80 /* 1 byte quantity */
+#define OBEX_HEADER_ID_U2B_TYPE4 0xC0 /* 4 byte quantity - transmitted in network byte order (high byte first) */
+
+#define OBEX_HEADER_ID_COUNT 0xC0
+#define OBEX_HEADER_ID_NAME 0x01
+#define OBEX_HEADER_ID_TYPE 0x42
+#define OBEX_HEADER_ID_LENGTH 0xC3
+#define OBEX_HEADER_ID_TIME_ISO8601 0x44
+#define OBEX_HEADER_ID_TIME_4BYTE 0xC4
+#define OBEX_HEADER_ID_DESCRIPTION 0x05
+#define OBEX_HEADER_ID_TARGET 0x46
+#define OBEX_HEADER_ID_HTTP 0x47
+#define OBEX_HEADER_ID_BODY 0x48
+#define OBEX_HEADER_ID_END_OF_BODY 0x49
+#define OBEX_HEADER_ID_WHO 0x4A
+#define OBEX_HEADER_ID_CONNECTION_ID 0xCB
+#define OBEX_HEADER_ID_APP_PARAM 0x4C
+#define OBEX_HEADER_ID_AUTH_CHALLENGE 0x4D
+#define OBEX_HEADER_ID_AUTH_RESPONSE 0x4E
+#define OBEX_HEADER_ID_CREATOR_ID 0xCF
+#define OBEX_HEADER_ID_WAN_UUID 0x50
+#define OBEX_HEADER_ID_OBJECT_CLASS 0x51
+#define OBEX_HEADER_ID_SESSION_PARAM 0x52
+#define OBEX_HEADER_ID_SESSION_SEQ_NUM 0x93
+#define OBEX_HEADER_ID_ACTION_ID 0x94
+#define OBEX_HEADER_ID_DESTNAME 0x15
+#define OBEX_HEADER_ID_PERMISSIONS 0xD6
+#define OBEX_HEADER_ID_SRM 0x97
+#define OBEX_HEADER_ID_SRM_PARAM 0x98
+/* Reserved for future use: 0x19 to 0x2F */
+/* User defined: 0x30 to 0x3F */
+
+#define OBEX_ACTION_ID_COPY 0x00
+#define OBEX_ACTION_ID_MOVE_RENAME 0x01
+#define OBEX_ACTION_ID_SET_PERMISSIONS 0x02
+
+#define OBEX_SRM_DISABLE 0x00
+#define OBEX_SRM_ENABLE 0x01
+#define OBEX_SRM_SUPPORT 0x02
+
+#define OBEX_SRMP_ADD_PKT 0x00
+#define OBEX_SRMP_WAIT 0x01
+#define OBEX_SRMP_ADD_PKT_WAIT 0x02
+
+#define OBEX_MIN_PACKET_SIZE 3
+
+enum {
+ /* client event */
+ OBEX_CONNECT_EVT, /* connection opened */
+ OBEX_DISCONNECT_EVT, /* connection disconnected */
+ /* server event */
+ OBEX_CONN_INCOME_EVT, /* an incoming connection */
+ /* client or server event */
+ OBEX_MTU_CHANGE_EVT, /* connection mtu changed */
+ OBEX_CONGEST_EVT, /* connection congested */
+ OBEX_UNCONGEST_EVT, /* connection is not congested */
+ OBEX_DATA_EVT /* data received */
+};
+
+enum {
+ OBEX_OVER_L2CAP = 0,
+ OBEX_OVER_RFCOMM,
+ OBEX_NUM_TL
+};
+
+typedef struct
+{
+ UINT16 psm; /* l2cap psm */
+ UINT16 sec_mask; /* security mask */
+ UINT16 pref_mtu; /* preferred mtu, limited by L2CAP_MTU_SIZE */
+ BD_ADDR addr; /* peer bluetooth device address */
+} tOBEX_OVER_L2CAP_SVR;
+
+typedef struct
+{
+ UINT8 scn; /* service channel number */
+ UINT16 sec_mask; /* security mask */
+ UINT16 pref_mtu; /* preferred mtu, limited by rfcomm mtu */
+ BD_ADDR addr; /* peer bluetooth device address */
+} tOBEX_OVER_RFCOMM_SVR;
+
+typedef struct
+{
+ UINT8 tl; /* transport type, OBEX_OVER_L2CAP or OBEX_OVER_RFCOMM */
+ union
+ {
+ tOBEX_OVER_L2CAP_SVR l2cap;
+ tOBEX_OVER_RFCOMM_SVR rfcomm;
+ };
+} tOBEX_SVR_INFO;
+
+typedef struct {
+ UINT8 opcode;
+ UINT8 response_code;
+ /* Connect */
+ UINT8 obex_version_number;
+ UINT16 max_packet_length;
+ /* Connect or SetPath */
+ UINT8 flags;
+ /* Internal use */
+ UINT16 next_header_pos;
+} tOBEX_PARSE_INFO;
+
+typedef union {
+ struct {
+ UINT16 peer_mtu;
+ UINT16 our_mtu;
+ } connect;
+
+ struct {
+ UINT16 svr_handle;
+ UINT16 peer_mtu;
+ UINT16 our_mtu;
+ } conn_income;
+
+ struct {
+ UINT16 peer_mtu;
+ UINT16 our_mtu;
+ } mtu_change;
+
+ struct {
+ BT_HDR *pkt;
+ } data;
+} tOBEX_MSG;
+
+typedef void (tOBEX_MSG_CBACK)(UINT16 handle, UINT8 event, tOBEX_MSG *msg);
+
+/*******************************************************************************
+* The following APIs are called by bluetooth stack automatically
+*******************************************************************************/
+
+extern UINT16 OBEX_Init(void);
+
+extern void OBEX_Deinit(void);
+
+/*******************************************************************************
+* The following APIs must be executed in btu task
+*******************************************************************************/
+
+extern UINT16 OBEX_CreateConn(tOBEX_SVR_INFO *server, tOBEX_MSG_CBACK callback, UINT16 *out_handle);
+
+extern UINT16 OBEX_RemoveConn(UINT16 handle);
+
+extern UINT16 OBEX_SendPacket(UINT16 handle, BT_HDR *pkt);
+
+extern UINT16 OBEX_RegisterServer(tOBEX_SVR_INFO *server, tOBEX_MSG_CBACK callback, UINT16 *out_svr_handle);
+
+extern UINT16 OBEX_DeregisterServer(UINT16 svr_handle);
+
+/*******************************************************************************
+* The following APIs are util function, can be executed in btu or btc task
+*******************************************************************************/
+
+extern UINT16 OBEX_BuildRequest(tOBEX_PARSE_INFO *info, UINT16 buff_size, BT_HDR **out_pkt);
+
+extern UINT16 OBEX_BuildResponse(tOBEX_PARSE_INFO *info, UINT16 buff_size, BT_HDR **out_pkt);
+
+extern UINT16 OBEX_AppendHeader(BT_HDR *pkt, const UINT8 *header);
+
+extern UINT16 OBEX_AppendHeaderRaw(BT_HDR *pkt, UINT8 header_id, const UINT8 *data, UINT16 data_len);
+
+extern UINT16 OBEX_AppendHeaderSRM(BT_HDR *pkt, UINT8 value);
+
+extern UINT16 OBEX_AppendHeaderSRMP(BT_HDR *pkt, UINT8 value);
+
+extern UINT16 OBEX_GetPacketFreeSpace(BT_HDR *pkt);
+
+extern UINT16 OBEX_GetPacketLength(BT_HDR *pkt);
+
+extern UINT16 OBEX_ParseRequest(BT_HDR *pkt, tOBEX_PARSE_INFO *info);
+
+extern UINT16 OBEX_ParseResponse(BT_HDR *pkt, UINT8 opcode, tOBEX_PARSE_INFO *info);
+
+extern BOOLEAN OBEX_CheckFinalBit(BT_HDR *pkt);
+
+extern BOOLEAN OBEX_CheckContinueResponse(BT_HDR *pkt);
+
+extern UINT8 *OBEX_GetNextHeader(BT_HDR *pkt, tOBEX_PARSE_INFO *info);
+
+extern UINT16 OBEX_GetHeaderLength(UINT8 *header);
+
+#endif /* #if (OBEX_INCLUDED == TRUE) */
diff --git a/lib/bt/host/bluedroid/stack/include/stack/sdp_api.h b/lib/bt/host/bluedroid/stack/include/stack/sdp_api.h
index 70da3182..7075e8bb 100644
--- a/lib/bt/host/bluedroid/stack/include/stack/sdp_api.h
+++ b/lib/bt/host/bluedroid/stack/include/stack/sdp_api.h
@@ -365,6 +365,20 @@ extern BOOLEAN SDP_FindProtocolListElemInRec (tSDP_DISC_REC *p_rec,
UINT16 layer_uuid,
tSDP_PROTOCOL_ELEM *p_elem);
+/*******************************************************************************
+**
+** Function SDP_FindProtocolListElem
+**
+** Description This function looks at the protocol list for a specific protocol
+** list element.
+**
+** Returns TRUE if found, FALSE if not
+** If found, the passed protocol list element is filled in.
+**
+*******************************************************************************/
+extern BOOLEAN SDP_FindProtocolListElem (tSDP_DISC_ATTR *p_protocol_list,
+ UINT16 layer_uuid,
+ tSDP_PROTOCOL_ELEM *p_elem);
/*******************************************************************************
**
@@ -409,7 +423,7 @@ extern BOOLEAN SDP_FindProfileVersionInRec (tSDP_DISC_REC *p_rec,
**
** Description This function is called to create a record in the database.
** This would be through the SDP database maintenance API. The
-** record is created empty, teh application should then call
+** record is created empty, the application should then call
** "add_attribute" to add the record's attributes.
**
** Returns Record handle if OK, else 0.