欢迎来到天天文库
浏览记录
ID:46895884
大小:199.00 KB
页数:36页
时间:2019-11-29
《协议栈相关实验之SerialApp实验详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、协议栈相关实验之SerialApp实验详解第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络〃第一步:Z-Stack由main()函数开始执行,main()函数共做了2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统intmain(void)//Initializetheoperatingsystemosal_init_system();〃第二步,操作系统初始化osal_start_system();//初始化完系统任务事件后,止式开始执行操作系统}〃第二步,进入osal_init_system()函数,执行操作系统初始化uint8osal」nit_syst
2、em(void)〃初始化操作系统,其中最重要的是,初始化操作系统的任务{//InitializetheMemoryAllocationSystemosal_mem_init();//Initializethemessagequeueosal_qHead=NULL;//InitializethetimersosalTimerlnit();//InitializethePowerManagementSystemosal_pwrmgr_init();//Initializethesystemtasks・osallnitTasks();〃第三步,执行操作系统任务初始化函数//Setupef
3、ficientsearchforthefirstfreeblockofheap・osal_mem_kick();return(SUCCESS);}〃第三步,进入osallnitTasks()函数,执行操作系统任务初始化voidosallnitTasks(void)〃第匚步,初始化操作系统仃:务{uint8taskID=0;tasksEvents=(uint16*)osaLmem_alloc(sizeof(uint16)*tasksCnt);osal_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));〃任务优先级由高向低依次排列,高优先级
4、对应taskID的值反而小macTasklnit(tasklD++);〃不需要用八考虑nwk_init(tasklD++);〃不需要川户考虑Hal」nit(tasklD+4-);〃破件抽象层初始化,需要我们考虑#ifdefined(MT_TASK)MT_Tasklnit(tasklD++);#endifAPS_lnit(tasklD++);〃不需要川户考虑#ifdefined(ZIGBEE_FRAGMENTATION)APSF_lnit(tasklD++);#endifZDApp_lnit(tasklD++);〃第四步,ZDApp层,初始化,执行ZDApp_init函数后,如果是协
5、调器将建立网络,如果是终端设备将加入网络。#ifdefined(ZIGBEE_FREQ_AGILITY)
6、
7、defined(ZIGBEE_PANID_CONFLICT)ZDNwkMgr_lnit(tasklD++);#endifSerialApp_lnit(taskID);//KyJIJ层SerialApp层初始化,需要川户考虑在此处设代了一•个按键触发事件,〃当有按键按下的时候,产生一个系统消息}〃第四步,进入ZDAppJnit()W数,执行ZDApp层初始化//ThefirststepvoidZDApp_lnit(uint8taskjd)//Thefirststep,ZDApp
8、以初始化。{//SavethetaskIDZDAppTaskID=taskjd;//InitializetheZDOglobaldeviceshortaddressstorageZDAppNwkAddr.addrMode=Addr16Bit;ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;(void)NLME_GetExtAddr();//LoadthesaveExtAddrpointer.//Checkformanual"HoldAutoStart"ZDAppCheckForHoldKey();//InitializeZDOitemsa
9、ndsetupthedevice・typeofdevicetocreate.ZDO_lnit();//RegistertheendpointdescriptionwiththeAF//Thistaskdoesn'thaveaSimpledescription,butwestillneed//toregistertheendpoint.afRegister((endPointDesc_t冷&ZDAppepDesc);#ifdefined(ZDO_USERDESCRESP
此文档下载收益归作者所有