/*
 *
 *    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.h.zapt

#pragma once

#include <clusters/shared/Enums.h>
#include <cstdint>

namespace chip {
namespace app {
namespace Clusters {
namespace PowerSource {

// Enum for BatApprovedChemistryEnum
enum class BatApprovedChemistryEnum : uint16_t {
  kUnspecified = 0x00,
  kAlkaline = 0x01,
  kLithiumCarbonFluoride = 0x02,
  kLithiumChromiumOxide = 0x03,
  kLithiumCopperOxide = 0x04,
  kLithiumIronDisulfide = 0x05,
  kLithiumManganeseDioxide = 0x06,
  kLithiumThionylChloride = 0x07,
  kMagnesium = 0x08,
  kMercuryOxide = 0x09,
  kNickelOxyhydride = 0x0A,
  kSilverOxide = 0x0B,
  kZincAir = 0x0C,
  kZincCarbon = 0x0D,
  kZincChloride = 0x0E,
  kZincManganeseDioxide = 0x0F,
  kLeadAcid = 0x10,
  kLithiumCobaltOxide = 0x11,
  kLithiumIon = 0x12,
  kLithiumIonPolymer = 0x13,
  kLithiumIronPhosphate = 0x14,
  kLithiumSulfur = 0x15,
  kLithiumTitanate = 0x16,
  kNickelCadmium = 0x17,
  kNickelHydrogen = 0x18,
  kNickelIron = 0x19,
  kNickelMetalHydride = 0x1A,
  kNickelZinc = 0x1B,
  kSilverZinc = 0x1C,
  kSodiumIon = 0x1D,
  kSodiumSulfur = 0x1E,
  kZincBromide = 0x1F,
  kZincCerium = 0x20,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 33,
};

// Enum for BatChargeFaultEnum
enum class BatChargeFaultEnum : uint8_t {
  kUnspecified = 0x00,
  kAmbientTooHot = 0x01,
  kAmbientTooCold = 0x02,
  kBatteryTooHot = 0x03,
  kBatteryTooCold = 0x04,
  kBatteryAbsent = 0x05,
  kBatteryOverVoltage = 0x06,
  kBatteryUnderVoltage = 0x07,
  kChargerOverVoltage = 0x08,
  kChargerUnderVoltage = 0x09,
  kSafetyTimeout = 0x0A,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 11,
};

// Enum for BatChargeLevelEnum
enum class BatChargeLevelEnum : uint8_t {
  kOk = 0x00,
  kWarning = 0x01,
  kCritical = 0x02,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 3,
};

// Enum for BatChargeStateEnum
enum class BatChargeStateEnum : uint8_t {
  kUnknown = 0x00,
  kIsCharging = 0x01,
  kIsAtFullCharge = 0x02,
  kIsNotCharging = 0x03,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 4,
};

// Enum for BatCommonDesignationEnum
enum class BatCommonDesignationEnum : uint16_t {
  kUnspecified = 0x00,
  kAaa = 0x01,
  kAa = 0x02,
  kC = 0x03,
  kD = 0x04,
  k4v5 = 0x05,
  k6v0 = 0x06,
  k9v0 = 0x07,
  k12aa = 0x08,
  kAaaa = 0x09,
  kA = 0x0A,
  kB = 0x0B,
  kF = 0x0C,
  kN = 0x0D,
  kNo6 = 0x0E,
  kSubC = 0x0F,
  kA23 = 0x10,
  kA27 = 0x11,
  kBa5800 = 0x12,
  kDuplex = 0x13,
  k4sr44 = 0x14,
  k523 = 0x15,
  k531 = 0x16,
  k15v0 = 0x17,
  k22v5 = 0x18,
  k30v0 = 0x19,
  k45v0 = 0x1A,
  k67v5 = 0x1B,
  kJ = 0x1C,
  kCr123a = 0x1D,
  kCr2 = 0x1E,
  k2cr5 = 0x1F,
  kCrP2 = 0x20,
  kCrV3 = 0x21,
  kSr41 = 0x22,
  kSr43 = 0x23,
  kSr44 = 0x24,
  kSr45 = 0x25,
  kSr48 = 0x26,
  kSr54 = 0x27,
  kSr55 = 0x28,
  kSr57 = 0x29,
  kSr58 = 0x2A,
  kSr59 = 0x2B,
  kSr60 = 0x2C,
  kSr63 = 0x2D,
  kSr64 = 0x2E,
  kSr65 = 0x2F,
  kSr66 = 0x30,
  kSr67 = 0x31,
  kSr68 = 0x32,
  kSr69 = 0x33,
  kSr516 = 0x34,
  kSr731 = 0x35,
  kSr712 = 0x36,
  kLr932 = 0x37,
  kA5 = 0x38,
  kA10 = 0x39,
  kA13 = 0x3A,
  kA312 = 0x3B,
  kA675 = 0x3C,
  kAc41e = 0x3D,
  k10180 = 0x3E,
  k10280 = 0x3F,
  k10440 = 0x40,
  k14250 = 0x41,
  k14430 = 0x42,
  k14500 = 0x43,
  k14650 = 0x44,
  k15270 = 0x45,
  k16340 = 0x46,
  kRcr123a = 0x47,
  k17500 = 0x48,
  k17670 = 0x49,
  k18350 = 0x4A,
  k18500 = 0x4B,
  k18650 = 0x4C,
  k19670 = 0x4D,
  k25500 = 0x4E,
  k26650 = 0x4F,
  k32600 = 0x50,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 81,
};

// Enum for BatFaultEnum
enum class BatFaultEnum : uint8_t {
  kUnspecified = 0x00,
  kOverTemp = 0x01,
  kUnderTemp = 0x02,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 3,
};

// Enum for BatReplaceabilityEnum
enum class BatReplaceabilityEnum : uint8_t {
  kUnspecified = 0x00,
  kNotReplaceable = 0x01,
  kUserReplaceable = 0x02,
  kFactoryReplaceable = 0x03,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 4,
};

// Enum for PowerSourceStatusEnum
enum class PowerSourceStatusEnum : uint8_t {
  kUnspecified = 0x00,
  kActive = 0x01,
  kStandby = 0x02,
  kUnavailable = 0x03,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 4,
};

// Enum for WiredCurrentTypeEnum
enum class WiredCurrentTypeEnum : uint8_t {
  kAc = 0x00,
  kDc = 0x01,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 2,
};

// Enum for WiredFaultEnum
enum class WiredFaultEnum : uint8_t {
  kUnspecified = 0x00,
  kOverVoltage = 0x01,
  kUnderVoltage = 0x02,
  // All received enum values that are not listed above will be mapped
  // to kUnknownEnumValue. This is a helper enum value that should only
  // be used by code to process how it handles receiving and unknown
  // enum value. This specific should never be transmitted.
  kUnknownEnumValue = 3,
};

// Bitmap for Feature
enum class Feature : uint32_t {
  kWired = 0x1,
  kBattery = 0x2,
  kRechargeable = 0x4,
  kReplaceable = 0x8,
};
} // namespace PowerSource
} // namespace Clusters
} // namespace app
} // namespace chip
