[z-stack-apps/z-stack-example-apps.git] / IAS Sample Applications / CIE-FD-WD-Z3.0 / SampleFireDetector / Source / zcl_samplefiredetector_data.c
1 /******************************************************************************\r
2 \r
3 @file zcl_samplefiredetector_data.c\r
4 \r
5 @brief Z-Stack 3.0 Sample Application\r
6 \r
7 @date 2017-02-15 18:24:32\r
8 \r
9 Group: CMCU LPC\r
10 Target Devices: CC2530/CC2531/CC2538\r
11 \r
12 ******************************************************************************\r
13 \r
14 Copyright (c) 2017, Texas Instruments Incorporated\r
15 All rights reserved.\r
16 \r
17 Redistribution and use in source and binary forms, with or without\r
18 modification, are permitted provided that the following conditions\r
19 are met:\r
20 \r
21 * Redistributions of source code must retain the above copyright\r
22 notice, this list of conditions and the following disclaimer.\r
23 \r
24 * Redistributions in binary form must reproduce the above copyright\r
25 notice, this list of conditions and the following disclaimer in the\r
26 documentation and/or other materials provided with the distribution.\r
27 \r
28 * Neither the name of Texas Instruments Incorporated nor the names of\r
29 its contributors may be used to endorse or promote products derived\r
30 from this software without specific prior written permission.\r
31 \r
32 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
33 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
34 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
35 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
36 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
37 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
38 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
39 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
40 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
41 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
42 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
43 \r
44 *****************************************************************************/\r
45 \r
46 /*********************************************************************\r
47 * INCLUDES\r
48 */\r
49 #include "ZComDef.h"\r
50 #include "OSAL.h"\r
51 #include "AF.h"\r
52 #include "ZDConfig.h"\r
53 \r
54 #include "zcl.h"\r
55 #include "zcl_general.h"\r
56 #include "zcl_ha.h"\r
57 #include "zcl_ms.h"\r
58 \r
59 #include "zcl_samplefiredetector.h"\r
60 \r
61 /*********************************************************************\r
62 * CONSTANTS\r
63 */\r
64 \r
65 #define SAMPLEFIREDETECTOR_DEVICE_VERSION 0\r
66 #define SAMPLEFIREDETECTOR_FLAGS 0\r
67 \r
68 #define SAMPLEFIREDETECTOR_HWVERSION 1\r
69 #define SAMPLEFIREDETECTOR_ZCLVERSION 1\r
70 \r
71 /*********************************************************************\r
72 * TYPEDEFS\r
73 */\r
74 \r
75 /*********************************************************************\r
76 * MACROS\r
77 */\r
78 \r
79 /*********************************************************************\r
80 * GLOBAL VARIABLES\r
81 */\r
82 \r
83 // Basic Cluster\r
84 const uint8 zclSampleFireDetector_HWRevision = SAMPLEFIREDETECTOR_HWVERSION;\r
85 const uint8 zclSampleFireDetector_ZCLVersion = SAMPLEFIREDETECTOR_ZCLVERSION;\r
86 const uint8 zclSampleFireDetector_ManufacturerName[] = { 16, 'T','e','x','a','s','I','n','s','t','r','u','m','e','n','t','s' };\r
87 const uint8 zclSampleFireDetector_ModelId[] = { 16, 'T','I','0','0','0','1',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ' };\r
88 const uint8 zclSampleFireDetector_DateCode[] = { 16, '2','0','0','6','0','8','3','1',' ',' ',' ',' ',' ',' ',' ',' ' };\r
89 const uint8 zclSampleFireDetector_PowerSource = POWER_SOURCE_MAINS_1_PHASE;\r
90 \r
91 uint8 zclSampleFireDetector_LocationDescription[17] = { 16, ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ' };\r
92 uint8 zclSampleFireDetector_PhysicalEnvironment = 0;\r
93 uint8 zclSampleFireDetector_DeviceEnable = DEVICE_ENABLED;\r
94 \r
95 // Identify Cluster\r
96 uint16 zclSampleFireDetector_IdentifyTime = 0;\r
97 \r
98 uint16 zclSampleFireDetector_MaxDuration = SAMPLEFIREDETECTOR_ALARM_MAX_DURATION;\r
99 \r
100 // IAS ZONE Cluster\r
101 uint8 zclSampleFireDetector_ZoneState = SS_IAS_ZONE_STATE_NOT_ENROLLED;\r
102 uint16 zclSampleFireDetector_ZoneType = SS_IAS_ZONE_TYPE_FIRE_SENSOR;\r
103 uint16 zclSampleFireDetector_ZoneStatus = 0;\r
104 uint8 zclSampleFireDetector_IAS_CIE_Address[8] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };\r
105 \r
106 /*********************************************************************\r
107 * ATTRIBUTE DEFINITIONS - Uses REAL cluster IDs\r
108 */\r
109 CONST zclAttrRec_t zclSampleFireDetector_Attrs[SAMPLEFIREDETECTOR_MAX_ATTRIBUTES] =\r
110 {\r
111 // *** General Basic Cluster Attributes ***\r
112 {\r
113 ZCL_CLUSTER_ID_GEN_BASIC, // Cluster IDs - defined in the foundation (ie. zcl.h)\r
114 { // Attribute record\r
115 ATTRID_BASIC_HW_VERSION, // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)\r
116 ZCL_DATATYPE_UINT8, // Data Type - found in zcl.h\r
117 ACCESS_CONTROL_READ, // Variable access control - found in zcl.h\r
118 (void *)&zclSampleFireDetector_HWRevision // Pointer to attribute variable\r
119 }\r
120 },\r
121 {\r
122 ZCL_CLUSTER_ID_GEN_BASIC,\r
123 { // Attribute record\r
124 ATTRID_BASIC_ZCL_VERSION,\r
125 ZCL_DATATYPE_UINT8,\r
126 ACCESS_CONTROL_READ,\r
127 (void *)&zclSampleFireDetector_ZCLVersion\r
128 }\r
129 },\r
130 {\r
131 ZCL_CLUSTER_ID_GEN_BASIC,\r
132 { // Attribute record\r
133 ATTRID_BASIC_MANUFACTURER_NAME,\r
134 ZCL_DATATYPE_CHAR_STR,\r
135 ACCESS_CONTROL_READ,\r
136 (void *)zclSampleFireDetector_ManufacturerName\r
137 }\r
138 },\r
139 {\r
140 ZCL_CLUSTER_ID_GEN_BASIC,\r
141 { // Attribute record\r
142 ATTRID_BASIC_MODEL_ID,\r
143 ZCL_DATATYPE_CHAR_STR,\r
144 ACCESS_CONTROL_READ,\r
145 (void *)zclSampleFireDetector_ModelId\r
146 }\r
147 },\r
148 {\r
149 ZCL_CLUSTER_ID_GEN_BASIC,\r
150 { // Attribute record\r
151 ATTRID_BASIC_DATE_CODE,\r
152 ZCL_DATATYPE_CHAR_STR,\r
153 ACCESS_CONTROL_READ,\r
154 (void *)zclSampleFireDetector_DateCode\r
155 }\r
156 },\r
157 {\r
158 ZCL_CLUSTER_ID_GEN_BASIC,\r
159 { // Attribute record\r
160 ATTRID_BASIC_POWER_SOURCE,\r
161 ZCL_DATATYPE_UINT8,\r
162 ACCESS_CONTROL_READ,\r
163 (void *)&zclSampleFireDetector_PowerSource\r
164 }\r
165 },\r
166 {\r
167 ZCL_CLUSTER_ID_GEN_BASIC,\r
168 { // Attribute record\r
169 ATTRID_BASIC_LOCATION_DESC,\r
170 ZCL_DATATYPE_CHAR_STR,\r
171 (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),\r
172 (void *)zclSampleFireDetector_LocationDescription\r
173 }\r
174 },\r
175 {\r
176 ZCL_CLUSTER_ID_GEN_BASIC,\r
177 { // Attribute record\r
178 ATTRID_BASIC_PHYSICAL_ENV,\r
179 ZCL_DATATYPE_UINT8,\r
180 (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),\r
181 (void *)&zclSampleFireDetector_PhysicalEnvironment\r
182 }\r
183 },\r
184 {\r
185 ZCL_CLUSTER_ID_GEN_BASIC,\r
186 { // Attribute record\r
187 ATTRID_BASIC_DEVICE_ENABLED,\r
188 ZCL_DATATYPE_BOOLEAN,\r
189 (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),\r
190 (void *)&zclSampleFireDetector_DeviceEnable\r
191 }\r
192 },\r
193 \r
194 // *** Identify Cluster Attribute ***\r
195 {\r
196 ZCL_CLUSTER_ID_GEN_IDENTIFY,\r
197 { // Attribute record\r
198 ATTRID_IDENTIFY_TIME,\r
199 ZCL_DATATYPE_UINT16,\r
200 (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),\r
201 (void *)&zclSampleFireDetector_IdentifyTime\r
202 }\r
203 },\r
204 // *** Zone Cluster Attributes ***\r
205 {\r
206 ZCL_CLUSTER_ID_SS_IAS_ZONE,\r
207 { // Attribute record\r
208 ATTRID_SS_IAS_ZONE_STATE,\r
209 ZCL_DATATYPE_ENUM8,\r
210 ACCESS_CONTROL_READ,\r
211 (void *)&zclSampleFireDetector_ZoneState\r
212 }\r
213 },\r
214 \r
215 {\r
216 ZCL_CLUSTER_ID_SS_IAS_ZONE,\r
217 { // Attribute record\r
218 ATTRID_SS_IAS_ZONE_TYPE,\r
219 ZCL_DATATYPE_ENUM16,\r
220 ACCESS_CONTROL_READ,\r
221 (void *)&zclSampleFireDetector_ZoneType\r
222 }\r
223 },\r
224 \r
225 {\r
226 ZCL_CLUSTER_ID_SS_IAS_ZONE,\r
227 { // Attribute record\r
228 ATTRID_SS_IAS_ZONE_STATUS,\r
229 ZCL_DATATYPE_BITMAP16,\r
230 ACCESS_CONTROL_READ,\r
231 (void *)&zclSampleFireDetector_ZoneStatus\r
232 }\r
233 },\r
234 \r
235 {\r
236 ZCL_CLUSTER_ID_SS_IAS_ZONE,\r
237 { // Attribute record\r
238 ATTRID_SS_IAS_CIE_ADDRESS,\r
239 ZCL_DATATYPE_IEEE_ADDR,\r
240 (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),\r
241 (void *)zclSampleFireDetector_IAS_CIE_Address\r
242 }\r
243 }\r
244 \r
245 \r
246 };\r
247 \r
248 /*********************************************************************\r
249 * SIMPLE DESCRIPTOR\r
250 */\r
251 // This is the Cluster ID List and should be filled with Application\r
252 // specific cluster IDs.\r
253 #define ZCLSAMPLEFIREDETECTOR_MAX_INCLUSTERS 3\r
254 const cId_t zclSampleFireDetector_InClusterList[ZCLSAMPLEFIREDETECTOR_MAX_INCLUSTERS] =\r
255 {\r
256 ZCL_CLUSTER_ID_GEN_BASIC,\r
257 ZCL_CLUSTER_ID_GEN_IDENTIFY,\r
258 ZCL_CLUSTER_ID_SS_IAS_ZONE\r
259 };\r
260 \r
261 #define ZCLSAMPLEFIREDETECTOR_MAX_OUTCLUSTERS 1\r
262 const cId_t zclSampleFireDetector_OutClusterList[ZCLSAMPLEFIREDETECTOR_MAX_OUTCLUSTERS] =\r
263 {\r
264 ZCL_CLUSTER_ID_GEN_IDENTIFY\r
265 };\r
266 \r
267 SimpleDescriptionFormat_t zclSampleFireDetector_SimpleDesc =\r
268 {\r
269 SAMPLEFIREDETECTOR_ENDPOINT, // int Endpoint;\r
270 ZCL_HA_PROFILE_ID, // uint16 AppProfId[2];\r
271 ZCL_HA_DEVICEID_IAS_WARNING_DEVICE, // uint16 AppDeviceId[2];\r
272 SAMPLEFIREDETECTOR_DEVICE_VERSION, // int AppDevVer:4;\r
273 SAMPLEFIREDETECTOR_FLAGS, // int AppFlags:4;\r
274 ZCLSAMPLEFIREDETECTOR_MAX_INCLUSTERS, // byte AppNumInClusters;\r
275 (cId_t *)zclSampleFireDetector_InClusterList, // byte *pAppInClusterList;\r
276 ZCLSAMPLEFIREDETECTOR_MAX_OUTCLUSTERS, // byte AppNumInClusters;\r
277 (cId_t *)zclSampleFireDetector_OutClusterList // byte *pAppInClusterList;\r
278 };\r
279 \r
280 /*********************************************************************\r
281 * GLOBAL FUNCTIONS\r
282 */\r
283 \r
284 /*********************************************************************\r
285 * LOCAL FUNCTIONS\r
286 */\r
287 \r
288 /****************************************************************************\r
289 ****************************************************************************/\r
290 \r
291 \r