diff -r 7448b8dd4288 -r ec5c7794dcd6 main/ble_adv.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/ble_adv.c Mon Apr 17 14:54:35 2023 +0200 @@ -0,0 +1,82 @@ +/** + * @file ble_adv.c + * @brief BLE ADV service. + */ + +#include "config.h" + + +static const char *TAG = "ble_adv"; + +#ifdef CONFIG_CODE_PRODUCTION +#define IOTBALKON_DEVICE_NAME "IOT_BALKON" +#endif +#ifdef CONFIG_CODE_TESTING +#define IOTBALKON_DEVICE_NAME "IOT_ESP32C3" +#endif + + +#define adv_config_flag (1 << 0) +static uint8_t adv_config_done = 0; + +static esp_ble_adv_params_t adv_params = { + .adv_int_min = 0x20, + .adv_int_max = 0x40, + .adv_type = ADV_TYPE_IND, + .own_addr_type = BLE_ADDR_TYPE_PUBLIC, + .channel_map = ADV_CHNL_ALL, + .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, +}; + + +esp_err_t ble_balkon_adv_config(void) +{ + esp_err_t ret = ESP_OK; + + esp_ble_adv_data_t adv_data = { + .set_scan_rsp = false, + .include_name = true, + .include_txpower = false, + .min_interval = 0x0006, //slave connection min interval, Time = min_interval * 1.25 msec + .max_interval = 0x0010, //slave connection max interval, Time = max_interval * 1.25 msec + .appearance = 0x00, + .manufacturer_len = 0, + .p_manufacturer_data = NULL, + .service_data_len = 0, + .p_service_data = NULL, + .service_uuid_len = 0, + .p_service_uuid = NULL, + .flag = (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT), + }; + + esp_err_t set_dev_name_ret = esp_ble_gap_set_device_name(IOTBALKON_DEVICE_NAME); + if (set_dev_name_ret){ + ESP_LOGE(TAG, "set device name failed, error code = %x", set_dev_name_ret); + return set_dev_name_ret; + } + + //config adv data + ret = esp_ble_gap_config_adv_data(&adv_data); + if (ret){ + ESP_LOGE(TAG, "config adv data failed, error code = %x", ret); + } + adv_config_done |= adv_config_flag; + + return ret; +} + + +void ble_balkon_adv_start(void) +{ + esp_ble_gap_start_advertising(&adv_params); +} + + +void ble_balkon_adv_set_complete_handle(void) +{ + adv_config_done &= (~adv_config_flag); + if (adv_config_done == 0){ + esp_ble_gap_start_advertising(&adv_params); + } +} +