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

// Prevent multiple inclusion
#pragma once

// ZCL attribute types
enum
{
    ZCL_NO_DATA_ATTRIBUTE_TYPE           = 0x00, // No data
    ZCL_BOOLEAN_ATTRIBUTE_TYPE           = 0x10, // Boolean
    ZCL_BITMAP8_ATTRIBUTE_TYPE           = 0x18, // 8-bit bitmap
    ZCL_BITMAP16_ATTRIBUTE_TYPE          = 0x19, // 16-bit bitmap
    ZCL_BITMAP24_ATTRIBUTE_TYPE          = 0x1A, // 24-bit bitmap
    ZCL_BITMAP32_ATTRIBUTE_TYPE          = 0x1B, // 32-bit bitmap
    ZCL_BITMAP64_ATTRIBUTE_TYPE          = 0x1F, // 64-bit bitmap
    ZCL_INT8U_ATTRIBUTE_TYPE             = 0x20, // Unsigned 8-bit integer
    ZCL_INT16U_ATTRIBUTE_TYPE            = 0x21, // Unsigned 16-bit integer
    ZCL_INT24U_ATTRIBUTE_TYPE            = 0x22, // Unsigned 24-bit integer
    ZCL_INT32U_ATTRIBUTE_TYPE            = 0x23, // Unsigned 32-bit integer
    ZCL_INT40U_ATTRIBUTE_TYPE            = 0x24, // Unsigned 40-bit integer
    ZCL_INT48U_ATTRIBUTE_TYPE            = 0x25, // Unsigned 48-bit integer
    ZCL_INT56U_ATTRIBUTE_TYPE            = 0x26, // Unsigned 56-bit integer
    ZCL_INT64U_ATTRIBUTE_TYPE            = 0x27, // Unsigned 64-bit integer
    ZCL_INT8S_ATTRIBUTE_TYPE             = 0x28, // Signed 8-bit integer
    ZCL_INT16S_ATTRIBUTE_TYPE            = 0x29, // Signed 16-bit integer
    ZCL_INT24S_ATTRIBUTE_TYPE            = 0x2A, // Signed 24-bit integer
    ZCL_INT32S_ATTRIBUTE_TYPE            = 0x2B, // Signed 32-bit integer
    ZCL_INT40S_ATTRIBUTE_TYPE            = 0x2C, // Signed 40-bit integer
    ZCL_INT48S_ATTRIBUTE_TYPE            = 0x2D, // Signed 48-bit integer
    ZCL_INT56S_ATTRIBUTE_TYPE            = 0x2E, // Signed 56-bit integer
    ZCL_INT64S_ATTRIBUTE_TYPE            = 0x2F, // Signed 64-bit integer
    ZCL_ENUM8_ATTRIBUTE_TYPE             = 0x30, // 8-bit enumeration
    ZCL_ENUM16_ATTRIBUTE_TYPE            = 0x31, // 16-bit enumeration
    ZCL_SINGLE_ATTRIBUTE_TYPE            = 0x39, // Single precision
    ZCL_DOUBLE_ATTRIBUTE_TYPE            = 0x3A, // Double precision
    ZCL_OCTET_STRING_ATTRIBUTE_TYPE      = 0x41, // Octet String
    ZCL_CHAR_STRING_ATTRIBUTE_TYPE       = 0x42, // Character String
    ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 0x43, // Long Octet String
    ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE  = 0x44, // Long Character String
    ZCL_ARRAY_ATTRIBUTE_TYPE             = 0x48, // List
    ZCL_STRUCT_ATTRIBUTE_TYPE            = 0x4C, // Structure
    ZCL_POSIX_MS_ATTRIBUTE_TYPE          = 0xD0, // Posix Time Milliseconds
    ZCL_SYSTIME_MS_ATTRIBUTE_TYPE        = 0xD1, // System Time Milliseconds
    ZCL_ELAPSED_S_ATTRIBUTE_TYPE         = 0xD2, // Elapsed Time Seconds
    ZCL_TEMPERATURE_ATTRIBUTE_TYPE       = 0xDB, // Temperature
    ZCL_TOD_ATTRIBUTE_TYPE               = 0xE0, // Time of day
    ZCL_DATE_ATTRIBUTE_TYPE              = 0xE1, // Date
    ZCL_EPOCH_US_ATTRIBUTE_TYPE          = 0xE3, // Epoch Microseconds
    ZCL_EPOCH_S_ATTRIBUTE_TYPE           = 0xE4, // Epoch Seconds
    ZCL_SYSTIME_US_ATTRIBUTE_TYPE        = 0xE5, // System Time Microseconds
    ZCL_PERCENT_ATTRIBUTE_TYPE           = 0xE6, // Percentage units 1%
    ZCL_PERCENT100THS_ATTRIBUTE_TYPE     = 0xE7, // Percentage units 0.01%
    ZCL_CLUSTER_ID_ATTRIBUTE_TYPE        = 0xE8, // Cluster ID
    ZCL_ATTRIB_ID_ATTRIBUTE_TYPE         = 0xE9, // Attribute ID
    ZCL_FIELD_ID_ATTRIBUTE_TYPE          = 0xEA, // Field ID
    ZCL_EVENT_ID_ATTRIBUTE_TYPE          = 0xEB, // Event ID
    ZCL_COMMAND_ID_ATTRIBUTE_TYPE        = 0xEC, // Command ID
    ZCL_ACTION_ID_ATTRIBUTE_TYPE         = 0xED, // Action ID
    ZCL_TRANS_ID_ATTRIBUTE_TYPE          = 0xEF, // Transaction ID
    ZCL_NODE_ID_ATTRIBUTE_TYPE           = 0xF0, // Node ID
    ZCL_VENDOR_ID_ATTRIBUTE_TYPE         = 0xF1, // Vendor ID
    ZCL_DEVTYPE_ID_ATTRIBUTE_TYPE        = 0xF2, // Device Type ID
    ZCL_FABRIC_ID_ATTRIBUTE_TYPE         = 0xF3, // Fabric ID
    ZCL_GROUP_ID_ATTRIBUTE_TYPE          = 0xF4, // Group ID
    ZCL_STATUS_ATTRIBUTE_TYPE            = 0xF5, // Status Code
    ZCL_DATA_VER_ATTRIBUTE_TYPE          = 0xF6, // Data Version
    ZCL_EVENT_NO_ATTRIBUTE_TYPE          = 0xF7, // Event Number
    ZCL_ENDPOINT_NO_ATTRIBUTE_TYPE       = 0xF8, // Endpoint Number
    ZCL_FABRIC_IDX_ATTRIBUTE_TYPE        = 0xF9, // Fabric Index
    ZCL_IPADR_ATTRIBUTE_TYPE             = 0xFA, // IP Address
    ZCL_IPV4ADR_ATTRIBUTE_TYPE           = 0xFB, // IPv4 Address
    ZCL_IPV6ADR_ATTRIBUTE_TYPE           = 0xFC, // IPv6 Address
    ZCL_IPV6PRE_ATTRIBUTE_TYPE           = 0xFD, // IPv6 Prefix
    ZCL_HWADR_ATTRIBUTE_TYPE             = 0xFE, // Hardware Address
    ZCL_UNKNOWN_ATTRIBUTE_TYPE           = 0xFF, // Unknown
};
