1 /* 2 * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef __BTC_GAP_BT_H__ 8 #define __BTC_GAP_BT_H__ 9 10 #include "common/bt_target.h" 11 #include "common/bt_defs.h" 12 #include "esp_bt_defs.h" 13 #include "esp_gap_bt_api.h" 14 #include "btc/btc_task.h" 15 #include "bta/utl.h" 16 17 #if (BTC_GAP_BT_INCLUDED == TRUE) 18 typedef enum { 19 BTC_GAP_BT_SEARCH_DEVICES_EVT = 0, 20 BTC_GAP_BT_SEARCH_SERVICES_EVT, 21 BTC_GAP_BT_SEARCH_SERVICE_RECORD_EVT, 22 BTC_GAP_BT_AUTH_CMPL_EVT, 23 BTC_GAP_BT_PIN_REQ_EVT, 24 BTC_GAP_BT_CFM_REQ_EVT, 25 BTC_GAP_BT_KEY_NOTIF_EVT, 26 BTC_GAP_BT_KEY_REQ_EVT, 27 BTC_GAP_BT_READ_RSSI_DELTA_EVT, 28 BTC_GAP_BT_CONFIG_EIR_DATA_EVT, 29 BTC_GAP_BT_SET_AFH_CHANNELS_EVT, 30 BTC_GAP_BT_READ_REMOTE_NAME_EVT, 31 BTC_GAP_BT_MODE_CHG_EVT, 32 BTC_GAP_BT_REMOVE_BOND_DEV_COMPLETE_EVT, 33 BTC_GAP_BT_QOS_EVT, 34 BTC_GAP_BT_SET_ACL_PKT_TYPES_EVT, 35 }btc_gap_bt_evt_t; 36 37 typedef enum { 38 BTC_GAP_BT_ACT_SET_SCAN_MODE = 0, 39 BTC_GAP_BT_ACT_START_DISCOVERY, 40 BTC_GAP_BT_ACT_CANCEL_DISCOVERY, 41 BTC_GAP_BT_ACT_GET_REMOTE_SERVICES, 42 BTC_GAP_BT_ACT_GET_REMOTE_SERVICE_RECORD, 43 BTC_GAP_BT_ACT_SET_COD, 44 BTC_GAP_BT_ACT_READ_RSSI_DELTA, 45 BTC_GAP_BT_ACT_REMOVE_BOND_DEVICE, 46 BTC_GAP_BT_ACT_SET_PIN_TYPE, 47 BTC_GAP_BT_ACT_PIN_REPLY, 48 BTC_GAP_BT_ACT_SET_SECURITY_PARAM, 49 BTC_GAP_BT_ACT_PASSKEY_REPLY, 50 BTC_GAP_BT_ACT_CONFIRM_REPLY, 51 BTC_GAP_BT_ACT_CONFIG_EIR, 52 BTC_GAP_BT_ACT_SET_AFH_CHANNELS, 53 BTC_GAP_BT_ACT_READ_REMOTE_NAME, 54 BTC_GAP_BT_ACT_SET_QOS, 55 BTC_GAP_BT_ACT_SET_ACL_PKT_TYPES, 56 } btc_gap_bt_act_t; 57 58 /* btc_bt_gap_args_t */ 59 typedef union { 60 // BTC_BT_GAP_ACT_SET_SCAN_MODE, 61 struct set_bt_scan_mode_args { 62 esp_bt_connection_mode_t c_mode; 63 esp_bt_discovery_mode_t d_mode; 64 } set_scan_mode; 65 66 // BTC_GAP_BT_ACT_START_DISCOVERY 67 struct start_disc_args { 68 esp_bt_inq_mode_t mode; 69 uint8_t inq_len; 70 uint8_t num_rsps; 71 } start_disc; 72 73 // BTC_GAP_BT_ACT_GET_REMOTE_SERVICES 74 bt_bdaddr_t bda; 75 76 // BTC_GAP_BT_ACT_GET_REMOTE_SERVICE_RECORD 77 struct get_rmt_srv_rcd_args { 78 bt_bdaddr_t bda; 79 esp_bt_uuid_t uuid; 80 } get_rmt_srv_rcd; 81 82 // BTC_GAP_BT_ACT_SET_COD 83 struct set_cod_args { 84 esp_bt_cod_t cod; 85 esp_bt_cod_mode_t mode; 86 } set_cod; 87 88 //BTC_GAP_BT_ACT_READ_RSSI_DELTA, 89 struct bt_read_rssi_delta_args { 90 bt_bdaddr_t bda; 91 } read_rssi_delta; 92 93 // BTC_GAP_BT_ACT_REMOVE_BOND_DEVICE 94 struct rm_bond_device_args { 95 bt_bdaddr_t bda; 96 } rm_bond_device; 97 98 // BTC_GAP_BT_ACT_SET_PIN_TYPE 99 struct set_pin_type_args { 100 esp_bt_pin_type_t pin_type; 101 uint8_t pin_code_len; 102 esp_bt_pin_code_t pin_code; 103 } set_pin_type; 104 105 // BTC_GAP_BT_ACT_PIN_REPLY 106 struct pin_reply_args { 107 bt_bdaddr_t bda; 108 bool accept; 109 uint8_t pin_code_len; 110 esp_bt_pin_code_t pin_code; 111 } pin_reply; 112 113 // BTC_GAP_BT_ACT_SET_SECURITY_PARAM 114 struct set_sec_param_args { 115 esp_bt_sp_param_t param_type; 116 uint8_t len; 117 uint8_t *value; 118 } set_security_param; 119 120 // BTC_GAP_BT_ACT_PASSKEY_REPLY 121 struct passkey_reply_args { 122 bt_bdaddr_t bda; 123 bool accept; 124 uint32_t passkey; 125 } passkey_reply; 126 127 // BTC_GAP_BT_ACT_CONFIRM_REPLY 128 struct confirm_reply_args { 129 bt_bdaddr_t bda; 130 bool accept; 131 } confirm_reply; 132 133 // BTC_GAP_BT_ACT_CONFIG_EIR 134 struct config_eir_args { 135 esp_bt_eir_data_t eir_data; 136 } config_eir; 137 138 // BTC_GAP_BT_ACT_SET_AFH_CHANNELS 139 struct set_afh_channels_args { 140 esp_bt_gap_afh_channels channels; 141 } set_afh_channels; 142 143 // BTC_GAP_BT_ACT_READ_REMOTE_NAME 144 bt_bdaddr_t rmt_name_bda; 145 146 // BTC_GAP_BT_ACT_SET_QOS 147 struct set_qos_args { 148 bt_bdaddr_t bda; 149 uint32_t t_poll; 150 } set_qos; 151 152 // BTC_GAP_BT_ACT_SET_ACL_PKT_TYPES 153 struct set_acl_pkt_types_args { 154 bt_bdaddr_t bda; 155 uint16_t pkt_types; 156 } set_acl_pkt_types; 157 158 } btc_gap_bt_args_t; 159 160 void btc_gap_bt_call_handler(btc_msg_t *msg); 161 void btc_gap_bt_cb_handler(btc_msg_t *msg); 162 void btc_gap_bt_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src); 163 void btc_gap_bt_arg_deep_free(btc_msg_t *msg); 164 void btc_gap_bt_busy_level_updated(uint8_t bl_flags); 165 166 esp_err_t btc_gap_bt_get_cod(esp_bt_cod_t *cod); 167 #endif /* #if BTC_GAP_BT_INCLUDED */ 168 169 #endif /* __BTC_GAP_BT_H__ */ 170