/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-Enums-Check.h.zapt

#pragma once

#include <clusters/PowerSource/Enums.h>

namespace chip {
namespace app {
namespace Clusters {
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatApprovedChemistryEnum val) {
  using EnumType = PowerSource::BatApprovedChemistryEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kAlkaline:
  case EnumType::kLithiumCarbonFluoride:
  case EnumType::kLithiumChromiumOxide:
  case EnumType::kLithiumCopperOxide:
  case EnumType::kLithiumIronDisulfide:
  case EnumType::kLithiumManganeseDioxide:
  case EnumType::kLithiumThionylChloride:
  case EnumType::kMagnesium:
  case EnumType::kMercuryOxide:
  case EnumType::kNickelOxyhydride:
  case EnumType::kSilverOxide:
  case EnumType::kZincAir:
  case EnumType::kZincCarbon:
  case EnumType::kZincChloride:
  case EnumType::kZincManganeseDioxide:
  case EnumType::kLeadAcid:
  case EnumType::kLithiumCobaltOxide:
  case EnumType::kLithiumIon:
  case EnumType::kLithiumIonPolymer:
  case EnumType::kLithiumIronPhosphate:
  case EnumType::kLithiumSulfur:
  case EnumType::kLithiumTitanate:
  case EnumType::kNickelCadmium:
  case EnumType::kNickelHydrogen:
  case EnumType::kNickelIron:
  case EnumType::kNickelMetalHydride:
  case EnumType::kNickelZinc:
  case EnumType::kSilverZinc:
  case EnumType::kSodiumIon:
  case EnumType::kSodiumSulfur:
  case EnumType::kZincBromide:
  case EnumType::kZincCerium:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatChargeFaultEnum val) {
  using EnumType = PowerSource::BatChargeFaultEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kAmbientTooHot:
  case EnumType::kAmbientTooCold:
  case EnumType::kBatteryTooHot:
  case EnumType::kBatteryTooCold:
  case EnumType::kBatteryAbsent:
  case EnumType::kBatteryOverVoltage:
  case EnumType::kBatteryUnderVoltage:
  case EnumType::kChargerOverVoltage:
  case EnumType::kChargerUnderVoltage:
  case EnumType::kSafetyTimeout:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatChargeLevelEnum val) {
  using EnumType = PowerSource::BatChargeLevelEnum;
  switch (val) {
  case EnumType::kOk:
  case EnumType::kWarning:
  case EnumType::kCritical:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatChargeStateEnum val) {
  using EnumType = PowerSource::BatChargeStateEnum;
  switch (val) {
  case EnumType::kUnknown:
  case EnumType::kIsCharging:
  case EnumType::kIsAtFullCharge:
  case EnumType::kIsNotCharging:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatCommonDesignationEnum val) {
  using EnumType = PowerSource::BatCommonDesignationEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kAaa:
  case EnumType::kAa:
  case EnumType::kC:
  case EnumType::kD:
  case EnumType::k4v5:
  case EnumType::k6v0:
  case EnumType::k9v0:
  case EnumType::k12aa:
  case EnumType::kAaaa:
  case EnumType::kA:
  case EnumType::kB:
  case EnumType::kF:
  case EnumType::kN:
  case EnumType::kNo6:
  case EnumType::kSubC:
  case EnumType::kA23:
  case EnumType::kA27:
  case EnumType::kBa5800:
  case EnumType::kDuplex:
  case EnumType::k4sr44:
  case EnumType::k523:
  case EnumType::k531:
  case EnumType::k15v0:
  case EnumType::k22v5:
  case EnumType::k30v0:
  case EnumType::k45v0:
  case EnumType::k67v5:
  case EnumType::kJ:
  case EnumType::kCr123a:
  case EnumType::kCr2:
  case EnumType::k2cr5:
  case EnumType::kCrP2:
  case EnumType::kCrV3:
  case EnumType::kSr41:
  case EnumType::kSr43:
  case EnumType::kSr44:
  case EnumType::kSr45:
  case EnumType::kSr48:
  case EnumType::kSr54:
  case EnumType::kSr55:
  case EnumType::kSr57:
  case EnumType::kSr58:
  case EnumType::kSr59:
  case EnumType::kSr60:
  case EnumType::kSr63:
  case EnumType::kSr64:
  case EnumType::kSr65:
  case EnumType::kSr66:
  case EnumType::kSr67:
  case EnumType::kSr68:
  case EnumType::kSr69:
  case EnumType::kSr516:
  case EnumType::kSr731:
  case EnumType::kSr712:
  case EnumType::kLr932:
  case EnumType::kA5:
  case EnumType::kA10:
  case EnumType::kA13:
  case EnumType::kA312:
  case EnumType::kA675:
  case EnumType::kAc41e:
  case EnumType::k10180:
  case EnumType::k10280:
  case EnumType::k10440:
  case EnumType::k14250:
  case EnumType::k14430:
  case EnumType::k14500:
  case EnumType::k14650:
  case EnumType::k15270:
  case EnumType::k16340:
  case EnumType::kRcr123a:
  case EnumType::k17500:
  case EnumType::k17670:
  case EnumType::k18350:
  case EnumType::k18500:
  case EnumType::k18650:
  case EnumType::k19670:
  case EnumType::k25500:
  case EnumType::k26650:
  case EnumType::k32600:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatFaultEnum val) {
  using EnumType = PowerSource::BatFaultEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kOverTemp:
  case EnumType::kUnderTemp:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::BatReplaceabilityEnum val) {
  using EnumType = PowerSource::BatReplaceabilityEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kNotReplaceable:
  case EnumType::kUserReplaceable:
  case EnumType::kFactoryReplaceable:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::PowerSourceStatusEnum val) {
  using EnumType = PowerSource::PowerSourceStatusEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kActive:
  case EnumType::kStandby:
  case EnumType::kUnavailable:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::WiredCurrentTypeEnum val) {
  using EnumType = PowerSource::WiredCurrentTypeEnum;
  switch (val) {
  case EnumType::kAc:
  case EnumType::kDc:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(PowerSource::WiredFaultEnum val) {
  using EnumType = PowerSource::WiredFaultEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kOverVoltage:
  case EnumType::kUnderVoltage:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
} // namespace Clusters
} // namespace app
} // namespace chip
