zcl_ccserver_data.c 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. /**************************************************************************************************
  2. Filename: zcl_ccserver_data.c
  3. Revised: $Date: 2011-04-13 10:12:34 -0700 (Wed, 13 Apr 2011) $
  4. Revision: $Revision: 25678 $
  5. Description: Zigbee Cluster Library - Commissioning Cluster Server Application.
  6. Copyright 2011 Texas Instruments Incorporated. All rights reserved.
  7. IMPORTANT: Your use of this Software is limited to those specific rights
  8. granted under the terms of a software license agreement between the user
  9. who downloaded the software, his/her employer (which must be your employer)
  10. and Texas Instruments Incorporated (the "License"). You may not use this
  11. Software unless you agree to abide by the terms of the License. The License
  12. limits your use, and you acknowledge, that the Software may not be modified,
  13. copied or distributed unless embedded on a Texas Instruments microcontroller
  14. or used solely and exclusively in conjunction with a Texas Instruments radio
  15. frequency transceiver, which is integrated into your product. Other than for
  16. the foregoing purpose, you may not use, reproduce, copy, prepare derivative
  17. works of, modify, distribute, perform, display or sell this Software and/or
  18. its documentation for any purpose.
  19. YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
  20. PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
  21. INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
  22. NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
  23. TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
  24. NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
  25. LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
  26. INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
  27. OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
  28. OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
  29. (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
  30. Should you have any questions regarding your right to use this Software,
  31. contact Texas Instruments Incorporated at www.TI.com.
  32. **************************************************************************************************/
  33. /*********************************************************************
  34. * INCLUDES
  35. */
  36. #include "ZComDef.h"
  37. #include "AF.h"
  38. #include "zba.h"
  39. #include "zcl_cc.h"
  40. #include "zcl_ccserver.h"
  41. /*********************************************************************
  42. * CONSTANTS
  43. */
  44. #define CCSERVER_DEVICE_VERSION 0
  45. #define CCSERVER_FLAGS 0
  46. #define CCSERVER_HWVERSION 1
  47. #define CCSERVER_ZCLVERSION 1
  48. /*********************************************************************
  49. * TYPEDEFS
  50. */
  51. /*********************************************************************
  52. * MACROS
  53. */
  54. /*********************************************************************
  55. * GLOBAL VARIABLES
  56. */
  57. // Commissioning cluster Start Up Parameter Attributes
  58. uint16 zclCCServer_ShortAddress;
  59. uint8 zclCCServer_ExtendedPanId[Z_EXTADDR_LEN];
  60. uint16 zclCCServer_PanId;
  61. uint32 zclCCServer_ChannelMask;
  62. uint8 zclCCServer_ProtocolVersion;
  63. uint8 zclCCServer_StackProfile;
  64. uint8 zclCCServer_StartUpControl;
  65. uint8 zclCCServer_TrustCenterAddr[Z_EXTADDR_LEN];
  66. uint8 zclCCServer_UseInsecureJoin;
  67. uint8 zclCCServer_NetworkKeySeqNum;
  68. uint8 zclCCServer_NetworkKeyType;
  69. uint16 zclCCServer_NwkManagerAddr;
  70. /*********************************************************************
  71. * ATTRIBUTE DEFINITIONS - Uses REAL cluster IDs
  72. */
  73. CONST zclAttrRec_t zclCCServer_Attrs[CCSERVER_MAX_ATTRIBUTES] =
  74. {
  75. // CC Attributes
  76. {
  77. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  78. { // Attribute record
  79. ATTRID_CC_SHORT_ADDRESS,
  80. ZCL_DATATYPE_UINT16,
  81. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  82. (void *)&zclCCServer_ShortAddress
  83. }
  84. },
  85. {
  86. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  87. { // Attribute record
  88. ATTRID_CC_EXTENDED_PANID,
  89. ZCL_DATATYPE_IEEE_ADDR,
  90. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  91. (void *)zclCCServer_ExtendedPanId
  92. }
  93. },
  94. {
  95. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  96. { // Attribute record
  97. ATTRID_CC_PANID,
  98. ZCL_DATATYPE_UINT16,
  99. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  100. (void *)&zclCCServer_PanId
  101. }
  102. },
  103. {
  104. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  105. { // Attribute record
  106. ATTRID_CC_CHANNEL_MASK,
  107. ZCL_DATATYPE_BITMAP32,
  108. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  109. (void *)&zclCCServer_ChannelMask
  110. }
  111. },
  112. {
  113. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  114. { // Attribute record
  115. ATTRID_CC_PROTOCOL_VERSION,
  116. ZCL_DATATYPE_UINT8,
  117. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  118. (void *)&zclCCServer_ProtocolVersion
  119. }
  120. },
  121. {
  122. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  123. { // Attribute record
  124. ATTRID_CC_STACK_PROFILE,
  125. ZCL_DATATYPE_UINT8,
  126. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  127. (void *)&zclCCServer_StackProfile
  128. }
  129. },
  130. {
  131. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  132. { // Attribute record
  133. ATTRID_CC_STARTUP_CONTROL,
  134. ZCL_DATATYPE_ENUM8,
  135. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  136. (void *)&zclCCServer_StartUpControl
  137. }
  138. },
  139. {
  140. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  141. { // Attribute record
  142. ATTRID_CC_TRUST_CENTER_ADDRESS,
  143. ZCL_DATATYPE_IEEE_ADDR,
  144. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  145. (void *)zclCCServer_TrustCenterAddr
  146. }
  147. },
  148. {
  149. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  150. { // Attribute record
  151. ATTRID_CC_TRUST_CENTER_MASTER_KEY,
  152. ZCL_DATATYPE_128_BIT_SEC_KEY,
  153. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  154. (void *)NULL // Attribute value is maintained in the NV
  155. }
  156. },
  157. {
  158. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  159. { // Attribute record
  160. ATTRID_CC_NETWORK_KEY,
  161. ZCL_DATATYPE_128_BIT_SEC_KEY,
  162. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  163. (void *)NULL // Attribute value is maintained in the NV
  164. }
  165. },
  166. {
  167. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  168. { // Attribute record
  169. ATTRID_CC_USE_INSECURE_JOIN,
  170. ZCL_DATATYPE_BOOLEAN,
  171. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  172. (void *)&zclCCServer_UseInsecureJoin
  173. }
  174. },
  175. {
  176. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  177. { // Attribute record
  178. ATTRID_CC_PRECONFIGURED_LINK_KEY,
  179. ZCL_DATATYPE_128_BIT_SEC_KEY,
  180. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  181. (void *)NULL // Attribute value is maintained in the NV
  182. }
  183. },
  184. {
  185. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  186. { // Attribute record
  187. ATTRID_CC_NETWORK_KEY_SEQ_NUM,
  188. ZCL_DATATYPE_UINT8,
  189. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  190. (void *)&zclCCServer_NetworkKeySeqNum
  191. }
  192. },
  193. {
  194. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  195. { // Attribute record
  196. ATTRID_CC_NETWORK_KEY_TYPE,
  197. ZCL_DATATYPE_ENUM8,
  198. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  199. (void *)&zclCCServer_NetworkKeyType
  200. }
  201. },
  202. {
  203. ZCL_CLUSTER_ID_GEN_COMMISSIONING,
  204. { // Attribute record
  205. ATTRID_CC_NETWORK_MANAGER_ADDRESS,
  206. ZCL_DATATYPE_UINT16,
  207. ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ | ACCESS_CONTROL_AUTH_WRITE,
  208. (void *)&zclCCServer_NwkManagerAddr
  209. }
  210. },
  211. };
  212. /*********************************************************************
  213. * SIMPLE DESCRIPTOR
  214. */
  215. // This is the Cluster ID List and should be filled with Application
  216. // specific cluster IDs.
  217. #define CCSERVER_MAX_INCLUSTERS 1
  218. const cId_t zclCCServer_InClusterList[CCSERVER_MAX_INCLUSTERS] =
  219. {
  220. ZCL_CLUSTER_ID_GEN_COMMISSIONING
  221. };
  222. #define CCSERVER_MAX_OUTCLUSTERS 1
  223. const cId_t zclCCServer_OutClusterList[CCSERVER_MAX_OUTCLUSTERS] =
  224. {
  225. ZCL_CLUSTER_ID_GEN_ON_OFF
  226. };
  227. SimpleDescriptionFormat_t zclCCServer_SimpleDesc =
  228. {
  229. CCSERVER_ENDPOINT, // int Endpoint;
  230. ZBA_PROFILE_ID, // uint16 AppProfId[2];
  231. ZBA_DEVICEID_ON_OFF_SWITCH, // uint16 AppDeviceId[2];
  232. CCSERVER_DEVICE_VERSION, // int AppDevVer:4;
  233. CCSERVER_FLAGS, // int AppFlags:4;
  234. CCSERVER_MAX_INCLUSTERS, // byte AppNumInClusters;
  235. (cId_t *)zclCCServer_InClusterList, // byte *pAppInClusterList;
  236. CCSERVER_MAX_OUTCLUSTERS, // byte AppNumInClusters;
  237. (cId_t *)zclCCServer_OutClusterList // byte *pAppInClusterList;
  238. };
  239. /*********************************************************************
  240. * GLOBAL FUNCTIONS
  241. */
  242. /*********************************************************************
  243. * LOCAL FUNCTIONS
  244. */
  245. /****************************************************************************
  246. ****************************************************************************/