ZDO ZCL的调用:
zdo函数------->zAddrType_t(zdo专用的地址类型)------>fillAndSend(把目的endpoint置0)-------->AF_DataRequest
zcl函数---------->afAddrType_t------------------------------------------------------------------------------------>AF_DataRequest
typedef struct
{
union
{
uint16 shortAddr;
ZLongAddr_t extAddr;
} addr;
byte addrMode;
} zAddrType_t;//ZDO专用
typedef struct
{
union
{
uint16 shortAddr;
ZLongAddr_t extAddr;
} addr;
afAddrMode_t addrMode;
uint8 endPoint;
uint16 panId; // used for the INTER_PAN feature
} afAddrType_t;
虽说在架构框图上AF框内只有ZCL,但是我觉得ZDO(ZDP的对象发现及管理)也是特殊的ZCL
特殊在ZDO的endpoint端口号是0,如同80端口是http一样,其他的都是一样的
从APS对ZCL和ZDO的数据结构也是一样的,都是afIncomingMSGPacket_t结构体,
结构体中的clusterId成员:
在ZDO(endpoint=0)解析成命令字(NWK_addr_req、IEEE_addr_req、Simple_Desc_req),
在ZCL((endpoint!=0)&&(endpoint!=0xFF))解析成ClusterId。