From 1238094e24ec4cc7b0e2b03a0a4f9ff04de30e82 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Thu, 23 Mar 2023 01:54:04 -0400 Subject: [PATCH] Stop generating weakly-typed enums for the color loop enum types. (#25790) * Stop generating weakly-typed enums for the color loop enum types. * Regenerate generated code. --- .../ameba/main/include/ColorControlCommands.h | 8 ++-- .../color-control-server.cpp | 38 +++++++++---------- .../color-control-server.h | 6 --- src/app/common/templates/config-data.yaml | 3 -- .../zap-generated/cluster-enums-check.h | 15 -------- .../app-common/zap-generated/cluster-enums.h | 14 ------- .../app-common/zap-generated/enums.h | 23 ----------- 7 files changed, 21 insertions(+), 86 deletions(-) diff --git a/examples/all-clusters-app/ameba/main/include/ColorControlCommands.h b/examples/all-clusters-app/ameba/main/include/ColorControlCommands.h index 1e2b1bf02ddd40..a80b5fe02d659d 100644 --- a/examples/all-clusters-app/ameba/main/include/ColorControlCommands.h +++ b/examples/all-clusters-app/ameba/main/include/ColorControlCommands.h @@ -505,8 +505,8 @@ void ProcessColorControlUnicastBindingCommand(BindingCommandData * data, const E case Clusters::ColorControl::Commands::ColorLoopSet::Id: colorLoopSetCommand.updateFlags = static_cast>(data->args[0]); - colorLoopSetCommand.action = static_cast(data->args[1]); - colorLoopSetCommand.direction = static_cast(data->args[2]); + colorLoopSetCommand.action = static_cast(data->args[1]); + colorLoopSetCommand.direction = static_cast(data->args[2]); colorLoopSetCommand.time = static_cast(data->args[3]); colorLoopSetCommand.startHue = static_cast(data->args[4]); colorLoopSetCommand.optionsMask = static_cast(data->args[5]); @@ -708,8 +708,8 @@ void ProcessColorControlGroupBindingCommand(BindingCommandData * data, const Emb case Clusters::ColorControl::Commands::ColorLoopSet::Id: colorLoopSetCommand.updateFlags = static_cast>(data->args[0]); - colorLoopSetCommand.action = static_cast(data->args[1]); - colorLoopSetCommand.direction = static_cast(data->args[2]); + colorLoopSetCommand.action = static_cast(data->args[1]); + colorLoopSetCommand.direction = static_cast(data->args[2]); colorLoopSetCommand.time = static_cast(data->args[3]); colorLoopSetCommand.startHue = static_cast(data->args[4]); colorLoopSetCommand.optionsMask = static_cast(data->args[5]); diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp index f725f35b07678b..6a3d70e62648a7 100644 --- a/src/app/clusters/color-control-server/color-control-server.cpp +++ b/src/app/clusters/color-control-server/color-control-server.cpp @@ -608,7 +608,7 @@ void ColorControlServer::startColorLoop(EndpointId endpoint, uint8_t startFromSt colorHueTransitionState->initialEnhancedHue = startHue; - if (direction) + if (direction == to_underlying(ColorLoopDirection::kIncrementHue)) { colorHueTransitionState->finalEnhancedHue = static_cast(startHue - 1); } @@ -617,7 +617,7 @@ void ColorControlServer::startColorLoop(EndpointId endpoint, uint8_t startFromSt colorHueTransitionState->finalEnhancedHue = static_cast(startHue + 1); } - colorHueTransitionState->up = direction; + colorHueTransitionState->up = (direction == to_underlying(ColorLoopDirection::kIncrementHue)); colorHueTransitionState->repeat = true; colorHueTransitionState->stepsRemaining = static_cast(time * TRANSITION_TIME_1S); @@ -1496,9 +1496,9 @@ bool ColorControlServer::stepSaturationCommand(app::CommandHandler * commandObj, bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath, const Commands::ColorLoopSet::DecodableType & commandData) { - uint8_t updateFlags = commandData.updateFlags.Raw(); - uint8_t action = commandData.action; - uint8_t direction = commandData.direction; + auto updateFlags = commandData.updateFlags; + auto action = commandData.action; + auto direction = commandData.direction; uint16_t time = commandData.time; uint16_t startHue = commandData.startHue; uint8_t optionsMask = commandData.optionsMask; @@ -1512,10 +1512,7 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint); // Validate the action and direction parameters of the command - if ((action != EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE && - action != EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE && - action != EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE) || - (direction != DECREMENT_HUE && direction != INCREMENT_HUE)) + if (action == ColorLoopAction::kUnknownEnumValue || direction == ColorLoopDirection::kUnknownEnumValue) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; @@ -1529,20 +1526,19 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive); - deactiveColorLoop = - (updateFlags & EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION) && (action == EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE); + deactiveColorLoop = updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction) && (action == ColorLoopAction::kDeactivate); - if (updateFlags & EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION) + if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction)) { - Attributes::ColorLoopDirection::Set(endpoint, direction); + Attributes::ColorLoopDirection::Set(endpoint, to_underlying(direction)); // Checks if color loop is active and stays active if (isColorLoopActive && !deactiveColorLoop) { - colorHueTransitionState->up = direction; + colorHueTransitionState->up = (direction == ColorLoopDirection::kIncrementHue); colorHueTransitionState->initialEnhancedHue = colorHueTransitionState->currentEnhancedHue; - if (direction) + if (direction == ColorLoopDirection::kIncrementHue) { colorHueTransitionState->finalEnhancedHue = static_cast(colorHueTransitionState->initialEnhancedHue - 1); } @@ -1554,7 +1550,7 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons } } - if (updateFlags & EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME) + if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateTime)) { Attributes::ColorLoopTime::Set(endpoint, time); @@ -1576,14 +1572,14 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons } } - if (updateFlags & EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE) + if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateStartHue)) { Attributes::ColorLoopStartEnhancedHue::Set(endpoint, startHue); } - if (updateFlags & EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION) + if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction)) { - if (action == EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE) + if (action == ColorLoopAction::kDeactivate) { if (isColorLoopActive) { @@ -1600,11 +1596,11 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons // Do Nothing since it's not on } } - else if (action == EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE) + else if (action == ColorLoopAction::kActivateFromColorLoopStartEnhancedHue) { startColorLoop(endpoint, true); } - else if (action == EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE) + else if (action == ColorLoopAction::kActivateFromEnhancedCurrentHue) { startColorLoop(endpoint, false); } diff --git a/src/app/clusters/color-control-server/color-control-server.h b/src/app/clusters/color-control-server/color-control-server.h index b540576c57ea99..d82fabc88fb8e2 100644 --- a/src/app/clusters/color-control-server/color-control-server.h +++ b/src/app/clusters/color-control-server/color-control-server.h @@ -70,12 +70,6 @@ class ColorControlServer using HueMoveMode = chip::app::Clusters::ColorControl::HueMoveMode; using HueDirection = chip::app::Clusters::ColorControl::HueDirection; - enum ColorLoopDirection - { - DECREMENT_HUE = 0x00, - INCREMENT_HUE = 0x01, - }; - enum ColorMode { COLOR_MODE_HSV = 0x00, diff --git a/src/app/common/templates/config-data.yaml b/src/app/common/templates/config-data.yaml index 7a4c0d8e26162f..ad09163530c4d3 100644 --- a/src/app/common/templates/config-data.yaml +++ b/src/app/common/templates/config-data.yaml @@ -4,8 +4,6 @@ WeakEnums: - BarrierControlBarrierPosition - BarrierControlMovingState - ColorControlOptions - - ColorLoopAction - - ColorLoopDirection - ColorMode - EnhancedColorMode - HardwareFaultEnum @@ -25,7 +23,6 @@ DefineBitmaps: # The goal is to drive this down to 0. - BarrierControlCapabilities - BarrierControlSafetyStatus - - ColorLoopUpdateFlags # We need a more configurable way of deciding which clusters have which init functions.... # See https://github.com/project-chip/connectedhomeip/issues/4369 diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h index e94f6982e1904a..2a71da8a24ce08 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h @@ -1701,17 +1701,9 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoop using EnumType = ColorControl::ColorLoopAction; switch (val) { -// Need to convert consumers to using the new enum classes, so we -// don't just have casts all over. -#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM case EnumType::kDeactivate: case EnumType::kActivateFromColorLoopStartEnhancedHue: case EnumType::kActivateFromEnhancedCurrentHue: -#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM - case EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE: - case EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE: - case EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE: -#endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM return val; default: return static_cast(3); @@ -1722,15 +1714,8 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoop using EnumType = ColorControl::ColorLoopDirection; switch (val) { -// Need to convert consumers to using the new enum classes, so we -// don't just have casts all over. -#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM case EnumType::kDecrementHue: case EnumType::kIncrementHue: -#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM - case EMBER_ZCL_COLOR_LOOP_DIRECTION_DECREMENT_HUE: - case EMBER_ZCL_COLOR_LOOP_DIRECTION_INCREMENT_HUE: -#endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM return val; default: return static_cast(2); diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index 387ce5239b3dc9..dea6a250b6984b 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -2219,9 +2219,6 @@ namespace ThermostatUserInterfaceConfiguration {} // namespace ThermostatUserInt namespace ColorControl { -// Need to convert consumers to using the new enum classes, so we -// don't just have casts all over. -#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM // Enum for ColorLoopAction enum class ColorLoopAction : uint8_t { @@ -2234,14 +2231,7 @@ enum class ColorLoopAction : uint8_t // enum value. This specific should never be transmitted. kUnknownEnumValue = 3, }; -#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM -using ColorLoopAction = EmberAfColorLoopAction; -static ColorLoopAction __attribute__((unused)) kColorLoopActionkUnknownEnumValue = static_cast(3); -#endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM -// Need to convert consumers to using the new enum classes, so we -// don't just have casts all over. -#ifdef CHIP_USE_ENUM_CLASS_FOR_IM_ENUM // Enum for ColorLoopDirection enum class ColorLoopDirection : uint8_t { @@ -2253,10 +2243,6 @@ enum class ColorLoopDirection : uint8_t // enum value. This specific should never be transmitted. kUnknownEnumValue = 2, }; -#else // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM -using ColorLoopDirection = EmberAfColorLoopDirection; -static ColorLoopDirection __attribute__((unused)) kColorLoopDirectionkUnknownEnumValue = static_cast(2); -#endif // CHIP_USE_ENUM_CLASS_FOR_IM_ENUM // Need to convert consumers to using the new enum classes, so we // don't just have casts all over. diff --git a/zzz_generated/app-common/app-common/zap-generated/enums.h b/zzz_generated/app-common/app-common/zap-generated/enums.h index a0a01e89515e8a..f5db3095fa6e28 100644 --- a/zzz_generated/app-common/app-common/zap-generated/enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/enums.h @@ -46,21 +46,6 @@ enum EmberAfColorControlOptions : uint8_t EMBER_ZCL_COLOR_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1, }; -// Enum for ColorLoopAction -enum EmberAfColorLoopAction : uint8_t -{ - EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE = 0, - EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE = 1, - EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE = 2, -}; - -// Enum for ColorLoopDirection -enum EmberAfColorLoopDirection : uint8_t -{ - EMBER_ZCL_COLOR_LOOP_DIRECTION_DECREMENT_HUE = 0, - EMBER_ZCL_COLOR_LOOP_DIRECTION_INCREMENT_HUE = 1, -}; - // Enum for ColorMode enum EmberAfColorMode : uint8_t { @@ -204,11 +189,3 @@ enum EmberAfStepMode : uint8_t #define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION_OFFSET (2) #define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE (8) #define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE_OFFSET (3) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION (1) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION_OFFSET (0) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION (2) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION_OFFSET (1) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME (4) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME_OFFSET (2) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE (8) -#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE_OFFSET (3)