Mon, 17 Apr 2023 14:54:35 +0200
Added basic BLE code.
/** * @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); } }