ZigBee 2007-Pro(无线系统)多跳组播的

ZDO_StartRouterConfirmCB节点求成功加入后调用回调函数

ZDO层接收到该消息后,(ZDApp.c文件中ZDApp_ProcessOSALMsg())首先修改设备状态为正在加入网络: devState = DEV_NWK_JOINING; 任务事件处理函数将执行请求加入网络事件:NLME_JoinRequest();经过一番的网络请求后NWK层将接收到网络反馈:ZDO_JoinConfirmCB( uint16 PanId, ZStatus_t Status ) 是对请求加入的网络反馈,接着发送加入网络指示消息至ZDO层。ZDApp_SendMsg( ZDAppTaskID, ZDO_NWK_JOIN_IND, sizeof(osal_event_hdr_t), (byte*)NULL ); ZDO层接收到该消息后,任务事件处理函数将执行处理加入网络函数: ZDApp_ProcessNetworkJoin(); 修改设备状态为终端设备:devState = DEV_END_DEVICE; 并且根据设备逻辑类型为路由器,发送请求启动路由: NLME_StartRouterRequest( 0, 0, false ); 经过一番启动路由动作后,NWK层接收到请求启动路由反馈ZDO_StartRouterConfirmCB( ZStatus_t Status ) ,然后设置启动路由事件osal_set_event( ZDAppTaskID, ZDO_ROUTER_START );此时修改由路状态为:devState = DEV_ROUTER;检查供电状态,设置ZDO状态改变事件osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );ZDO更新网络状态事件:ZDO_UpdateNwkStatus( devState ); 然后向注册的端点号发送ZDO状态改变消息:zdoSendStateChangeMsg(state, *(pItem->epDesc->task_id)); 确定路由器的16位网络地址和64位IEEE地址。改变应用层网络状态为SampleApp_NwkState = DEV_ROUTER;

终端设备加入网络的流程:
 zgDeviceLogicalType =0x02
设备初始状态和启动模式: 
devState = DEV_INIT 
devStartMode = MODE_JOIN
基本和路由器相似,关于设备状态方面有一点区别:SampleApp_NwkState = DEV_END_DEVICE;
 
关于工作组的加入与离开
 grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP ); 寻找工作组函数
aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP ); 如果同在一个工作组内,将该端点从工作组中删除:
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值