zcl_cc.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. /**************************************************************************************************
  2. Filename: zcl_cc.h
  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
  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. #ifndef ZCL_CC_H
  34. #define ZCL_CC_H
  35. #ifdef __cplusplus
  36. extern "C"
  37. {
  38. #endif
  39. /*********************************************************************
  40. * INCLUDES
  41. */
  42. #include "zcl.h"
  43. /*********************************************************************
  44. * MACROS
  45. */
  46. // Startup Mode
  47. #define zcl_CCStartupMode( a ) ( (a) & CC_STARTUP_MODE )
  48. #define zcl_CCImmediate( a ) ( (a) & CC_IMMEDIATE )
  49. /*********************************************************************
  50. * CONSTANTS
  51. */
  52. /**********************************************/
  53. /*** Commissioning Clusters Attributes List ***/
  54. /**********************************************/
  55. // Commissioning Clusters Attribute Set
  56. #define ATTRID_MASK_CC_STARTUP_PARAMS_STACK 0x0000
  57. #define ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY 0x0010
  58. #define ATTRID_MASK_CC_JOIN_PARAMS 0x0020
  59. #define ATTRID_MASK_CC_END_DEVICE_PARAMS 0x0030
  60. #define ATTRID_MASK_CC_CONCENTRATOR_PARAMS 0x0040
  61. // Startup Parameters Attribute Set - Stack 0x000
  62. #define ATTRID_CC_SHORT_ADDRESS ( 0x0000 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  63. #define ATTRID_CC_EXTENDED_PANID ( 0x0001 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  64. #define ATTRID_CC_PANID ( 0x0002 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  65. #define ATTRID_CC_CHANNEL_MASK ( 0x0003 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  66. #define ATTRID_CC_PROTOCOL_VERSION ( 0x0004 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  67. #define ATTRID_CC_STACK_PROFILE ( 0x0005 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  68. #define ATTRID_CC_STARTUP_CONTROL ( 0x0006 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
  69. // Startup Parameters Attribute Set - Security 0x001
  70. #define ATTRID_CC_TRUST_CENTER_ADDRESS ( 0x0000 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  71. #define ATTRID_CC_TRUST_CENTER_MASTER_KEY ( 0x0001 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  72. #define ATTRID_CC_NETWORK_KEY ( 0x0002 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  73. #define ATTRID_CC_USE_INSECURE_JOIN ( 0x0003 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  74. #define ATTRID_CC_PRECONFIGURED_LINK_KEY ( 0x0004 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  75. #define ATTRID_CC_NETWORK_KEY_SEQ_NUM ( 0x0005 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  76. #define ATTRID_CC_NETWORK_KEY_TYPE ( 0x0006 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  77. #define ATTRID_CC_NETWORK_MANAGER_ADDRESS ( 0x0007 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
  78. // Join Parameters Attribute Set 0x002
  79. #define ATTRID_CC_SCAN_ATTEMPTS ( 0x0000 | ATTRID_MASK_CC_JOIN_PARAMS )
  80. #define ATTRID_CC_TIME_BETWEEN_SCANS ( 0x0001 | ATTRID_MASK_CC_JOIN_PARAMS )
  81. #define ATTRID_CC_REJOIN_INTERVAL ( 0x0002 | ATTRID_MASK_CC_JOIN_PARAMS )
  82. #define ATTRID_CC_MAX_REJOIN_INTERVAL ( 0x0003 | ATTRID_MASK_CC_JOIN_PARAMS )
  83. // End Device Parameters Attribute Set 0x003
  84. #define ATTRID_CC_INDIRECT_POLL_RATE ( 0x0000 | ATTRID_MASK_CC_END_DEVICE_PARAMS )
  85. #define ATTRID_CC_PARENT_RETRY_THRESHOLD ( 0x0001 | ATTRID_MASK_CC_END_DEVICE_PARAMS )
  86. // Concentrator Parameters Attribute Set 0x004
  87. #define ATTRID_CC_CONCENTRATOR_FLAG ( 0x0000 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
  88. #define ATTRID_CC_CONCENTRATOR_RADIUS ( 0x0001 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
  89. #define ATTRID_CC_CONCENTRATOR_DISCOVERY_TIME ( 0x0002 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
  90. /************************************************************/
  91. /*** Commissioning Cluster Command ID ***/
  92. /************************************************************/
  93. // Commands Received by Commissioning Cluster Server
  94. #define COMMAND_CC_RESTART_DEVICE 0x0000
  95. #define COMMAND_CC_SAVE_STARTUP_PARAMS 0x0001
  96. #define COMMAND_CC_RESTORE_STARTUP_PARAMS 0x0002
  97. #define COMMAND_CC_RESET_STARTUP_PARAMS 0x0003
  98. // Commands generated by Commissioning Cluster Server
  99. #define COMMAND_CC_RESTART_DEVICE_RSP 0x0000
  100. #define COMMAND_CC_SAVE_STARTUP_PARAMS_RSP 0x0001
  101. #define COMMAND_CC_RESTORE_STARTUP_PARAMS_RSP 0x0002
  102. #define COMMAND_CC_RESET_STARTUP_PARAMS_RSP 0x0003
  103. /******************************************************************/
  104. /*** Enumerations ***/
  105. /******************************************************************/
  106. // StartupControl attribute values
  107. #define CC_STARTUP_CONTROL_OPTION_0 0x00 // Silent join
  108. #define CC_STARTUP_CONTROL_OPTION_1 0x01 // Form network
  109. #define CC_STARTUP_CONTROL_OPTION_2 0x02 // Rejoin network
  110. #define CC_STARTUP_CONTROL_OPTION_3 0x03 // MAC Associate
  111. /******************************************************************/
  112. /*** BitMap ***/
  113. /******************************************************************/
  114. // Restart Device command Options bit masks:
  115. // - Startup Mode (bits: 0..2)
  116. // - Immediate (bit: 3)
  117. #define CC_STARTUP_MODE 0x07
  118. #define CC_IMMEDIATE 0x08
  119. // Startup Mode Sub-Field Values
  120. #define CC_STARTUP_MODE_REPLACE_RESTART 0x00
  121. #define CC_STARTUP_MODE_ONLY_RESTART 0x01
  122. // Reset Startup Parameters command Options
  123. #define CC_RESET_CURRENT 0x01
  124. #define CC_RESET_ALL 0x02
  125. #define CC_ERASE_INDEX 0x04
  126. /******************************************************************/
  127. /*** Other Constants ***/
  128. /******************************************************************/
  129. // Default Attribute Values
  130. #define CC_DEFAULT_SHORT_ADDR 0xFFFF
  131. #define CC_DEFAULT_PANID 0xFFFF
  132. #define CC_DEFAULT_PROTOCOL_VERSION 0x02
  133. #define CC_DEFAULT_NETWORK_KEY_SEQ_NUM 0x00
  134. #define CC_DEFAULT_NETWORK_MANAGER_ADDR 0x00
  135. #define CC_DEFAULT_SCAN_ATTEMPTS 0x05
  136. #define CC_DEFAULT_TIME_BETWEEN_SCANS 0x64
  137. #define CC_DEFAULT_REJOIN_INTERVAL 0x3C
  138. #define CC_DEFAULT_MAX_REJOIN_INTERVAL 0x0E10
  139. #define CC_DEFAULT_CONCENTRATOR_RADIUS 0x0F
  140. #define CC_DEFAULT_CONCENTRATOR_DISCOVERY_TIME 0x00
  141. // Max Attribute Values
  142. #define CC_MAX_INDIRECT_POLL_RATE 0xFFFF
  143. #define CC_MAX_PARENT_RETRY_THRESHOLD 0xFF
  144. #define CC_MAX_CONCENTRATOR_RADIUS 0xFF
  145. #define CC_MAX_CONCENTRATOR_DISCOVERY_TIME 0xFF
  146. // Command Packet Length
  147. #define CC_PACKET_LEN_RESTART_DEVICE 0x03
  148. #define CC_PACKET_LEN_STARTUP_PARAMS_CMD 0x02
  149. #define CC_PACKET_LEN_SERVER_RSP 0x01
  150. /********************************************************************
  151. * MACROS
  152. */
  153. /*********************************************************************
  154. * TYPEDEFS
  155. */
  156. /*** Structures used for callback functions ***/
  157. // Restart Device command
  158. typedef struct
  159. {
  160. uint8 options;
  161. uint8 delay;
  162. uint8 jitter;
  163. } zclCCRestartDevice_t;
  164. // Startup Parameters command - Save, Restore, Reset
  165. typedef struct
  166. {
  167. uint8 options;
  168. uint8 index;
  169. } zclCCStartupParams_t;
  170. // Server Parameters Response command
  171. typedef struct
  172. {
  173. uint8 status;
  174. } zclCCServerParamsRsp_t;
  175. /*********************************************************************
  176. * CALLBACKS
  177. */
  178. /* Commands */
  179. // This callback is called to process an incoming Restart Device command
  180. typedef void (*zclCC_Restart_Device_t)( zclCCRestartDevice_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
  181. // This callback is called to process an incoming Save Startup Parameters command
  182. typedef void (*zclCC_Save_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
  183. // This callback is called to process an incoming Restore Startup Parameters command
  184. typedef void (*zclCC_Restore_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
  185. // This callback is called to process an incoming Reset Startup Parameters command
  186. typedef void (*zclCC_Reset_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;
  187. /* Response */
  188. // This callback is called to process an incoming Restart Device Response command
  189. typedef void (*zclCC_Restart_DeviceRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
  190. // This callback is called to process an incoming Save Startup Parameters Response command
  191. typedef void (*zclCC_Save_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
  192. // This callback is called to process an incoming Restore Startup Parameters Response command
  193. typedef void (*zclCC_Restore_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
  194. // This callback is called to process an incoming Reset Startup Parameters Response command
  195. typedef void (*zclCC_Reset_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;
  196. // Register Callbacks table entry - enter function pointers for callbacks that
  197. // the application would like to receive
  198. typedef struct
  199. {
  200. zclCC_Restart_Device_t pfnRestart_Device;
  201. zclCC_Save_StartupParams_t pfnSave_StartupParams;
  202. zclCC_Restore_StartupParams_t pfnRestore_StartupParams;
  203. zclCC_Reset_StartupParams_t pfnReset_StartupParams;
  204. zclCC_Restart_DeviceRsp_t pfnRestart_DeviceRsp;
  205. zclCC_Save_StartupParamsRsp_t pfnSave_StartupParamsRsp;
  206. zclCC_Restore_StartupParamsRsp_t pfnRestore_StartupParamsRsp;
  207. zclCC_Reset_StartupParamsRsp_t pfnReset_StartupParamsRsp;
  208. } zclCC_AppCallbacks_t;
  209. /*********************************************************************
  210. * VARIABLES
  211. */
  212. /*********************************************************************
  213. * FUNCTION MACROS
  214. */
  215. /*
  216. * Send a Save Startup Parameters command
  217. * Use like:
  218. * ZStatus_t zclCC_Send_SaveStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
  219. */
  220. #define zclCC_Send_SaveStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_SAVE_STARTUP_PARAMS, (d), (e) )
  221. /*
  222. * Send a Restore Startup Parameters command
  223. * Use like:
  224. * ZStatus_t zclCC_Send_RestoreStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
  225. */
  226. #define zclCC_Send_RestoreStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_RESTORE_STARTUP_PARAMS, (d), (e) )
  227. /*
  228. * Send a Reset Startup Parameters command
  229. * Use like:
  230. * ZStatus_t zclCC_Send_ResetStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
  231. */
  232. #define zclCC_Send_ResetStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_RESET_STARTUP_PARAMS, (d), (e) )
  233. /*
  234. * Send a Restart Device Response
  235. * Use like:
  236. * ZStatus_t zclCC_Send_RestartDeviceRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
  237. */
  238. #define zclCC_Send_RestartDeviceRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESTART_DEVICE_RSP, (d), (e) )
  239. /*
  240. * Send a Save Startup Parameters Response
  241. * Use like:
  242. * ZStatus_t zclCC_Send_SaveStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
  243. */
  244. #define zclCC_Send_SaveStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_SAVE_STARTUP_PARAMS_RSP, (d), (e) )
  245. /*
  246. * Send a Restore Startup Parameters Response
  247. * Use like:
  248. * ZStatus_t zclCC_Send_RestoreStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
  249. */
  250. #define zclCC_Send_RestoreStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESTORE_STARTUP_PARAMS_RSP, (d), (e) )
  251. /*
  252. * Send a Reset Startup Parameters Response
  253. * Use like:
  254. * ZStatus_t zclCC_Send_ResetStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
  255. */
  256. #define zclCC_Send_ResetStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESET_STARTUP_PARAMS_RSP, (d), (e) )
  257. /*********************************************************************
  258. * FUNCTIONS
  259. */
  260. /*
  261. * Register for callbacks from this cluster library
  262. */
  263. extern ZStatus_t zclCC_RegisterCmdCallbacks( uint8 endpoint, zclCC_AppCallbacks_t *callbacks );
  264. /*
  265. * Send Restart Device Command
  266. */
  267. ZStatus_t zclCC_Send_RestartDevice( uint8 srcEP, afAddrType_t *dstAddr,
  268. zclCCRestartDevice_t *pCmd,
  269. uint8 disableDefaultRsp, uint8 seqNum );
  270. /*
  271. * Send Startup Parameters Command (Save, Restore or Reset)
  272. */
  273. ZStatus_t zclCC_Send_StartupParamsCmd( uint8 srcEP, afAddrType_t *dstAddr,
  274. zclCCStartupParams_t *pCmd, uint8 cmdId,
  275. uint8 disableDefaultRsp, uint8 seqNum );
  276. /*
  277. * Send Server Response (Restart Device, Save, Restore or Reset)
  278. */
  279. ZStatus_t zclCC_Send_ServerParamsRsp( uint8 srcEP, afAddrType_t *dstAddr,
  280. zclCCServerParamsRsp_t *pCmd, uint8 cmdId,
  281. uint8 disableDefaultRsp, uint8 seqNum );
  282. #ifdef __cplusplus
  283. }
  284. #endif
  285. #endif /* ZCL_CC_H */