component/bt: add BLE v5.0 feature for bluedroid host

This commit is contained in:
zwj
2020-07-09 20:58:13 +08:00
parent 19d92ef6b2
commit 7c1c669799
246 changed files with 84000 additions and 771 deletions

View File

@@ -22,6 +22,7 @@
#include <stdint.h>
#include <stdbool.h>
#include "bt_common.h"
#include "osi/semaphore.h"
typedef uint8_t UINT8;
typedef uint16_t UINT16;
@@ -194,6 +195,7 @@ typedef struct {
uint16_t len;
uint16_t offset;
uint16_t layer_specific;
osi_sem_t sem;
uint8_t data[];
} BT_HDR;

View File

@@ -105,7 +105,7 @@ typedef UINT8 tBTM_BLE_SFP;
#endif
/* adv parameter boundary values */
#define BTM_BLE_ADV_INT_MIN 0x0010
#define BTM_BLE_ADV_INT_MIN 0x0020
#define BTM_BLE_ADV_INT_MAX 0x4000
/* Full scan boundary values */
@@ -373,7 +373,11 @@ typedef UINT8 tBTM_BLE_AD_TYPE;
/* Preferred maximum number of microseconds that the local Controller
should use to transmit a single Link Layer Data Channel PDU. */
#define BTM_BLE_DATA_TX_TIME_MIN 0x0148
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTM_BLE_DATA_TX_TIME_MAX 0x04290 // define by spec v5.0
#else
#define BTM_BLE_DATA_TX_TIME_MAX 0x0848
#endif
/* adv tx power level */
#define BTM_BLE_ADV_TX_POWER_MIN 0 /* minimum tx power */
@@ -692,7 +696,127 @@ typedef void (tBTM_BLE_PF_STATUS_CBACK) (UINT8 action, tBTM_STATUS status,
typedef void (tBTM_BLE_PF_PARAM_CBACK) (tBTM_BLE_PF_ACTION action_type,
tBTM_BLE_PF_AVBL_SPACE avbl_space,
tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status);
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define MAX_BLE_ADV_INSTANCE 10
typedef struct {
UINT8 inst_id;
BOOLEAN in_use;
UINT8 adv_evt;
BOOLEAN configured;
BOOLEAN legacy_pdu;
BOOLEAN directed;
BOOLEAN scannable;
BOOLEAN connetable;
} tBTM_BLE_EXTENDED_INST;
typedef struct {
tBTM_BLE_EXTENDED_INST inst[MAX_BLE_ADV_INSTANCE]; /* dynamic array to store adv instance */
UINT8 scan_duplicate;
tBTM_BLE_MULTI_ADV_OPQ op_q;
} tBTM_BLE_EXTENDED_CB;
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_CONNECTABLE (1 << 0)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_SCANNABLE (1 << 1)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_DIRECTED (1 << 2)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_HD_DIRECTED (1 << 3)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY (1 << 4)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_ANON_ADV (1 << 5)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_INCLUDE_TX_PWR (1 << 6)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_MASK (0x7F)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY_IND (ESP_BLE_GAP_SET_EXT_ADV_PROP_LEGACY |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_CONNECTABLE |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_SCANNABLE)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY_LD_DIR (ESP_BLE_GAP_SET_EXT_ADV_PROP_LEGACY |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_CONNECTABLE |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_DIRECTED)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY_HD_DIR (ESP_BLE_GAP_SET_EXT_ADV_PROP_LEGACY |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_CONNECTABLE |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_HD_DIRECTED)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY_SCAN (ESP_BLE_GAP_SET_EXT_ADV_PROP_LEGACY |\
ESP_BLE_GAP_SET_EXT_ADV_PROP_SCANNABLE)
#define BTM_BLE_GAP_SET_EXT_ADV_PROP_LEGACY_NONCONN (ESP_BLE_GAP_SET_EXT_ADV_PROP_LEGACY)
typedef UINT16 tBTM_BLE_EXT_ADV_TYPE_MASK;
#define BTM_BLE_GAP_PHY_1M 1
#define BTM_BLE_GAP_PHY_2M 2
#define BTM_BLE_GAP_PHY_CODED 3
typedef UINT8 tBTM_BLE_GAP_PHY;
#define BTM_BLE_GAP_PHY_NO_TX_PREF_MASK (0x01)
#define BTM_BLE_GAP_PHY_NO_RX_PREF_MASK (0x02)
#define BTM_BLE_GAP_PHY_1M_PREF_MASK (0x03)
#define BTM_BLE_GAP_PHY_2M_PREF_MASK (0x04)
#define BTM_BLE_GAP_PHY_CODED_PREF_MASK (0x05)
typedef UINT8 tBTM_BLE_GAP_PHY_MASK;
#define BTM_BLE_GAP_EXT_SCAN_UNCODE_MASK 0x01
#define BTM_BLE_GAP_EXT_SCAN_CODE_MASK 0x02
typedef UINT8 tBTM_BLE_EXT_SCAN_CFG_MASK;
typedef struct {
tBTM_BLE_EXT_ADV_TYPE_MASK type;
UINT32 interval_min;
UINT32 interval_max;
tBTM_BLE_ADV_CHNL_MAP channel_map;
tBLE_ADDR_TYPE own_addr_type;
tBLE_ADDR_TYPE peer_addr_type;
BD_ADDR peer_addr;
tBTM_BLE_AFP filter_policy;
UINT8 tx_power;
tBTM_BLE_GAP_PHY primary_phy;
UINT8 max_skip;
tBTM_BLE_GAP_PHY secondary_phy;
UINT8 sid;
BOOLEAN scan_req_notif;
} tBTM_BLE_GAP_EXT_ADV_PARAMS;
typedef struct {
UINT8 instance;
int duration;
int max_events;
} tBTM_BLE_EXT_ADV;
typedef struct {
tBLE_SCAN_MODE scan_type;
UINT16 scan_interval;
UINT16 scan_window;
} tBTM_BLE_EXT_SCAN_CFG;
typedef struct {
tBLE_ADDR_TYPE own_addr_type;
UINT8 filter_policy;
UINT8 scan_duplicate;
tBTM_BLE_EXT_SCAN_CFG_MASK cfg_mask;
tBTM_BLE_EXT_SCAN_CFG uncoded_cfg;
tBTM_BLE_EXT_SCAN_CFG coded_cfg;
} tBTM_BLE_EXT_SCAN_PARAMS;
typedef struct {
UINT16 interval_min;
UINT16 interval_max;
UINT8 properties;
} tBTM_BLE_Periodic_Adv_Params;
typedef struct {
UINT8 filter_policy;
UINT8 sid;
tBLE_ADDR_TYPE addr_type;
BD_ADDR addr;
UINT16 skip;
UINT16 sync_timeout;
} tBTM_BLE_Periodic_Sync_Params;
typedef struct {
uint8_t status;
uint16_t conn_idx;
uint8_t tx_phy;
uint8_t rx_phy;
} tBTM_BLE_UPDATE_PHY;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
typedef union {
UINT16 uuid16_mask;
UINT32 uuid32_mask;
@@ -870,7 +994,297 @@ typedef void (tBTM_START_ADV_CMPL_CBACK) (UINT8 status);
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);
#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
#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
#define BTM_BLE_5_GAP_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT 7
#define BTM_BLE_5_GAP_EXT_ADV_START_COMPLETE_EVT 8
#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
#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
#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
#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
#define BTM_BLE_5_GAP_PREFER_EXT_CONN_PARAMS_SET_COMPLETE_EVT 25
#define BTM_BLE_5_GAP_PHY_UPDATE_COMPLETE_EVT 26
#define BTM_BLE_5_GAP_EXT_ADV_REPORT_EVT 27
#define BTM_BLE_5_GAP_SCAN_TIMEOUT_EVT 28
#define BTM_BLE_5_GAP_ADV_TERMINATED_EVT 29
#define BTM_BLE_5_GAP_SCAN_REQ_RECEIVED_EVT 30
#define BTM_BLE_5_GAP_CHANNEL_SELETE_ALGORITHM_EVT 31
#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
#define BTM_BLE_5_GAP_UNKNOWN_EVT 35
typedef UINT8 tBTM_BLE_5_GAP_EVENT;
#define BTM_BLE_EXT_ADV_DATA_COMPLETE 0x00
#define BTM_BLE_EXT_ADV_DATA_INCOMPLETE 0x01
#define BTM_BLE_EXT_ADV_DATA_TRUNCATED 0x02
typedef UINT8 tBTM_BLE_EXT_ADV_DATA_STATUS;
#define BTM_BLE_ADV_DATA_COMPLETE_MASK (0x0000)
#define BTM_BLE_ADV_DATA_INCOMPLETE_MASK (0x0020)
#define BTM_BLE_ADV_DATA_TRUNCATED_MASK (0x0040)
#define BTM_BLE_ADV_DATA_STATUS_MASK (0x0060)
//#define BTM_BLE_ADV_CONN_MASK (0x0001)
//#define BTM_BLE_ADV_SCAN_MASK (0x0002)
//#define BTM_BLE_ADV_DIRECT_MASK (0x0004)
//#define BTM_BLE_SCAN_RSP_MASK (0x0008)
#define BTM_BLE_ADV_LEGACY_MASK (0x0010)
typedef UINT8 tBTM_BLE_ADV_MASK;
// /* Advertising report */
// #define BTM_BLE_ADV_REPORT_ADV_IND (0)
// #define BTM_BLE_ADV_REPORT_DIR_IND (1)
// #define BTM_BLE_ADV_REPORT_SCAN_IND (2)
// #define BTM_BLE_ADV_REPORT_NONCONN_IND (3)
// #define BTM_BLE_ADV_REPORT_SCAN_RSP (4)
// /* Bluetooth 5.0, Vol 2, Part E, 7.7.65.13 */
// #define BTM_BLE_LEGACY_ADV_TYPE_IND (0x13)
// #define BTM_BLE_LEGACY_ADV_TYPE_DIRECT_IND (0x15)
// #define BTM_BLE_LEGACY_ADV_TYPE_SCAN_IND (0x12)
// #define BTM_BLE_LEGACY_ADV_TYPE_NONCON_IND (0x10)
// #define BTM_BLE_LEGACY_ADV_TYPE_SCAN_RSP_ADV_IND (0x1b)
// #define BTM_BLE_LEGACY_ADV_TYPE_SCAN_RSP_ADV_SCAN_IND (0x1a)
typedef struct {
UINT8 status;
BD_ADDR addr;
UINT8 tx_phy;
UINT8 rx_phy;
} tBTM_BLE_READ_PHY_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_SET_PREF_DEF_PHY_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_SET_PERF_PHY_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_SET_RAND_ADDR_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_SET_PARAMS_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_DATA_SET_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_SCAN_RSP_DATA_SET_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_START_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_ADV_STOP_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_SET_PARAMS_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_DATA_SET_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_START_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_STOP_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_SYNC_CREATE_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_SYNC_CANCEL_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_SYNC_TEMINAT_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_ADD_DEV_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PERIOD_ADV_REMOVE_DEV_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PEROID_ADV_CLEAR_DEV_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_SET_EXT_SCAN_PARAMS_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_SCAN_START_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_EXT_SCAN_STOP_CMPL;
typedef struct {
UINT8 status;
} tBTM_BLE_PREF_EXT_CONN_SET_PARAMS_CMPL;
typedef struct {
uint8_t status;
BD_ADDR addr;
uint8_t tx_phy;
uint8_t rx_phy;
} tBTM_BLE_PHY_UPDATE_CMPL;
typedef struct {
// UINT8 props;
// UINT8 legacy_event_type;
UINT8 event_type;
tBLE_ADDR_TYPE addr_type;
BD_ADDR addr;
UINT8 primary_phy;
UINT8 secondry_phy;
UINT8 sid;
UINT8 tx_power;
UINT8 rssi;
UINT16 per_adv_interval;
tBLE_ADDR_TYPE dir_addr_type;
BD_ADDR dir_addr;
tBTM_BLE_EXT_ADV_DATA_STATUS data_status;
UINT8 adv_data_len;
UINT8 *adv_data;
} tBTM_BLE_EXT_ADV_REPORT;
typedef struct {
UINT8 status;
UINT8 adv_handle;
UINT16 conn_handle;
UINT8 completed_event;
} tBTM_BLE_ADV_TERMINAT;
typedef struct {
UINT8 adv_handle;
tBLE_ADDR_TYPE scan_addr_type;
BD_ADDR scan_addr;
} tBTM_BLE_SCAN_REQ_RECEIVED;
typedef struct {
UINT16 conn_handle;
UINT8 channel_sel_alg;
} tBTM_BLE_CHANNEL_SEL_ALG;
typedef struct {
UINT16 sync_handle;
UINT8 tx_power;
INT8 rssi;
tBTM_BLE_EXT_ADV_DATA_STATUS data_status;
UINT8 data_length;
UINT8 *data;
} tBTM_PERIOD_ADV_REPORT;
typedef struct {
UINT16 sync_handle;
} tBTM_BLE_PERIOD_ADV_SYNC_LOST;
typedef struct {
UINT8 status;
UINT16 sync_handle;
UINT8 sid;
tBLE_ADDR_TYPE adv_addr_type;
BD_ADDR adv_addr;
UINT8 adv_phy;
UINT16 period_adv_interval;
UINT8 adv_clk_accuracy;
} tBTM_BLE_PERIOD_ADV_SYNC_ESTAB;
typedef struct {
UINT16 scan_interval;
UINT16 scan_window;
UINT16 interval_min;
UINT16 interval_max;
UINT16 latency;
UINT16 supervision_timeout;
UINT16 min_ce_len;
UINT16 max_ce_len;
} tBTM_BLE_CONN_PARAMS;
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;
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;
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;
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;
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;
tBTM_BLE_PREF_EXT_CONN_SET_PARAMS_CMPL ext_conn_set_params;
tBTM_BLE_PHY_UPDATE_CMPL phy_update;
tBTM_BLE_EXT_ADV_REPORT ext_adv_report;
tBTM_BLE_ADV_TERMINAT adv_term;
tBTM_BLE_SCAN_REQ_RECEIVED scan_req;
tBTM_BLE_CHANNEL_SEL_ALG channel_sel;
tBTM_PERIOD_ADV_REPORT period_adv_report;
tBTM_BLE_PERIOD_ADV_SYNC_LOST sync_lost;
tBTM_BLE_PERIOD_ADV_SYNC_ESTAB sync_estab;
} tBTM_BLE_5_GAP_CB_PARAMS;
typedef struct {
UINT8 phy_mask;
tBTM_BLE_CONN_PARAMS phy_1m_conn_params;
tBTM_BLE_CONN_PARAMS phy_2m_conn_params;
tBTM_BLE_CONN_PARAMS phy_coded_conn_params;
} tBTM_EXT_CONN_PARAMS;
typedef void (*tBTM_BLE_5_HCI_CBACK)(tBTM_BLE_5_GAP_EVENT event, tBTM_BLE_5_GAP_CB_PARAMS *params);
#endif //#if (BLE_50_FEATURE_SUPPORT == TRUE)
/*****************************************************************************
** EXTERNAL FUNCTION DECLARATIONS
@@ -2153,5 +2567,52 @@ BOOLEAN BTM_Ble_Authorization(BD_ADDR bd_addr, BOOLEAN authorize);
}
#endif
*/
#if (BLE_50_FEATURE_SUPPORT == TRUE)
void BTM_BleGapRegisterCallback(tBTM_BLE_5_HCI_CBACK cb);
tBTM_STATUS BTM_BleReadPhy(BD_ADDR bd_addr, UINT8 *tx_phy, UINT8 *rx_phy);
tBTM_STATUS BTM_BleSetPreferDefaultPhy(UINT8 tx_phy_mask, UINT8 rx_phy_mask);
tBTM_STATUS BTM_BleSetPreferPhy(BD_ADDR bd_addr, UINT8 all_phys, UINT8 tx_phy_mask,
UINT8 rx_phy_mask, UINT16 phy_options);
tBTM_STATUS BTM_BleSetExtendedAdvRandaddr(UINT8 instance, BD_ADDR rand_addr);
tBTM_STATUS BTM_BleSetExtendedAdvParams(UINT8 instance, tBTM_BLE_GAP_EXT_ADV_PARAMS *params);
tBTM_STATUS BTM_BleConfigExtendedAdvDataRaw(BOOLEAN is_scan_rsp, UINT8 instance, UINT16 len, UINT8 *data);
tBTM_STATUS BTM_BleStartExtAdv(BOOLEAN enable, UINT8 num, tBTM_BLE_EXT_ADV *ext_adv);
tBTM_STATUS BTM_BleExtAdvSetRemove(UINT8 instance);
tBTM_STATUS BTM_BleExtAdvSetClear(void);
tBTM_STATUS BTM_BlePeriodicAdvSetParams(UINT8 instance, tBTM_BLE_Periodic_Adv_Params *params);
tBTM_STATUS BTM_BlePeriodicAdvCfgDataRaw(UINT8 instance, UINT16 len, UINT8 *data);
tBTM_STATUS BTM_BlePeriodicAdvEnable(UINT8 instance, BOOLEAN enable);
tBTM_STATUS BTM_BlePeriodicAdvCreateSync(tBTM_BLE_Periodic_Sync_Params *params);
tBTM_STATUS BTM_BlePeriodicAdvSyncCancel(void);
tBTM_STATUS BTM_BlePeriodicAdvSyncTerm(UINT16 sync_handle);
tBTM_STATUS BTM_BlePeriodicAdvAddDevToList(tBLE_ADDR_TYPE addr_type, BD_ADDR addr, UINT16 sid);
tBTM_STATUS BTM_BlePeriodicAdvRemoveDevFromList(tBLE_ADDR_TYPE addr_type, BD_ADDR addr, UINT16 sid);
tBTM_STATUS BTM_BlePeriodicAdvClearDev(void);
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)
#endif

View File

@@ -274,6 +274,9 @@ void btu_check_bt_sleep (void);
*/
void btu_hcif_process_event (UINT8 controller_id, BT_HDR *p_buf);
void btu_hcif_send_cmd (UINT8 controller_id, BT_HDR *p_msg);
#if (BLE_50_FEATURE_SUPPORT == TRUE)
UINT8 btu_hcif_send_cmd_sync (UINT8 controller_id, BT_HDR *p_buf);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
void btu_hcif_send_host_rdy_for_data(void);
void btu_hcif_cmd_timeout (UINT8 controller_id);

View File

@@ -1111,7 +1111,7 @@ extern void GATT_StartIf (tGATT_IF gatt_if);
**
*******************************************************************************/
extern BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, tBLE_ADDR_TYPE bd_addr_type,
BOOLEAN is_direct, tBT_TRANSPORT transport);
BOOLEAN is_direct, tBT_TRANSPORT transport, BOOLEAN is_aux);
/*******************************************************************************

View File

@@ -352,6 +352,39 @@
#define HCI_BLE_READ_RESOLVABLE_ADDR_LOCAL (0x002C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_ADDR_RESOLUTION_ENABLE (0x002D | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_RAND_PRIV_ADDR_TIMOUT (0x002E | HCI_GRP_BLE_CMDS)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#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)
#define HCI_BLE_ENH_RX_TEST (0x0033 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ENH_TX_TEST (0x0034 | HCI_GRP_BLE_CMDS)
#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)
#define HCI_BLE_SET_EXT_SCAN_RSP_DATA (0x0038 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_EXT_ADV_ENABLE (0x0039 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_RD_MAX_ADV_DATA_LEN (0x003A | HCI_GRP_BLE_CMDS)
#define HCI_BLE_RD_NUM_OF_ADV_SETS (0x003B | HCI_GRP_BLE_CMDS)
#define HCI_BLE_REMOVE_ADV_SET (0x003C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_CLEAR_ADV_SETS (0x003D | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_PERIOD_ADV_PARAMS (0x003E | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_PERIOD_ADV_DATA (0x003F | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_PERIOD_ADV_ENABLE (0x0040 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_EXT_SCAN_PARAMS (0x0041 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_EXT_SCAN_ENABLE (0x0042 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_EXT_CREATE_CONN (0x0043 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_PERIOD_ADV_CREATE_SYNC (0x0044 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_PERIOD_ADV_CREATE_SYNC_CANCEL (0x0045 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_PERIOD_ADV_TERM_SYNC (0x0046 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ADV_DEV_TO_PERIOD_ADV_LIST (0x0047 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_REMOVE_DEV_FROM_PERIOD_ADV_LIST (0x0048 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_CLEAR_PERIOD_ADV_LIST (0x0049 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_RD_PERIOD_ADV_LIST_SIZE (0x004A | HCI_GRP_BLE_CMDS)
#define HCI_BLE_RD_TRANSMIT_POWER (0x004B | HCI_GRP_BLE_CMDS)
#define HCI_BLE_RD_RF_PATH_COMPENSATION (0x004C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_WR_RF_PATH_COMPENSATION (0x004D | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_PRIVACY_MODE (0x004E | HCI_GRP_BLE_CMDS)
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
// Vendor OGF define
#define HCI_VENDOR_OGF 0x3F
@@ -755,6 +788,17 @@
#define HCI_BLE_DIRECT_ADV_EVT 0x0b
/* ESP vendor BLE Event sub code */
#define HCI_BLE_ADV_DISCARD_REPORT_EVT 0XF0
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCI_BLE_PHY_UPDATE_COMPLETE_EVT 0x0c
#define HCI_BLE_EXT_ADV_REPORT_EVT 0x0d
#define HCI_BLE_PERIOD_ADV_SYNC_ESTAB_EVT 0x0e
#define HCI_BLE_PERIOD_ADV_REPORT_EVT 0x0f
#define HCI_BLE_PERIOD_ADV_SYNC_LOST_EVT 0x10
#define HCI_BLE_SCAN_TIMEOUT_EVT 0x11
#define HCI_BLE_ADV_SET_TERMINATED_EVT 0x12
#define HCI_BLE_SCAN_REQ_RECEIVED_EVT 0x13
#define HCI_BLE_CHANNEL_SELECT_ALG 0x14
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
/* Definitions for LE Channel Map */
#define HCI_BLE_CHNL_MAP_SIZE 5
@@ -845,6 +889,9 @@
#define HCI_ERR_ESP_VENDOR_FAIL 0xE0
#define HCI_HINT_TO_RECREATE_AMP_PHYS_LINK 0xFF
#if (BLE_50_FEATURE_SUPPORT == TRUE)
typedef UINT8 tHCI_STATUS;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
/*
** Definitions for HCI enable event
@@ -913,6 +960,15 @@
0x20000000 00000000 LE Meta Event
*/
#define HCI_LE_ONLY_EVENT_MASK "\x20\x00\x80\x00\x02\x00\x88\x90"
/* 0x00000000 00000010 Disconnection complete event
0x00000000 00000080 Encryption change event
0x00000000 00000800 Read remote version information complete event
0x00000000 00008000 Hardware error event
0x00000000 02000000 Data buffer overflow event
0x00008000 00000000 Encryption key refresh complete event
0x20000000 00000000 LE Meta Event
*/
/* the event mask for AMP controllers */
#define HCI_AMP_EVENT_MASK_3_0 "\x00\x00\x00\x00\x00\x00\x3F\xFF"

View File

@@ -657,6 +657,9 @@ void btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode,
#define HCIC_PARAM_SIZE_SET_USED_FEAT_CMD 8
#define HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD 6
#define HCIC_PARAM_SIZE_BLE_WRITE_ADV_PARAMS 15
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_BLE_WRITE_EXT_ADV_PARAMS 25
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_BLE_WRITE_SCAN_RSP 31
#define HCIC_PARAM_SIZE_WRITE_ADV_ENABLE 1
#define HCIC_PARAM_SIZE_BLE_WRITE_SCAN_PARAM 7
@@ -693,6 +696,44 @@ void btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode,
#define HCIC_PARAM_SIZE_BLE_SET_DATA_LENGTH 6
#define HCIC_PARAM_SIZE_BLE_WRITE_EXTENDED_SCAN_PARAM 11
#define HCIC_PARAM_SIZE_BLE_UPDATE_ADV_FLOW_CONTROL 2
#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
#define HCIC_PARAM_SIZE_ENH_RX_TEST 3
#define HCIC_PARAM_SIZE_ENH_TX_TEST 4
#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
#define HCIC_PARAM_SIZE_READ_MAX_ADV_SIZE 0
#define HCIC_PARAM_SIZE_NUM_SUPPORT_ADV_SET 0
#define HCIC_PARAM_SIZE_REMOVE_ADV_SET 1
#define HCIC_PARAM_SIZE_CLEAR_ADV_SET 0
#define HCIC_PARAM_SIZE_SET_PERIODIC_ADV_PARAMS 7
#define HCIC_PARAM_SIZE_WRITE_PERIODIC_ADV_DATA 252
#define HCIC_PARAM_SIZE_PERIODIC_ADV_ENABLE 2
#define HCIC_PARAM_SIZE_SET_EXT_SCAN_PARAMS 3
#define HCIC_PARAM_SIZE_EXT_SCAN_ENABLE 6
#define HCIC_PARAM_SIZE_EXT_CONN_CREATE_BASE 10
#define HCIC_PARAM_SIZE_PERIODIC_ADV_CREATE_SYNC 12
#define HCIC_PARAM_SIZE_PERIODIC_ADV_CREATE_SYNC_CANCEL 0
#define HCIC_PARAM_SIZE_PERIODIC_ADV_TERM_SYNC 2
#define HCIC_PARAM_SIZE_ADD_DEV_TO_PERIODIC_ADV_LIST 8
#define HCIC_PARAM_SIZE_RM_DEV_FROM_PERIODIC_ADV_LIST 8
#define HCIC_PARAM_SIZE_CLEAR_PERIODIC_ADV_LIST 0
#define HCIC_PARAM_SIZE_READ_PERIODIC_ADV_LIST 0
#define HCIC_PARAM_SIZE_READ_TRANS_POWER 0
#define HCIC_PARAM_SIZE_READ_RF_PATH_COMPENSATION 0
#define HCIC_PARAM_SIZE_WRITE_RF_PATH_COMPENSATION 4
osi_sem_t *btsnd_hcic_ble_get_sync_sem(void);
void btsnd_hcic_ble_sync_sem_init(void);
void btsnd_hcic_ble_sync_sem_deinit(void);
uint8_t btsnd_hcic_ble_get_status(void);
void btsnd_hci_ble_set_status(UINT8 hci_status);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
/* ULP HCI command */
BOOLEAN btsnd_hcic_ble_set_evt_mask (BT_EVENT_MASK event_mask);
@@ -809,14 +850,131 @@ BOOLEAN btsnd_hcic_ble_set_addr_resolution_enable (UINT8 addr_resolution_enable)
BOOLEAN btsnd_hcic_ble_set_rand_priv_addr_timeout (UINT16 rpa_timout);
#endif /* BLE_INCLUDED */
#if (BLE_50_FEATURE_SUPPORT == TRUE)
typedef struct {
UINT8 scan_type;
UINT16 scan_interval;
UINT16 scan_window;
} tHCI_EXT_SCAN_PARAMS;
typedef struct {
UINT16 scan_interval;
UINT16 scan_window;
UINT16 conn_interval_min;
UINT16 conn_interval_max;
UINT16 conn_latency;
UINT16 sup_timeout;
UINT16 min_ce_len;
UINT16 max_ce_len;
} tHCI_ExtConnParams;
typedef struct {
UINT8 filter_policy;
UINT8 own_addr_type;
UINT8 peer_addr_type;
BD_ADDR peer_addr;
UINT8 init_phy_mask;
tHCI_ExtConnParams params[3];
} tHCI_CreatExtConn;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
BOOLEAN btsnd_hcic_read_authenticated_payload_tout(UINT16 handle);
BOOLEAN btsnd_hcic_write_authenticated_payload_tout(UINT16 handle,
UINT16 timeout);
BOOLEAN btsnd_hcic_ble_update_adv_report_flow_control (UINT16 num);
#if (BLE_50_FEATURE_SUPPORT == TRUE)
BOOLEAN btsnd_hcic_ble_read_phy(UINT16 conn_handle);
UINT8 btsnd_hcic_ble_set_prefered_default_phy(UINT8 all_phys,
UINT8 tx_phys,
UINT8 rx_phys);
BOOLEAN btsnd_hcic_ble_set_phy(UINT16 conn_handle,
UINT8 all_phys, UINT8 tx_phys,
UINT8 rx_phys, UINT16 phy_options);
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);
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,
UINT32 interval_max, UINT8 channel_map, UINT8 own_addr_type,
UINT8 peer_addr_type, BD_ADDR peer_addr,
UINT8 adv_filter_policy, UINT8 adv_tx_power,
UINT8 primary_adv_phy, UINT8 secondary_adv_max_skip,
UINT8 secondary_adv_phy,
UINT8 adv_sid, UINT8 scan_req_ntf_enable);
UINT8 btsnd_hcic_ble_set_ext_adv_data(UINT8 adv_handle,
UINT8 operation, UINT8 fragment_prefrence,
UINT8 data_len, UINT8 *p_data);
UINT8 btsnd_hcic_ble_set_ext_adv_scan_rsp_data(UINT8 adv_handle,
UINT8 operation, UINT8 fragment_prefrence,
UINT8 data_len, UINT8 *p_data);
UINT8 btsnd_hcic_ble_ext_adv_enable(UINT8 enable, UINT8 num_of_sets, UINT8 *adv_handle,
UINT16 *duration, UINT8 *max_adv_evt);
UINT8 btsnd_hcic_ble_read_max_adv_len(void);
UINT8 btsnd_hcic_ble_read_num_support_adv_set(void);
UINT8 btsnd_hcic_ble_remove_adv_set(UINT8 adv_handle);
UINT8 btsnd_hcic_ble_clear_adv_set(void);
UINT8 btsnd_hcic_ble_set_periodic_adv_params(UINT8 adv_handle,
UINT16 interval_min,
UINT16 interval_max,
UINT8 propertics);
UINT8 btsnd_hcic_ble_set_periodic_adv_data(UINT8 adv_handle,
UINT8 operation,
UINT8 len,
UINT8 *p_data);
UINT8 btsnd_hcic_ble_periodic_adv_enable(UINT8 enable, UINT8 adv_handle);
UINT8 btsnd_hcic_ble_set_ext_scan_params(UINT8 own_addr_type, UINT8 filter_policy,
UINT8 phy_mask, UINT8 phy_count,
tHCI_EXT_SCAN_PARAMS *params);
UINT8 btsnd_hcic_ble_ext_scan_enable(UINT8 enable, UINT8 filter_dups,
UINT16 duration, UINT16 period);
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);
UINT8 btsnd_hcic_ble_periodic_adv_create_sync_cancel(void);
UINT8 btsnd_hcic_ble_periodic_adv_term_sync(UINT16 sync_handle);
UINT8 btsnd_hcic_ble_add_dev_to_periodic_adv_list(UINT8 adv_addr_type, BD_ADDR adv_addr,
UINT8 adv_sid);
UINT8 btsnd_hcic_ble_rm_dev_from_periodic_adv_list(UINT8 adv_addr_type, BD_ADDR adv_addr,
UINT8 adv_sid);
UINT8 btsnd_hcic_ble_clear_periodic_adv_list(void);
UINT8 btsnd_hcic_ble_read_periodic_adv_list_size(void);
UINT8 btsnd_hcic_ble_read_trans_power(void);
UINT8 btsnd_hcic_ble_read_rf_path_compensation(void);
UINT8 btsnd_hcic_ble_write_rf_path_compensation(UINT16 rf_tx_path, UINT16 rf_rx_path);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_WRITE_AUTHENT_PAYLOAD_TOUT 4
#define HCI__WRITE_AUTHENT_PAYLOAD_TOUT_HANDLE_OFF 0

View File

@@ -1085,7 +1085,7 @@ extern BOOLEAN L2CA_RegisterFixedChannel (UINT16 fixed_cid, tL2CAP_FIXED_CHNL_R
** Return value: TRUE if connection started
**
*******************************************************************************/
extern BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR bd_addr, tBLE_ADDR_TYPE bd_addr_type);
extern BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR bd_addr, tBLE_ADDR_TYPE bd_addr_type, BOOLEAN is_aux);
/*******************************************************************************
**
@@ -1227,7 +1227,7 @@ extern UINT8 L2CA_GetBleConnRole (BD_ADDR bd_addr);
*******************************************************************************/
extern UINT16 L2CA_GetDisconnectReason (BD_ADDR remote_bda, tBT_TRANSPORT transport);
extern BOOLEAN L2CA_CheckIsCongest(UINT16 fixed_cid, UINT16 handle);
extern BOOLEAN L2CA_CheckIsCongest(UINT16 fixed_cid, BD_ADDR addr);
#define L2CA_GET_ATT_NUM 0
#define L2CA_ADD_BTC_NUM 1