From b298837276780b3732e86e6a0a1cb19b0440472c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 30 Jan 2026 22:02:57 -0600 Subject: [PATCH] make sure cover works --- esphome/components/cover/cover.cpp | 17 +++++++---------- esphome/components/cover/cover.h | 2 ++ esphome/components/valve/valve.h | 2 ++ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/esphome/components/cover/cover.cpp b/esphome/components/cover/cover.cpp index 0d9e7e8ffb0..186db73da5e 100644 --- a/esphome/components/cover/cover.cpp +++ b/esphome/components/cover/cover.cpp @@ -22,17 +22,14 @@ const LogString *cover_command_to_str(float pos) { return LOG_STR("UNKNOWN"); } } +// Cover operation strings indexed by CoverOperation enum (0-2): IDLE, OPENING, CLOSING, plus UNKNOWN +PROGMEM_STRING_TABLE(CoverOperationStrings, "IDLE", "OPENING", "CLOSING", "UNKNOWN"); + const LogString *cover_operation_to_str(CoverOperation op) { - switch (op) { - case COVER_OPERATION_IDLE: - return LOG_STR("IDLE"); - case COVER_OPERATION_OPENING: - return LOG_STR("OPENING"); - case COVER_OPERATION_CLOSING: - return LOG_STR("CLOSING"); - default: - return LOG_STR("UNKNOWN"); - } + uint8_t index = static_cast(op); + if (index > COVER_OPERATION_LAST) + index = COVER_OPERATION_UNKNOWN_INDEX; + return CoverOperationStrings::get_log_str(index); } Cover::Cover() : position{COVER_OPEN} {} diff --git a/esphome/components/cover/cover.h b/esphome/components/cover/cover.h index e5427ceaa86..a94df7f7711 100644 --- a/esphome/components/cover/cover.h +++ b/esphome/components/cover/cover.h @@ -84,6 +84,8 @@ enum CoverOperation : uint8_t { /// The cover is currently closing. COVER_OPERATION_CLOSING, }; +constexpr uint8_t COVER_OPERATION_LAST = static_cast(COVER_OPERATION_CLOSING); +constexpr uint8_t COVER_OPERATION_UNKNOWN_INDEX = COVER_OPERATION_LAST + 1; const LogString *cover_operation_to_str(CoverOperation op); diff --git a/esphome/components/valve/valve.h b/esphome/components/valve/valve.h index cd461443727..9b904c45a89 100644 --- a/esphome/components/valve/valve.h +++ b/esphome/components/valve/valve.h @@ -79,6 +79,8 @@ enum ValveOperation : uint8_t { /// The valve is currently closing. VALVE_OPERATION_CLOSING, }; +constexpr uint8_t VALVE_OPERATION_LAST = static_cast(VALVE_OPERATION_CLOSING); +constexpr uint8_t VALVE_OPERATION_UNKNOWN_INDEX = VALVE_OPERATION_LAST + 1; const LogString *valve_operation_to_str(ValveOperation op);