Apply Upstream code (2021-03-15)
[platform/upstream/connectedhomeip.git] / examples / tv-app / tv-common / gen / endpoint_config.h
1 /*
2  *
3  *    Copyright (c) 2021 Project CHIP Authors
4  *
5  *    Licensed under the Apache License, Version 2.0 (the "License");
6  *    you may not use this file except in compliance with the License.
7  *    You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *    Unless required by applicable law or agreed to in writing, software
12  *    distributed under the License is distributed on an "AS IS" BASIS,
13  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *    See the License for the specific language governing permissions and
15  *    limitations under the License.
16  */
17
18 // THIS FILE IS GENERATED BY ZAP
19
20 // Prevent multiple inclusion
21 #pragma once
22
23 // Default values for the attributes longer than a pointer,
24 // in a form of a binary blob
25 // Separate block is generated for big-endian and little-endian cases.
26 #if BIGENDIAN_CPU
27 #define GENERATED_DEFAULTS                                                                                                         \
28     {                                                                                                                              \
29         /* 0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
30             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                          \
31             /* Default for cluster: "Basic", attribute: "VendorName". side: server, big-endian */ /* 32 */ 0x00, 0x00, 0x00, 0x00, \
32             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
33             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                  \
34             /* Default for cluster: "Basic", attribute: "ProductName". side: server, big-endian */ /* 64 */ 0x00, 0x00, 0x00,      \
35             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
36             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                            \
37             /* Default for cluster: "Basic", attribute: "UserLabel". side: server, big-endian */ /* 96 */ 0x00, 0x00, 0x00, 0x00,  \
38             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                \
39             /* Default for cluster: "Basic", attribute: "Location". side: server, big-endian */ /* 112 */ 0x00, 0x00, 0x00, 0x00,  \
40             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
41             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
42             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
43             0x00, 0x00, 0x00,                                                                                                      \
44             /* Default for cluster: "Basic", attribute: "HardwareVersionString". side: server, big-endian */ /* 176 */ 0x00, 0x00, \
45             0x00, 0x00, /* Default for cluster: "Basic", attribute: "SoftwareVersion". side: server, big-endian */ /* 180 */ 0x00, \
46             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
47             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
48             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
49             0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                                    \
50             /* Default for cluster: "Basic", attribute: "SoftwareVersionString". side: server, big-endian */ /* 244 */ 0x00, 0x00, \
51             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
52             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
53             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
54             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
55             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
56             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
57             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
58             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
59             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
60             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
61             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
62             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
63             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
64             0x00, 0x00, 0x00, 0x00, 0x00,                                                                                          \
65             /* Default for cluster: "Color Control", attribute: "compensation text". side: server, big-endian */ /* 498 */         \
66             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                        \
67             /* Default for cluster: "IAS Zone", attribute: "IAS CIE address". side: server, big-endian */ /* 506 */ 0x00, 0x00,    \
68             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
69             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                      \
70             /* Default for cluster: "Application Basic", attribute: "vendor name". side: server, big-endian */ /* 538 */           \
71             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
72             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                \
73             0x00, /* Default for cluster: "Application Basic", attribute: "application name". side: server, big-endian */          \
74             /* 570 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
75             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                          \
76             0x00, /* Default for cluster: "Application Basic", attribute: "application id". side: server, big-endian */            \
77     }
78
79 #else // !BIGENDIAN_CPU
80 #define GENERATED_DEFAULTS                                                                                                         \
81     {                                                                                                                              \
82         /* 0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
83             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                          \
84             /* Default for cluster: "Basic", attribute: "VendorName". side: server, little-endian */ /* 32 */ 0x00, 0x00, 0x00,    \
85             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
86             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                            \
87             /* Default for cluster: "Basic", attribute: "ProductName". side: server, little-endian */ /* 64 */ 0x00, 0x00, 0x00,   \
88             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
89             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                            \
90             /* Default for cluster: "Basic", attribute: "UserLabel". side: server, little-endian */ /* 96 */ 0x00, 0x00, 0x00,     \
91             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                          \
92             /* Default for cluster: "Basic", attribute: "Location". side: server, little-endian */ /* 112 */ 0x00, 0x00, 0x00,     \
93             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
94             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
95             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
96             0x00, 0x00, 0x00, 0x00,                                                                                                \
97             /* Default for cluster: "Basic", attribute: "HardwareVersionString". side: server, little-endian */ /* 176 */          \
98             0x00, 0x00, 0x00, 0x00,                                                                                                \
99             /* Default for cluster: "Basic", attribute: "SoftwareVersion". side: server, little-endian */ /* 180 */ 0x00, 0x00,    \
100             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
101             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
102             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
103             0x00, 0x00, 0x00, 0x00, 0x00,                                                                                          \
104             /* Default for cluster: "Basic", attribute: "SoftwareVersionString". side: server, little-endian */ /* 244 */          \
105             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
106             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
107             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
108             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
109             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
110             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
111             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
112             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
113             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
114             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
115             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
116             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
117             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
118             0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                                                    \
119             0x00, /* Default for cluster: "Color Control", attribute: "compensation text". side: server, little-endian */          \
120             /* 498 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                              \
121             /* Default for cluster: "IAS Zone", attribute: "IAS CIE address". side: server, little-endian */ /* 506 */ 0x00, 0x00, \
122             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
123             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                      \
124             /* Default for cluster: "Application Basic", attribute: "vendor name". side: server, little-endian */ /* 538 */        \
125             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      \
126             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                                \
127             0x00, /* Default for cluster: "Application Basic", attribute: "application name". side: server, little-endian */       \
128             /* 570 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  \
129             0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                                          \
130             0x00, /* Default for cluster: "Application Basic", attribute: "application id". side: server, little-endian */         \
131     }
132
133 #endif // BIGENDIAN_CPU
134
135 #define GENERATED_DEFAULTS_COUNT (12)
136
137 #define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE
138 #define ZAP_LONG_DEFAULTS_INDEX(index)                                                                                             \
139     {                                                                                                                              \
140         (uint8_t *) (&generatedDefaults[index])                                                                                    \
141     }
142 #define ZAP_MIN_MAX_DEFAULTS_INDEX(index)                                                                                          \
143     {                                                                                                                              \
144         (uint8_t *) (&minMaxDefault[index])                                                                                        \
145     }
146
147 // This is an array of EmberAfAttributeMinMaxValue structures.
148 #define GENERATED_MIN_MAX_DEFAULT_COUNT 0
149 #define GENERATED_MIN_MAX_DEFAULTS                                                                                                 \
150     {                                                                                                                              \
151     }
152
153 #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
154 // This is an array of EmberAfAttributeMetadata structures.
155 #define GENERATED_ATTRIBUTE_COUNT 111
156 #define GENERATED_ATTRIBUTES                                                                                                       \
157     {                                                                                                                              \
158         { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } }, /* Identify (server): cluster revision */                           \
159             {                                                                                                                      \
160                 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0x0000 }                                  \
161             },                                                          /* Identify (server): identify time */                     \
162             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },      /* Groups (server): cluster revision */                    \
163             { 0x0000, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } },     /* Groups (server): name support */                        \
164             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },      /* Scenes (server): cluster revision */                    \
165             { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },    /* Scenes (server): scene count */                         \
166             { 0x0001, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },    /* Scenes (server): current scene */                       \
167             { 0x0002, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0000 } }, /* Scenes (server): current group */                       \
168             { 0x0003, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0x00 } },  /* Scenes (server): scene valid */                         \
169             { 0x0004, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } },     /* Scenes (server): name support */                        \
170             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } },      /* On/off (server): cluster revision */                    \
171             { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0x00 } },  /* On/off (server): on/off */                              \
172             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },      /* Level Control (server): cluster revision */             \
173             { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },    /* Level Control (server): current level */                \
174             {                                                                                                                      \
175                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 3 }                                      \
176             }, /* Basic (server): cluster revision */                                                                              \
177             {                                                                                                                      \
178                 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 0 }                                      \
179             }, /* Basic (server): InteractionModelVersion */                                                                       \
180             {                                                                                                                      \
181                 0x0001, ZAP_TYPE(CHAR_STRING), 32, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(0) }       \
182             },                                                                                 /* Basic (server): VendorName */    \
183             { 0x0002, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 0 } }, /* Basic (server): VendorID */      \
184             {                                                                                                                      \
185                 0x0003, ZAP_TYPE(CHAR_STRING), 32, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(32) }      \
186             },                                                                                 /* Basic (server): ProductName */   \
187             { 0x0004, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 0 } }, /* Basic (server): ProductID */     \
188             { 0x0005,                                                                                                              \
189               ZAP_TYPE(CHAR_STRING),                                                                                               \
190               32,                                                                                                                  \
191               ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE),                                                        \
192               { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(64) } }, /* Basic (server): UserLabel */                                       \
193             { 0x0006,                                                                                                              \
194               ZAP_TYPE(CHAR_STRING),                                                                                               \
195               16,                                                                                                                  \
196               ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE),                                                        \
197               { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(96) } }, /* Basic (server): Location */                                        \
198             {                                                                                                                      \
199                 0x0007, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 0x00 }                                   \
200             }, /* Basic (server): HardwareVersion */                                                                               \
201             {                                                                                                                      \
202                 0x0008, ZAP_TYPE(CHAR_STRING), 64, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(112) }     \
203             }, /* Basic (server): HardwareVersionString */                                                                         \
204             {                                                                                                                      \
205                 0x0009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(176) }           \
206             }, /* Basic (server): SoftwareVersion */                                                                               \
207             {                                                                                                                      \
208                 0x000A, ZAP_TYPE(CHAR_STRING), 64, ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(180) }     \
209             }, /* Basic (server): SoftwareVersionString */                                                                         \
210             {                                                                                                                      \
211                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
212             },                                                      /* Door Lock (client): cluster revision */                     \
213             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },  /* Door Lock (server): cluster revision */                     \
214             { 0x0000, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } },   /* Door Lock (server): lock state */                           \
215             { 0x0001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } },   /* Door Lock (server): lock type */                            \
216             { 0x0002, ZAP_TYPE(BOOLEAN), 1, 0, { (uint8_t *) 0 } }, /* Door Lock (server): actuator enabled */                     \
217             {                                                                                                                      \
218                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
219             },                                                          /* Barrier Control (client): cluster revision */           \
220             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Barrier Control (server): cluster revision */           \
221             { 0x0001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } },       /* Barrier Control (server): barrier moving state */       \
222             { 0x0002, ZAP_TYPE(BITMAP16), 2, 0, { (uint8_t *) 0 } },    /* Barrier Control (server): barrier safety status */      \
223             { 0x0003, ZAP_TYPE(BITMAP8), 1, 0, { (uint8_t *) 0 } },     /* Barrier Control (server): barrier capabilities */       \
224             { 0x000A, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },       /* Barrier Control (server): barrier position */           \
225             {                                                                                                                      \
226                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
227             },                                                          /* Color Control (client): cluster revision */             \
228             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },      /* Color Control (server): cluster revision */             \
229             { 0x0000, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },    /* Color Control (server): current hue */                  \
230             { 0x0001, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },    /* Color Control (server): current saturation */           \
231             { 0x0002, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0000 } }, /* Color Control (server): remaining time */               \
232             { 0x0003, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x616B } }, /* Color Control (server): current x */                    \
233             { 0x0004, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x607D } }, /* Color Control (server): current y */                    \
234             { 0x0005, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0 } },       /* Color Control (server): drift compensation */           \
235             {                                                                                                                      \
236                 0x0006, ZAP_TYPE(CHAR_STRING), 254, 0, { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(244) }                                \
237             },                                                          /* Color Control (server): compensation text */            \
238             { 0x0007, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x00FA } }, /* Color Control (server): color temperature */            \
239             { 0x0008, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x01 } },    /* Color Control (server): color mode */                   \
240             {                                                                                                                      \
241                 0x000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0x00 }                                   \
242             },                                                     /* Color Control (server): color control options */             \
243             { 0x0010, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): number of primaries */               \
244             { 0x0011, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 1 x */                       \
245             { 0x0012, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 1 y */                       \
246             { 0x0013, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 1 intensity */               \
247             { 0x0015, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 2 x */                       \
248             { 0x0016, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 2 y */                       \
249             { 0x0017, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 2 intensity */               \
250             { 0x0019, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 3 x */                       \
251             { 0x001A, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 3 y */                       \
252             { 0x001B, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 3 intensity */               \
253             { 0x0020, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 4 x */                       \
254             { 0x0021, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 4 y */                       \
255             { 0x0022, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 4 intensity */               \
256             { 0x0024, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 5 x */                       \
257             { 0x0025, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 5 y */                       \
258             { 0x0026, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 5 intensity */               \
259             { 0x0028, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 6 x */                       \
260             { 0x0029, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Color Control (server): primary 6 y */                       \
261             { 0x002A, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0 } },  /* Color Control (server): primary 6 intensity */               \
262             {                                                                                                                      \
263                 0x0030, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
264             }, /* Color Control (server): white point x */                                                                         \
265             {                                                                                                                      \
266                 0x0031, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
267             }, /* Color Control (server): white point y */                                                                         \
268             {                                                                                                                      \
269                 0x0032, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
270             }, /* Color Control (server): color point r x */                                                                       \
271             {                                                                                                                      \
272                 0x0033, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
273             }, /* Color Control (server): color point r y */                                                                       \
274             {                                                                                                                      \
275                 0x0034, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                        \
276             }, /* Color Control (server): color point r intensity */                                                               \
277             {                                                                                                                      \
278                 0x0036, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
279             }, /* Color Control (server): color point g x */                                                                       \
280             {                                                                                                                      \
281                 0x0037, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
282             }, /* Color Control (server): color point g y */                                                                       \
283             {                                                                                                                      \
284                 0x0038, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                        \
285             }, /* Color Control (server): color point g intensity */                                                               \
286             {                                                                                                                      \
287                 0x003A, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
288             }, /* Color Control (server): color point b x */                                                                       \
289             {                                                                                                                      \
290                 0x003B, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
291             }, /* Color Control (server): color point b y */                                                                       \
292             {                                                                                                                      \
293                 0x003C, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                        \
294             }, /* Color Control (server): color point b intensity */                                                               \
295             {                                                                                                                      \
296                 0x400D, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 }                                                                  \
297             }, /* Color Control (server): couple color temp to level min-mireds */                                                 \
298             {                                                                                                                      \
299                 0x4010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) 0 }                                       \
300             }, /* Color Control (server): start up color temperature mireds */                                                     \
301             { 0x4000, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0000 } },   /* Color Control (server): enhanced current hue */       \
302             { 0x4001, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x01 } },      /* Color Control (server): enhanced color mode */        \
303             { 0x4002, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },      /* Color Control (server): color loop active */          \
304             { 0x4003, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0x00 } },      /* Color Control (server): color loop direction */       \
305             { 0x4004, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0019 } },   /* Color Control (server): color loop time */            \
306             { 0x400A, ZAP_TYPE(BITMAP16), 2, 0, { (uint8_t *) 0x0000 } }, /* Color Control (server): color capabilities */         \
307             { 0x400B, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0000 } },   /* Color Control (server): color temp physical min */    \
308             { 0x400C, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0xFEFF } },   /* Color Control (server): color temp physical max */    \
309             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 3 } },        /* Temperature Measurement (server): cluster revision */ \
310             { 0x0000, ZAP_TYPE(INT16S), 2, 0, { (uint8_t *) 0x8000 } },   /* Temperature Measurement (server): measured value */   \
311             { 0x0001, ZAP_TYPE(INT16S), 2, 0, { (uint8_t *) 0x8000 } }, /* Temperature Measurement (server): min measured value */ \
312             { 0x0002, ZAP_TYPE(INT16S), 2, 0, { (uint8_t *) 0x8000 } }, /* Temperature Measurement (server): max measured value */ \
313             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 2 } },      /* IAS Zone (server): cluster revision */                  \
314             { 0x0000, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x00 } },    /* IAS Zone (server): zone state */                        \
315             { 0x0001, ZAP_TYPE(ENUM16), 2, 0, { (uint8_t *) 0 } },      /* IAS Zone (server): zone type */                         \
316             { 0x0002, ZAP_TYPE(BITMAP16), 2, 0, { (uint8_t *) 0x0000 } }, /* IAS Zone (server): zone status */                     \
317             {                                                                                                                      \
318                 0x0010, ZAP_TYPE(IEEE_ADDRESS), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(498) }      \
319             },                                                          /* IAS Zone (server): IAS CIE address */                   \
320             { 0x0011, ZAP_TYPE(INT8U), 1, 0, { (uint8_t *) 0xff } },    /* IAS Zone (server): Zone ID */                           \
321             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Low Power (server): cluster revision */                 \
322             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Application Basic (server): cluster revision */         \
323             {                                                                                                                      \
324                 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(506) }                                \
325             },                                                     /* Application Basic (server): vendor name */                   \
326             { 0x0001, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Application Basic (server): vendor id */                     \
327             {                                                                                                                      \
328                 0x0002, ZAP_TYPE(OCTET_STRING), 32, 0, { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(538) }                                \
329             },                                                     /* Application Basic (server): application name */              \
330             { 0x0003, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } }, /* Application Basic (server): product id */                    \
331             {                                                                                                                      \
332                 0x0005, ZAP_TYPE(OCTET_STRING), 32, 0, { (uint8_t *) ZAP_LONG_DEFAULTS_INDEX(570) }                                \
333             },                                                          /* Application Basic (server): application id */           \
334             { 0x0006, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } },      /* Application Basic (server): catalog vendor id */        \
335             { 0x0007, ZAP_TYPE(ENUM8), 1, 0, { (uint8_t *) 0x01 } },    /* Application Basic (server): application satus */        \
336             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Media Playback (server): cluster revision */            \
337             { 0x0000, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0 } },      /* Media Playback (server): current state */               \
338             { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, { (uint8_t *) 0x0001 } }, /* Content Launch (server): cluster revision */            \
339     }
340
341 // This is an array of EmberAfCluster structures.
342 #define ZAP_ATTRIBUTE_INDEX(index) ((EmberAfAttributeMetadata *) (&generatedAttributes[index]))
343
344 // Cluster function static arrays
345 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
346     const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = {                                                          \
347         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
348         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerAttributeChangedCallback,                                      \
349     };                                                                                                                             \
350     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
351         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
352     };                                                                                                                             \
353     const EmberAfGenericClusterFunction chipFuncArrayScenesServer[] = {                                                            \
354         (EmberAfGenericClusterFunction) emberAfScenesClusterServerInitCallback,                                                    \
355     };                                                                                                                             \
356     const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = {                                                             \
357         (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback,                                                     \
358     };                                                                                                                             \
359     const EmberAfGenericClusterFunction chipFuncArrayLevelControlServer[] = {                                                      \
360         (EmberAfGenericClusterFunction) emberAfLevelControlClusterServerInitCallback,                                              \
361     };                                                                                                                             \
362     const EmberAfGenericClusterFunction chipFuncArrayDoorLockServer[] = {                                                          \
363         (EmberAfGenericClusterFunction) emberAfDoorLockClusterServerAttributeChangedCallback,                                      \
364     };                                                                                                                             \
365     const EmberAfGenericClusterFunction chipFuncArrayColorControlServer[] = {                                                      \
366         (EmberAfGenericClusterFunction) emberAfColorControlClusterServerInitCallback,                                              \
367     };                                                                                                                             \
368     const EmberAfGenericClusterFunction chipFuncArrayIasZoneServer[] = {                                                           \
369         (EmberAfGenericClusterFunction) emberAfIasZoneClusterServerInitCallback,                                                   \
370         (EmberAfGenericClusterFunction) emberAfIasZoneClusterServerMessageSentCallback,                                            \
371         (EmberAfGenericClusterFunction) emberAfIasZoneClusterServerPreAttributeChangedCallback,                                    \
372     };
373
374 #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
375 #define GENERATED_CLUSTER_COUNT 18
376 #define GENERATED_CLUSTERS                                                                                                         \
377     {                                                                                                                              \
378         { 0x0003,                                                                                                                  \
379           ZAP_ATTRIBUTE_INDEX(0),                                                                                                  \
380           2,                                                                                                                       \
381           4,                                                                                                                       \
382           ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION),               \
383           chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */                                             \
384             { 0x0004,                                                                                                              \
385               ZAP_ATTRIBUTE_INDEX(2),                                                                                              \
386               2,                                                                                                                   \
387               3,                                                                                                                   \
388               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION),                                                          \
389               chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */                                             \
390             { 0x0005,                                                                                                              \
391               ZAP_ATTRIBUTE_INDEX(4),                                                                                              \
392               6,                                                                                                                   \
393               8,                                                                                                                   \
394               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION),                                                          \
395               chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */                                             \
396             { 0x0006,                                                                                                              \
397               ZAP_ATTRIBUTE_INDEX(10),                                                                                             \
398               2,                                                                                                                   \
399               3,                                                                                                                   \
400               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION),                                                          \
401               chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/off (server) */                                              \
402             { 0x0008,                                                                                                              \
403               ZAP_ATTRIBUTE_INDEX(12),                                                                                             \
404               2,                                                                                                                   \
405               3,                                                                                                                   \
406               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION),                                                          \
407               chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */                                \
408             {                                                                                                                      \
409                 0x0028, ZAP_ATTRIBUTE_INDEX(14), 12, 254, ZAP_CLUSTER_MASK(SERVER), NULL                                           \
410             }, /* Endpoint: 1, Cluster: Basic (server) */                                                                          \
411             {                                                                                                                      \
412                 0x0101, ZAP_ATTRIBUTE_INDEX(26), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
413             }, /* Endpoint: 1, Cluster: Door Lock (client) */                                                                      \
414             { 0x0101,                                                                                                              \
415               ZAP_ATTRIBUTE_INDEX(27),                                                                                             \
416               4,                                                                                                                   \
417               5,                                                                                                                   \
418               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION),                                             \
419               chipFuncArrayDoorLockServer }, /* Endpoint: 1, Cluster: Door Lock (server) */                                        \
420             {                                                                                                                      \
421                 0x0103, ZAP_ATTRIBUTE_INDEX(31), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
422             }, /* Endpoint: 1, Cluster: Barrier Control (client) */                                                                \
423             {                                                                                                                      \
424                 0x0103, ZAP_ATTRIBUTE_INDEX(32), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL                                              \
425             }, /* Endpoint: 1, Cluster: Barrier Control (server) */                                                                \
426             {                                                                                                                      \
427                 0x0300, ZAP_ATTRIBUTE_INDEX(37), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
428             }, /* Endpoint: 1, Cluster: Color Control (client) */                                                                  \
429             { 0x0300,                                                                                                              \
430               ZAP_ATTRIBUTE_INDEX(38),                                                                                             \
431               51,                                                                                                                  \
432               336,                                                                                                                 \
433               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION),                                                          \
434               chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */                                \
435             {                                                                                                                      \
436                 0x0402, ZAP_ATTRIBUTE_INDEX(89), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL                                              \
437             }, /* Endpoint: 1, Cluster: Temperature Measurement (server) */                                                        \
438             { 0x0500,                                                                                                              \
439               ZAP_ATTRIBUTE_INDEX(93),                                                                                             \
440               6,                                                                                                                   \
441               16,                                                                                                                  \
442               ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) |      \
443                   ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION),                                                                         \
444               chipFuncArrayIasZoneServer }, /* Endpoint: 1, Cluster: IAS Zone (server) */                                          \
445             {                                                                                                                      \
446                 0x0508, ZAP_ATTRIBUTE_INDEX(99), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL                                              \
447             }, /* Endpoint: 1, Cluster: Low Power (server) */                                                                      \
448             {                                                                                                                      \
449                 0x050D, ZAP_ATTRIBUTE_INDEX(100), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL                                           \
450             }, /* Endpoint: 1, Cluster: Application Basic (server) */                                                              \
451             {                                                                                                                      \
452                 0xF001, ZAP_ATTRIBUTE_INDEX(108), 2, 4, ZAP_CLUSTER_MASK(SERVER), NULL                                             \
453             }, /* Endpoint: 1, Cluster: Media Playback (server) */                                                                 \
454             {                                                                                                                      \
455                 0xF002, ZAP_ATTRIBUTE_INDEX(110), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL                                             \
456             }, /* Endpoint: 1, Cluster: Content Launch (server) */                                                                 \
457     }
458
459 #define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
460
461 // This is an array of EmberAfEndpointType structures.
462 #define GENERATED_ENDPOINT_TYPES                                                                                                   \
463     {                                                                                                                              \
464         { ZAP_CLUSTER_INDEX(0), 18, 766 },                                                                                         \
465     }
466
467 // Largest attribute size is needed for various buffers
468 #define ATTRIBUTE_LARGEST (254)
469
470 // Total size of singleton attributes
471 #define ATTRIBUTE_SINGLETONS_SIZE (254)
472
473 // Total size of attribute storage
474 #define ATTRIBUTE_MAX_SIZE (766)
475
476 // Number of fixed endpoints
477 #define FIXED_ENDPOINT_COUNT (1)
478
479 // Array of endpoints that are supported, the data inside
480 // the array is the endpoint number.
481 #define FIXED_ENDPOINT_ARRAY                                                                                                       \
482     {                                                                                                                              \
483         0x0001                                                                                                                     \
484     }
485
486 // Array of profile ids
487 #define FIXED_PROFILE_IDS                                                                                                          \
488     {                                                                                                                              \
489         0x0103                                                                                                                     \
490     }
491
492 // Array of device ids
493 #define FIXED_DEVICE_IDS                                                                                                           \
494     {                                                                                                                              \
495         0                                                                                                                          \
496     }
497
498 // Array of device versions
499 #define FIXED_DEVICE_VERSIONS                                                                                                      \
500     {                                                                                                                              \
501         1                                                                                                                          \
502     }
503
504 // Array of endpoint types supported on each endpoint
505 #define FIXED_ENDPOINT_TYPES                                                                                                       \
506     {                                                                                                                              \
507         0                                                                                                                          \
508     }
509
510 // Array of networks supported on each endpoint
511 #define FIXED_NETWORKS                                                                                                             \
512     {                                                                                                                              \
513         1                                                                                                                          \
514     }
515
516 // Array of EmberAfCommandMetadata structs.
517 #define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask
518 #define EMBER_AF_GENERATED_COMMAND_COUNT (141)
519 #define GENERATED_COMMANDS                                                                                                         \
520     {                                                                                                                              \
521         { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) },     /* Identify (server): Identify */                                 \
522             { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (server): IdentifyQueryResponse */                    \
523             { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (server): IdentifyQuery */                            \
524             { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): AddGroup */                                   \
525             { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): AddGroupResponse */                           \
526             { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): ViewGroup */                                  \
527             { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): ViewGroupResponse */                          \
528             { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): GetGroupMembership */                         \
529             { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): GetGroupMembershipResponse */                 \
530             { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): RemoveGroup */                                \
531             { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (server): RemoveGroupResponse */                        \
532             { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): RemoveAllGroups */                            \
533             { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (server): AddGroupIfIdentifying */                      \
534             { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): AddScene */                                   \
535             { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): AddSceneResponse */                           \
536             { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): ViewScene */                                  \
537             { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): ViewSceneResponse */                          \
538             { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RemoveScene */                                \
539             { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): RemoveSceneResponse */                        \
540             { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RemoveAllScenes */                            \
541             { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): RemoveAllScenesResponse */                    \
542             { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): StoreScene */                                 \
543             { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): StoreSceneResponse */                         \
544             { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): RecallScene */                                \
545             { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (server): GetSceneMembership */                         \
546             { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (server): GetSceneMembershipResponse */                 \
547             { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Off */                                        \
548             { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): On */                                         \
549             { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (server): Toggle */                                     \
550             { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveToLevel */                         \
551             { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Move */                                \
552             { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Step */                                \
553             { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): Stop */                                \
554             { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveToLevelWithOnOff */                \
555             { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): MoveWithOnOff */                       \
556             { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): StepWithOnOff */                       \
557             { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (server): StopWithOnOff */                       \
558             { 0x0028, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (server): StartUp */                                     \
559             { 0x0028, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (server): ShutDown */                                    \
560             { 0x0028, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (server): Leave */                                       \
561             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): LockDoor */                                \
562             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): LockDoorResponse */                        \
563             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (server): LockDoor */                                \
564             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (server): LockDoorResponse */                        \
565             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): UnlockDoor */                              \
566             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): UnlockDoorResponse */                      \
567             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (server): UnlockDoor */                              \
568             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (server): UnlockDoorResponse */                      \
569             { 0x0101, 0x03,                                                                                                        \
570               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): UnlockWithTimeout */ \
571             { 0x0101, 0x03,                                                                                                        \
572               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): UnlockWithTimeout */ \
573             { 0x0101, 0x04,                                                                                                        \
574               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetLogRecord */      \
575             { 0x0101, 0x04,                                                                                                        \
576               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetLogRecord */      \
577             { 0x0101, 0x05,                                                                                                        \
578               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPin */            \
579             { 0x0101, 0x05,                                                                                                        \
580               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetPin */            \
581             { 0x0101, 0x06,                                                                                                        \
582               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPin */            \
583             { 0x0101, 0x06,                                                                                                        \
584               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetPin */            \
585             { 0x0101, 0x07,                                                                                                        \
586               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPin */          \
587             { 0x0101, 0x07,                                                                                                        \
588               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearPin */          \
589             { 0x0101, 0x08,                                                                                                        \
590               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllPins */      \
591             { 0x0101, 0x08,                                                                                                        \
592               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearAllPins */      \
593             {                                                                                                                      \
594                 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
595             }, /* Door Lock (client): SetWeekdaySchedule */                                                                        \
596             {                                                                                                                      \
597                 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
598             }, /* Door Lock (server): SetWeekdaySchedule */                                                                        \
599             {                                                                                                                      \
600                 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
601             }, /* Door Lock (client): GetWeekdaySchedule */                                                                        \
602             {                                                                                                                      \
603                 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
604             }, /* Door Lock (server): GetWeekdaySchedule */                                                                        \
605             {                                                                                                                      \
606                 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
607             }, /* Door Lock (client): ClearWeekdaySchedule */                                                                      \
608             {                                                                                                                      \
609                 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
610             }, /* Door Lock (server): ClearWeekdaySchedule */                                                                      \
611             {                                                                                                                      \
612                 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
613             }, /* Door Lock (client): SetYeardaySchedule */                                                                        \
614             {                                                                                                                      \
615                 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
616             }, /* Door Lock (server): SetYeardaySchedule */                                                                        \
617             {                                                                                                                      \
618                 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
619             }, /* Door Lock (client): GetYeardaySchedule */                                                                        \
620             {                                                                                                                      \
621                 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
622             }, /* Door Lock (server): GetYeardaySchedule */                                                                        \
623             {                                                                                                                      \
624                 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
625             }, /* Door Lock (client): ClearYeardaySchedule */                                                                      \
626             {                                                                                                                      \
627                 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
628             }, /* Door Lock (server): ClearYeardaySchedule */                                                                      \
629             {                                                                                                                      \
630                 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
631             }, /* Door Lock (client): SetHolidaySchedule */                                                                        \
632             {                                                                                                                      \
633                 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
634             }, /* Door Lock (server): SetHolidaySchedule */                                                                        \
635             {                                                                                                                      \
636                 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
637             }, /* Door Lock (client): GetHolidaySchedule */                                                                        \
638             {                                                                                                                      \
639                 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
640             }, /* Door Lock (server): GetHolidaySchedule */                                                                        \
641             {                                                                                                                      \
642                 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
643             }, /* Door Lock (client): ClearHolidaySchedule */                                                                      \
644             {                                                                                                                      \
645                 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
646             }, /* Door Lock (server): ClearHolidaySchedule */                                                                      \
647             { 0x0101, 0x14,                                                                                                        \
648               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetUserType */       \
649             { 0x0101, 0x14,                                                                                                        \
650               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetUserType */       \
651             { 0x0101, 0x15,                                                                                                        \
652               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetUserType */       \
653             { 0x0101, 0x15,                                                                                                        \
654               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetUserType */       \
655             { 0x0101, 0x16,                                                                                                        \
656               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfid */           \
657             { 0x0101, 0x16,                                                                                                        \
658               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): SetRfid */           \
659             { 0x0101, 0x17,                                                                                                        \
660               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfid */           \
661             { 0x0101, 0x17,                                                                                                        \
662               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): GetRfid */           \
663             { 0x0101, 0x18,                                                                                                        \
664               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfid */         \
665             { 0x0101, 0x18,                                                                                                        \
666               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearRfid */         \
667             { 0x0101, 0x19,                                                                                                        \
668               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllRfids */     \
669             { 0x0101, 0x19,                                                                                                        \
670               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Door Lock (server): ClearAllRfids */     \
671             { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlGoToPercent */         \
672             { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (server): BarrierControlGoToPercent */         \
673             { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlStop */                \
674             { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (server): BarrierControlStop */                \
675             { 0x0300, 0x00,                                                                                                        \
676               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveToHue */     \
677             { 0x0300, 0x00,                                                                                                        \
678               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): MoveToHue */     \
679             { 0x0300, 0x01,                                                                                                        \
680               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveHue */       \
681             { 0x0300, 0x01,                                                                                                        \
682               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): MoveHue */       \
683             { 0x0300, 0x02,                                                                                                        \
684               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StepHue */       \
685             { 0x0300, 0x02,                                                                                                        \
686               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): StepHue */       \
687             {                                                                                                                      \
688                 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
689             }, /* Color Control (client): MoveToSaturation */                                                                      \
690             {                                                                                                                      \
691                 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
692             }, /* Color Control (server): MoveToSaturation */                                                                      \
693             {                                                                                                                      \
694                 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
695             }, /* Color Control (client): MoveSaturation */                                                                        \
696             {                                                                                                                      \
697                 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
698             }, /* Color Control (server): MoveSaturation */                                                                        \
699             {                                                                                                                      \
700                 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
701             }, /* Color Control (client): StepSaturation */                                                                        \
702             {                                                                                                                      \
703                 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
704             }, /* Color Control (server): StepSaturation */                                                                        \
705             {                                                                                                                      \
706                 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
707             }, /* Color Control (client): MoveToHueAndSaturation */                                                                \
708             {                                                                                                                      \
709                 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
710             },                                                   /* Color Control (server): MoveToHueAndSaturation */              \
711             { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveToColor */                         \
712             { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): MoveToColor */                         \
713             { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveColor */                           \
714             { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): MoveColor */                           \
715             { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): StepColor */                           \
716             { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (server): StepColor */                           \
717             {                                                                                                                      \
718                 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
719             }, /* Color Control (client): MoveToColorTemperature */                                                                \
720             {                                                                                                                      \
721                 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
722             }, /* Color Control (server): MoveToColorTemperature */                                                                \
723             { 0x0300, 0x47,                                                                                                        \
724               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StopMoveStep */  \
725             { 0x0300, 0x47,                                                                                                        \
726               ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* Color Control (server): StopMoveStep */  \
727             {                                                                                                                      \
728                 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
729             }, /* Color Control (client): MoveColorTemperature */                                                                  \
730             {                                                                                                                      \
731                 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
732             }, /* Color Control (server): MoveColorTemperature */                                                                  \
733             {                                                                                                                      \
734                 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
735             }, /* Color Control (client): StepColorTemperature */                                                                  \
736             {                                                                                                                      \
737                 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER)                                \
738             },                                                   /* Color Control (server): StepColorTemperature */                \
739             { 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* IAS Zone (server): ZoneEnrollResponse */                       \
740             { 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IAS Zone (server): ZoneStatusChangeNotification */             \
741             { 0x0500, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IAS Zone (server): ZoneEnrollRequest */                        \
742             { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Low Power (server): Sleep */                                   \
743             { 0xF001, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): PlayRequest */                        \
744             { 0xF001, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Media Playback (server): Playback */                           \
745             { 0xF001, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): PauseRequest */                       \
746             { 0xF001, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): StopRequest */                        \
747             { 0xF001, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): StartOverRequest */                   \
748             { 0xF001, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): PreviousRequest */                    \
749             { 0xF001, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): NextRequest */                        \
750             { 0xF001, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): RewindRequest */                      \
751             { 0xF001, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): FastForwardRequest */                 \
752             { 0xF001, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): SkipForwardRequest */                 \
753             { 0xF001, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (server): SkipBackwardRequest */                \
754             { 0xF002, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Content Launch (server): LaunchContent */                      \
755             { 0xF002, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Content Launch (server): LaunchContentResponse */              \
756             { 0xF002, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Content Launch (server): LaunchURL */                          \
757             { 0xF002, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Content Launch (server): LaunchURLResponse */                  \
758     }
759
760 // Array of EmberAfManufacturerCodeEntry structures for commands.
761 #define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (0)
762 #define GENERATED_COMMAND_MANUFACTURER_CODES                                                                                       \
763     {                                                                                                                              \
764         {                                                                                                                          \
765             0x00, 0x00                                                                                                             \
766         }                                                                                                                          \
767     }
768
769 // This is an array of EmberAfManufacturerCodeEntry structures for clusters.
770 #define GENERATED_CLUSTER_MANUFACTURER_CODE_COUNT (0)
771 #define GENERATED_CLUSTER_MANUFACTURER_CODES                                                                                       \
772     {                                                                                                                              \
773         {                                                                                                                          \
774             0x00, 0x00                                                                                                             \
775         }                                                                                                                          \
776     }
777
778 // This is an array of EmberAfManufacturerCodeEntry structures for attributes.
779 #define GENERATED_ATTRIBUTE_MANUFACTURER_CODE_COUNT (0)
780 #define GENERATED_ATTRIBUTE_MANUFACTURER_CODES                                                                                     \
781     {                                                                                                                              \
782         {                                                                                                                          \
783             0x00, 0x00                                                                                                             \
784         }                                                                                                                          \
785     }
786
787 // Array of EmberAfPluginReportingEntry structures.
788 #define ZRD(x) EMBER_ZCL_REPORTING_DIRECTION_##x
789 #define ZAP_REPORT_DIRECTION(x) ZRD(x)
790
791 // Use this macro to check if Reporting plugin is included
792 #define EMBER_AF_PLUGIN_REPORTING
793 // User options for plugin Reporting
794 #define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE (9)
795 #define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS
796
797 #define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (9)
798 #define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS                                                                               \
799     {                                                                                                                              \
800         {                                                                                                                          \
801             ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0006, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }          \
802         }, /* Reporting for cluster: "On/off", attribute: "on/off". side: server */                                                \
803             {                                                                                                                      \
804                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0008, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
805             }, /* Reporting for cluster: "Level Control", attribute: "current level". side: server */                              \
806             {                                                                                                                      \
807                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0101, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
808             }, /* Reporting for cluster: "Door Lock", attribute: "lock state". side: server */                                     \
809             {                                                                                                                      \
810                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0300, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
811             }, /* Reporting for cluster: "Color Control", attribute: "current hue". side: server */                                \
812             {                                                                                                                      \
813                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0300, 0x0001, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
814             }, /* Reporting for cluster: "Color Control", attribute: "current saturation". side: server */                         \
815             {                                                                                                                      \
816                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0300, 0x0003, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
817             }, /* Reporting for cluster: "Color Control", attribute: "current x". side: server */                                  \
818             {                                                                                                                      \
819                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0300, 0x0004, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
820             }, /* Reporting for cluster: "Color Control", attribute: "current y". side: server */                                  \
821             {                                                                                                                      \
822                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0300, 0x0007, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
823             }, /* Reporting for cluster: "Color Control", attribute: "color temperature". side: server */                          \
824             {                                                                                                                      \
825                 ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0402, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } }      \
826             }, /* Reporting for cluster: "Temperature Measurement", attribute: "measured value". side: server */                   \
827     }