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

#pragma once

#include <clusters/shared/Enums.h>

namespace chip {
namespace app {
namespace Clusters {
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::ChangeIndicationEnum val) {
  using EnumType = detail::ChangeIndicationEnum;
  switch (val) {
  case EnumType::kOk:
  case EnumType::kWarning:
  case EnumType::kCritical:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::DegradationDirectionEnum val) {
  using EnumType = detail::DegradationDirectionEnum;
  switch (val) {
  case EnumType::kUp:
  case EnumType::kDown:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::LevelValueEnum val) {
  using EnumType = detail::LevelValueEnum;
  switch (val) {
  case EnumType::kUnknown:
  case EnumType::kLow:
  case EnumType::kMedium:
  case EnumType::kHigh:
  case EnumType::kCritical:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::MeasurementMediumEnum val) {
  using EnumType = detail::MeasurementMediumEnum;
  switch (val) {
  case EnumType::kAir:
  case EnumType::kWater:
  case EnumType::kSoil:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::MeasurementTypeEnum val) {
  using EnumType = detail::MeasurementTypeEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kVoltage:
  case EnumType::kActiveCurrent:
  case EnumType::kReactiveCurrent:
  case EnumType::kApparentCurrent:
  case EnumType::kActivePower:
  case EnumType::kReactivePower:
  case EnumType::kApparentPower:
  case EnumType::kRMSVoltage:
  case EnumType::kRMSCurrent:
  case EnumType::kRMSPower:
  case EnumType::kFrequency:
  case EnumType::kPowerFactor:
  case EnumType::kNeutralCurrent:
  case EnumType::kElectricalEnergy:
  case EnumType::kReactiveEnergy:
  case EnumType::kApparentEnergy:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::MeasurementUnitEnum val) {
  using EnumType = detail::MeasurementUnitEnum;
  switch (val) {
  case EnumType::kPpm:
  case EnumType::kPpb:
  case EnumType::kPpt:
  case EnumType::kMgm3:
  case EnumType::kUgm3:
  case EnumType::kNgm3:
  case EnumType::kPm3:
  case EnumType::kBqm3:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(detail::ProductIdentifierTypeEnum val) {
  using EnumType = detail::ProductIdentifierTypeEnum;
  switch (val) {
  case EnumType::kUpc:
  case EnumType::kGtin8:
  case EnumType::kEan:
  case EnumType::kGtin14:
  case EnumType::kOem:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::AreaTypeTag val) {
  using EnumType = Globals::AreaTypeTag;
  switch (val) {
  case EnumType::kAisle:
  case EnumType::kAttic:
  case EnumType::kBackDoor:
  case EnumType::kBackYard:
  case EnumType::kBalcony:
  case EnumType::kBallroom:
  case EnumType::kBathroom:
  case EnumType::kBedroom:
  case EnumType::kBorder:
  case EnumType::kBoxroom:
  case EnumType::kBreakfastRoom:
  case EnumType::kCarport:
  case EnumType::kCellar:
  case EnumType::kCloakroom:
  case EnumType::kCloset:
  case EnumType::kConservatory:
  case EnumType::kCorridor:
  case EnumType::kCraftRoom:
  case EnumType::kCupboard:
  case EnumType::kDeck:
  case EnumType::kDen:
  case EnumType::kDining:
  case EnumType::kDrawingRoom:
  case EnumType::kDressingRoom:
  case EnumType::kDriveway:
  case EnumType::kElevator:
  case EnumType::kEnsuite:
  case EnumType::kEntrance:
  case EnumType::kEntryway:
  case EnumType::kFamilyRoom:
  case EnumType::kFoyer:
  case EnumType::kFrontDoor:
  case EnumType::kFrontYard:
  case EnumType::kGameRoom:
  case EnumType::kGarage:
  case EnumType::kGarageDoor:
  case EnumType::kGarden:
  case EnumType::kGardenDoor:
  case EnumType::kGuestBathroom:
  case EnumType::kGuestBedroom:
  case EnumType::kGuestRoom:
  case EnumType::kGym:
  case EnumType::kHallway:
  case EnumType::kHearthRoom:
  case EnumType::kKidsRoom:
  case EnumType::kKidsBedroom:
  case EnumType::kKitchen:
  case EnumType::kLaundryRoom:
  case EnumType::kLawn:
  case EnumType::kLibrary:
  case EnumType::kLivingRoom:
  case EnumType::kLounge:
  case EnumType::kMediaTvRoom:
  case EnumType::kMudRoom:
  case EnumType::kMusicRoom:
  case EnumType::kNursery:
  case EnumType::kOffice:
  case EnumType::kOutdoorKitchen:
  case EnumType::kOutside:
  case EnumType::kPantry:
  case EnumType::kParkingLot:
  case EnumType::kParlor:
  case EnumType::kPatio:
  case EnumType::kPlayRoom:
  case EnumType::kPoolRoom:
  case EnumType::kPorch:
  case EnumType::kPrimaryBathroom:
  case EnumType::kPrimaryBedroom:
  case EnumType::kRamp:
  case EnumType::kReceptionRoom:
  case EnumType::kRecreationRoom:
  case EnumType::kRoof:
  case EnumType::kSauna:
  case EnumType::kScullery:
  case EnumType::kSewingRoom:
  case EnumType::kShed:
  case EnumType::kSideDoor:
  case EnumType::kSideYard:
  case EnumType::kSittingRoom:
  case EnumType::kSnug:
  case EnumType::kSpa:
  case EnumType::kStaircase:
  case EnumType::kSteamRoom:
  case EnumType::kStorageRoom:
  case EnumType::kStudio:
  case EnumType::kStudy:
  case EnumType::kSunRoom:
  case EnumType::kSwimmingPool:
  case EnumType::kTerrace:
  case EnumType::kUtilityRoom:
  case EnumType::kWard:
  case EnumType::kWorkshop:
  case EnumType::kToilet:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::AtomicRequestTypeEnum val) {
  using EnumType = Globals::AtomicRequestTypeEnum;
  switch (val) {
  case EnumType::kBeginWrite:
  case EnumType::kCommitWrite:
  case EnumType::kRollbackWrite:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::LandmarkTag val) {
  using EnumType = Globals::LandmarkTag;
  switch (val) {
  case EnumType::kAirConditioner:
  case EnumType::kAirPurifier:
  case EnumType::kBackDoor:
  case EnumType::kBarStool:
  case EnumType::kBathMat:
  case EnumType::kBathtub:
  case EnumType::kBed:
  case EnumType::kBookshelf:
  case EnumType::kChair:
  case EnumType::kChristmasTree:
  case EnumType::kCoatRack:
  case EnumType::kCoffeeTable:
  case EnumType::kCookingRange:
  case EnumType::kCouch:
  case EnumType::kCountertop:
  case EnumType::kCradle:
  case EnumType::kCrib:
  case EnumType::kDesk:
  case EnumType::kDiningTable:
  case EnumType::kDishwasher:
  case EnumType::kDoor:
  case EnumType::kDresser:
  case EnumType::kLaundryDryer:
  case EnumType::kFan:
  case EnumType::kFireplace:
  case EnumType::kFreezer:
  case EnumType::kFrontDoor:
  case EnumType::kHighChair:
  case EnumType::kKitchenIsland:
  case EnumType::kLamp:
  case EnumType::kLitterBox:
  case EnumType::kMirror:
  case EnumType::kNightstand:
  case EnumType::kOven:
  case EnumType::kPetBed:
  case EnumType::kPetBowl:
  case EnumType::kPetCrate:
  case EnumType::kRefrigerator:
  case EnumType::kScratchingPost:
  case EnumType::kShoeRack:
  case EnumType::kShower:
  case EnumType::kSideDoor:
  case EnumType::kSink:
  case EnumType::kSofa:
  case EnumType::kStove:
  case EnumType::kTable:
  case EnumType::kToilet:
  case EnumType::kTrashCan:
  case EnumType::kLaundryWasher:
  case EnumType::kWindow:
  case EnumType::kWineCooler:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::LocationTag val) {
  using EnumType = Globals::LocationTag;
  switch (val) {
  case EnumType::kIndoor:
  case EnumType::kOutdoor:
  case EnumType::kInside:
  case EnumType::kOutside:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::MeasurementTypeEnum val) {
  using EnumType = Globals::MeasurementTypeEnum;
  switch (val) {
  case EnumType::kUnspecified:
  case EnumType::kVoltage:
  case EnumType::kActiveCurrent:
  case EnumType::kReactiveCurrent:
  case EnumType::kApparentCurrent:
  case EnumType::kActivePower:
  case EnumType::kReactivePower:
  case EnumType::kApparentPower:
  case EnumType::kRMSVoltage:
  case EnumType::kRMSCurrent:
  case EnumType::kRMSPower:
  case EnumType::kFrequency:
  case EnumType::kPowerFactor:
  case EnumType::kNeutralCurrent:
  case EnumType::kElectricalEnergy:
  case EnumType::kReactiveEnergy:
  case EnumType::kApparentEnergy:
  case EnumType::kSoilMoisture:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::PositionTag val) {
  using EnumType = Globals::PositionTag;
  switch (val) {
  case EnumType::kLeft:
  case EnumType::kRight:
  case EnumType::kTop:
  case EnumType::kBottom:
  case EnumType::kMiddle:
  case EnumType::kRow:
  case EnumType::kColumn:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::PowerThresholdSourceEnum val) {
  using EnumType = Globals::PowerThresholdSourceEnum;
  switch (val) {
  case EnumType::kContract:
  case EnumType::kRegulator:
  case EnumType::kEquipment:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::RelativePositionTag val) {
  using EnumType = Globals::RelativePositionTag;
  switch (val) {
  case EnumType::kUnder:
  case EnumType::kNextTo:
  case EnumType::kAround:
  case EnumType::kOn:
  case EnumType::kAbove:
  case EnumType::kFrontOf:
  case EnumType::kBehind:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::StreamUsageEnum val) {
  using EnumType = Globals::StreamUsageEnum;
  switch (val) {
  case EnumType::kInternal:
  case EnumType::kRecording:
  case EnumType::kAnalysis:
  case EnumType::kLiveView:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::TariffPriceTypeEnum val) {
  using EnumType = Globals::TariffPriceTypeEnum;
  switch (val) {
  case EnumType::kStandard:
  case EnumType::kCritical:
  case EnumType::kVirtual:
  case EnumType::kIncentive:
  case EnumType::kIncentiveSignal:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::TariffUnitEnum val) {
  using EnumType = Globals::TariffUnitEnum;
  switch (val) {
  case EnumType::kKWh:
  case EnumType::kKVAh:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::TestGlobalEnum val) {
  using EnumType = Globals::TestGlobalEnum;
  switch (val) {
  case EnumType::kSomeValue:
  case EnumType::kSomeOtherValue:
  case EnumType::kFinalValue:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::ThreeLevelAutoEnum val) {
  using EnumType = Globals::ThreeLevelAutoEnum;
  switch (val) {
  case EnumType::kAuto:
  case EnumType::kLow:
  case EnumType::kMedium:
  case EnumType::kHigh:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
static auto __attribute__((unused))
EnsureKnownEnumValue(Globals::WebRTCEndReasonEnum val) {
  using EnumType = Globals::WebRTCEndReasonEnum;
  switch (val) {
  case EnumType::kIceFailed:
  case EnumType::kIceTimeout:
  case EnumType::kUserHangup:
  case EnumType::kUserBusy:
  case EnumType::kReplaced:
  case EnumType::kNoUserMedia:
  case EnumType::kInviteTimeout:
  case EnumType::kAnsweredElsewhere:
  case EnumType::kOutOfResources:
  case EnumType::kMediaTimeout:
  case EnumType::kLowPower:
  case EnumType::kUnknownReason:
    return val;
  default:
    return EnumType::kUnknownEnumValue;
  }
}
} // namespace Clusters
} // namespace app
} // namespace chip
