| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  | // Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // 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 __BTC_GAP_BLE_H__
 | 
					
						
							|  |  |  | #define __BTC_GAP_BLE_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "esp_bt_defs.h"
 | 
					
						
							|  |  |  | #include "esp_gap_ble_api.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define BLE_ISVALID_PARAM(x, min, max)  (((x) >= (min) && (x) <= (max)) || ((x) == ESP_BLE_CONN_PARAM_UNDEF))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef enum { | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_SET_SCAN_PARAM, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_START_SCAN, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_STOP_SCAN, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_START_ADV, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_STOP_ADV, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_SET_RAND_ADDRESS, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY, | 
					
						
							| 
									
										
										
										
											2017-09-22 17:28:54 +08:00
										 |  |  |     BTC_GAP_BLE_ACT_UPDATE_WHITE_LIST, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_SET_CONN_PARAMS, | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  |     BTC_GAP_BLE_ACT_SET_DEV_NAME, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW, | 
					
						
							|  |  |  |     BTC_GAP_BLE_ACT_CFG_SCAN_RSP_DATA_RAW, | 
					
						
							| 
									
										
										
										
											2017-09-22 17:28:54 +08:00
										 |  |  |     BTC_GAP_BLE_ACT_READ_RSSI, | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     BTC_GAP_BLE_SET_ENCRYPTION_EVT, | 
					
						
							|  |  |  |     BTC_GAP_BLE_SET_SECURITY_PARAM_EVT, | 
					
						
							|  |  |  |     BTC_GAP_BLE_SECURITY_RSP_EVT, | 
					
						
							|  |  |  |     BTC_GAP_BLE_PASSKEY_REPLY_EVT, | 
					
						
							|  |  |  |     BTC_GAP_BLE_CONFIRM_REPLY_EVT, | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     BTC_GAP_BLE_DISCONNECT_EVT, | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     BTC_GAP_BLE_REMOVE_BOND_DEV_EVT, | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  | } btc_gap_ble_act_t; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* btc_ble_gap_args_t */ | 
					
						
							|  |  |  | typedef union { | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_CFG_ADV_DATA = 0,
 | 
					
						
							|  |  |  |     struct config_adv_data_args { | 
					
						
							|  |  |  |         esp_ble_adv_data_t adv_data; | 
					
						
							|  |  |  |     } cfg_adv_data; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_SET_SCAN_PARAM,
 | 
					
						
							|  |  |  |     struct set_scan_params_args { | 
					
						
							|  |  |  |         esp_ble_scan_params_t  scan_params; | 
					
						
							|  |  |  |     } set_scan_param; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_START_SCAN,
 | 
					
						
							|  |  |  |     struct start_scan_args { | 
					
						
							|  |  |  |         uint32_t duration; | 
					
						
							|  |  |  |     } start_scan; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_STOP_SCAN, no args
 | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_START_ADV,
 | 
					
						
							|  |  |  |     struct start_adv_args { | 
					
						
							|  |  |  |         esp_ble_adv_params_t adv_params; | 
					
						
							|  |  |  |     } start_adv; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_STOP_ADV, no args
 | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_UPDATE_CONN_PARAM,
 | 
					
						
							|  |  |  |     struct conn_update_params_args { | 
					
						
							|  |  |  |         esp_ble_conn_update_params_t conn_params; | 
					
						
							|  |  |  |     } conn_update_params; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_SET_PKT_DATA_LEN
 | 
					
						
							|  |  |  |     struct set_pkt_data_len_args { | 
					
						
							|  |  |  |         esp_bd_addr_t remote_device; | 
					
						
							|  |  |  |         uint16_t tx_data_length; | 
					
						
							|  |  |  |     } set_pkt_data_len; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_SET_RAND_ADDRESS,
 | 
					
						
							|  |  |  |     struct set_rand_addr_args { | 
					
						
							|  |  |  |         esp_bd_addr_t rand_addr; | 
					
						
							|  |  |  |     } set_rand_addr; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY,
 | 
					
						
							|  |  |  |     struct cfg_local_privacy_args { | 
					
						
							|  |  |  |         bool privacy_enable; | 
					
						
							| 
									
										
										
										
											2017-09-22 17:28:54 +08:00
										 |  |  |     } cfg_local_privacy; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_UPDATE_WHITE_LIST
 | 
					
						
							|  |  |  |     struct update_white_list_args { | 
					
						
							|  |  |  |         bool add_remove; | 
					
						
							|  |  |  |         esp_bd_addr_t remote_bda; | 
					
						
							|  |  |  |     }update_white_list; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_SET_CONN_PARAMS
 | 
					
						
							|  |  |  |     struct set_conn_params_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |         uint16_t min_conn_int; | 
					
						
							|  |  |  |         uint16_t max_conn_int; | 
					
						
							|  |  |  |         uint16_t slave_latency; | 
					
						
							|  |  |  |         uint16_t supervision_tout; | 
					
						
							|  |  |  |     }set_conn_params; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_SET_DEV_NAME,
 | 
					
						
							|  |  |  |     struct set_dev_name_args { | 
					
						
							|  |  |  | #define ESP_GAP_DEVICE_NAME_MAX (32)
 | 
					
						
							|  |  |  |         char device_name[ESP_GAP_DEVICE_NAME_MAX + 1]; | 
					
						
							|  |  |  |     } set_dev_name; | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  |     //BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW,
 | 
					
						
							|  |  |  |     struct config_adv_data_raw_args { | 
					
						
							|  |  |  |         uint8_t *raw_adv; | 
					
						
							|  |  |  |         uint32_t raw_adv_len; | 
					
						
							|  |  |  |     } cfg_adv_data_raw; | 
					
						
							|  |  |  |     //BTC_GAP_BLE_ACT_CFG_SCAN_RSP_DATA_RAW,
 | 
					
						
							|  |  |  |     struct config_scan_rsp_data_raw_args { | 
					
						
							|  |  |  |         uint8_t *raw_scan_rsp; | 
					
						
							|  |  |  |         uint32_t raw_scan_rsp_len; | 
					
						
							|  |  |  |     } cfg_scan_rsp_data_raw; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_SET_ENCRYPTION_EVT
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     struct set_encryption_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |         esp_ble_sec_act_t sec_act; | 
					
						
							|  |  |  |     } set_encryption; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_SET_SECURITY_PARAM_EVT
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     struct set_security_param_args { | 
					
						
							|  |  |  |         esp_ble_sm_param_t param_type; | 
					
						
							|  |  |  |         uint8_t len; | 
					
						
							|  |  |  |         uint8_t *value; | 
					
						
							|  |  |  |     } set_security_param; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_SECURITY_RSP_EVT
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     struct enc_rsp_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |         bool accept; | 
					
						
							|  |  |  |     } sec_rsp; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_PASSKEY_REPLY_EVT
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     struct enc_passkey_reply_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |         bool accept; | 
					
						
							|  |  |  |         uint32_t passkey; | 
					
						
							|  |  |  |     } enc_passkey_replay; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_CONFIRM_REPLY_EVT
 | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     struct enc_comfirm_reply_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |         bool accept; | 
					
						
							|  |  |  |     } enc_comfirm_replay; | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     //BTC_GAP_BLE_DISCONNECT_EVT
 | 
					
						
							|  |  |  |     struct disconnect_args { | 
					
						
							|  |  |  |         esp_bd_addr_t remote_device; | 
					
						
							|  |  |  |     } disconnect; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     //BTC_GAP_BLE_REMOVE_BOND_DEV_EVT
 | 
					
						
							|  |  |  |     struct remove_bond_device_args { | 
					
						
							|  |  |  |         esp_bd_addr_t bd_addr; | 
					
						
							|  |  |  |     } remove_bond_device; | 
					
						
							| 
									
										
										
										
											2017-09-22 17:28:54 +08:00
										 |  |  |     //BTC_GAP_BLE_ACT_READ_RSSI
 | 
					
						
							|  |  |  |     struct read_rssi_args { | 
					
						
							|  |  |  |         esp_bd_addr_t remote_addr; | 
					
						
							|  |  |  |     } read_rssi; | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  | } btc_ble_gap_args_t; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void btc_gap_ble_call_handler(btc_msg_t *msg); | 
					
						
							|  |  |  | void btc_gap_ble_cb_handler(btc_msg_t *msg); | 
					
						
							| 
									
										
										
										
											2017-09-22 17:28:54 +08:00
										 |  |  | void btc_get_whitelist_size(uint16_t *length); | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  | void btc_gap_ble_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src); | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  | void btc_gap_ble_arg_deep_free(btc_msg_t *msg); | 
					
						
							|  |  |  | void btc_gap_ble_cb_deep_free(btc_msg_t *msg); | 
					
						
							|  |  |  | void btc_gap_ble_cb_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src); | 
					
						
							|  |  |  | void btc_gap_callback_init(void); | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif /* __BTC_GAP_BLE_H__ */
 |