aboutsummaryrefslogtreecommitdiff
path: root/stack/include/btm_ble_api_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'stack/include/btm_ble_api_types.h')
-rw-r--r--stack/include/btm_ble_api_types.h231
1 files changed, 88 insertions, 143 deletions
diff --git a/stack/include/btm_ble_api_types.h b/stack/include/btm_ble_api_types.h
index fe5a7fb8c..6c59a758c 100644
--- a/stack/include/btm_ble_api_types.h
+++ b/stack/include/btm_ble_api_types.h
@@ -21,38 +21,32 @@
#include <base/callback_forward.h>
#include <hardware/bt_common_types.h>
-#include <cstdint>
#include <vector>
-#include "stack/include/btm_api_types.h"
-#include "stack/include/btm_status.h"
-#include "stack/include/hci_error_code.h"
-#include "types/ble_address_with_type.h"
-
#define CHNL_MAP_LEN 5
typedef uint8_t tBTM_BLE_CHNL_MAP[CHNL_MAP_LEN];
-enum : uint8_t {
- /* 0x00-0x04 only used for set advertising parameter command */
- BTM_BLE_CONNECT_EVT = 0x00,
- /* Connectable directed advertising */
- BTM_BLE_CONNECT_DIR_EVT = 0x01,
- /* Scannable undirected advertising */
- BTM_BLE_DISCOVER_EVT = 0x02,
- /* Non connectable undirected advertising */
- BTM_BLE_NON_CONNECT_EVT = 0x03,
- /* Connectable low duty cycle directed advertising */
- BTM_BLE_CONNECT_LO_DUTY_DIR_EVT = 0x04,
-};
-
+/* 0x00-0x04 only used for set advertising parameter command */
+#define BTM_BLE_CONNECT_EVT 0x00
+/* Connectable directed advertising */
+#define BTM_BLE_CONNECT_DIR_EVT 0x01
+/* Scannable undirected advertising */
+#define BTM_BLE_DISCOVER_EVT 0x02
+/* Non connectable undirected advertising */
+#define BTM_BLE_NON_CONNECT_EVT 0x03
+/* Connectable low duty cycle directed advertising */
+#define BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 0x04
/* 0x00 - 0x04 can be received on adv event type */
-typedef enum : uint8_t {
- BTM_BLE_ADV_IND_EVT = 0x00,
- BTM_BLE_ADV_DIRECT_IND_EVT = 0x01,
- BTM_BLE_ADV_SCAN_IND_EVT = 0x02,
- BTM_BLE_ADV_NONCONN_IND_EVT = 0x03,
- BTM_BLE_SCAN_RSP_EVT = 0x04,
-} tBTM_BLE_EVT;
+#define BTM_BLE_ADV_IND_EVT 0x00
+#define BTM_BLE_ADV_DIRECT_IND_EVT 0x01
+#define BTM_BLE_ADV_SCAN_IND_EVT 0x02
+#define BTM_BLE_ADV_NONCONN_IND_EVT 0x03
+#define BTM_BLE_SCAN_RSP_EVT 0x04
+
+#define BTM_BLE_UNKNOWN_EVT 0xff
+
+typedef uint8_t tBTM_BLE_EVT;
+typedef uint8_t tBTM_BLE_CONN_MODE;
typedef uint32_t tBTM_BLE_REF_VALUE;
@@ -97,6 +91,15 @@ typedef uint8_t tBTM_BLE_AFP;
/* 0: accept adv packet from all, directed adv pkt not directed */
/* to local device is ignored */
#define SP_ADV_ALL 0x00
+/* 1: accept adv packet from device in white list, directed adv */
+/* packet not directed to local device is ignored */
+#define SP_ADV_WL 0x01
+/* 2: accept adv packet from all, directed adv pkt */
+/* not directed to me is ignored except direct adv with RPA */
+#define SP_ADV_ALL_RPA_DIR_ADV 0x02
+/* 3: accept adv packet from device in white list, directed */
+/* adv pkt not directed to me is ignored except direct adv with RPA */
+#define SP_ADV_WL_RPA_DIR_ADV 0x03
typedef uint8_t tBTM_BLE_SFP;
@@ -104,14 +107,20 @@ typedef uint8_t tBTM_BLE_SFP;
#define BTM_BLE_DEFAULT_SFP SP_ADV_ALL
#endif
+/* adv parameter boundary values */
+#define BTM_BLE_ADV_INT_MIN 0x0020
+#define BTM_BLE_ADV_INT_MAX 0x4000
+
/* Full scan boundary values */
#define BTM_BLE_ADV_SCAN_FULL_MIN 0x00
#define BTM_BLE_ADV_SCAN_FULL_MAX 0x64
/* Partial scan boundary values */
+#define BTM_BLE_ADV_SCAN_TRUNC_MIN BTM_BLE_ADV_SCAN_FULL_MIN
#define BTM_BLE_ADV_SCAN_TRUNC_MAX BTM_BLE_ADV_SCAN_FULL_MAX
/* Threshold values */
+#define BTM_BLE_ADV_SCAN_THR_MIN BTM_BLE_ADV_SCAN_FULL_MIN
#define BTM_BLE_ADV_SCAN_THR_MAX BTM_BLE_ADV_SCAN_FULL_MAX
/* connection parameter boundary values */
@@ -161,22 +170,18 @@ typedef uint8_t tBTM_BLE_SFP;
/* default connection interval min */
#ifndef BTM_BLE_CONN_INT_MIN_DEF
/* recommended min: 30ms = 24 * 1.25 */
-#ifndef BTM_BLE_CONN_INT_MIN_DEF
#define BTM_BLE_CONN_INT_MIN_DEF 24
#endif
-#endif
/* default connectino interval max */
#ifndef BTM_BLE_CONN_INT_MAX_DEF
/* recommended max: 50 ms = 56 * 1.25 */
-#ifndef BTM_BLE_CONN_INT_MAX_DEF
#define BTM_BLE_CONN_INT_MAX_DEF 40
#endif
-#endif
-/* default peripheral latency */
-#ifndef BTM_BLE_CONN_PERIPHERAL_LATENCY_DEF
-#define BTM_BLE_CONN_PERIPHERAL_LATENCY_DEF 0 /* 0 */
+/* default slave latency */
+#ifndef BTM_BLE_CONN_SLAVE_LATENCY_DEF
+#define BTM_BLE_CONN_SLAVE_LATENCY_DEF 0 /* 0 */
#endif
/* default supervision timeout */
@@ -278,6 +283,14 @@ typedef struct {
*/
typedef void(tBTM_RAND_ENC_CB)(tBTM_RAND_ENC* p1);
+#define BTM_BLE_FILTER_TARGET_SCANNER 0x01
+#define BTM_BLE_FILTER_TARGET_ADVR 0x00
+
+#define BTM_BLE_POLICY_BLACK_ALL 0x00 /* relevant to both */
+#define BTM_BLE_POLICY_ALLOW_SCAN 0x01 /* relevant to advertiser */
+#define BTM_BLE_POLICY_ALLOW_CONN 0x02 /* relevant to advertiser */
+#define BTM_BLE_POLICY_WHITE_ALL 0x03 /* relevant to both */
+
/* ADV data flag bit definition used for BTM_BLE_AD_TYPE_FLAG */
#define BTM_BLE_LIMIT_DISC_FLAG (0x01 << 0)
#define BTM_BLE_GEN_DISC_FLAG (0x01 << 1)
@@ -285,6 +298,10 @@ typedef void(tBTM_RAND_ENC_CB)(tBTM_RAND_ENC* p1);
/* 4.1 spec adv flag for simultaneous BR/EDR+LE connection support */
#define BTM_BLE_DMT_CONTROLLER_SPT (0x01 << 3)
#define BTM_BLE_DMT_HOST_SPT (0x01 << 4)
+#define BTM_BLE_NON_LIMIT_DISC_FLAG (0x00) /* lowest bit unset */
+#define BTM_BLE_ADV_FLAG_MASK \
+ (BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_BREDR_NOT_SPT | BTM_BLE_GEN_DISC_FLAG)
+#define BTM_BLE_LIMIT_DISC_MASK (BTM_BLE_LIMIT_DISC_FLAG)
// TODO(jpawlowski): this should be removed with code that depend on it.
#define BTM_BLE_AD_BIT_FLAGS (0x00000001 << 1)
@@ -293,8 +310,18 @@ typedef void(tBTM_RAND_ENC_CB)(tBTM_RAND_ENC* p1);
#define BTM_BLE_AD_TYPE_16SRV_CMPL \
HCI_EIR_COMPLETE_16BITS_UUID_TYPE /* 0x03 \
*/
+#define BTM_BLE_AD_TYPE_NAME_SHORT \
+ HCI_EIR_SHORTENED_LOCAL_NAME_TYPE /* 0x08 \
+ */
+#define BTM_BLE_AD_TYPE_NAME_CMPL HCI_EIR_COMPLETE_LOCAL_NAME_TYPE /* 0x09 */
+
#define BTM_BLE_AD_TYPE_APPEARANCE 0x19
+/* Security settings used with L2CAP LE COC */
+#define BTM_SEC_LE_LINK_ENCRYPTED 0x01
+#define BTM_SEC_LE_LINK_PAIRED_WITHOUT_MITM 0x02
+#define BTM_SEC_LE_LINK_PAIRED_WITH_MITM 0x04
+
/* Min/max Preferred number of payload octets that the local Controller
should include in a single Link Layer Data Channel PDU. */
#define BTM_BLE_DATA_SIZE_MAX 0x00fb
@@ -302,6 +329,7 @@ typedef void(tBTM_RAND_ENC_CB)(tBTM_RAND_ENC* p1);
/* 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
#define BTM_BLE_DATA_TX_TIME_MAX_LEGACY 0x0848
#define BTM_BLE_DATA_TX_TIME_MAX 0x4290
@@ -319,21 +347,8 @@ typedef struct {
uint16_t total_trackable_advertisers;
uint8_t extended_scan_support;
uint8_t debug_logging_supported;
- uint8_t le_address_generation_offloading_support;
- uint32_t a2dp_source_offload_capability_mask;
- uint8_t quality_report_support;
- uint32_t dynamic_audio_buffer_support;
} tBTM_BLE_VSC_CB;
-/* Stored the default/maximum/minimum buffer time for dynamic audio buffer.
- * For A2DP offload usage, the unit is millisecond.
- * For A2DP legacy usage, the unit is buffer queue size*/
-typedef struct {
- uint16_t default_buffer_time;
- uint16_t maximum_buffer_time;
- uint16_t minimum_buffer_time;
-} tBTM_BT_DYNAMIC_AUDIO_BUFFER_CB;
-
typedef void(tBTM_BLE_ADV_DATA_CMPL_CBACK)(tBTM_STATUS status);
#ifndef BTM_BLE_MULTI_ADV_MAX
@@ -346,7 +361,7 @@ typedef uint8_t tGATT_IF;
typedef void(tBTM_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value);
using tBTM_BLE_SCAN_REP_CBACK =
- base::Callback<void(tBTM_STATUS /* status */, uint8_t /* report_format */,
+ base::Callback<void(uint8_t /* status */, uint8_t /* report_format */,
uint8_t /* num_reports */, std::vector<uint8_t>)>;
#ifndef BTM_BLE_BATCH_SCAN_MAX
@@ -413,9 +428,12 @@ typedef uint8_t tBTM_BLE_PF_LOGIC_TYPE;
#define BTM_BLE_PF_ENABLE 1
#define BTM_BLE_PF_CONFIG 2
+typedef uint8_t tBTM_BLE_PF_ACTION;
typedef uint8_t tBTM_BLE_PF_FILT_INDEX;
+typedef uint8_t tBTM_BLE_PF_AVBL_SPACE;
+
enum {
BTM_BLE_SCAN_COND_ADD,
BTM_BLE_SCAN_COND_DELETE,
@@ -425,15 +443,18 @@ typedef uint8_t tBTM_BLE_SCAN_COND_OP;
/* BLE adv payload filtering config complete callback */
using tBTM_BLE_PF_CFG_CBACK = base::Callback<void(
- uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* btm_status */)>;
+ uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* status */)>;
/* BLE adv payload filtering status setup complete callback */
using tBTM_BLE_PF_STATUS_CBACK =
- base::Callback<void(uint8_t /*action*/, uint8_t /* btm_status */)>;
+ base::Callback<void(uint8_t /*action*/, tBTM_STATUS /* status */)>;
/* BLE adv payload filtering param setup complete callback */
using tBTM_BLE_PF_PARAM_CB = base::Callback<void(
- uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* btm_status */)>;
+ uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* status */)>;
+
+/* per device filter + one generic filter indexed by 0 */
+#define BTM_BLE_MAX_FILTER_COUNTER (BTM_BLE_MAX_ADDR_FILTER + 1)
#ifndef BTM_CS_IRK_LIST_MAX
#define BTM_CS_IRK_LIST_MAX 0x20
@@ -464,6 +485,11 @@ typedef struct {
#define BTM_BLE_META_PF_SRVC_DATA 0x07
#define BTM_BLE_META_PF_ALL 0x08
+typedef uint8_t BTM_BLE_ADV_STATE;
+typedef uint8_t BTM_BLE_ADV_INFO_PRESENT;
+typedef uint8_t BTM_BLE_RSSI_VALUE;
+typedef uint16_t BTM_BLE_ADV_INFO_TIMESTAMP;
+
#define ADV_INFO_PRESENT 0x00
#define NO_ADV_INFO_PRESENT 0x01
@@ -472,11 +498,19 @@ 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);
+typedef uint8_t tBTM_BLE_TRACK_ADV_EVT;
+
typedef struct {
tBTM_BLE_REF_VALUE ref_value;
tBTM_BLE_TRACK_ADV_CBACK* p_track_cback;
} tBTM_BLE_ADV_TRACK_CB;
+enum { BTM_BLE_TRACK_ADV_ADD, BTM_BLE_TRACK_ADV_REMOVE };
+
+typedef uint8_t tBTM_BLE_TRACK_ADV_ACTION;
+
+typedef uint8_t tBTM_BLE_BATCH_SCAN_EVT;
+
typedef uint32_t tBTM_BLE_TX_TIME_MS;
typedef uint32_t tBTM_BLE_RX_TIME_MS;
typedef uint32_t tBTM_BLE_IDLE_TIME_MS;
@@ -486,104 +520,15 @@ typedef void(tBTM_BLE_ENERGY_INFO_CBACK)(tBTM_BLE_TX_TIME_MS tx_time,
tBTM_BLE_RX_TIME_MS rx_time,
tBTM_BLE_IDLE_TIME_MS idle_time,
tBTM_BLE_ENERGY_USED energy_used,
- tHCI_STATUS status);
+ tBTM_STATUS status);
typedef struct {
tBTM_BLE_ENERGY_INFO_CBACK* p_ener_cback;
} tBTM_BLE_ENERGY_INFO_CB;
-typedef void(tBTM_BLE_CTRL_FEATURES_CBACK)(tHCI_STATUS status);
-
-/* BLE encryption keys */
-typedef struct {
- Octet16 ltk;
- BT_OCTET8 rand;
- uint16_t ediv;
- uint8_t sec_level;
- uint8_t key_size;
-} tBTM_LE_PENC_KEYS;
-
-/* BLE CSRK keys */
-typedef struct {
- uint32_t counter;
- Octet16 csrk;
- uint8_t sec_level;
-} tBTM_LE_PCSRK_KEYS;
-
-/* BLE Encryption reproduction keys */
-typedef struct {
- Octet16 ltk;
- uint16_t div;
- uint8_t key_size;
- uint8_t sec_level;
-} tBTM_LE_LENC_KEYS;
-
-/* BLE SRK keys */
-typedef struct {
- uint32_t counter;
- uint16_t div;
- uint8_t sec_level;
- Octet16 csrk;
-} tBTM_LE_LCSRK_KEYS;
-
-typedef struct {
- Octet16 irk;
- tBLE_ADDR_TYPE identity_addr_type;
- RawAddress identity_addr;
-} tBTM_LE_PID_KEYS;
-
-typedef union {
- tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */
- tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */
- tBTM_LE_PID_KEYS pid_key; /* peer device ID key */
- tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys
- * LTK = = d1(ER,DIV,0) */
- tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/
-} tBTM_LE_KEY_VALUE;
-
-typedef struct {
- tBTM_LE_KEY_TYPE key_type;
- tBTM_LE_KEY_VALUE* p_key_value;
-} tBTM_LE_KEY;
-
-typedef union {
- tBTM_LE_IO_REQ io_req; /* BTM_LE_IO_REQ_EVT */
- uint32_t key_notif; /* BTM_LE_KEY_NOTIF_EVT */
- /* BTM_LE_NC_REQ_EVT */
- /* no callback data for
- * BTM_LE_KEY_REQ_EVT
- * and BTM_LE_OOB_REQ_EVT */
- tBTM_LE_COMPLT complt; /* BTM_LE_COMPLT_EVT */
- tSMP_OOB_DATA_TYPE req_oob_type;
- tBTM_LE_KEY key;
- tSMP_LOC_OOB_DATA local_oob_data;
-} tBTM_LE_EVT_DATA;
-
-/* Simple Pairing Events. Called by the stack when Simple Pairing related
- * events occur.
- */
-typedef uint8_t(tBTM_LE_CALLBACK)(tBTM_LE_EVT event, const RawAddress& bda,
- tBTM_LE_EVT_DATA* p_data);
-
-#define BTM_BLE_KEY_TYPE_ID 1
-#define BTM_BLE_KEY_TYPE_ER 2
-#define BTM_BLE_KEY_TYPE_COUNTER 3 // tobe obsolete
-
-typedef struct {
- Octet16 ir;
- Octet16 irk;
- Octet16 dhk;
-
-} tBTM_BLE_LOCAL_ID_KEYS;
-
-typedef union {
- tBTM_BLE_LOCAL_ID_KEYS id_keys;
- Octet16 er;
-} tBTM_BLE_LOCAL_KEYS;
+typedef void(tBTM_BLE_CTRL_FEATURES_CBACK)(tBTM_STATUS status);
-/* New LE identity key for local device.
- */
-typedef void(tBTM_LE_KEY_CALLBACK)(uint8_t key_type,
- tBTM_BLE_LOCAL_KEYS* p_key);
+typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if,
+ tBTM_STATUS status);
#endif // BTM_BLE_API_TYPES_H