Optimize memory usage by lazy-allocating raw callbacks in sensors (#9077)

This commit is contained in:
J. Nick Koston
2025-06-15 15:28:15 +12:00
committed by GitHub
parent 4305c44440
commit cb019fff9a
4 changed files with 23 additions and 8 deletions
+7 -2
View File
@@ -38,7 +38,9 @@ StateClass Sensor::get_state_class() {
void Sensor::publish_state(float state) {
this->raw_state = state;
this->raw_callback_.call(state);
if (this->raw_callback_) {
this->raw_callback_->call(state);
}
ESP_LOGV(TAG, "'%s': Received new state %f", this->name_.c_str(), state);
@@ -51,7 +53,10 @@ void Sensor::publish_state(float state) {
void Sensor::add_on_state_callback(std::function<void(float)> &&callback) { this->callback_.add(std::move(callback)); }
void Sensor::add_on_raw_state_callback(std::function<void(float)> &&callback) {
this->raw_callback_.add(std::move(callback));
if (!this->raw_callback_) {
this->raw_callback_ = std::make_unique<CallbackManager<void(float)>>();
}
this->raw_callback_->add(std::move(callback));
}
void Sensor::add_filter(Filter *filter) {