20static constexpr size_t MAX_LINE_LENGTH = 1024;
34 void setup()
override;
58 std::array<char, MAX_LINE_LENGTH + 1>
buffer_{};
66 void play(
const Ts &...
x)
override { this->
parent_->send_command(this->command_.value(
x...)); }
virtual void play(const Ts &...x)=0
Fixed-capacity vector - allocates once at runtime, never reallocates This avoids std::vector template...
Helper class to easily give an object a parent of type T.
StringRef is a reference to a string owned by something else.
Main class for the EmonTx component.
FixedVector< std::pair< const char *, sensor::Sensor * > > sensors_
void add_on_json_callback(F &&callback)
void init_sensors(size_t count)
void add_on_data_callback(F &&callback)
void loop() override
Implements the main loop for parsing data from the serial port.
void dump_config() override
Logs the EmonTx component configuration details.
std::array< char, MAX_LINE_LENGTH+1 > buffer_
void send_command(const std::string &command)
Sends a command string to the emonTx device via UART.
void register_sensor(const char *tag_name, sensor::Sensor *sensor)
Registers a sensor to receive updates for a specific JSON tag.
LazyCallbackManager< void(JsonObject, StringRef)> json_callbacks_
LazyCallbackManager< void(StringRef)> data_callbacks_
void parse_json_(const char *data, size_t len)
TEMPLATABLE_VALUE(std::string, command) void play(const Ts &...x) override
Base-class for all sensors.