16#ifdef USE_EMONTX_VERSION_TEXT_SENSOR
23static constexpr size_t MAX_LINE_LENGTH = 1024;
39#ifdef USE_EMONTX_VERSION_TEXT_SENSOR
40 SUB_TEXT_SENSOR(version)
46 void setup()
override;
47 void dump_config()
override;
48 void on_shutdown()
override;
50 template<
typename F>
void add_on_json_callback(F &&callback) { this->
json_callbacks_.add(std::forward<F>(callback)); }
52 template<
typename F>
void add_on_data_callback(F &&callback) { this->
data_callbacks_.add(std::forward<F>(callback)); }
55 void send_command(
const char *command);
56 void send_command(
const std::string &command) { this->send_command(command.c_str()); }
60 void set_paused(
bool paused) { this->
paused_.store(paused, std::memory_order_relaxed); }
62 bool is_paused()
const {
return this->
paused_.load(std::memory_order_relaxed); }
69 void init_sensors(
size_t count) { this->
sensors_.init(count); }
70 void register_sensor(
const char *tag_name,
sensor::Sensor *sensor);
76#ifdef USE_EMONTX_VERSION
78#ifdef USE_EMONTX_VERSION_TEXT_SENSOR
79 if (this->version_text_sensor_ !=
nullptr)
98#ifdef USE_EMONTX_VERSION
Fixed-capacity vector - sized once through init() or try_init(); push_back never reallocates This avo...
Collects bytes into NUL terminated lines of up to N - 1 characters; IGNORE_CHAR bytes are skipped and...
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_
LineReader< MAX_LINE_LENGTH+1 > line_reader_
void send_version_request_()
LockOnReboot lock_on_reboot_
bool wants_version_() const
void parse_msg_number_(const char *line, size_t len)
LazyCallbackManager< void(JsonObject, StringRef)> json_callbacks_
uint32_t last_msg_number_
LazyCallbackManager< void(StringRef)> data_callbacks_
uint8_t version_frames_left_
void parse_json_(const char *data, size_t len)
void parse_version_line_(const char *line, size_t len)
std::atomic< bool > paused_
Base-class for all sensors.