123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- /**************************************************************************************************
- Filename: zcl_cc.h
- Revised: $Date: 2011-04-13 10:12:34 -0700 (Wed, 13 Apr 2011) $
- Revision: $Revision: 25678 $
- Description: Zigbee Cluster Library - Commissioning Cluster
- Copyright 2011 Texas Instruments Incorporated. All rights reserved.
- IMPORTANT: Your use of this Software is limited to those specific rights
- granted under the terms of a software license agreement between the user
- who downloaded the software, his/her employer (which must be your employer)
- and Texas Instruments Incorporated (the "License"). You may not use this
- Software unless you agree to abide by the terms of the License. The License
- limits your use, and you acknowledge, that the Software may not be modified,
- copied or distributed unless embedded on a Texas Instruments microcontroller
- or used solely and exclusively in conjunction with a Texas Instruments radio
- frequency transceiver, which is integrated into your product. Other than for
- the foregoing purpose, you may not use, reproduce, copy, prepare derivative
- works of, modify, distribute, perform, display or sell this Software and/or
- its documentation for any purpose.
- YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
- INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
- NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
- TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
- NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
- LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
- INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
- OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
- OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
- (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
- Should you have any questions regarding your right to use this Software,
- contact Texas Instruments Incorporated at www.TI.com.
- **************************************************************************************************/
- #ifndef ZCL_CC_H
- #define ZCL_CC_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*********************************************************************
- * INCLUDES
- */
- #include "zcl.h"
- /*********************************************************************
- * MACROS
- */
- // Startup Mode
- #define zcl_CCStartupMode( a ) ( (a) & CC_STARTUP_MODE )
- #define zcl_CCImmediate( a ) ( (a) & CC_IMMEDIATE )
- /*********************************************************************
- * CONSTANTS
- */
- /**********************************************/
- /*** Commissioning Clusters Attributes List ***/
- /**********************************************/
- // Commissioning Clusters Attribute Set
- #define ATTRID_MASK_CC_STARTUP_PARAMS_STACK 0x0000
- #define ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY 0x0010
- #define ATTRID_MASK_CC_JOIN_PARAMS 0x0020
- #define ATTRID_MASK_CC_END_DEVICE_PARAMS 0x0030
- #define ATTRID_MASK_CC_CONCENTRATOR_PARAMS 0x0040
- // Startup Parameters Attribute Set - Stack 0x000
- #define ATTRID_CC_SHORT_ADDRESS ( 0x0000 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_EXTENDED_PANID ( 0x0001 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_PANID ( 0x0002 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_CHANNEL_MASK ( 0x0003 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_PROTOCOL_VERSION ( 0x0004 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_STACK_PROFILE ( 0x0005 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
- #define ATTRID_CC_STARTUP_CONTROL ( 0x0006 | ATTRID_MASK_CC_STARTUP_PARAMS_STACK )
-
- // Startup Parameters Attribute Set - Security 0x001
- #define ATTRID_CC_TRUST_CENTER_ADDRESS ( 0x0000 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_TRUST_CENTER_MASTER_KEY ( 0x0001 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_NETWORK_KEY ( 0x0002 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_USE_INSECURE_JOIN ( 0x0003 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_PRECONFIGURED_LINK_KEY ( 0x0004 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_NETWORK_KEY_SEQ_NUM ( 0x0005 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_NETWORK_KEY_TYPE ( 0x0006 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- #define ATTRID_CC_NETWORK_MANAGER_ADDRESS ( 0x0007 | ATTRID_MASK_CC_STARTUP_PARAMS_SECURITY )
- // Join Parameters Attribute Set 0x002
- #define ATTRID_CC_SCAN_ATTEMPTS ( 0x0000 | ATTRID_MASK_CC_JOIN_PARAMS )
- #define ATTRID_CC_TIME_BETWEEN_SCANS ( 0x0001 | ATTRID_MASK_CC_JOIN_PARAMS )
- #define ATTRID_CC_REJOIN_INTERVAL ( 0x0002 | ATTRID_MASK_CC_JOIN_PARAMS )
- #define ATTRID_CC_MAX_REJOIN_INTERVAL ( 0x0003 | ATTRID_MASK_CC_JOIN_PARAMS )
-
- // End Device Parameters Attribute Set 0x003
- #define ATTRID_CC_INDIRECT_POLL_RATE ( 0x0000 | ATTRID_MASK_CC_END_DEVICE_PARAMS )
- #define ATTRID_CC_PARENT_RETRY_THRESHOLD ( 0x0001 | ATTRID_MASK_CC_END_DEVICE_PARAMS )
-
- // Concentrator Parameters Attribute Set 0x004
- #define ATTRID_CC_CONCENTRATOR_FLAG ( 0x0000 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
- #define ATTRID_CC_CONCENTRATOR_RADIUS ( 0x0001 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
- #define ATTRID_CC_CONCENTRATOR_DISCOVERY_TIME ( 0x0002 | ATTRID_MASK_CC_CONCENTRATOR_PARAMS )
- /************************************************************/
- /*** Commissioning Cluster Command ID ***/
- /************************************************************/
- // Commands Received by Commissioning Cluster Server
-
- #define COMMAND_CC_RESTART_DEVICE 0x0000
- #define COMMAND_CC_SAVE_STARTUP_PARAMS 0x0001
- #define COMMAND_CC_RESTORE_STARTUP_PARAMS 0x0002
- #define COMMAND_CC_RESET_STARTUP_PARAMS 0x0003
-
- // Commands generated by Commissioning Cluster Server
- #define COMMAND_CC_RESTART_DEVICE_RSP 0x0000
- #define COMMAND_CC_SAVE_STARTUP_PARAMS_RSP 0x0001
- #define COMMAND_CC_RESTORE_STARTUP_PARAMS_RSP 0x0002
- #define COMMAND_CC_RESET_STARTUP_PARAMS_RSP 0x0003
- /******************************************************************/
- /*** Enumerations ***/
- /******************************************************************/
-
- // StartupControl attribute values
- #define CC_STARTUP_CONTROL_OPTION_0 0x00 // Silent join
- #define CC_STARTUP_CONTROL_OPTION_1 0x01 // Form network
- #define CC_STARTUP_CONTROL_OPTION_2 0x02 // Rejoin network
- #define CC_STARTUP_CONTROL_OPTION_3 0x03 // MAC Associate
- /******************************************************************/
- /*** BitMap ***/
- /******************************************************************/
- // Restart Device command Options bit masks:
- // - Startup Mode (bits: 0..2)
- // - Immediate (bit: 3)
- #define CC_STARTUP_MODE 0x07
- #define CC_IMMEDIATE 0x08
- // Startup Mode Sub-Field Values
- #define CC_STARTUP_MODE_REPLACE_RESTART 0x00
- #define CC_STARTUP_MODE_ONLY_RESTART 0x01
- // Reset Startup Parameters command Options
- #define CC_RESET_CURRENT 0x01
- #define CC_RESET_ALL 0x02
- #define CC_ERASE_INDEX 0x04
- /******************************************************************/
- /*** Other Constants ***/
- /******************************************************************/
- // Default Attribute Values
- #define CC_DEFAULT_SHORT_ADDR 0xFFFF
- #define CC_DEFAULT_PANID 0xFFFF
- #define CC_DEFAULT_PROTOCOL_VERSION 0x02
- #define CC_DEFAULT_NETWORK_KEY_SEQ_NUM 0x00
- #define CC_DEFAULT_NETWORK_MANAGER_ADDR 0x00
- #define CC_DEFAULT_SCAN_ATTEMPTS 0x05
- #define CC_DEFAULT_TIME_BETWEEN_SCANS 0x64
- #define CC_DEFAULT_REJOIN_INTERVAL 0x3C
- #define CC_DEFAULT_MAX_REJOIN_INTERVAL 0x0E10
- #define CC_DEFAULT_CONCENTRATOR_RADIUS 0x0F
- #define CC_DEFAULT_CONCENTRATOR_DISCOVERY_TIME 0x00
- // Max Attribute Values
- #define CC_MAX_INDIRECT_POLL_RATE 0xFFFF
- #define CC_MAX_PARENT_RETRY_THRESHOLD 0xFF
- #define CC_MAX_CONCENTRATOR_RADIUS 0xFF
- #define CC_MAX_CONCENTRATOR_DISCOVERY_TIME 0xFF
- // Command Packet Length
- #define CC_PACKET_LEN_RESTART_DEVICE 0x03
- #define CC_PACKET_LEN_STARTUP_PARAMS_CMD 0x02
- #define CC_PACKET_LEN_SERVER_RSP 0x01
-
- /********************************************************************
- * MACROS
- */
-
- /*********************************************************************
- * TYPEDEFS
- */
-
- /*** Structures used for callback functions ***/
- // Restart Device command
- typedef struct
- {
- uint8 options;
- uint8 delay;
- uint8 jitter;
- } zclCCRestartDevice_t;
- // Startup Parameters command - Save, Restore, Reset
- typedef struct
- {
- uint8 options;
- uint8 index;
- } zclCCStartupParams_t;
- // Server Parameters Response command
- typedef struct
- {
- uint8 status;
- } zclCCServerParamsRsp_t;
- /*********************************************************************
- * CALLBACKS
- */
- /* Commands */
- // This callback is called to process an incoming Restart Device command
- typedef void (*zclCC_Restart_Device_t)( zclCCRestartDevice_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Save Startup Parameters command
- typedef void (*zclCC_Save_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Restore Startup Parameters command
- typedef void (*zclCC_Restore_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Reset Startup Parameters command
- typedef void (*zclCC_Reset_StartupParams_t)( zclCCStartupParams_t *pCmd, afAddrType_t *srcAddr, uint8 seqNum ) ;
- /* Response */
- // This callback is called to process an incoming Restart Device Response command
- typedef void (*zclCC_Restart_DeviceRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Save Startup Parameters Response command
- typedef void (*zclCC_Save_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Restore Startup Parameters Response command
- typedef void (*zclCC_Restore_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum );
- // This callback is called to process an incoming Reset Startup Parameters Response command
- typedef void (*zclCC_Reset_StartupParamsRsp_t)( zclCCServerParamsRsp_t *pRsp, afAddrType_t *srcAddr, uint8 seqNum ) ;
- // Register Callbacks table entry - enter function pointers for callbacks that
- // the application would like to receive
- typedef struct
- {
- zclCC_Restart_Device_t pfnRestart_Device;
- zclCC_Save_StartupParams_t pfnSave_StartupParams;
- zclCC_Restore_StartupParams_t pfnRestore_StartupParams;
- zclCC_Reset_StartupParams_t pfnReset_StartupParams;
- zclCC_Restart_DeviceRsp_t pfnRestart_DeviceRsp;
- zclCC_Save_StartupParamsRsp_t pfnSave_StartupParamsRsp;
- zclCC_Restore_StartupParamsRsp_t pfnRestore_StartupParamsRsp;
- zclCC_Reset_StartupParamsRsp_t pfnReset_StartupParamsRsp;
- } zclCC_AppCallbacks_t;
- /*********************************************************************
- * VARIABLES
- */
- /*********************************************************************
- * FUNCTION MACROS
- */
- /*
- * Send a Save Startup Parameters command
- * Use like:
- * ZStatus_t zclCC_Send_SaveStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_SaveStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_SAVE_STARTUP_PARAMS, (d), (e) )
- /*
- * Send a Restore Startup Parameters command
- * Use like:
- * ZStatus_t zclCC_Send_RestoreStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_RestoreStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_RESTORE_STARTUP_PARAMS, (d), (e) )
- /*
- * Send a Reset Startup Parameters command
- * Use like:
- * ZStatus_t zclCC_Send_ResetStartupParams( uint8 srcEP, afAddrType_t *dstAddr, zclCCStartupParams_t *pCmd, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_ResetStartupParams(a,b,c,d,e) zclCC_Send_StartupParamsCmd( (a), (b), (c), COMMAND_CC_RESET_STARTUP_PARAMS, (d), (e) )
- /*
- * Send a Restart Device Response
- * Use like:
- * ZStatus_t zclCC_Send_RestartDeviceRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_RestartDeviceRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESTART_DEVICE_RSP, (d), (e) )
- /*
- * Send a Save Startup Parameters Response
- * Use like:
- * ZStatus_t zclCC_Send_SaveStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_SaveStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_SAVE_STARTUP_PARAMS_RSP, (d), (e) )
- /*
- * Send a Restore Startup Parameters Response
- * Use like:
- * ZStatus_t zclCC_Send_RestoreStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_RestoreStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESTORE_STARTUP_PARAMS_RSP, (d), (e) )
- /*
- * Send a Reset Startup Parameters Response
- * Use like:
- * ZStatus_t zclCC_Send_ResetStartupParamsRsp( uint8 srcEP, afAddrType_t *dstAddr, zclCCServerParamsRsp_t *pRsp, uint8 disableDefaultRsp, uint8 seqNum );
- */
- #define zclCC_Send_ResetStartupParamsRsp(a,b,c,d,e) zclCC_Send_ServerParamsRsp( (a), (b), (c), COMMAND_CC_RESET_STARTUP_PARAMS_RSP, (d), (e) )
- /*********************************************************************
- * FUNCTIONS
- */
- /*
- * Register for callbacks from this cluster library
- */
- extern ZStatus_t zclCC_RegisterCmdCallbacks( uint8 endpoint, zclCC_AppCallbacks_t *callbacks );
- /*
- * Send Restart Device Command
- */
- ZStatus_t zclCC_Send_RestartDevice( uint8 srcEP, afAddrType_t *dstAddr,
- zclCCRestartDevice_t *pCmd,
- uint8 disableDefaultRsp, uint8 seqNum );
- /*
- * Send Startup Parameters Command (Save, Restore or Reset)
- */
- ZStatus_t zclCC_Send_StartupParamsCmd( uint8 srcEP, afAddrType_t *dstAddr,
- zclCCStartupParams_t *pCmd, uint8 cmdId,
- uint8 disableDefaultRsp, uint8 seqNum );
- /*
- * Send Server Response (Restart Device, Save, Restore or Reset)
- */
- ZStatus_t zclCC_Send_ServerParamsRsp( uint8 srcEP, afAddrType_t *dstAddr,
- zclCCServerParamsRsp_t *pCmd, uint8 cmdId,
- uint8 disableDefaultRsp, uint8 seqNum );
- #ifdef __cplusplus
- }
- #endif
- #endif /* ZCL_CC_H */
|