ESPHome 2026.2.1
Loading...
Searching...
No Matches
ble_advertising.h
Go to the documentation of this file.
1#pragma once
2
4
5#include <array>
6#include <functional>
7#include <span>
8#include <vector>
9
10#ifdef USE_ESP32
11#ifdef USE_ESP32_BLE_ADVERTISING
12
13#include <esp_gap_ble_api.h>
14#include <esp_gatts_api.h>
15
16namespace esphome::esp32_ble {
17
18class ESPBTUUID;
19
21 public:
22 BLEAdvertising(uint32_t advertising_cycle_time);
23
24 void loop();
25
26 void add_service_uuid(ESPBTUUID uuid);
28 void set_scan_response(bool scan_response) { this->scan_response_ = scan_response; }
29 void set_min_preferred_interval(uint16_t interval) { this->advertising_data_.min_interval = interval; }
30 void set_manufacturer_data(const std::vector<uint8_t> &data);
31 void set_appearance(uint16_t appearance) { this->advertising_data_.appearance = appearance; }
32 void set_service_data(const std::vector<uint8_t> &data);
33 void set_service_data(std::span<const uint8_t> data);
34 void set_include_name(bool include_name) { this->include_name_in_adv_ = include_name; }
35 void register_raw_advertisement_callback(std::function<void(bool)> &&callback);
36
37 void start();
38 void stop();
39
40 protected:
41 esp_err_t services_advertisement_();
42
45 esp_ble_adv_data_t advertising_data_;
46 esp_ble_adv_data_t scan_response_data_;
47 esp_ble_adv_params_t advertising_params_;
48 std::vector<ESPBTUUID> advertising_uuids_;
49
50 std::vector<std::function<void(bool)>> raw_advertisements_callbacks_;
51
54 int8_t current_adv_index_{-1}; // -1 means standard scan response
55};
56
57} // namespace esphome::esp32_ble
58
59#endif // USE_ESP32_BLE_ADVERTISING
60#endif // USE_ESP32
void set_manufacturer_data(const std::vector< uint8_t > &data)
void set_scan_response(bool scan_response)
void set_include_name(bool include_name)
std::vector< ESPBTUUID > advertising_uuids_
std::vector< std::function< void(bool)> > raw_advertisements_callbacks_
BLEAdvertising(uint32_t advertising_cycle_time)
esp_ble_adv_params_t advertising_params_
void set_min_preferred_interval(uint16_t interval)
void set_service_data(const std::vector< uint8_t > &data)
void register_raw_advertisement_callback(std::function< void(bool)> &&callback)
void set_appearance(uint16_t appearance)