资源描述:
《Z-Stack协议中命令的概念.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Z-Stack协议中命令的概念(2010-12-0713:22)分类:ZigBee技术学习命令就是为了实现某种特定的通信而指定的一种强制性的通信方式。在SimpleApp的例子中定义了一个命令:在SimpleApp.h中#defineTOGGLE_LIGHT_CMD_ID1这个是灯状态切换的一个命令,也可以说是一个串或者簇,ID为1.作为灯设备来说,该命令是输入命令,所以定义在输入命令列表中:在文件SimpleController.cconstcId_tzb_InCmdList[NUM_IN_CMD_C
2、ONTROLLER]={TOGGLE_LIGHT_CMD_ID};该设备的简单描述符定义为:constSimpleDescriptionFormat_tzb_SimpleDesc={MY_ENDPOINT_ID,//端点(2)MY_PROFILE_ID,//ProfileID0x0F10DEV_ID_CONTROLLER,//设备IDDEVICE_VERSION_CONTROLLER,//设备版本0,//保留NUM_IN_CMD_CONTROLLER,//输入命令数量(1)(cId_t*)zb_InCm
3、dList,//输入命令列表NUM_OUT_CMD_CONTROLLER,//输出命令数量(2)(cId_t*)NULL//输出命令列表(空)};作为开头设备,该命令为输出命令,所以定义在输入命令列表中:constcId_tzb_OutCmdList[NUM_OUT_CMD_SWITCH]={TOGGLE_LIGHT_CMD_ID};该设备的简单描述符定义为:constSimpleDescriptionFormat_tzb_SimpleDesc={MY_ENDPOINT_ID,//端点(2)MY_PRO
4、FILE_ID,//ProfileIDDEV_ID_SWITCH,//设备IDDEVICE_VERSION_SWITCH,//设备版本0,//保留NUM_IN_CMD_SWITCH,//输入命令数量(0)(cId_t*)NULL,//输入命令列表(空)NUM_OUT_CMD_SWITCH,//输出命令数量(1)(cId_t*)zb_OutCmdList//输出命令列表};描述符定义好后,需要调用函数afRegister()登记一个EP描述符afStatus_tafRegister(endPointDes
5、c_t*epDesc){epList_t*ep=afRegisterExtended(epDesc,NULL);return((ep==NULL)?afStatus_MEM_FAIL:afStatus_SUCCESS);}该函数是在任务初始化函数中SAPI_Init()中被调用的。这样就可以使用该端点了,从而可以使用该命令。命令的发送是通过函数zb_SendDataRequest()发送。//参数:目的地址,命令ID,数据长度,数据,句柄,发送选项,半径voidzb_SendDataRequest(ui
6、nt16destination,uint16commandId,uint8len,uint8*pData,uint8handle,uint8txOptions,uint8radius){afStatus_tstatus;afAddrType_tdstAddr;txOptions
7、=AF_DISCV_ROUTE;//设置目的地址if(destination==ZB_BINDING_ADDR){//绑定的模式dstAddr.addrMode=afAddrNotPresent;}else{//使用短地址dst
8、Addr.addr.shortAddr=destination;dstAddr.addrMode=afAddr16Bit;if(ADDR_NOT_BCAST!=NLME_IsAddressBroadcast(destination)){txOptions&=~AF_ACK_REQUEST;}}//设置目的端点dstAddr.endPoint=sapi_epDesc.simpleDesc->EndPoint;//发送信息status=AF_DataRequest(&dstAddr,&sapi_epDesc
9、,commandId,len,pData,&handle,txOptions,radius);if(status!=afStatus_SUCCESS){SAPI_SendCback(SAPICB_DATA_CNF,status,handle);}}在代码中可以知道,发送数据调用了AF_DataRequest()函数。由于该实验是基于绑定的命令传输,所以目的地址为指定的0xFFFE,这样设备将自动地去绑定表格中的查找真正的目的地址,如果绑定表