mirror of
https://github.com/esphome/esphome.git
synced 2026-02-08 00:31:58 +00:00
[remote_transmitter] Avoid heap allocation for triggers (#13708)
This commit is contained in:
@@ -83,7 +83,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|||||||
uint32_t on_time, off_time;
|
uint32_t on_time, off_time;
|
||||||
this->calculate_on_off_time_(this->temp_.get_carrier_frequency(), &on_time, &off_time);
|
this->calculate_on_off_time_(this->temp_.get_carrier_frequency(), &on_time, &off_time);
|
||||||
this->target_time_ = 0;
|
this->target_time_ = 0;
|
||||||
this->transmit_trigger_->trigger();
|
this->transmit_trigger_.trigger();
|
||||||
for (uint32_t i = 0; i < send_times; i++) {
|
for (uint32_t i = 0; i < send_times; i++) {
|
||||||
InterruptLock lock;
|
InterruptLock lock;
|
||||||
for (int32_t item : this->temp_.get_data()) {
|
for (int32_t item : this->temp_.get_data()) {
|
||||||
@@ -102,7 +102,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|||||||
if (i + 1 < send_times)
|
if (i + 1 < send_times)
|
||||||
this->target_time_ += send_wait;
|
this->target_time_ += send_wait;
|
||||||
}
|
}
|
||||||
this->complete_trigger_->trigger();
|
this->complete_trigger_.trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace remote_transmitter
|
} // namespace remote_transmitter
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|||||||
void set_non_blocking(bool non_blocking) { this->non_blocking_ = non_blocking; }
|
void set_non_blocking(bool non_blocking) { this->non_blocking_ = non_blocking; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Trigger<> *get_transmit_trigger() const { return this->transmit_trigger_; };
|
Trigger<> *get_transmit_trigger() { return &this->transmit_trigger_; }
|
||||||
Trigger<> *get_complete_trigger() const { return this->complete_trigger_; };
|
Trigger<> *get_complete_trigger() { return &this->complete_trigger_; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void send_internal(uint32_t send_times, uint32_t send_wait) override;
|
void send_internal(uint32_t send_times, uint32_t send_wait) override;
|
||||||
@@ -96,8 +96,8 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|||||||
#endif
|
#endif
|
||||||
uint8_t carrier_duty_percent_;
|
uint8_t carrier_duty_percent_;
|
||||||
|
|
||||||
Trigger<> *transmit_trigger_{new Trigger<>()};
|
Trigger<> transmit_trigger_;
|
||||||
Trigger<> *complete_trigger_{new Trigger<>()};
|
Trigger<> complete_trigger_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace remote_transmitter
|
} // namespace remote_transmitter
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ void RemoteTransmitterComponent::wait_for_rmt_() {
|
|||||||
this->status_set_warning();
|
this->status_set_warning();
|
||||||
}
|
}
|
||||||
|
|
||||||
this->complete_trigger_->trigger();
|
this->complete_trigger_.trigger();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 1)
|
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 5, 1)
|
||||||
@@ -264,7 +264,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->transmit_trigger_->trigger();
|
this->transmit_trigger_.trigger();
|
||||||
|
|
||||||
rmt_transmit_config_t config;
|
rmt_transmit_config_t config;
|
||||||
memset(&config, 0, sizeof(config));
|
memset(&config, 0, sizeof(config));
|
||||||
@@ -333,7 +333,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|||||||
ESP_LOGE(TAG, "Empty data");
|
ESP_LOGE(TAG, "Empty data");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->transmit_trigger_->trigger();
|
this->transmit_trigger_.trigger();
|
||||||
for (uint32_t i = 0; i < send_times; i++) {
|
for (uint32_t i = 0; i < send_times; i++) {
|
||||||
rmt_transmit_config_t config;
|
rmt_transmit_config_t config;
|
||||||
memset(&config, 0, sizeof(config));
|
memset(&config, 0, sizeof(config));
|
||||||
@@ -354,7 +354,7 @@ void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t sen
|
|||||||
if (i + 1 < send_times)
|
if (i + 1 < send_times)
|
||||||
delayMicroseconds(send_wait);
|
delayMicroseconds(send_wait);
|
||||||
}
|
}
|
||||||
this->complete_trigger_->trigger();
|
this->complete_trigger_.trigger();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user