Skip to content

Commit

Permalink
Remove OnOffDelayedAllOffEffectVariant, OnOffDyingLightEffectVariant …
Browse files Browse the repository at this point in the history
…and OnOffEffectIdentifier weak enums (#25113)

* Remove OnOffDelayedAllOffEffectVariant, OnOffDyingLightEffectVariant and OnOffEffectIdentifier weak enums

* Update generated enums
  • Loading branch information
vivien-apple authored Feb 16, 2023
1 parent c32ca61 commit 1fd5c53
Show file tree
Hide file tree
Showing 10 changed files with 122 additions and 184 deletions.
12 changes: 6 additions & 6 deletions examples/all-clusters-app/ameba/main/include/OnOffCommands.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,8 @@ void ProcessOnOffUnicastBindingCommand(BindingCommandData * data, const EmberBin
break;

case Clusters::OnOff::Commands::OffWithEffect::Id:
offwitheffectCommand.effectIdentifier = static_cast<EmberAfOnOffEffectIdentifier>(data->args[0]);
offwitheffectCommand.effectVariant = static_cast<EmberAfOnOffDelayedAllOffEffectVariant>(data->args[1]);
offwitheffectCommand.effectIdentifier = static_cast<Clusters::OnOff::OnOffEffectIdentifier>(data->args[0]);
offwitheffectCommand.effectVariant = static_cast<Clusters::OnOff::OnOffDelayedAllOffEffectVariant>(data->args[1]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
offwitheffectCommand, onSuccess, onFailure);
break;
Expand All @@ -136,7 +136,7 @@ void ProcessOnOffUnicastBindingCommand(BindingCommandData * data, const EmberBin
break;

case Clusters::OnOff::Commands::OnWithTimedOff::Id:
onwithtimedoffCommand.onOffControl = static_cast<chip::BitMask<chip::app::Clusters::OnOff::OnOffControl>>(data->args[0]);
onwithtimedoffCommand.onOffControl = static_cast<chip::BitMask<Clusters::OnOff::OnOffControl>>(data->args[0]);
onwithtimedoffCommand.onTime = static_cast<uint16_t>(data->args[1]);
onwithtimedoffCommand.offWaitTime = static_cast<uint16_t>(data->args[2]);
Controller::InvokeCommandRequest(peer_device->GetExchangeManager(), peer_device->GetSecureSession().Value(), binding.remote,
Expand Down Expand Up @@ -171,8 +171,8 @@ void ProcessOnOffGroupBindingCommand(BindingCommandData * data, const EmberBindi
break;

case Clusters::OnOff::Commands::OffWithEffect::Id:
offwitheffectCommand.effectIdentifier = static_cast<EmberAfOnOffEffectIdentifier>(data->args[0]);
offwitheffectCommand.effectVariant = static_cast<EmberAfOnOffDelayedAllOffEffectVariant>(data->args[1]);
offwitheffectCommand.effectIdentifier = static_cast<Clusters::OnOff::OnOffEffectIdentifier>(data->args[0]);
offwitheffectCommand.effectVariant = static_cast<Clusters::OnOff::OnOffDelayedAllOffEffectVariant>(data->args[1]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, offwitheffectCommand);
break;

Expand All @@ -181,7 +181,7 @@ void ProcessOnOffGroupBindingCommand(BindingCommandData * data, const EmberBindi
break;

case Clusters::OnOff::Commands::OnWithTimedOff::Id:
onwithtimedoffCommand.onOffControl = static_cast<chip::BitMask<chip::app::Clusters::OnOff::OnOffControl>>(data->args[0]);
onwithtimedoffCommand.onOffControl = static_cast<chip::BitMask<Clusters::OnOff::OnOffControl>>(data->args[0]);
onwithtimedoffCommand.onTime = static_cast<uint16_t>(data->args[1]);
onwithtimedoffCommand.offWaitTime = static_cast<uint16_t>(data->args[2]);
Controller::InvokeGroupCommandRequest(&exchangeMgr, binding.fabricIndex, binding.groupId, onwithtimedoffCommand);
Expand Down
38 changes: 19 additions & 19 deletions examples/lighting-app/qpg/src/AppTask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
#include <app/server/Dnssd.h>
#include <app/server/Server.h>
#include <app/util/attribute-storage.h>
#include <lib/support/TypeTraits.h>

#include <credentials/DeviceAttestationCredsProvider.h>
#include <credentials/examples/DeviceAttestationCredsExample.h>
Expand Down Expand Up @@ -148,44 +149,43 @@ Identify gIdentify = {

void OnTriggerOffWithEffect(OnOffEffect * effect)
{
chip::app::Clusters::OnOff::OnOffEffectIdentifier effectId = effect->mEffectIdentifier;
uint8_t effectVariant = effect->mEffectVariant;
auto effectId = effect->mEffectIdentifier;
auto effectVariant = effect->mEffectVariant;

// Uses print outs until we can support the effects
if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF)
if (effectId == Clusters::OnOff::OnOffEffectIdentifier::kDelayedAllOff)
{
if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS)
auto typedEffectVariant = static_cast<Clusters::OnOff::OnOffDelayedAllOffEffectVariant>(effectVariant);
if (typedEffectVariant == Clusters::OnOff::OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds)
{
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds");
}
else if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE)
else if (typedEffectVariant == Clusters::OnOff::OnOffDelayedAllOffEffectVariant::kNoFade)
{
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kNoFade");
}
else if (effectVariant ==
EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS)
else if (typedEffectVariant ==
Clusters::OnOff::OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds)
{
ChipLogProgress(Zcl,
"EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_"
"IN_12_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds");
}
}
else if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT)
else if (effectId == Clusters::OnOff::OnOffEffectIdentifier::kDyingLight)
{
if (effectVariant ==
EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND)
auto typedEffectVariant = static_cast<Clusters::OnOff::OnOffDyingLightEffectVariant>(effectVariant);
if (typedEffectVariant ==
Clusters::OnOff::OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second)
{
ChipLogProgress(
Zcl, "EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND");
ChipLogProgress(Zcl, "OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second");
}
}
}

OnOffEffect gEffect = {
chip::EndpointId{ 1 },
OnTriggerOffWithEffect,
EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF,
static_cast<uint8_t>(EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS),
Clusters::OnOff::OnOffEffectIdentifier::kDelayedAllOff,
to_underlying(Clusters::OnOff::OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds),
};

} // namespace
Expand Down
40 changes: 20 additions & 20 deletions examples/lighting-app/silabs/SiWx917/src/LightingManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@
#include "AppTask.h"
#include <FreeRTOS.h>

#include <lib/support/TypeTraits.h>

using namespace chip;
using namespace ::chip::app::Clusters::OnOff;
using namespace ::chip::DeviceLayer;

LightingManager LightingManager::sLight;
Expand All @@ -39,8 +42,8 @@ namespace {
OnOffEffect gEffect = {
chip::EndpointId{ 1 },
LightMgr().OnTriggerOffWithEffect,
EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF,
static_cast<uint8_t>(EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS),
OnOffEffectIdentifier::kDelayedAllOff,
to_underlying(OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds),
};

} // namespace
Expand Down Expand Up @@ -279,41 +282,38 @@ void LightingManager::ActuatorMovementTimerEventHandler(AppEvent * aEvent)

void LightingManager::OnTriggerOffWithEffect(OnOffEffect * effect)
{
chip::app::Clusters::OnOff::OnOffEffectIdentifier effectId = effect->mEffectIdentifier;
uint8_t effectVariant = effect->mEffectVariant;
uint32_t offEffectDuration = 0;
auto effectId = effect->mEffectIdentifier;
auto effectVariant = effect->mEffectVariant;
uint32_t offEffectDuration = 0;

// Temporary print outs and delay to test OffEffect behaviour
// Until dimming is supported for dev boards.
if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF)
if (effectId == OnOffEffectIdentifier::kDelayedAllOff)
{
if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS)
auto typedEffectVariant = static_cast<OnOffDelayedAllOffEffectVariant>(effectVariant);
if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds)
{
offEffectDuration = 800;
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds");
}
else if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE)
else if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::kNoFade)
{
offEffectDuration = 800;
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kNoFade");
}
else if (effectVariant ==
EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS)
else if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds)
{
offEffectDuration = 12800;
ChipLogProgress(Zcl,
"EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_"
"IN_12_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds");
}
}
else if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT)
else if (effectId == OnOffEffectIdentifier::kDyingLight)
{
if (effectVariant ==
EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND)
auto typedEffectVariant = static_cast<OnOffDyingLightEffectVariant>(effectVariant);
if (typedEffectVariant == OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second)
{
offEffectDuration = 1500;
ChipLogProgress(
Zcl, "EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND");
ChipLogProgress(Zcl, "OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second");
}
}

Expand Down
40 changes: 20 additions & 20 deletions examples/lighting-app/silabs/efr32/src/LightingManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@
#include "AppTask.h"
#include <FreeRTOS.h>

#include <lib/support/TypeTraits.h>

using namespace chip;
using namespace ::chip::app::Clusters::OnOff;
using namespace ::chip::DeviceLayer;

LightingManager LightingManager::sLight;
Expand All @@ -39,8 +42,8 @@ namespace {
OnOffEffect gEffect = {
chip::EndpointId{ 1 },
LightMgr().OnTriggerOffWithEffect,
EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF,
static_cast<uint8_t>(EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS),
OnOffEffectIdentifier::kDelayedAllOff,
to_underlying(OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds),
};

} // namespace
Expand Down Expand Up @@ -279,41 +282,38 @@ void LightingManager::ActuatorMovementTimerEventHandler(AppEvent * aEvent)

void LightingManager::OnTriggerOffWithEffect(OnOffEffect * effect)
{
chip::app::Clusters::OnOff::OnOffEffectIdentifier effectId = effect->mEffectIdentifier;
uint8_t effectVariant = effect->mEffectVariant;
uint32_t offEffectDuration = 0;
auto effectId = effect->mEffectIdentifier;
auto effectVariant = effect->mEffectVariant;
uint32_t offEffectDuration = 0;

// Temporary print outs and delay to test OffEffect behaviour
// Until dimming is supported for dev boards.
if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF)
if (effectId == OnOffEffectIdentifier::kDelayedAllOff)
{
if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS)
auto typedEffectVariant = static_cast<OnOffDelayedAllOffEffectVariant>(effectVariant);
if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds)
{
offEffectDuration = 800;
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds");
}
else if (effectVariant == EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE)
else if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::kNoFade)
{
offEffectDuration = 800;
ChipLogProgress(Zcl, "EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::kNoFade");
}
else if (effectVariant ==
EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS)
else if (typedEffectVariant == OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds)
{
offEffectDuration = 12800;
ChipLogProgress(Zcl,
"EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_"
"IN_12_SECONDS");
ChipLogProgress(Zcl, "OnOffDelayedAllOffEffectVariant::k50PercentDimDownIn0p8SecondsThenFadeToOffIn12Seconds");
}
}
else if (effectId == EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT)
else if (effectId == OnOffEffectIdentifier::kDyingLight)
{
if (effectVariant ==
EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND)
auto typedEffectVariant = static_cast<OnOffDyingLightEffectVariant>(effectVariant);
if (typedEffectVariant == OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second)
{
offEffectDuration = 1500;
ChipLogProgress(
Zcl, "EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND");
ChipLogProgress(Zcl, "OnOffDyingLightEffectVariant::k20PercenterDimUpIn0p5SecondsThenFadeToOffIn1Second");
}
}

Expand Down
10 changes: 5 additions & 5 deletions src/app/clusters/on-off-server/on-off-server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -353,10 +353,10 @@ bool OnOffServer::toggleCommand(app::CommandHandler * commandObj, const app::Con
bool OnOffServer::offWithEffectCommand(app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
const Commands::OffWithEffect::DecodableType & commandData)
{
OnOffEffectIdentifier effectId = commandData.effectIdentifier;
uint8_t effectVariant = commandData.effectVariant;
chip::EndpointId endpoint = commandPath.mEndpointId;
Status status = Status::Success;
auto effectId = commandData.effectIdentifier;
auto effectVariant = commandData.effectVariant;
chip::EndpointId endpoint = commandPath.mEndpointId;
Status status = Status::Success;

if (SupportsLightingApplications(endpoint))
{
Expand Down Expand Up @@ -393,7 +393,7 @@ bool OnOffServer::offWithEffectCommand(app::CommandHandler * commandObj, const a
if (effect != nullptr && effect->mOffWithEffectTrigger != nullptr)
{
effect->mEffectIdentifier = effectId;
effect->mEffectVariant = effectVariant;
effect->mEffectVariant = to_underlying(effectVariant);

effect->mOffWithEffectTrigger(effect);
}
Expand Down
29 changes: 18 additions & 11 deletions src/app/clusters/on-off-server/on-off-server.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,23 +92,30 @@ class OnOffServer
struct OnOffEffect
{
using OffWithEffectTriggerCommand = void (*)(OnOffEffect *);
using EffectVariantType = std::underlying_type_t<chip::app::Clusters::OnOff::OnOffDelayedAllOffEffectVariant>;
static_assert(
std::is_same<EffectVariantType, std::underlying_type_t<chip::app::Clusters::OnOff::OnOffDyingLightEffectVariant>>::value,
"chip::app::Clusters::OnOff::OnOffDelayedAllOffEffectVariant and "
"chip::app::Clusters::OnOff::OnOffDyingLightEffectVariant underlying types differ.");

chip::EndpointId mEndpoint;
OffWithEffectTriggerCommand mOffWithEffectTrigger = nullptr;
chip::app::Clusters::OnOff::OnOffEffectIdentifier mEffectIdentifier;
uint8_t mEffectVariant;
EffectVariantType mEffectVariant;
OnOffEffect * nextEffect = nullptr;

OnOffEffect(
chip::EndpointId endpoint, OffWithEffectTriggerCommand offWithEffectTrigger,
chip::app::Clusters::OnOff::OnOffEffectIdentifier effectIdentifier = EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF,

/*
* effectVariant's type depends on the effect effectIdentifier so we don't know the type at compile time.
* Casting to uint8_t for more flexibility since the type can be OnOffDelayedAllOffEffectVariant or
* OnOffDelayedAllOffEffectVariant
*/
uint8_t effectVariant = static_cast<uint8_t>(EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS));
OnOffEffect(chip::EndpointId endpoint, OffWithEffectTriggerCommand offWithEffectTrigger,
chip::app::Clusters::OnOff::OnOffEffectIdentifier effectIdentifier =
chip::app::Clusters::OnOff::OnOffEffectIdentifier::kDelayedAllOff,

/*
* effectVariant's type depends on the effectIdentifier so we don't know the type at compile time.
* The assertion at the beginning of this method ensures the effect variants share the same base type.
* Casting to the common base type for more flexibility since the type can be OnOffDelayedAllOffEffectVariant or
* OnOffDelayedAllOffEffectVariant
*/
EffectVariantType =
chip::to_underlying(chip::app::Clusters::OnOff::OnOffDelayedAllOffEffectVariant::kFadeToOffIn0p8Seconds));
~OnOffEffect();

bool hasNext() { return this->nextEffect != nullptr; }
Expand Down
3 changes: 0 additions & 3 deletions src/app/common/templates/config-data.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,6 @@ WeakEnums:
- LevelControlOptions
- MoveMode
- NetworkFaultEnum
- OnOffDelayedAllOffEffectVariant
- OnOffDyingLightEffectVariant
- OnOffEffectIdentifier
- PHYRateEnum
- RadioFaultEnum
- RoutingRole
Expand Down
Loading

0 comments on commit 1fd5c53

Please sign in to comment.