16namespace esp32_ble_server {
18namespace esp32_ble_server_automations {
20using namespace esp32_ble;
21using namespace event_emitter;
28#ifdef USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
32#ifdef USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
35#ifdef USE_ESP32_BLE_SERVER_ON_CONNECT
38#ifdef USE_ESP32_BLE_SERVER_ON_DISCONNECT
43#ifdef USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
50 :
public EventEmitter<BLECharacteristicSetValueActionEvt, BLECharacteristic *> {
58 const std::function<
void()> &pre_notify_listener);
60 for (
const auto &entry : this->listeners_) {
61 if (entry.characteristic == characteristic) {
62 return entry.listener_id;
65 return INVALID_LISTENER_ID;
72 struct ListenerEntry {
77 std::vector<ListenerEntry> listeners_;
95 this->
listener_id_ = this->
parent_->EventEmitter<BLECharacteristicEvt::EmptyEvt, uint16_t>::on(
98 this->parent_->set_value(this->buffer_.value(x...));
102 this->
parent_, this->
listener_id_, [
this,
x...]() { this->parent_->set_value(this->buffer_.value(x...)); });
111#ifdef USE_ESP32_BLE_SERVER_NOTIFY_ACTION
116#ifdef USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
129#ifdef USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
A class modelled on the Java ByteBuffer class.
std::vector< uint8_t > get_data()
void set_value(ByteBuffer buffer)
void set_value(std::vector< uint8_t > buffer)
void play(Ts... x) override
BLECharacteristicNotifyAction(BLECharacteristic *characteristic)
BLECharacteristic * parent_
EventEmitterListenerID listener_id_
BLECharacteristicSetValueAction(BLECharacteristic *characteristic)
BLECharacteristic * parent_
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(ByteBuffer buffer)
void play(Ts... x) override
EventEmitterListenerID get_listener(BLECharacteristic *characteristic)
static BLECharacteristicSetValueActionManager * get_instance()
void emit_pre_notify(BLECharacteristic *characteristic)
void set_listener(BLECharacteristic *characteristic, EventEmitterListenerID listener_id, const std::function< void()> &pre_notify_listener)
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(ByteBuffer buffer)
void play(Ts... x) override
BLEDescriptorSetValueAction(BLEDescriptor *descriptor)
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)
void emit_(BLECharacteristicSetValueActionEvt event, Args... args)
BLECharacteristicSetValueActionEvt
uint32_t EventEmitterListenerID
Providing packet encoding functions for exchanging data with a remote host.