Apply Upstream code (2021-03-15)
[platform/upstream/connectedhomeip.git] / src / darwin / Framework / CHIP / 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     }
30
31 #else // !BIGENDIAN_CPU
32 #define GENERATED_DEFAULTS                                                                                                         \
33     {                                                                                                                              \
34     }
35
36 #endif // BIGENDIAN_CPU
37
38 #define GENERATED_DEFAULTS_COUNT (0)
39
40 #define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE
41 #define ZAP_LONG_DEFAULTS_INDEX(index)                                                                                             \
42     {                                                                                                                              \
43         (uint8_t *) (&generatedDefaults[index])                                                                                    \
44     }
45 #define ZAP_MIN_MAX_DEFAULTS_INDEX(index)                                                                                          \
46     {                                                                                                                              \
47         (uint8_t *) (&minMaxDefault[index])                                                                                        \
48     }
49
50 // This is an array of EmberAfAttributeMinMaxValue structures.
51 #define GENERATED_MIN_MAX_DEFAULT_COUNT 0
52 #define GENERATED_MIN_MAX_DEFAULTS                                                                                                 \
53     {                                                                                                                              \
54     }
55
56 #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
57 // This is an array of EmberAfAttributeMetadata structures.
58 #define GENERATED_ATTRIBUTE_COUNT 16
59 #define GENERATED_ATTRIBUTES                                                                                                       \
60     {                                                                                                                              \
61         { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 } }, /* Identify (client): cluster revision */  \
62             {                                                                                                                      \
63                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
64             }, /* Groups (client): cluster revision */                                                                             \
65             {                                                                                                                      \
66                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
67             }, /* Scenes (client): cluster revision */                                                                             \
68             {                                                                                                                      \
69                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 2 }                                         \
70             }, /* On/off (client): cluster revision */                                                                             \
71             {                                                                                                                      \
72                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
73             }, /* Level Control (client): cluster revision */                                                                      \
74             {                                                                                                                      \
75                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT) | ZAP_ATTRIBUTE_MASK(SINGLETON), { (uint8_t *) 3 }         \
76             }, /* Basic (client): cluster revision */                                                                              \
77             {                                                                                                                      \
78                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
79             }, /* General Commissioning (client): cluster revision */                                                              \
80             {                                                                                                                      \
81                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
82             }, /* Door Lock (client): cluster revision */                                                                          \
83             {                                                                                                                      \
84                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
85             }, /* Barrier Control (client): cluster revision */                                                                    \
86             {                                                                                                                      \
87                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
88             }, /* Color Control (client): cluster revision */                                                                      \
89             {                                                                                                                      \
90                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 3 }                                         \
91             }, /* Temperature Measurement (client): cluster revision */                                                            \
92             {                                                                                                                      \
93                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
94             }, /* Low Power (client): cluster revision */                                                                          \
95             {                                                                                                                      \
96                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
97             }, /* Application Basic (client): cluster revision */                                                                  \
98             {                                                                                                                      \
99                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
100             }, /* Binding (client): cluster revision */                                                                            \
101             {                                                                                                                      \
102                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
103             }, /* Media Playback (client): cluster revision */                                                                     \
104             {                                                                                                                      \
105                 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), { (uint8_t *) 0x0001 }                                    \
106             }, /* Content Launch (client): cluster revision */                                                                     \
107     }
108
109 // This is an array of EmberAfCluster structures.
110 #define ZAP_ATTRIBUTE_INDEX(index) ((EmberAfAttributeMetadata *) (&generatedAttributes[index]))
111
112 // Cluster function static arrays
113 #define GENERATED_FUNCTION_ARRAYS
114
115 #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
116 #define GENERATED_CLUSTER_COUNT 16
117 #define GENERATED_CLUSTERS                                                                                                         \
118     {                                                                                                                              \
119         { 0x0003, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Identify (client) */    \
120             { 0x0004, ZAP_ATTRIBUTE_INDEX(1), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Groups (client) */  \
121             { 0x0005, ZAP_ATTRIBUTE_INDEX(2), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Scenes (client) */  \
122             { 0x0006, ZAP_ATTRIBUTE_INDEX(3), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: On/off (client) */  \
123             {                                                                                                                      \
124                 0x0008, ZAP_ATTRIBUTE_INDEX(4), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                               \
125             }, /* Endpoint: 1, Cluster: Level Control (client) */                                                                  \
126             { 0x0028, ZAP_ATTRIBUTE_INDEX(5), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Basic (client) */   \
127             {                                                                                                                      \
128                 0x0030, ZAP_ATTRIBUTE_INDEX(6), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                               \
129             }, /* Endpoint: 1, Cluster: General Commissioning (client) */                                                          \
130             {                                                                                                                      \
131                 0x0101, ZAP_ATTRIBUTE_INDEX(7), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                               \
132             }, /* Endpoint: 1, Cluster: Door Lock (client) */                                                                      \
133             {                                                                                                                      \
134                 0x0103, ZAP_ATTRIBUTE_INDEX(8), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                               \
135             }, /* Endpoint: 1, Cluster: Barrier Control (client) */                                                                \
136             {                                                                                                                      \
137                 0x0300, ZAP_ATTRIBUTE_INDEX(9), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                               \
138             }, /* Endpoint: 1, Cluster: Color Control (client) */                                                                  \
139             {                                                                                                                      \
140                 0x0402, ZAP_ATTRIBUTE_INDEX(10), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
141             }, /* Endpoint: 1, Cluster: Temperature Measurement (client) */                                                        \
142             {                                                                                                                      \
143                 0x0508, ZAP_ATTRIBUTE_INDEX(11), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
144             }, /* Endpoint: 1, Cluster: Low Power (client) */                                                                      \
145             {                                                                                                                      \
146                 0x050D, ZAP_ATTRIBUTE_INDEX(12), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
147             }, /* Endpoint: 1, Cluster: Application Basic (client) */                                                              \
148             {                                                                                                                      \
149                 0xF000, ZAP_ATTRIBUTE_INDEX(13), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
150             }, /* Endpoint: 1, Cluster: Binding (client) */                                                                        \
151             {                                                                                                                      \
152                 0xF001, ZAP_ATTRIBUTE_INDEX(14), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
153             }, /* Endpoint: 1, Cluster: Media Playback (client) */                                                                 \
154             {                                                                                                                      \
155                 0xF002, ZAP_ATTRIBUTE_INDEX(15), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL                                              \
156             }, /* Endpoint: 1, Cluster: Content Launch (client) */                                                                 \
157     }
158
159 #define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
160
161 // This is an array of EmberAfEndpointType structures.
162 #define GENERATED_ENDPOINT_TYPES                                                                                                   \
163     {                                                                                                                              \
164         { ZAP_CLUSTER_INDEX(0), 16, 32 },                                                                                          \
165     }
166
167 // Largest attribute size is needed for various buffers
168 #define ATTRIBUTE_LARGEST (2)
169
170 // Total size of singleton attributes
171 #define ATTRIBUTE_SINGLETONS_SIZE (2)
172
173 // Total size of attribute storage
174 #define ATTRIBUTE_MAX_SIZE (32)
175
176 // Number of fixed endpoints
177 #define FIXED_ENDPOINT_COUNT (1)
178
179 // Array of endpoints that are supported, the data inside
180 // the array is the endpoint number.
181 #define FIXED_ENDPOINT_ARRAY                                                                                                       \
182     {                                                                                                                              \
183         0x0001                                                                                                                     \
184     }
185
186 // Array of profile ids
187 #define FIXED_PROFILE_IDS                                                                                                          \
188     {                                                                                                                              \
189         0x0103                                                                                                                     \
190     }
191
192 // Array of device ids
193 #define FIXED_DEVICE_IDS                                                                                                           \
194     {                                                                                                                              \
195         0                                                                                                                          \
196     }
197
198 // Array of device versions
199 #define FIXED_DEVICE_VERSIONS                                                                                                      \
200     {                                                                                                                              \
201         1                                                                                                                          \
202     }
203
204 // Array of endpoint types supported on each endpoint
205 #define FIXED_ENDPOINT_TYPES                                                                                                       \
206     {                                                                                                                              \
207         0                                                                                                                          \
208     }
209
210 // Array of networks supported on each endpoint
211 #define FIXED_NETWORKS                                                                                                             \
212     {                                                                                                                              \
213         0                                                                                                                          \
214     }
215
216 // Array of EmberAfCommandMetadata structs.
217 #define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask
218 #define EMBER_AF_GENERATED_COMMAND_COUNT (129)
219 #define GENERATED_COMMANDS                                                                                                         \
220     {                                                                                                                              \
221         { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) },     /* Identify (client): Identify */                                 \
222             { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Identify (client): IdentifyQueryResponse */                    \
223             { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify (client): IdentifyQuery */                            \
224             { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroup */                                   \
225             { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): AddGroupResponse */                           \
226             { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): ViewGroup */                                  \
227             { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): ViewGroupResponse */                          \
228             { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): GetGroupMembership */                         \
229             { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): GetGroupMembershipResponse */                 \
230             { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveGroup */                                \
231             { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Groups (client): RemoveGroupResponse */                        \
232             { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): RemoveAllGroups */                            \
233             { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Groups (client): AddGroupIfIdentifying */                      \
234             { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): AddScene */                                   \
235             { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): AddSceneResponse */                           \
236             { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): ViewScene */                                  \
237             { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): ViewSceneResponse */                          \
238             { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveScene */                                \
239             { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveSceneResponse */                        \
240             { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RemoveAllScenes */                            \
241             { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): RemoveAllScenesResponse */                    \
242             { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): StoreScene */                                 \
243             { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): StoreSceneResponse */                         \
244             { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): RecallScene */                                \
245             { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Scenes (client): GetSceneMembership */                         \
246             { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Scenes (client): GetSceneMembershipResponse */                 \
247             { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Off */                                        \
248             { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): On */                                         \
249             { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On/off (client): Toggle */                                     \
250             { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevel */                         \
251             { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Move */                                \
252             { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Step */                                \
253             { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): Stop */                                \
254             { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveToLevelWithOnOff */                \
255             { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): MoveWithOnOff */                       \
256             { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StepWithOnOff */                       \
257             { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Level Control (client): StopWithOnOff */                       \
258             { 0x0028, 0x00, ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Basic (client): MfgSpecificPing */                             \
259             { 0x0028, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (client): StartUp */                                     \
260             { 0x0028, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (client): ShutDown */                                    \
261             { 0x0028, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Basic (client): Leave */                                       \
262             { 0x0030, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* General Commissioning (client): SetFabric */                   \
263             { 0x0030, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* General Commissioning (client): SetFabricResponse */           \
264             { 0x0030, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* General Commissioning (client): ArmFailSafe */                 \
265             { 0x0030, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* General Commissioning (client): ArmFailSafeResponse */         \
266             { 0x0030, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* General Commissioning (client): CommissioningComplete */       \
267             { 0x0030, 0x07,                                                                                                        \
268               ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* General Commissioning (client): CommissioningCompleteResponse */             \
269             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): LockDoor */                                \
270             { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): LockDoorResponse */                        \
271             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Door Lock (client): UnlockDoor */                              \
272             { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Door Lock (client): UnlockDoorResponse */                      \
273             { 0x0101, 0x03,                                                                                                        \
274               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): UnlockWithTimeout */ \
275             {                                                                                                                      \
276                 0x0101, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
277             }, /* Door Lock (client): UnlockWithTimeoutResponse */                                                                 \
278             { 0x0101, 0x04,                                                                                                        \
279               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetLogRecord */      \
280             {                                                                                                                      \
281                 0x0101, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
282             }, /* Door Lock (client): GetLogRecordResponse */                                                                      \
283             { 0x0101, 0x05,                                                                                                        \
284               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPin */            \
285             { 0x0101, 0x05,                                                                                                        \
286               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetPinResponse */    \
287             { 0x0101, 0x06,                                                                                                        \
288               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPin */            \
289             { 0x0101, 0x06,                                                                                                        \
290               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetPinResponse */    \
291             { 0x0101, 0x07,                                                                                                        \
292               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPin */          \
293             { 0x0101, 0x07,                                                                                                        \
294               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearPinResponse */  \
295             { 0x0101, 0x08,                                                                                                        \
296               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllPins */      \
297             {                                                                                                                      \
298                 0x0101, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
299             },                   /* Door Lock (client): ClearAllPinsResponse */                                                    \
300             { 0x0101, 0x09, 0 }, /* Door Lock (client): SetUserStatusResponse */                                                   \
301             { 0x0101, 0x0A, 0 }, /* Door Lock (client): GetUserStatusResponse */                                                   \
302             {                                                                                                                      \
303                 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
304             }, /* Door Lock (client): SetWeekdaySchedule */                                                                        \
305             {                                                                                                                      \
306                 0x0101, 0x0B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
307             }, /* Door Lock (client): SetWeekdayScheduleResponse */                                                                \
308             {                                                                                                                      \
309                 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
310             }, /* Door Lock (client): GetWeekdaySchedule */                                                                        \
311             {                                                                                                                      \
312                 0x0101, 0x0C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
313             }, /* Door Lock (client): GetWeekdayScheduleResponse */                                                                \
314             {                                                                                                                      \
315                 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
316             }, /* Door Lock (client): ClearWeekdaySchedule */                                                                      \
317             {                                                                                                                      \
318                 0x0101, 0x0D, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
319             }, /* Door Lock (client): ClearWeekdayScheduleResponse */                                                              \
320             {                                                                                                                      \
321                 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
322             }, /* Door Lock (client): SetYeardaySchedule */                                                                        \
323             {                                                                                                                      \
324                 0x0101, 0x0E, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
325             }, /* Door Lock (client): SetYeardayScheduleResponse */                                                                \
326             {                                                                                                                      \
327                 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
328             }, /* Door Lock (client): GetYeardaySchedule */                                                                        \
329             {                                                                                                                      \
330                 0x0101, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
331             }, /* Door Lock (client): GetYeardayScheduleResponse */                                                                \
332             {                                                                                                                      \
333                 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
334             }, /* Door Lock (client): ClearYeardaySchedule */                                                                      \
335             {                                                                                                                      \
336                 0x0101, 0x10, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
337             }, /* Door Lock (client): ClearYeardayScheduleResponse */                                                              \
338             {                                                                                                                      \
339                 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
340             }, /* Door Lock (client): SetHolidaySchedule */                                                                        \
341             {                                                                                                                      \
342                 0x0101, 0x11, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
343             }, /* Door Lock (client): SetHolidayScheduleResponse */                                                                \
344             {                                                                                                                      \
345                 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
346             }, /* Door Lock (client): GetHolidaySchedule */                                                                        \
347             {                                                                                                                      \
348                 0x0101, 0x12, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
349             }, /* Door Lock (client): GetHolidayScheduleResponse */                                                                \
350             {                                                                                                                      \
351                 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
352             }, /* Door Lock (client): ClearHolidaySchedule */                                                                      \
353             {                                                                                                                      \
354                 0x0101, 0x13, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
355             }, /* Door Lock (client): ClearHolidayScheduleResponse */                                                              \
356             { 0x0101, 0x14,                                                                                                        \
357               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetUserType */       \
358             {                                                                                                                      \
359                 0x0101, 0x14, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
360             }, /* Door Lock (client): SetUserTypeResponse */                                                                       \
361             { 0x0101, 0x15,                                                                                                        \
362               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetUserType */       \
363             {                                                                                                                      \
364                 0x0101, 0x15, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
365             }, /* Door Lock (client): GetUserTypeResponse */                                                                       \
366             { 0x0101, 0x16,                                                                                                        \
367               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfid */           \
368             { 0x0101, 0x16,                                                                                                        \
369               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): SetRfidResponse */   \
370             { 0x0101, 0x17,                                                                                                        \
371               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfid */           \
372             { 0x0101, 0x17,                                                                                                        \
373               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): GetRfidResponse */   \
374             { 0x0101, 0x18,                                                                                                        \
375               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfid */         \
376             { 0x0101, 0x18,                                                                                                        \
377               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearRfidResponse */ \
378             { 0x0101, 0x19,                                                                                                        \
379               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Door Lock (client): ClearAllRfids */     \
380             {                                                                                                                      \
381                 0x0101, 0x19, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
382             },                                                   /* Door Lock (client): ClearAllRfidsResponse */                   \
383             { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlGoToPercent */         \
384             { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Barrier Control (client): BarrierControlStop */                \
385             { 0x0300, 0x00,                                                                                                        \
386               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveToHue */     \
387             { 0x0300, 0x01,                                                                                                        \
388               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): MoveHue */       \
389             { 0x0300, 0x02,                                                                                                        \
390               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StepHue */       \
391             {                                                                                                                      \
392                 0x0300, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
393             }, /* Color Control (client): MoveToSaturation */                                                                      \
394             {                                                                                                                      \
395                 0x0300, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
396             }, /* Color Control (client): MoveSaturation */                                                                        \
397             {                                                                                                                      \
398                 0x0300, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
399             }, /* Color Control (client): StepSaturation */                                                                        \
400             {                                                                                                                      \
401                 0x0300, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
402             },                                                   /* Color Control (client): MoveToHueAndSaturation */              \
403             { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveToColor */                         \
404             { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): MoveColor */                           \
405             { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Color Control (client): StepColor */                           \
406             {                                                                                                                      \
407                 0x0300, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
408             }, /* Color Control (client): MoveToColorTemperature */                                                                \
409             { 0x0300, 0x47,                                                                                                        \
410               ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* Color Control (client): StopMoveStep */  \
411             {                                                                                                                      \
412                 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
413             }, /* Color Control (client): MoveColorTemperature */                                                                  \
414             {                                                                                                                      \
415                 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT)                                \
416             },                                                   /* Color Control (client): StepColorTemperature */                \
417             { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Low Power (client): Sleep */                                   \
418             { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Bind */                                      \
419             { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Binding (client): Unbind */                                    \
420             { 0xF001, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): PlayRequest */                        \
421             { 0xF001, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Media Playback (client): Playback */                           \
422             { 0xF001, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): PauseRequest */                       \
423             { 0xF001, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): StopRequest */                        \
424             { 0xF001, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): StartOverRequest */                   \
425             { 0xF001, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): PreviousRequest */                    \
426             { 0xF001, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): NextRequest */                        \
427             { 0xF001, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): RewindRequest */                      \
428             { 0xF001, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): FastForwardRequest */                 \
429             { 0xF001, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): SkipForwardRequest */                 \
430             { 0xF001, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Media Playback (client): SkipBackwardRequest */                \
431             { 0xF002, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Content Launch (client): LaunchContent */                      \
432             { 0xF002, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Content Launch (client): LaunchContentResponse */              \
433             { 0xF002, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Content Launch (client): LaunchURL */                          \
434             { 0xF002, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Content Launch (client): LaunchURLResponse */                  \
435     }
436
437 // Array of EmberAfManufacturerCodeEntry structures for commands.
438 #define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (1)
439 #define GENERATED_COMMAND_MANUFACTURER_CODES                                                                                       \
440     {                                                                                                                              \
441         { 37, 4098 },                                                                                                              \
442     }
443
444 // This is an array of EmberAfManufacturerCodeEntry structures for clusters.
445 #define GENERATED_CLUSTER_MANUFACTURER_CODE_COUNT (0)
446 #define GENERATED_CLUSTER_MANUFACTURER_CODES                                                                                       \
447     {                                                                                                                              \
448         {                                                                                                                          \
449             0x00, 0x00                                                                                                             \
450         }                                                                                                                          \
451     }
452
453 // This is an array of EmberAfManufacturerCodeEntry structures for attributes.
454 #define GENERATED_ATTRIBUTE_MANUFACTURER_CODE_COUNT (0)
455 #define GENERATED_ATTRIBUTE_MANUFACTURER_CODES                                                                                     \
456     {                                                                                                                              \
457         {                                                                                                                          \
458             0x00, 0x00                                                                                                             \
459         }                                                                                                                          \
460     }
461
462 // Array of EmberAfPluginReportingEntry structures.
463 #define ZRD(x) EMBER_ZCL_REPORTING_DIRECTION_##x
464 #define ZAP_REPORT_DIRECTION(x) ZRD(x)
465
466 #define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (0)
467 #define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS                                                                               \
468     {                                                                                                                              \
469     }