📄 zdprofile.h
字号:
#ifndef ZDPROFILE_H
#define ZDPROFILE_H
/*********************************************************************
Filename: ZDProfile.h
Revised: $Date: 2006-11-30 12:05:15 -0800 (Thu, 30 Nov 2006) $
Revision: $Revision: 12906 $
Description:
This file contains the interface to the Zigbee Device Object.
Notes:
Copyright (c) 2006 by Texas Instruments, Inc.
All Rights Reserved. Permission to use, reproduce, copy, prepare
derivative works, modify, distribute, perform, display or sell this
software and/or its documentation for any purpose is prohibited
without the express written consent of Texas Instruments, Inc.
*********************************************************************/
#ifdef __cplusplus
extern "C"
{
#endif
/*********************************************************************
* INCLUDES
*/
#include "ZComDef.h"
#include "NLMEDE.h"
#include "AF.h"
#include "ZDConfig.h"
/*********************************************************************
* CONSTANTS
*/
#define ZDO_EP 0 // Endpoint of ZDO
#define ZDO_PROFILE_ID 0
// IEEE_addr_req request types
#define ZDP_ADDR_REQTYPE_SINGLE 0
#define ZDP_ADDR_REQTYPE_EXTENDED 1
#define ZDP_ADDR_REQTYPE_MEMBERSHIP 2
// ZDO Status Values
#define ZDP_SUCCESS 0x00 // Operation completed successfully
#define ZDP_INVALID_REQTYPE 0x80 // The supplied request type was invalid
#define ZDP_DEVICE_NOT_FOUND 0x81 // Reserved
#define ZDP_INVALID_EP 0x82 // Invalid endpoint value
#define ZDP_NOT_ACTIVE 0x83 // Endpoint not described by a simple desc.
#define ZDP_NOT_SUPPORTED 0x84 // Optional feature not supported
#define ZDP_TIMEOUT 0x85 // Operation has timed out
#define ZDP_NO_MATCH 0x86 // No match for end device bind
#define ZDP_TABLE_FULL 0x87 // Bind request failed, no resources
#define ZDP_NO_ENTRY 0x88 // Unbind request failed, no entry
#define ZDP_INSUFFICIENT_SPACE 0x8a
#define ZDP_NOT_PERMITTED 0x8b
#define ZDP_NETWORK_DISCRIPTOR_SIZE 8
#define ZDP_NETWORK_EXTENDED_DISCRIPTOR_SIZE 14
#define ZDP_RTG_DISCRIPTOR_SIZE 5
#define ZDP_BIND_DISCRIPTOR_SIZE 19
// Mgmt_Permit_Join_req fields
#define ZDP_MGMT_PERMIT_JOIN_REQ_DURATION 0
#define ZDP_MGMT_PERMIT_JOIN_REQ_TC_SIG 1
#define ZDP_MGMT_PERMIT_JOIN_REQ_SIZE 2
// Mgmt_Lqi_rsp - (neighbor table) device type
#define ZDP_MGMT_DT_COORD 0x0
#define ZDP_MGMT_DT_ROUTER 0x1
#define ZDP_MGMT_DT_ENDDEV 0x2
// Mgmt_Lqi_rsp - (neighbor table) relationship
#define ZDP_MGMT_REL_PARENT 0x0
#define ZDP_MGMT_REL_CHILD 0x1
#define ZDP_MGMT_REL_SIBLING 0x2
#define ZDP_MGMT_REL_UNKNOWN 0x3
// Mgmt_Lqi_rsp - (neighbor table) unknown boolean value
#define ZDP_MGMT_BOOL_UNKNOWN 0x02
/*********************************************************************
* Message/Cluster IDS
*/
// ZDO Cluster IDs
#define ZDO_RESPONSE_BIT_V1_0 ((uint8)0x80)
#define ZDO_RESPONSE_BIT ((uint16)0x8000)
#define NWK_addr_req ((uint16)0x0000)
#define IEEE_addr_req ((uint16)0x0001)
#define Node_Desc_req ((uint16)0x0002)
#define Power_Desc_req ((uint16)0x0003)
#define Simple_Desc_req ((uint16)0x0004)
#define Active_EP_req ((uint16)0x0005)
#define Match_Desc_req ((uint16)0x0006)
#define NWK_addr_rsp (NWK_addr_req | ZDO_RESPONSE_BIT)
#define IEEE_addr_rsp (IEEE_addr_req | ZDO_RESPONSE_BIT)
#define Node_Desc_rsp (Node_Desc_req | ZDO_RESPONSE_BIT)
#define Power_Desc_rsp (Power_Desc_req | ZDO_RESPONSE_BIT)
#define Simple_Desc_rsp (Simple_Desc_req | ZDO_RESPONSE_BIT)
#define Active_EP_rsp (Active_EP_req | ZDO_RESPONSE_BIT)
#define Match_Desc_rsp (Match_Desc_req | ZDO_RESPONSE_BIT)
#define Complex_Desc_req ((uint16)0x0010)
#define User_Desc_req ((uint16)0x0011)
#define Discovery_Cache_req ((uint16)0x0012)
#define End_Device_annce ((uint16)0x0013)
#define User_Desc_set ((uint16)0x0014)
#define Server_Discovery_req ((uint16)0x0015)
#define Complex_Desc_rsp (Complex_Desc_req | ZDO_RESPONSE_BIT)
#define User_Desc_rsp (User_Desc_req | ZDO_RESPONSE_BIT)
#define Discovery_Cache_rsp (Discovery_Cache_req | ZDO_RESPONSE_BIT)
#define User_Desc_conf (User_Desc_set | ZDO_RESPONSE_BIT)
#define Server_Discovery_rsp (Server_Discovery_req | ZDO_RESPONSE_BIT)
#define End_Device_Bind_req ((uint16)0x0020)
#define Bind_req ((uint16)0x0021)
#define Unbind_req ((uint16)0x0022)
#define Bind_rsp (Bind_req | ZDO_RESPONSE_BIT)
#define End_Device_Bind_rsp (End_Device_Bind_req | ZDO_RESPONSE_BIT)
#define Unbind_rsp (Unbind_req | ZDO_RESPONSE_BIT)
#define Mgmt_NWK_Disc_req ((uint16)0x0030)
#define Mgmt_Lqi_req ((uint16)0x0031)
#define Mgmt_Rtg_req ((uint16)0x0032)
#define Mgmt_Bind_req ((uint16)0x0033)
#define Mgmt_Leave_req ((uint16)0x0034)
#define Mgmt_Direct_Join_req ((uint16)0x0035)
#define Mgmt_Permit_Join_req ((uint16)0x0036)
#define Mgmt_NWK_Disc_rsp (Mgmt_NWK_Disc_req | ZDO_RESPONSE_BIT)
#define Mgmt_Lqi_rsp (Mgmt_Lqi_req | ZDO_RESPONSE_BIT)
#define Mgmt_Rtg_rsp (Mgmt_Rtg_req | ZDO_RESPONSE_BIT)
#define Mgmt_Bind_rsp (Mgmt_Bind_req | ZDO_RESPONSE_BIT)
#define Mgmt_Leave_rsp (Mgmt_Leave_req | ZDO_RESPONSE_BIT)
#define Mgmt_Direct_Join_rsp (Mgmt_Direct_Join_req | ZDO_RESPONSE_BIT)
#define Mgmt_Permit_Join_rsp (Mgmt_Permit_Join_req | ZDO_RESPONSE_BIT)
/*********************************************************************
* TYPEDEFS
*/
#define ZDP_BINDINGENTRY_SIZE 19
// This structure is used to build the Mgmt Network Discover Response
typedef struct
{
uint8 extendedPANID[Z_EXTADDR_LEN]; // The extended PAN ID
uint16 PANId; // The network PAN ID
byte logicalChannel; // Network's channel
byte stackProfile; // Network's profile
byte version; // Network's Zigbee version
byte beaconOrder; // Beacon Order
byte superFrameOrder;
byte permitJoining; // PermitJoining. 1 or 0
} mgmtNwkDiscItem_t;
// This structure is used to build the Mgmt LQI Response
typedef struct
{
uint16 nwkAddr; // device's short address
uint16 PANId; // The neighbor device's PAN ID
uint8 extPANId[Z_EXTADDR_LEN]; // The neighbor device's Extended PanID
byte txQuality; // Transmit quality
byte rxLqi; // Receive LQI
} neighborLqiItem_t;
#define ZDP_NEIGHBORLQI_SIZE 12
// This structure is used to build the Mgmt_Lqi_rsp
typedef struct
{
uint16 panID; // PAN Id
uint8 extPanID[Z_EXTADDR_LEN];// Extended Pan ID
uint8 extAddr[Z_EXTADDR_LEN]; // Extended address
uint16 nwkAddr; // Network address
uint8 devType; // Device type
uint8 rxOnIdle; // RxOnWhenIdle
uint8 relation; // Relationship
uint8 permit; // Permit joining
uint8 depth; // Depth
uint8 lqi; // LQI
} ZDP_MgmtLqiItem_t;
// devType, rxOnIdle, relation, are all packed into 1 byte: 18-2=16.
#define ZDP_MGMTLQI_SIZE 15
#define ZDP_MGMTLQI_EXTENDED_SIZE 22 // One extra byte for permitJointing, also with extended PanID instead of PanID 15+8-2+1 = 22
// This structure is used to build the Mgmt Routing Response
// Notice, if you change this structure, you must also change
// rtgEntry_t in rtg.h
typedef struct
{
uint16 dstAddress; // Destination short address
uint16 nextHopAddress; // next hop short address
byte expiryTime; // expiration time - not used for response
byte status; // route entry status
} rtgItem_t;
// expiryTime is not packed & sent OTA.
#define ZDP_ROUTINGENTRY_SIZE 5
typedef struct
{
uint8 TransSeq;
byte SecurityUse;
uint16 srcAddr;
uint16 localCoordinator;
uint8 ieeeAddr[Z_EXTADDR_LEN];
uint8 endpoint;
uint16 profileID;
uint8 numInClusters;
uint16 *inClusters;
uint8 numOutClusters;
uint16 *outClusters;
} ZDEndDeviceBind_t;
/*********************************************************************
* GLOBAL VARIABLES
*/
extern byte ZDP_TransID;
/*********************************************************************
* MACROS
*/
/*
* Generic data send function
*/
extern afStatus_t ZDP_SendData( uint8 *transSeq, zAddrType_t *dstAddr, uint16 cmd, byte len,
byte *buf, byte SecurityEnable );
#if defined ( ZDO_NODEDESC_REQUEST )
/*
* ZDP_NodeDescReq - Request a Node Description
*
* @MT SPI_CMD_ZDO_NODE_DESC_REQ
* (UInt16 DstAddr,
* UInt16 NWKAddrOfInterest,
* byte SecuritySuite)
*
*/
#define ZDP_NodeDescReq( dstAddr, NWKAddrOfInterest, SecurityEnable ) \
ZDP_NWKAddrOfInterestReq( dstAddr, \
NWKAddrOfInterest, Node_Desc_req, SecurityEnable )
#endif
#if defined ( ZDO_POWERDESC_REQUEST )
/*
* ZDP_PowerDescReq - Request a Power Description
*
* @MT SPI_CMD_ZDO_POWER_DESC_REQ
* (UInt16 DstAddr,
* UInt16 NWKAddrOfInterest,
* byte SecuritySuit)
*
*/
#define ZDP_PowerDescReq( dstAddr, NWKAddrOfInterest, SecurityEnable ) \
ZDP_NWKAddrOfInterestReq( dstAddr, \
NWKAddrOfInterest, Power_Desc_req, SecurityEnable )
#endif
#if defined ( ZDO_ACTIVEEP_REQUEST )
/*
* ZDP_ActiveEPReq - Request a device's endpoint list
*
* @MT SPI_CMD_ZDO_ACTIVE_EPINT_REQ
* (UInt16 DstAddr,
* UInt16 NWKAddrOfInterest,
* byte SecuritySuite)
*
*/
#define ZDP_ActiveEPReq( dstAddr, NWKAddrOfInterest, SecurityEnable ) \
ZDP_NWKAddrOfInterestReq( dstAddr, \
NWKAddrOfInterest, Active_EP_req, SecurityEnable )
#endif
#if defined ( ZDO_COMPLEXDESC_REQUEST )
/*
* ZDP_ComplexDescReq - Request a device's complex description
*
* @MT SPI_CMD_ZDO_COMPLEX_DESC_REQ
* (UInt16 DstAddr,
* UInt16 NWKAddrOfInterest,
* byte SecuritySuite)
*
*/
#define ZDP_ComplexDescReq( dstAddr, NWKAddrOfInterest, SecurityEnable ) \
ZDP_NWKAddrOfInterestReq( dstAddr, \
NWKAddrOfInterest, Complex_Desc_req, SecurityEnable )
#endif
#if defined ( ZDO_USERDESC_REQUEST )
/*
* ZDP_UserDescReq - Request a device's user description
*
* @MT SPI_CMD_ZDO_USER_DESC_REQ
* (UInt16 DstAddr,
* UInt16 NWKAddrOfInterest,
* byte SecuritySuite)
*
*/
#define ZDP_UserDescReq( dstAddr, NWKAddrOfInterest, SecurityEnable ) \
ZDP_NWKAddrOfInterestReq( dstAddr, \
NWKAddrOfInterest, User_Desc_req, SecurityEnable )
#endif
#if defined ( ZDO_BIND_UNBIND_REQUEST )
/*
* ZDP_BindReq - bind request
*
* @MT SPI_CMD_ZDO_BIND_REQ
* (UInt16 DstAddr,
* UInt64 SrcAddress,
* byte SrcEndpoint,
* uint16 ClusterID,
* zAddrType_t *DstAddress,
* byte DstEndpoint,
* byte SecuritySuite)
*
*/
#define ZDP_BindReq( dstAddr, SourceAddr, SrcEP, \
ClusterID, DestinationAddr, DstEP, SecurityEnable ) \
ZDP_BindUnbindReq( Bind_req, dstAddr, \
SourceAddr, SrcEP, ClusterID, \
DestinationAddr, DstEP, SecurityEnable )
#endif
#if defined ( ZDO_BIND_UNBIND_REQUEST )
/*
* ZDP_UnbindReq - Unbind request
*
* @MT SPI_CMD_ZDO_UNBIND_REQ
* (UInt16 DstAddr,
* UInt64 SrcAddress,
* byte SrcEndpoint,
* uint16 ClusterID,
* zAddrType_t DestinationAddr,
* byte DstEndpoint,
* byte SecuritySuite)
*
*/
#define ZDP_UnbindReq( dstAddr, SourceAddr, SrcEP, \
ClusterID, DestinationAddr, DstEP, SecurityEnable ) \
ZDP_BindUnbindReq( Unbind_req, dstAddr, \
SourceAddr, SrcEP, ClusterID, \
DestinationAddr, DstEP, SecurityEnable )
#endif
#if defined ( ZDO_MGMT_LQI_REQUEST )
/*
* ZDP_MgmtLqiReq - Send a Management LQI Request
*
* @MT SPI_CMD_ZDO_MGMT_LQI_REQ
* (UInt16 DstAddr,
* byte StartIndex)
*
*/
#define ZDP_MgmtLqiReq( dstAddr, StartIndex, SecurityEnable ) \
ZDP_SendData( &ZDP_TransID, dstAddr, Mgmt_Lqi_req, 1, &StartIndex, SecurityEnable )
#endif
#if defined ( ZDO_MGMT_RTG_REQUEST )
/*
* ZDP_MgmtRtgReq - Send a Management Routing Table Request
*
* @MT SPI_CMD_ZDO_MGMT_RTG_REQ
* (UInt16 DstAddr,
* byte StartIndex)
*
*/
#define ZDP_MgmtRtgReq( dstAddr, StartIndex, SecurityEnable ) \
ZDP_SendData( &ZDP_TransID, dstAddr, Mgmt_Rtg_req, 1, &StartIndex, SecurityEnable )
#endif
#if defined ( ZDO_MGMT_BIND_REQUEST )
/*
* ZDP_MgmtBindReq - Send a Management Binding Table Request
*
* @MT SPI_CMD_ZDO_MGMT_BIND_REQ
* (UInt16 DstAddr,
* byte StartIndex)
*
*/
#define ZDP_MgmtBindReq( dstAddr, StartIndex, SecurityEnable ) \
ZDP_SendData( &ZDP_TransID, dstAddr, Mgmt_Bind_req, 1, &StartIndex, SecurityEnable )
#endif
#if defined ( ZDO_MGMT_LEAVE_REQUEST )
/*
* ZDP_MgmtLeaveReq - Send a Management Leave Request
*
* @MT SPI_CMD_ZDO_MGMT_LEAVE_REQ
* (UInt16 DstAddr,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -