main/ble_adv.c

changeset 31
ec5c7794dcd6
equal deleted inserted replaced
30:7448b8dd4288 31:ec5c7794dcd6
1 /**
2 * @file ble_adv.c
3 * @brief BLE ADV service.
4 */
5
6 #include "config.h"
7
8
9 static const char *TAG = "ble_adv";
10
11 #ifdef CONFIG_CODE_PRODUCTION
12 #define IOTBALKON_DEVICE_NAME "IOT_BALKON"
13 #endif
14 #ifdef CONFIG_CODE_TESTING
15 #define IOTBALKON_DEVICE_NAME "IOT_ESP32C3"
16 #endif
17
18
19 #define adv_config_flag (1 << 0)
20 static uint8_t adv_config_done = 0;
21
22 static esp_ble_adv_params_t adv_params = {
23 .adv_int_min = 0x20,
24 .adv_int_max = 0x40,
25 .adv_type = ADV_TYPE_IND,
26 .own_addr_type = BLE_ADDR_TYPE_PUBLIC,
27 .channel_map = ADV_CHNL_ALL,
28 .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY,
29 };
30
31
32 esp_err_t ble_balkon_adv_config(void)
33 {
34 esp_err_t ret = ESP_OK;
35
36 esp_ble_adv_data_t adv_data = {
37 .set_scan_rsp = false,
38 .include_name = true,
39 .include_txpower = false,
40 .min_interval = 0x0006, //slave connection min interval, Time = min_interval * 1.25 msec
41 .max_interval = 0x0010, //slave connection max interval, Time = max_interval * 1.25 msec
42 .appearance = 0x00,
43 .manufacturer_len = 0,
44 .p_manufacturer_data = NULL,
45 .service_data_len = 0,
46 .p_service_data = NULL,
47 .service_uuid_len = 0,
48 .p_service_uuid = NULL,
49 .flag = (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT),
50 };
51
52 esp_err_t set_dev_name_ret = esp_ble_gap_set_device_name(IOTBALKON_DEVICE_NAME);
53 if (set_dev_name_ret){
54 ESP_LOGE(TAG, "set device name failed, error code = %x", set_dev_name_ret);
55 return set_dev_name_ret;
56 }
57
58 //config adv data
59 ret = esp_ble_gap_config_adv_data(&adv_data);
60 if (ret){
61 ESP_LOGE(TAG, "config adv data failed, error code = %x", ret);
62 }
63 adv_config_done |= adv_config_flag;
64
65 return ret;
66 }
67
68
69 void ble_balkon_adv_start(void)
70 {
71 esp_ble_gap_start_advertising(&adv_params);
72 }
73
74
75 void ble_balkon_adv_set_complete_handle(void)
76 {
77 adv_config_done &= (~adv_config_flag);
78 if (adv_config_done == 0){
79 esp_ble_gap_start_advertising(&adv_params);
80 }
81 }
82

mercurial