4 #include "ble_characteristic.h" 5 #include "ble_descriptor.h" 11 #include <unordered_map> 17 namespace esp32_ble_server {
19 namespace esp32_ble_server_automations {
21 using namespace esp32_ble;
22 using namespace event_emitter;
39 :
public EventEmitter<BLECharacteristicSetValueActionEvt, BLECharacteristic *> {
47 const std::function<
void()> &pre_notify_listener);
49 return this->listeners_[characteristic].first;
56 std::unordered_map<BLECharacteristic *, std::pair<EventEmitterListenerID, EventEmitterListenerID>> listeners_;
69 this->parent_->set_value(this->buffer_.value(
x...));
71 this->listener_id_ = this->parent_->EventEmitter<BLECharacteristicEvt::EmptyEvt, uint16_t>::on(
74 this->parent_->set_value(this->buffer_.value(x...));
78 this->parent_, this->listener_id_, [
this,
x...]() { this->parent_->set_value(this->buffer_.value(x...)); });
93 this->parent_->notify();
105 void play(Ts...
x)
override { this->parent_->set_value(this->buffer_.value(
x...)); }
void play(Ts... x) override
void set_listener(BLECharacteristic *characteristic, EventEmitterListenerID listener_id, const std::function< void()> &pre_notify_listener)
BLECharacteristic * parent_
void play(Ts... x) override
std::vector< uint8_t > get_data()
A class modelled on the Java ByteBuffer class.
BLECharacteristicSetValueActionEvt
BLECharacteristicSetValueAction(BLECharacteristic *characteristic)
BLEDescriptorSetValueAction(BLEDescriptor *descriptor)
static BLECharacteristicSetValueActionManager * get_instance()
uint32_t EventEmitterListenerID
BLECharacteristic * parent_
EventEmitterListenerID listener_id_
BLECharacteristicNotifyAction(BLECharacteristic *characteristic)
void emit_pre_notify(BLECharacteristic *characteristic)
Implementation of SPI Controller mode.
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(ByteBuffer buffer)
EventEmitterListenerID get_listener(BLECharacteristic *characteristic)
void play(Ts... x) override
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(ByteBuffer buffer)