参考从零开始学习zstack之_第1页
参考从零开始学习zstack之_第2页
参考从零开始学习zstack之_第3页
参考从零开始学习zstack之_第4页
参考从零开始学习zstack之_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-----------------SampleApplication(下TheSampleApplicationSampleApp)1、介绍SampleApp_TaskID=task_id;IDOSSampleApp_NwkState=SampleApp_DstAddr.addrMode=(afAddrMode_t)AddrNotPresent;SampleApp_DstAddr.endPoint=0;SampleApp_DstAddr.addr.shortAddr=是设备建立后可以直接与协调器的ZDO交互信息。SampleApp_epDesc.endPoint=SampleApp_epDesc.simpleDesc=------------------SampleAppEP简单描述符SimpleDescriptionFormat_t*)&SampleApp_SimpleDesc;SampleApp_epDesc.latencyReq=afRegister(&SampleApp_epDesc那么通过什么呢,通过发送OSALSYS_EVENT_MSG消息中的(AF_INCOMING_MSG_CMD)事件到SampleApp任务ID。RegisterForKeys(SampleApp_TaskIDSampleApp_Group.ID=osal_memcpy(SampleApp_G,“Group1”);aps_AddGroup(SAMPLEAPP_ENDPOINT,&SampleApp_Group);一旦SampleApp_TaskID任务的某个OSAL事件发生,那么就可以通过调用SampleApp_ProcessEvent()函数来处理。在SampleApp_ProcessEvent()中有一个事件处理循if(events&SYS_EVENT_MSG{MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.eventcaseSampleApp_HandleKeys(((keyChange_t*)MSGpkt)->state,((keyChange_t*)MSGpkt)->keys);case//ThestatusisofZStatus_ttype[definedin//ThemessagefieldsaredefinedinAF.hafDataConfirm=(afDataConfirm_t*)MSGpkt;sentEP=afDataConfirm->endpoint;sentStatus=afDataConfirm->hdr.status;sentTransID=afDataConfirm->transID;返回成功Zsuccess。caseSampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);if((SampleApp_NwkState==DEV_ZB_COORD)||(SampleApp_NwkState==||(SampleApp_NwkState==DEV_END_DEVICE){//UpdatetheLCD’snetwork//Startsending"the"messageinaregularinterval.osal_start_timer(SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);}//Releasethememoryosal_msg_deallocate((uint8*)MSGpktif(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT{//Send"the"message//SetuptosendmessageSAMPLEAPP_SEND_MSG_TIMEOUT);//returnunprocessedreturn(events^}在SampleApp.h中定义了: osal_start_timer(SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_MSG_TIMEOUTSAMPLEAPP_SEND_MSG_TIMEOUT是需要定时的时间,这里就是发送周期信息的时间周期。voidSampleApp_SendPeriodicMessage(void{afAddrType_tdstAddr.addrMode=afAddrBroadcast;dstAddr.addr.shortAddr0xFFFF;dstAddr.endpoint=SAMPLEAPP_ENDPOINT;if(AF_DataRequest(&dstAddr,&SampleApp_epDesc,(uint8*)&sampleAppPeriodCounter,AF_DEFAULT_RADIUS)==afStatus_SUCCESS{Successfullyrequestedtobe }{Erroroccurredinrequestto }}就是会发送一个AF_INCOMING_MSG_CMD消息事件。caseSampleApp_MessageMSGCB(MSGpkt);SampleApp_MessageMSGCB(MSGpktvoidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt{switch(pkt->clusterId{case//DisplayandincrementacounterontheLCDinth

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论