6namespace esp32_ble_server {
8namespace esp32_ble_server_automations {
10using namespace esp32_ble;
12#ifdef USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
19 [on_write_trigger](
const std::vector<uint8_t> &data, uint16_t
id) { on_write_trigger->
trigger(data,
id); });
20 return on_write_trigger;
24#ifdef USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
30 [on_write_trigger](
const std::vector<uint8_t> &data, uint16_t
id) { on_write_trigger->
trigger(data,
id); });
31 return on_write_trigger;
35#ifdef USE_ESP32_BLE_SERVER_ON_CONNECT
39 [on_connect_trigger](uint16_t conn_id) { on_connect_trigger->
trigger(conn_id); });
40 return on_connect_trigger;
44#ifdef USE_ESP32_BLE_SERVER_ON_DISCONNECT
48 [on_disconnect_trigger](uint16_t conn_id) { on_disconnect_trigger->
trigger(conn_id); });
49 return on_disconnect_trigger;
53#ifdef USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
56 const std::function<
void()> &pre_notify_listener) {
58 auto *existing = this->find_listener_(characteristic);
59 if (existing !=
nullptr) {
62 existing->listener_id);
66 this->remove_listener_(characteristic);
71 [pre_notify_listener, characteristic](
const BLECharacteristic *evt_characteristic) {
73 if (characteristic == evt_characteristic) {
74 pre_notify_listener();
78 this->listeners_.push_back({characteristic, listener_id, pre_notify_listener_id});
81BLECharacteristicSetValueActionManager::ListenerEntry *BLECharacteristicSetValueActionManager::find_listener_(
83 for (
auto &entry : this->listeners_) {
84 if (entry.characteristic == characteristic) {
91void BLECharacteristicSetValueActionManager::remove_listener_(BLECharacteristic *characteristic) {
93 for (
size_t i = 0; i < this->listeners_.size(); i++) {
94 if (this->listeners_[i].characteristic == characteristic) {
96 this->listeners_[i] = this->listeners_.back();
97 this->listeners_.pop_back();
void trigger(Ts... x)
Inform the parent automation that the event has triggered.
void set_listener(BLECharacteristic *characteristic, EventEmitterListenerID listener_id, const std::function< void()> &pre_notify_listener)
static Trigger< std::vector< uint8_t >, uint16_t > * create_characteristic_on_write_trigger(BLECharacteristic *characteristic)
static Trigger< uint16_t > * create_server_on_disconnect_trigger(BLEServer *server)
static Trigger< uint16_t > * create_server_on_connect_trigger(BLEServer *server)
static Trigger< std::vector< uint8_t >, uint16_t > * create_descriptor_on_write_trigger(BLEDescriptor *descriptor)
EventEmitterListenerID on(EvtType event, std::function< void(Args...)> listener)
void off(BLECharacteristicSetValueActionEvt event, EventEmitterListenerID id)
uint32_t EventEmitterListenerID
Providing packet encoding functions for exchanging data with a remote host.