/*
 *
 *    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 WindowCovering {

// Enum for EndProductType
enum class EndProductType : uint8_t {
  kRollerShade = 0x00,
  kRomanShade = 0x01,
  kBalloonShade = 0x02,
  kWovenWood = 0x03,
  kPleatedShade = 0x04,
  kCellularShade = 0x05,
  kLayeredShade = 0x06,
  kLayeredShade2D = 0x07,
  kSheerShade = 0x08,
  kTiltOnlyInteriorBlind = 0x09,
  kInteriorBlind = 0x0A,
  kVerticalBlindStripCurtain = 0x0B,
  kInteriorVenetianBlind = 0x0C,
  kExteriorVenetianBlind = 0x0D,
  kLateralLeftCurtain = 0x0E,
  kLateralRightCurtain = 0x0F,
  kCentralCurtain = 0x10,
  kRollerShutter = 0x11,
  kExteriorVerticalScreen = 0x12,
  kAwningTerracePatio = 0x13,
  kAwningVerticalScreen = 0x14,
  kTiltOnlyPergola = 0x15,
  kSwingingShutter = 0x16,
  kSlidingShutter = 0x17,
  kUnknown = 0xFF,
  // 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 = 24,
};

// Enum for Type
enum class Type : uint8_t {
  kRollerShade = 0x00,
  kRollerShade2Motor = 0x01,
  kRollerShadeExterior = 0x02,
  kRollerShadeExterior2Motor = 0x03,
  kDrapery = 0x04,
  kAwning = 0x05,
  kShutter = 0x06,
  kTiltBlindTiltOnly = 0x07,
  kTiltBlindLiftAndTilt = 0x08,
  kProjectorScreen = 0x09,
  kUnknown = 0xFF,
  // 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 = 10,
};

// Bitmap for ConfigStatus
enum class ConfigStatus : uint8_t {
  kOperational = 0x1,
  kOnlineReserved = 0x2,
  kLiftMovementReversed = 0x4,
  kLiftPositionAware = 0x8,
  kTiltPositionAware = 0x10,
  kLiftEncoderControlled = 0x20,
  kTiltEncoderControlled = 0x40,
};

// Bitmap for Feature
enum class Feature : uint32_t {
  kLift = 0x1,
  kTilt = 0x2,
  kPositionAwareLift = 0x4,
  kAbsolutePosition = 0x8,
  kPositionAwareTilt = 0x10,
};

// Bitmap for Mode
enum class Mode : uint8_t {
  kMotorDirectionReversed = 0x1,
  kCalibrationMode = 0x2,
  kMaintenanceMode = 0x4,
  kLedFeedback = 0x8,
};

// Bitmap for OperationalStatus
enum class OperationalStatus : uint8_t {
  kGlobal = 0x3,
  kLift = 0xC,
  kTilt = 0x30,
};

// Bitmap for SafetyStatus
enum class SafetyStatus : uint16_t {
  kRemoteLockout = 0x1,
  kTamperDetection = 0x2,
  kFailedCommunication = 0x4,
  kPositionFailure = 0x8,
  kThermalProtection = 0x10,
  kObstacleDetected = 0x20,
  kPower = 0x40,
  kStopInput = 0x80,
  kMotorJammed = 0x100,
  kHardwareFailure = 0x200,
  kManualOperation = 0x400,
  kProtection = 0x800,
};
} // namespace WindowCovering
} // namespace Clusters
} // namespace app
} // namespace chip
