17using namespace esp32_ble;
21#ifdef USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
25#ifdef USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
28#ifdef USE_ESP32_BLE_SERVER_ON_CONNECT
31#ifdef USE_ESP32_BLE_SERVER_ON_DISCONNECT
36#ifdef USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
48 for (
const auto &entry : this->listeners_) {
49 if (entry.characteristic == characteristic) {
50 entry.pre_notify_listener();
57 struct ListenerEntry {
59 std::function<void()> pre_notify_listener;
61 std::vector<ListenerEntry> listeners_;
71 void set_buffer(std::initializer_list<uint8_t> buffer) { this->buffer_ = std::vector<uint8_t>(buffer); }
73 void play(
const Ts &...
x)
override {
82 this->parent_->set_value(this->buffer_.value(x...));
86 this->
parent_, [
this, x...]() { this->parent_->set_value(this->buffer_.value(x...)); });
94#ifdef USE_ESP32_BLE_SERVER_NOTIFY_ACTION
98 void play(
const Ts &...
x)
override {
99#ifdef USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
112#ifdef USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
117 void set_buffer(std::initializer_list<uint8_t> buffer) { this->buffer_ = std::vector<uint8_t>(buffer); }
A class modelled on the Java ByteBuffer class.
std::vector< uint8_t > get_data()
void set_value(ByteBuffer buffer)
void on_read(std::function< void(uint16_t)> &&callback)
void set_value(std::vector< uint8_t > &&buffer)
BLECharacteristicNotifyAction(BLECharacteristic *characteristic)
BLECharacteristic * parent_
void play(const Ts &...x) override
BLECharacteristicSetValueAction(BLECharacteristic *characteristic)
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(std
void play(const Ts &...x) override
void set_buffer(ByteBuffer buffer)
BLECharacteristic * parent_
bool has_listener(BLECharacteristic *characteristic)
static BLECharacteristicSetValueActionManager * get_instance()
void set_listener(BLECharacteristic *characteristic, const std::function< void()> &pre_notify_listener)
void emit_pre_notify(BLECharacteristic *characteristic)
void play(const Ts &...x) override
TEMPLATABLE_VALUE(std::vector< uint8_t >, buffer) void set_buffer(std
BLEDescriptorSetValueAction(BLEDescriptor *descriptor)
void set_buffer(ByteBuffer buffer)
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)