[core] Use numeric scheduler ids instead of string names (3/5) (#20376)

This commit is contained in:
J. Nick Koston
2026-10-09 07:10:19 -10:00
committed by GitHub
parent bc6fecfadb
commit 824834f847
11 changed files with 48 additions and 22 deletions
+3 -1
View File
@@ -6,6 +6,8 @@ namespace esphome::hyt271 {
ESPHOME_LOG_TAG(TAG, "hyt271");
static constexpr uint32_t WAIT_CONVERT_TIMEOUT_ID = 0;
static const uint8_t HYT271_ADDRESS = 0x28;
void HYT271Component::dump_config() {
@@ -23,7 +25,7 @@ void HYT271Component::update() {
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
return;
}
this->set_timeout("wait_convert", 50, [this]() {
this->set_timeout(WAIT_CONVERT_TIMEOUT_ID, 50, [this]() {
uint8_t raw_data[4];
if (this->read(raw_data, 4) != i2c::ERROR_OK) {
this->status_set_warning();
+4 -3
View File
@@ -620,7 +620,7 @@ void LD6002BComponent::handle_frame_(uint16_t type, const uint8_t *data, uint16_
this->process_command_queue_();
if (refresh_areas) {
this->area_write_in_flight_ = false;
this->set_timeout(AREA_REFRESH_TIMEOUT, 50, [this]() { this->send_control_command_(CMD_GET_AREAS); });
this->set_timeout(AREA_REFRESH_TIMEOUT_ID, 50, [this]() { this->send_control_command_(CMD_GET_AREAS); });
}
return;
}
@@ -1215,7 +1215,7 @@ void LD6002BComponent::send_command_internal_(uint16_t type, const uint8_t *data
std::memcpy(this->wake_scratch_.data(), data, len);
}
// A button pulse must not raise the pin in the middle of this one.
this->cancel_timeout(WAKE_BUTTON_TIMEOUT);
this->cancel_timeout(WAKE_BUTTON_TIMEOUT_ID);
this->wake_pulse_pending_ = true;
this->wakeup_pin_->digital_write(false);
const uint8_t generation = this->send_generation_;
@@ -1364,7 +1364,8 @@ void LD6002BComponent::wake_() {
if (this->wakeup_pin_ == nullptr || this->wake_pulse_pending_)
return;
this->wakeup_pin_->digital_write(false);
this->set_timeout(WAKE_BUTTON_TIMEOUT, this->wakeup_pulse_ms_, [this]() { this->wakeup_pin_->digital_write(true); });
this->set_timeout(WAKE_BUTTON_TIMEOUT_ID, this->wakeup_pulse_ms_,
[this]() { this->wakeup_pin_->digital_write(true); });
}
void LD6002BComponent::set_number_value(NumberType type, float value) {
+4 -4
View File
@@ -413,12 +413,12 @@ class LD6002BComponent : public Component, public uart::UARTDevice {
// How long the module stays awake after any frame, and so still answers the next one.
static constexpr uint32_t MODULE_AWAKE_MS = 10000;
static constexpr uint8_t CMD_MAX_RETRIES = 3;
// Named so a repeated press replaces its own pending timeout instead of stacking
// Keyed so a repeated press replaces its own pending timeout instead of stacking
// another, and so the command path can cancel it when it takes the pin over.
static constexpr const char *WAKE_BUTTON_TIMEOUT = "wake_button";
// Named so a burst of writes collapses to one read once they settle, rather than
static constexpr uint32_t WAKE_BUTTON_TIMEOUT_ID = 0;
// Keyed so a burst of writes collapses to one read once they settle, rather than
// one read per write.
static constexpr const char *AREA_REFRESH_TIMEOUT = "area_refresh";
static constexpr uint32_t AREA_REFRESH_TIMEOUT_ID = 1;
// A reply cannot trail the frame that earned it for longer than this; the field worst case is ~726ms.
static constexpr uint32_t STALE_ACK_MAX_AGE_MS = 1000;
+3 -1
View File
@@ -7,6 +7,8 @@ namespace esphome::max31855 {
ESPHOME_LOG_TAG(TAG, "max31855");
static constexpr uint32_t READ_TIMEOUT_ID = 0;
void MAX31855Sensor::update() {
this->enable();
delay(1);
@@ -14,7 +16,7 @@ void MAX31855Sensor::update() {
this->disable();
// Conversion time typ: 170ms, max: 220ms
this->set_timeout("value", 220, [this]() { this->read_data_(); });
this->set_timeout(READ_TIMEOUT_ID, 220, [this]() { this->read_data_(); });
}
void MAX31855Sensor::setup() { this->spi_setup(); }
+3 -1
View File
@@ -7,6 +7,8 @@ namespace esphome::max31856 {
ESPHOME_LOG_TAG(TAG, "max31856");
static constexpr uint32_t READ_TIMEOUT_ID = 0;
// Based on Adafruit's library: https://github.com/adafruit/Adafruit_MAX31856
void MAX31856Sensor::setup() {
@@ -42,7 +44,7 @@ void MAX31856Sensor::update() {
this->one_shot_temperature_();
// Datasheet max conversion time for 1 shot is 155ms for 60Hz / 185ms for 50Hz
this->set_timeout("MAX31856Sensor::read_thermocouple_temperature_", filter_ == FILTER_60HZ ? 155 : 185,
this->set_timeout(READ_TIMEOUT_ID, filter_ == FILTER_60HZ ? 155 : 185,
[this]() { this->read_thermocouple_temperature_(); });
}
+3 -1
View File
@@ -8,6 +8,8 @@ namespace esphome::max31865 {
ESPHOME_LOG_TAG(TAG, "max31865");
static constexpr uint32_t READ_TIMEOUT_ID = 0;
void MAX31865Sensor::update() {
// Check new faults since last measurement
if (!has_fault_) {
@@ -59,7 +61,7 @@ void MAX31865Sensor::update() {
this->write_config_(0b11100000, 0b10100000);
// Datasheet max conversion time is 55ms for 60Hz / 66ms for 50Hz
this->set_timeout("value", filter_ == FILTER_60HZ ? 55 : 66, [this]() { this->read_data_(); });
this->set_timeout(READ_TIMEOUT_ID, filter_ == FILTER_60HZ ? 55 : 66, [this]() { this->read_data_(); });
}
void MAX31865Sensor::setup() {
+3 -1
View File
@@ -5,6 +5,8 @@ namespace esphome::max6675 {
ESPHOME_LOG_TAG(TAG, "max6675");
static constexpr uint32_t READ_TIMEOUT_ID = 0;
void MAX6675Sensor::update() {
this->enable();
delay(1);
@@ -12,7 +14,7 @@ void MAX6675Sensor::update() {
this->disable();
// Conversion time typ: 170ms, max: 220ms
this->set_timeout("value", 250, [this]() { this->read_data_(); });
this->set_timeout(READ_TIMEOUT_ID, 250, [this]() { this->read_data_(); });
}
void MAX6675Sensor::setup() { this->spi_setup(); }
+3 -1
View File
@@ -7,6 +7,8 @@ namespace esphome::mics_4514 {
ESPHOME_LOG_TAG(TAG, "mics_4514");
static constexpr uint32_t WARMUP_TIMEOUT_ID = 0;
static const uint8_t SENSOR_REGISTER = 0x04;
static const uint8_t POWER_MODE_REGISTER = 0x0a;
@@ -18,7 +20,7 @@ void MICS4514Component::setup() {
power_mode = 0x01;
this->write_register(POWER_MODE_REGISTER, &power_mode, 1);
delay(100); // NOLINT
this->set_timeout("warmup", 3 * 60 * 1000, [this]() { this->warmed_up_ = true; });
this->set_timeout(WARMUP_TIMEOUT_ID, 3 * 60 * 1000, [this]() { this->warmed_up_ = true; });
this->status_set_warning();
return;
}
@@ -7,6 +7,8 @@ namespace esphome::mlx90393 {
ESPHOME_LOG_TAG(TAG, "mlx90393");
static constexpr uint32_t VERIFY_SETTINGS_TIMEOUT_ID = 0;
const LogString *settings_to_string(MLX90393Setting setting) {
switch (setting) {
case MLX90393_GAIN_SEL:
@@ -114,7 +116,7 @@ void MLX90393Cls::setup() {
}
// start verify settings process
this->set_timeout("verify settings", 3000, [this]() { this->verify_settings_timeout_(MLX90393_GAIN_SEL); });
this->set_timeout(VERIFY_SETTINGS_TIMEOUT_ID, 3000, [this]() { this->verify_settings_timeout_(MLX90393_GAIN_SEL); });
}
void MLX90393Cls::dump_config() {
@@ -268,7 +270,8 @@ void MLX90393Cls::verify_settings_timeout_(MLX90393Setting stage) {
next_stage = static_cast<MLX90393Setting>(0);
}
this->set_timeout("verify settings", 3000, [this, next_stage]() { this->verify_settings_timeout_(next_stage); });
this->set_timeout(VERIFY_SETTINGS_TIMEOUT_ID, 3000,
[this, next_stage]() { this->verify_settings_timeout_(next_stage); });
}
} // namespace esphome::mlx90393
+5 -2
View File
@@ -6,6 +6,9 @@ namespace esphome::ms5611 {
ESPHOME_LOG_TAG(TAG, "ms5611");
static constexpr uint32_t TEMPERATURE_TIMEOUT_ID = 0;
static constexpr uint32_t PRESSURE_TIMEOUT_ID = 1;
static const uint8_t MS5611_ADDRESS = 0x77;
static const uint8_t MS5611_CMD_ADC_READ = 0x00;
static const uint8_t MS5611_CMD_RESET = 0x1E;
@@ -44,7 +47,7 @@ void MS5611Component::update() {
return;
}
this->set_timeout("temperature", 10, [this]() { this->read_temperature_(); });
this->set_timeout(TEMPERATURE_TIMEOUT_ID, 10, [this]() { this->read_temperature_(); });
}
void MS5611Component::read_temperature_() {
uint8_t bytes[3];
@@ -60,7 +63,7 @@ void MS5611Component::read_temperature_() {
return;
}
this->set_timeout("pressure", 10, [this, raw_temperature]() { this->read_pressure_(raw_temperature); });
this->set_timeout(PRESSURE_TIMEOUT_ID, 10, [this, raw_temperature]() { this->read_pressure_(raw_temperature); });
}
void MS5611Component::read_pressure_(uint32_t raw_temperature) {
uint8_t bytes[3];
+12 -5
View File
@@ -9,6 +9,12 @@ namespace esphome::ms8607 {
/// TAG used for logging calls
ESPHOME_LOG_TAG(TAG, "ms8607");
static constexpr uint32_t RESET_TIMEOUT_ID = 0;
static constexpr uint32_t PROM_READ_TIMEOUT_ID = 1;
static constexpr uint32_t TEMPERATURE_TIMEOUT_ID = 2;
static constexpr uint32_t PRESSURE_TIMEOUT_ID = 3;
static constexpr uint32_t HUMIDITY_TIMEOUT_ID = 4;
/// Reset the Pressure/Temperature sensor
static const uint8_t MS8607_PT_CMD_RESET = 0x1E;
@@ -97,7 +103,7 @@ void MS8607Component::try_reset_() {
if (--this->reset_attempts_remaining_ > 0) {
uint32_t delay = this->reset_interval_;
this->reset_interval_ *= 5;
this->set_timeout("reset", delay, [this]() { this->try_reset_(); });
this->set_timeout(RESET_TIMEOUT_ID, delay, [this]() { this->try_reset_(); });
this->status_set_error();
} else {
this->mark_failed();
@@ -110,7 +116,7 @@ void MS8607Component::try_reset_() {
this->status_clear_error();
// 15ms delay matches datasheet, Adafruit_MS8607 & SparkFun_PHT_MS8607_Arduino_Library
this->set_timeout("prom-read", 15, [this]() {
this->set_timeout(PROM_READ_TIMEOUT_ID, 15, [this]() {
if (this->read_calibration_values_from_prom_()) {
this->setup_status_ = SetupStatus::SUCCESSFUL;
this->status_clear_error();
@@ -251,7 +257,7 @@ void MS8607Component::request_read_temperature_() {
}
// datasheet says 17.2ms max conversion time at OSR 8192
this->set_timeout("temperature", 20, [this]() { this->read_temperature_(); });
this->set_timeout(TEMPERATURE_TIMEOUT_ID, 20, [this]() { this->read_temperature_(); });
}
void MS8607Component::read_temperature_() {
@@ -272,7 +278,8 @@ void MS8607Component::request_read_pressure_(uint32_t d2_raw_temperature) {
}
// datasheet says 17.2ms max conversion time at OSR 8192
this->set_timeout("pressure", 20, [this, d2_raw_temperature]() { this->read_pressure_(d2_raw_temperature); });
this->set_timeout(PRESSURE_TIMEOUT_ID, 20,
[this, d2_raw_temperature]() { this->read_pressure_(d2_raw_temperature); });
}
void MS8607Component::read_pressure_(uint32_t d2_raw_temperature) {
@@ -293,7 +300,7 @@ void MS8607Component::request_read_humidity_(float temperature_float) {
}
// datasheet says 15.89ms max conversion time at OSR 8192
this->set_timeout("humidity", 20, [this, temperature_float]() { this->read_humidity_(temperature_float); });
this->set_timeout(HUMIDITY_TIMEOUT_ID, 20, [this, temperature_float]() { this->read_humidity_(temperature_float); });
}
void MS8607Component::read_humidity_(float temperature_float) {