- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7智能家居SampleApp工程原始分析
Sample Application工程
-----智能家居应用工程
一、Sample Application工程概况描述 ?????Sample ApplicationZStack协议栈提供的一个非常简单的演示实例,实例中的每个设备都可以发送和接收两信息周期信息-----加入该网络所有设备每隔 S(加上一个随机数mS为单位)发送一个周期信息,该信息的数据载荷为发送信息次数。闪烁信息---------通过按下 SW1发送一个控制灯闪烁的广播信息,该广播信息只针对组 1 的所有设备。所有设备初始化加入组 1,所以网络一旦。可以通过按下设备的 SW2 退出组 1,。通过按下 SW2 ,从而又可以接受ZStack协议栈中的HAL_KEY_SW_1和HAL_KEY_SW_2。同时工程中也定义了一个事件用来处理周期信息事件,即SAMPLEAPP_SEND_PERIODIC_MSG_EVT[SampleApp.h]。
二、一般工程说明:
在学习ZStack协议栈的时候我们要把握一个重点就是事件的产生和事件的处理。任务的初始化为事件的产生制造了条件,是事件产生的前提,任何工程都需要先初始化。当有事件产生OS就会调用相应的处理函数进行处理。在OS循环那一节我们可以看到在任务初始化的最后一项就是应用层的初始化,而在指向处理函数的指针数组中最后一项是对应的应用层的处理函数。应用层相关事件会由应用层处理函数进行处理。每一层都是相互对应,各司其职。
三、Sample Application工程初始化与事件的处理
3.1、Sample Application工程初始化如下:
void SampleApp_Init( uint8 task_id )
{
SampleApp_TaskID = task_id;// OS通过数参数的传递为每一层分发任务ID, SampleApp_NwkState = DEV_INIT;//设定设备的网络状态为“初始化”
SampleApp_TransID = 0;
#if defined ( SOFT_START )
/*SOFT_START 是一个编译选项,如果一个网络中没有协调
器可以让设备以协调器的形式启动*/
// 这里我们根据跳线决定设备是路由器或者是协调器,如果检测到
//跳线则为协调器否则为路由器,在设备启动提及如果定义了SOFT_START
//则设备初始化时设备的类型为可选类型。当程序执行到这里就明确了具
//体是什么类型的设备
if ( readCoordinatorJumper() )//如果检测到跳线则设备为协调器
zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
else//如果没有检测到跳线则设备为路由器
zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;
#endif // SOFT_START
#if defined ( HOLD_AUTO_START )
//如果编译了 HOLD_AUTO_START则执行以下函数
ZDOInitDevice(0);
#endif
// 设定周期信息的地址,此地址为广播地址0xFFFF
SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
//设定闪烁信息的地址,此地址为组1的地址
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
// 对端点SAMPLEAPP_ENDPOINT进行描述
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
SampleApp_epDesc.task_id = SampleApp_TaskID;
SampleApp_ep
文档评论(0)