| /****************************************************************************** |
| * |
| * Copyright 1999-2012 Broadcom Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ******************************************************************************/ |
| |
| #ifndef BTM_BLE_API_TYPES_H |
| #define BTM_BLE_API_TYPES_H |
| |
| #include <base/callback_forward.h> |
| #include <hardware/bt_common_types.h> |
| #include <vector> |
| |
| #define CHNL_MAP_LEN 5 |
| typedef uint8_t tBTM_BLE_CHNL_MAP[CHNL_MAP_LEN]; |
| |
| /* 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 */ |
| #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; |
| |
| #define BTM_BLE_SCAN_MODE_PASS 0 |
| #define BTM_BLE_SCAN_MODE_ACTI 1 |
| #define BTM_BLE_SCAN_MODE_NONE 0xff |
| typedef uint8_t tBLE_SCAN_MODE; |
| |
| #define BTM_BLE_BATCH_SCAN_MODE_DISABLE 0 |
| #define BTM_BLE_BATCH_SCAN_MODE_PASS 1 |
| #define BTM_BLE_BATCH_SCAN_MODE_ACTI 2 |
| #define BTM_BLE_BATCH_SCAN_MODE_PASS_ACTI 3 |
| |
| typedef uint8_t tBTM_BLE_BATCH_SCAN_MODE; |
| |
| /* advertising channel map */ |
| #define BTM_BLE_ADV_CHNL_37 (0x01 << 0) |
| #define BTM_BLE_ADV_CHNL_38 (0x01 << 1) |
| #define BTM_BLE_ADV_CHNL_39 (0x01 << 2) |
| typedef uint8_t tBTM_BLE_ADV_CHNL_MAP; |
| |
| /*d efault advertising channel map */ |
| #ifndef BTM_BLE_DEFAULT_ADV_CHNL_MAP |
| #define BTM_BLE_DEFAULT_ADV_CHNL_MAP \ |
| (BTM_BLE_ADV_CHNL_37 | BTM_BLE_ADV_CHNL_38 | BTM_BLE_ADV_CHNL_39) |
| #endif |
| |
| /* advertising filter policy */ |
| #define AP_SCAN_CONN_ALL 0x00 /* default */ |
| #define AP_SCAN_WL_CONN_ALL 0x01 |
| #define AP_SCAN_ALL_CONN_WL 0x02 |
| #define AP_SCAN_CONN_WL 0x03 |
| #define AP_SCAN_CONN_POLICY_MAX 0x04 |
| typedef uint8_t tBTM_BLE_AFP; |
| |
| /* default advertising filter policy */ |
| #ifndef BTM_BLE_DEFAULT_AFP |
| #define BTM_BLE_DEFAULT_AFP AP_SCAN_CONN_ALL |
| #endif |
| |
| /* scanning filter policy */ |
| /* 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; |
| |
| #ifndef BTM_BLE_DEFAULT_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 */ |
| #define BTM_BLE_SCAN_INT_MIN 0x0004 |
| #define BTM_BLE_SCAN_INT_MAX 0x4000 |
| #define BTM_BLE_SCAN_WIN_MIN 0x0004 |
| #define BTM_BLE_SCAN_WIN_MAX 0x4000 |
| #define BTM_BLE_EXT_SCAN_INT_MAX 0x00FFFFFF |
| #define BTM_BLE_EXT_SCAN_WIN_MAX 0xFFFF |
| #define BTM_BLE_CONN_INT_MIN 0x0006 |
| #define BTM_BLE_CONN_INT_MAX 0x0C80 |
| #define BTM_BLE_CONN_LATENCY_MAX 500 |
| #define BTM_BLE_CONN_SUP_TOUT_MIN 0x000A |
| #define BTM_BLE_CONN_SUP_TOUT_MAX 0x0C80 |
| /* use this value when a specific value not to be overwritten */ |
| #define BTM_BLE_CONN_PARAM_UNDEF 0xffff |
| #define BTM_BLE_SCAN_PARAM_UNDEF 0xffff |
| |
| /* default connection parameters if not configured, use GAP recommended value |
| * for auto/selective connection */ |
| /* default scan interval */ |
| #ifndef BTM_BLE_SCAN_FAST_INT |
| #define BTM_BLE_SCAN_FAST_INT 96 /* 30 ~ 60 ms (use 60) = 96 *0.625 */ |
| #endif |
| /* default scan window for background connection, applicable for auto connection |
| * or selective connection */ |
| #ifndef BTM_BLE_SCAN_FAST_WIN |
| #define BTM_BLE_SCAN_FAST_WIN 48 /* 30 ms = 48 *0.625 */ |
| #endif |
| |
| /* default scan paramter used in reduced power cycle (background scanning) */ |
| #ifndef BTM_BLE_SCAN_SLOW_INT_1 |
| #define BTM_BLE_SCAN_SLOW_INT_1 2048 /* 1.28 s = 2048 *0.625 */ |
| #endif |
| #ifndef BTM_BLE_SCAN_SLOW_WIN_1 |
| #define BTM_BLE_SCAN_SLOW_WIN_1 48 /* 30 ms = 48 *0.625 */ |
| #endif |
| |
| /* default scan paramter used in reduced power cycle (background scanning) */ |
| #ifndef BTM_BLE_SCAN_SLOW_INT_2 |
| #define BTM_BLE_SCAN_SLOW_INT_2 4096 /* 2.56 s = 4096 *0.625 */ |
| #endif |
| #ifndef BTM_BLE_SCAN_SLOW_WIN_2 |
| #define BTM_BLE_SCAN_SLOW_WIN_2 36 /* 22.5 ms = 36 *0.625 */ |
| #endif |
| |
| /* default connection interval min */ |
| #ifndef BTM_BLE_CONN_INT_MIN_DEF |
| /* recommended min: 30ms = 24 * 1.25 */ |
| #define BTM_BLE_CONN_INT_MIN_DEF 24 |
| #endif |
| |
| /* default connectino interval max */ |
| #ifndef BTM_BLE_CONN_INT_MAX_DEF |
| /* recommended max: 50 ms = 56 * 1.25 */ |
| #define BTM_BLE_CONN_INT_MAX_DEF 40 |
| #endif |
| |
| /* default slave latency */ |
| #ifndef BTM_BLE_CONN_SLAVE_LATENCY_DEF |
| #define BTM_BLE_CONN_SLAVE_LATENCY_DEF 0 /* 0 */ |
| #endif |
| |
| /* default supervision timeout */ |
| #ifndef BTM_BLE_CONN_TIMEOUT_DEF |
| #define BTM_BLE_CONN_TIMEOUT_DEF 500 |
| #endif |
| |
| /* minimum supervision timeout */ |
| #ifndef BTM_BLE_CONN_TIMEOUT_MIN_DEF |
| #define BTM_BLE_CONN_TIMEOUT_MIN_DEF 100 |
| #endif |
| |
| /* minimum acceptable connection interval */ |
| #ifndef BTM_BLE_CONN_INT_MIN_LIMIT |
| #define BTM_BLE_CONN_INT_MIN_LIMIT 0x0009 |
| #endif |
| |
| /* minimum acceptable connection interval when there is bonded Hearing Aid |
| * device */ |
| #ifndef BTM_BLE_CONN_INT_MIN_HEARINGAID |
| #define BTM_BLE_CONN_INT_MIN_HEARINGAID 0x0010 |
| #endif |
| |
| #define BTM_CMAC_TLEN_SIZE 8 /* 64 bits */ |
| #define BTM_BLE_AUTH_SIGN_LEN \ |
| 12 /* BLE data signature length 8 Bytes + 4 bytes counter*/ |
| typedef uint8_t BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN]; /* Device address */ |
| |
| #ifndef BTM_BLE_HOST_SUPPORT |
| #define BTM_BLE_HOST_SUPPORT 0x01 |
| #endif |
| |
| #ifndef BTM_BLE_SIMULTANEOUS_HOST |
| #define BTM_BLE_SIMULTANEOUS_HOST 0x01 |
| #endif |
| |
| /* Appearance Values Reported with BTM_BLE_AD_TYPE_APPEARANCE */ |
| #define BTM_BLE_APPEARANCE_UKNOWN 0x0000 |
| #define BTM_BLE_APPEARANCE_GENERIC_PHONE 0x0040 |
| #define BTM_BLE_APPEARANCE_GENERIC_COMPUTER 0x0080 |
| #define BTM_BLE_APPEARANCE_GENERIC_WATCH 0x00C0 |
| #define BTM_BLE_APPEARANCE_SPORTS_WATCH 0x00C1 |
| #define BTM_BLE_APPEARANCE_GENERIC_CLOCK 0x0100 |
| #define BTM_BLE_APPEARANCE_GENERIC_DISPLAY 0x0140 |
| #define BTM_BLE_APPEARANCE_GENERIC_REMOTE 0x0180 |
| #define BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES 0x01C0 |
| #define BTM_BLE_APPEARANCE_GENERIC_TAG 0x0200 |
| #define BTM_BLE_APPEARANCE_GENERIC_KEYRING 0x0240 |
| #define BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280 |
| #define BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0 |
| #define BTM_BLE_APPEARANCE_GENERIC_THERMOMETER 0x0300 |
| #define BTM_BLE_APPEARANCE_THERMOMETER_EAR 0x0301 |
| #define BTM_BLE_APPEARANCE_GENERIC_HEART_RATE 0x0340 |
| #define BTM_BLE_APPEARANCE_HEART_RATE_BELT 0x0341 |
| #define BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380 |
| #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381 |
| #define BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382 |
| #define BTM_BLE_APPEARANCE_GENERIC_HID 0x03C0 |
| #define BTM_BLE_APPEARANCE_HID_KEYBOARD 0x03C1 |
| #define BTM_BLE_APPEARANCE_HID_MOUSE 0x03C2 |
| #define BTM_BLE_APPEARANCE_HID_JOYSTICK 0x03C3 |
| #define BTM_BLE_APPEARANCE_HID_GAMEPAD 0x03C4 |
| #define BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET 0x03C5 |
| #define BTM_BLE_APPEARANCE_HID_CARD_READER 0x03C6 |
| #define BTM_BLE_APPEARANCE_HID_DIGITAL_PEN 0x03C7 |
| #define BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER 0x03C8 |
| #define BTM_BLE_APPEARANCE_GENERIC_GLUCOSE 0x0400 |
| #define BTM_BLE_APPEARANCE_GENERIC_WALKING 0x0440 |
| #define BTM_BLE_APPEARANCE_WALKING_IN_SHOE 0x0441 |
| #define BTM_BLE_APPEARANCE_WALKING_ON_SHOE 0x0442 |
| #define BTM_BLE_APPEARANCE_WALKING_ON_HIP 0x0443 |
| #define BTM_BLE_APPEARANCE_GENERIC_CYCLING 0x0480 |
| #define BTM_BLE_APPEARANCE_CYCLING_COMPUTER 0x0481 |
| #define BTM_BLE_APPEARANCE_CYCLING_SPEED 0x0482 |
| #define BTM_BLE_APPEARANCE_CYCLING_CADENCE 0x0483 |
| #define BTM_BLE_APPEARANCE_CYCLING_POWER 0x0484 |
| #define BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485 |
| #define BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 0x0C40 |
| #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41 |
| #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST 0x0C42 |
| #define BTM_BLE_APPEARANCE_GENERIC_WEIGHT 0x0C80 |
| #define BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440 |
| #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441 |
| #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442 |
| #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443 |
| #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 |
| |
| /* Structure returned with Rand/Encrypt complete callback */ |
| typedef struct { |
| uint8_t status; |
| uint8_t param_len; |
| uint16_t opcode; |
| uint8_t param_buf[OCTET16_LEN]; |
| } tBTM_RAND_ENC; |
| |
| /* General callback function for notifying an application that a synchronous |
| * BTM function is complete. The pointer contains the address of any returned |
| * data. |
| */ |
| 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) |
| #define BTM_BLE_BREDR_NOT_SPT (0x01 << 2) |
| /* 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) |
| |
| #define BTM_BLE_AD_TYPE_FLAG HCI_EIR_FLAGS_TYPE /* 0x01 */ |
| #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 |
| #define BTM_BLE_DATA_SIZE_MIN 0x001b |
| |
| /* 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 |
| |
| /* adv tx power in dBm */ |
| typedef struct { |
| uint8_t adv_inst_max; /* max adv instance supported in controller */ |
| uint8_t rpa_offloading; |
| uint16_t tot_scan_results_strg; |
| uint8_t max_irk_list_sz; |
| uint8_t filter_support; |
| uint8_t max_filter; |
| uint8_t energy_support; |
| bool values_read; |
| uint16_t version_supported; |
| uint16_t total_trackable_advertisers; |
| uint8_t extended_scan_support; |
| uint8_t debug_logging_supported; |
| } tBTM_BLE_VSC_CB; |
| |
| typedef void(tBTM_BLE_ADV_DATA_CMPL_CBACK)(tBTM_STATUS status); |
| |
| #ifndef BTM_BLE_MULTI_ADV_MAX |
| #define BTM_BLE_MULTI_ADV_MAX \ |
| 16 /* controller returned adv_inst_max should be less \ |
| than this number */ |
| #endif |
| |
| 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(uint8_t /* status */, uint8_t /* report_format */, |
| uint8_t /* num_reports */, std::vector<uint8_t>)>; |
| |
| #ifndef BTM_BLE_BATCH_SCAN_MAX |
| #define BTM_BLE_BATCH_SCAN_MAX 5 |
| #endif |
| |
| #ifndef BTM_BLE_BATCH_REP_MAIN_Q_SIZE |
| #define BTM_BLE_BATCH_REP_MAIN_Q_SIZE 2 |
| #endif |
| |
| typedef enum { |
| BTM_BLE_SCAN_INVALID_STATE = 0, |
| BTM_BLE_SCAN_ENABLE_CALLED = 1, |
| BTM_BLE_SCAN_ENABLED_STATE = 2, |
| BTM_BLE_SCAN_DISABLE_CALLED = 3, |
| BTM_BLE_SCAN_DISABLED_STATE = 4 |
| } tBTM_BLE_BATCH_SCAN_STATE; |
| |
| enum { BTM_BLE_DISCARD_OLD_ITEMS, BTM_BLE_DISCARD_LOWER_RSSI_ITEMS }; |
| typedef uint8_t tBTM_BLE_DISCARD_RULE; |
| |
| typedef struct { |
| tBTM_BLE_BATCH_SCAN_STATE cur_state; |
| tBTM_BLE_BATCH_SCAN_MODE scan_mode; |
| uint32_t scan_interval; |
| uint32_t scan_window; |
| tBLE_ADDR_TYPE addr_type; |
| tBTM_BLE_DISCARD_RULE discard_rule; |
| tBTM_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback; |
| tBTM_BLE_REF_VALUE ref_value; |
| } tBTM_BLE_BATCH_SCAN_CB; |
| |
| /* filter selection bit index */ |
| #define BTM_BLE_PF_ADDR_FILTER 0 |
| #define BTM_BLE_PF_SRVC_DATA 1 |
| #define BTM_BLE_PF_SRVC_UUID 2 |
| #define BTM_BLE_PF_SRVC_SOL_UUID 3 |
| #define BTM_BLE_PF_LOCAL_NAME 4 |
| #define BTM_BLE_PF_MANU_DATA 5 |
| #define BTM_BLE_PF_SRVC_DATA_PATTERN 6 |
| /* when passed in payload filter type all, only clear action is applicable */ |
| #define BTM_BLE_PF_TYPE_ALL 7 |
| #define BTM_BLE_PF_TYPE_MAX 8 |
| |
| /* max number of filter spot for different filter type */ |
| #ifndef BTM_BLE_MAX_UUID_FILTER |
| #define BTM_BLE_MAX_UUID_FILTER 8 |
| #endif |
| #ifndef BTM_BLE_MAX_ADDR_FILTER |
| #define BTM_BLE_MAX_ADDR_FILTER 8 |
| #endif |
| #ifndef BTM_BLE_PF_STR_COND_MAX |
| #define BTM_BLE_PF_STR_COND_MAX 4 /* apply to manu data , or local name */ |
| #endif |
| #ifndef BTM_BLE_PF_STR_LEN_MAX |
| #define BTM_BLE_PF_STR_LEN_MAX 29 /* match for first 29 bytes */ |
| #endif |
| |
| typedef uint8_t tBTM_BLE_PF_COND_TYPE; |
| |
| #define BTM_BLE_PF_LOGIC_OR 0 |
| #define BTM_BLE_PF_LOGIC_AND 1 |
| 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, |
| BTM_BLE_SCAN_COND_CLEAR = 2 |
| }; |
| 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 /* status */)>; |
| |
| /* BLE adv payload filtering status setup complete callback */ |
| using tBTM_BLE_PF_STATUS_CBACK = |
| 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 /* 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 |
| #endif |
| |
| typedef struct { |
| bool in_use; |
| RawAddress bd_addr; |
| uint8_t pf_counter[BTM_BLE_PF_TYPE_MAX]; /* number of filter indexed by |
| tBTM_BLE_PF_COND_TYPE */ |
| } tBTM_BLE_PF_COUNT; |
| |
| typedef struct { |
| bool enable; |
| uint8_t op_type; |
| tBTM_BLE_PF_COUNT* p_addr_filter_count; /* per BDA filter array */ |
| tBLE_BD_ADDR cur_filter_target; |
| } tBTM_BLE_ADV_FILTER_CB; |
| |
| /* Sub codes */ |
| #define BTM_BLE_META_PF_ENABLE 0x00 |
| #define BTM_BLE_META_PF_FEAT_SEL 0x01 |
| #define BTM_BLE_META_PF_ADDR 0x02 |
| #define BTM_BLE_META_PF_UUID 0x03 |
| #define BTM_BLE_META_PF_SOL_UUID 0x04 |
| #define BTM_BLE_META_PF_LOCAL_NAME 0x05 |
| #define BTM_BLE_META_PF_MANU_DATA 0x06 |
| #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 |
| |
| 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; |
| typedef uint32_t tBTM_BLE_ENERGY_USED; |
| |
| 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, |
| 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)(tBTM_STATUS status); |
| |
| typedef void (*tBLE_SCAN_PARAM_SETUP_CBACK)(tGATT_IF client_if, |
| tBTM_STATUS status); |
| |
| #endif // BTM_BLE_API_TYPES_H |