mirror of
https://github.com/esphome/esphome.git
synced 2026-10-10 05:23:07 +00:00
[core] Use numeric scheduler ids instead of string names (ESP32 1/2) (#20380)
This commit is contained in:
@@ -10,6 +10,9 @@ namespace esphome::airthings_wave_base {
|
||||
|
||||
ESPHOME_LOG_TAG(TAG, "airthings_wave_base");
|
||||
|
||||
static constexpr uint32_t BATTERY_READ_TIMEOUT_ID = 0;
|
||||
static constexpr uint32_t RESPONSE_TIMEOUT_ID = 1;
|
||||
|
||||
void AirthingsWaveBase::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
||||
esp_ble_gattc_cb_param_t *param) {
|
||||
switch (event) {
|
||||
@@ -181,7 +184,7 @@ void AirthingsWaveBase::read_battery_(uint8_t *raw_value, uint16_t value_len) {
|
||||
// read the battery again at the configured update interval
|
||||
if (this->battery_update_interval_ != this->update_interval_) {
|
||||
this->read_battery_next_update_ = false;
|
||||
this->set_timeout("battery", this->battery_update_interval_,
|
||||
this->set_timeout(BATTERY_READ_TIMEOUT_ID, this->battery_update_interval_,
|
||||
[this]() { this->read_battery_next_update_ = true; });
|
||||
}
|
||||
}
|
||||
@@ -204,7 +207,7 @@ void AirthingsWaveBase::response_received_() {
|
||||
}
|
||||
|
||||
void AirthingsWaveBase::set_response_timeout_() {
|
||||
this->set_timeout("response_timeout", 30 * 1000, [this]() {
|
||||
this->set_timeout(RESPONSE_TIMEOUT_ID, 30 * 1000, [this]() {
|
||||
this->responses_pending_ = 1;
|
||||
this->response_received_();
|
||||
});
|
||||
|
||||
@@ -36,6 +36,8 @@ class DemoCover final : public cover::Cover, public Component {
|
||||
}
|
||||
|
||||
protected:
|
||||
static constexpr uint32_t MOVE_TIMEOUT_ID = 0;
|
||||
|
||||
void control(const cover::CoverCall &call) override {
|
||||
auto pos = call.get_position();
|
||||
if (pos.has_value()) {
|
||||
@@ -43,7 +45,7 @@ class DemoCover final : public cover::Cover, public Component {
|
||||
this->current_operation =
|
||||
target > this->position ? cover::COVER_OPERATION_OPENING : cover::COVER_OPERATION_CLOSING;
|
||||
|
||||
this->set_timeout("move", 2000, [this, target]() {
|
||||
this->set_timeout(MOVE_TIMEOUT_ID, 2000, [this, target]() {
|
||||
this->current_operation = cover::COVER_OPERATION_IDLE;
|
||||
this->position = target;
|
||||
this->publish_state();
|
||||
@@ -54,7 +56,7 @@ class DemoCover final : public cover::Cover, public Component {
|
||||
this->tilt = *tilt;
|
||||
}
|
||||
if (call.get_stop()) {
|
||||
this->cancel_timeout("move");
|
||||
this->cancel_timeout(MOVE_TIMEOUT_ID);
|
||||
}
|
||||
|
||||
this->publish_state();
|
||||
|
||||
@@ -21,6 +21,10 @@ namespace esphome::improv_ble {
|
||||
using namespace bytebuffer;
|
||||
|
||||
ESPHOME_LOG_TAG(TAG, "improv_ble.component");
|
||||
|
||||
static constexpr uint32_t STOP_SERVICE_TIMEOUT_ID = 0;
|
||||
static constexpr uint32_t WIFI_CONNECT_TIMEOUT_ID = 1;
|
||||
|
||||
static constexpr size_t IMPROV_MAX_LOG_BYTES = 128;
|
||||
static constexpr char ESPHOME_MY_LINK[] = "https://my.home-assistant.io/redirect/config_flow_start?domain=esphome";
|
||||
// command + data length + trailing byte
|
||||
@@ -322,7 +326,7 @@ void ImprovBLEComponent::stop() {
|
||||
// Wait before stopping the service to ensure all BLE clients see the state change.
|
||||
// This prevents clients from repeatedly reconnecting and wasting resources by allowing
|
||||
// them to observe that the device is provisioned before the service disappears.
|
||||
this->set_timeout("end-service", STOP_ADVERTISING_DELAY, [this] {
|
||||
this->set_timeout(STOP_SERVICE_TIMEOUT_ID, STOP_ADVERTISING_DELAY, [this] {
|
||||
if (this->state_ == improv::STATE_STOPPED || this->service_ == nullptr)
|
||||
return;
|
||||
// Release first so removing the service UUID does not restart advertising on the way out
|
||||
@@ -398,7 +402,7 @@ void ImprovBLEComponent::process_incoming_data_() {
|
||||
ESP_LOGD(TAG, "Received Improv Wi-Fi settings ssid=%s, password=" LOG_SECRET("%s"), command.ssid.c_str(),
|
||||
command.password.c_str());
|
||||
|
||||
this->set_timeout("wifi-connect-timeout", 30000, [this]() { this->on_wifi_connect_timeout_(); });
|
||||
this->set_timeout(WIFI_CONNECT_TIMEOUT_ID, 30000, [this]() { this->on_wifi_connect_timeout_(); });
|
||||
this->incoming_data_.clear();
|
||||
break;
|
||||
}
|
||||
@@ -438,7 +442,7 @@ void ImprovBLEComponent::check_wifi_connection_() {
|
||||
if (this->state_ == improv::STATE_PROVISIONING) {
|
||||
wifi::global_wifi_component->save_wifi_sta(this->connecting_sta_.get_ssid(), this->connecting_sta_.get_password());
|
||||
this->connecting_sta_ = {};
|
||||
this->cancel_timeout("wifi-connect-timeout");
|
||||
this->cancel_timeout(WIFI_CONNECT_TIMEOUT_ID);
|
||||
|
||||
// Build the URL list directly into a stack buffer with no heap allocation
|
||||
std::array<uint8_t, improv::RPC_RESPONSE_MAX_SIZE> buf;
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace esphome::pvvx_mithermometer {
|
||||
|
||||
ESPHOME_LOG_TAG(TAG, "display.pvvx_mithermometer");
|
||||
|
||||
static constexpr uint32_t DISCONNECT_TIMEOUT_ID = 0;
|
||||
|
||||
void PVVXDisplay::dump_config() {
|
||||
char service_buf[ble_device_base::UUID_STR_LEN];
|
||||
char char_buf[ble_device_base::UUID_STR_LEN];
|
||||
@@ -39,7 +41,7 @@ void PVVXDisplay::gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t
|
||||
case ESP_GATTC_DISCONNECT_EVT:
|
||||
ESP_LOGV(TAG, "[%s] Disconnected", this->parent_->address_str());
|
||||
this->connection_established_ = false;
|
||||
this->cancel_timeout("disconnect");
|
||||
this->cancel_timeout(DISCONNECT_TIMEOUT_ID);
|
||||
this->char_handle_ = 0;
|
||||
break;
|
||||
case ESP_GATTC_SEARCH_CMPL_EVT: {
|
||||
@@ -147,8 +149,8 @@ void PVVXDisplay::send_to_setup_char_(uint8_t *blk, size_t size) {
|
||||
void PVVXDisplay::delayed_disconnect_() {
|
||||
if (this->disconnect_delay_ms_ == 0)
|
||||
return;
|
||||
this->cancel_timeout("disconnect");
|
||||
this->set_timeout("disconnect", this->disconnect_delay_ms_, [this]() { this->parent_->set_enabled(false); });
|
||||
this->cancel_timeout(DISCONNECT_TIMEOUT_ID);
|
||||
this->set_timeout(DISCONNECT_TIMEOUT_ID, this->disconnect_delay_ms_, [this]() { this->parent_->set_enabled(false); });
|
||||
}
|
||||
|
||||
void PVVXDisplay::sync_time_and_display_() {
|
||||
|
||||
@@ -10,6 +10,8 @@ namespace esphome::sendspin_ {
|
||||
|
||||
ESPHOME_LOG_TAG(TAG, "sendspin.image");
|
||||
|
||||
static constexpr uint32_t TRANSITION_ACK_TIMEOUT_ID = 0;
|
||||
|
||||
// How long a displayed frame may wait for sendspin.image.transition_finished before a warning
|
||||
// names the missing ack. Generous next to a typical fade of a second or two.
|
||||
static constexpr uint32_t TRANSITION_ACK_WARNING_MS = 10000;
|
||||
@@ -163,7 +165,7 @@ void SendspinImageSlot::on_display_(uint32_t lateness_ms) {
|
||||
// that never reaches the action stalls the slot with nothing in the log. Name the cause after
|
||||
// a generous wait. Arming again replaces the previous timeout, so it cannot fire for a frame
|
||||
// that was already acked and superseded.
|
||||
this->set_timeout("transition_ack", TRANSITION_ACK_WARNING_MS, [this]() {
|
||||
this->set_timeout(TRANSITION_ACK_TIMEOUT_ID, TRANSITION_ACK_WARNING_MS, [this]() {
|
||||
if (this->transition_pending_) {
|
||||
ESP_LOGW(TAG,
|
||||
"Slot %u: displayed artwork was never acknowledged; no new artwork will arrive until "
|
||||
|
||||
Reference in New Issue
Block a user