1-13 扩展提高3 建立网络、加入网络流程分析
2013-10-18 22:48
260 查看
建立网络、加入网络流程分析
协调器节点:在1-10 实验8 网络通信实验2 组播通信中
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE: //建立网络后,设置事件
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//???????
if(GenericApp_NwkState==DEV_ZB_COORD)//把该节点已初始化为协调器,则执行下面的
{
HalLedBlink(HAL_LED_2,0,50,500); //LED2 闪烁
aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group); //建立网路后,加入组。
osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);
}
路由器节点: 在1-10 实验8 网络通信实验2 组播通信中
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE: //加入网络后,加入族中
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
if(GenericApp_NwkState==DEV_ROUTER)
{
aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group); //加入组中
}
break;
终端节点:1-5 实验4 串口通信2
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE:
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
if(GenericApp_NwkState==DEV_END_DEVICE)
{
//当中断节点加入网络后使用osal_set_envent()函数设置SEND_DATA_EVENT事件,当事件发生时,执行事件处理函数
osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);//??????????????????????????
}
break;
而上面的 GenericApp_NwkState是devStates_t GenericApp_NwkState;这样定义的,用于//保存节点状态
刚开始时,都是在GenericApp_Init()函数中将GenericApp_NwkState=DEV_INIT。然后再通过哪几步转到为上面三种情况DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种。
TI协议栈是半开源的,网络层代码并不开源。运行于端口0的ZDO负责应用层用户程序和网络层之间的通信。
网络层的建立过程是由ZDO来实现的。网络建立后应用层会接受到ZDO_STATE_CHANGE消息。使用下面语句就可以读取当前网络的状态。
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
状态可能是DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种,或其他。
协调器节点:在1-10 实验8 网络通信实验2 组播通信中
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE: //建立网络后,设置事件
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//???????
if(GenericApp_NwkState==DEV_ZB_COORD)//把该节点已初始化为协调器,则执行下面的
{
HalLedBlink(HAL_LED_2,0,50,500); //LED2 闪烁
aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group); //建立网路后,加入组。
osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);
}
路由器节点: 在1-10 实验8 网络通信实验2 组播通信中
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE: //加入网络后,加入族中
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
if(GenericApp_NwkState==DEV_ROUTER)
{
aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group); //加入组中
}
break;
终端节点:1-5 实验4 串口通信2
while(MSGpkt)
{
switch(MSGpkt->hdr.event)
{
case ZDO_STATE_CHANGE:
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
if(GenericApp_NwkState==DEV_END_DEVICE)
{
//当中断节点加入网络后使用osal_set_envent()函数设置SEND_DATA_EVENT事件,当事件发生时,执行事件处理函数
osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);//??????????????????????????
}
break;
而上面的 GenericApp_NwkState是devStates_t GenericApp_NwkState;这样定义的,用于//保存节点状态
typedef enum { DEV_HOLD, // Initialized - not started automatically DEV_INIT, // Initialized - not connected to anything DEV_NWK_DISC, // Discovering PAN's to join DEV_NWK_JOINING, // Joining a PAN DEV_NWK_REJOIN, // ReJoining a PAN, only for end devices DEV_END_DEVICE_UNAUTH, // Joined but not yet authenticated by trust center DEV_END_DEVICE, // Started as device after authentication DEV_ROUTER, // Device joined, authenticated and is a router DEV_COORD_STARTING, // Started as Zigbee Coordinator DEV_ZB_COORD, // Started as Zigbee Coordinator DEV_NWK_ORPHAN // Device has lost information about its parent.. } devStates_t;
刚开始时,都是在GenericApp_Init()函数中将GenericApp_NwkState=DEV_INIT。然后再通过哪几步转到为上面三种情况DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种。
TI协议栈是半开源的,网络层代码并不开源。运行于端口0的ZDO负责应用层用户程序和网络层之间的通信。
网络层的建立过程是由ZDO来实现的。网络建立后应用层会接受到ZDO_STATE_CHANGE消息。使用下面语句就可以读取当前网络的状态。
GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型
状态可能是DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种,或其他。
相关文章推荐
- 运行android程序访问网络,出错,需要加上权限
- 1-12 实验10 网络管理实验2 已知网络地址查询MAC地址
- omnet++ 参数添加 及遍历网络拓扑
- windows server 2008 R2 无法启用"网络发现" 需要启动的服务
- 黑马程序员_网络编程
- C# 下载网络资源的实例
- 网络编程--closesocket(s)与shutdown(s,type)的区别
- VirtualBox的四种网络接入模式
- 严重: Error configuring application listener of class flex.messaging.HttpFlexSession flex.messaging.Ht
- 免费打网络电话
- TreeSet定制排序之资料http://www.189works.com/article-52438-1.html
- Android 判断当前网络是否为wifi网络
- 运输层TCP协议详细介绍
- NetCat,在网络工具中有“瑞士军刀”美誉
- 如何使用URLConnection处理http请求
- android http
- IOCP模型与网络编程
- http杂摘
- Windows单机最大TCP连接数的问题
- 黑马程序员——网络编程