概述
2015-02-15 星期日 3:35:47
1、协调器建立网络流程
-
Init
1234567891011121314151617181920#define ZG_DEVICETYPE_COORDINATOR 0x00
#define ZG_DEVICETYPE_ROUTER 0x01
#define ZG_DEVICETYPE_ENDDEVICE 0x02
// Default Device Logical Type
#if !defined ( DEVICE_LOGICAL_TYPE )
#
if
( ZG_BUILD_COORDINATOR_TYPE )
// If capable, default to coordinator
#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR
#elif ( ZG_BUILD_RTR_TYPE )
.............
uint8 zgDeviceLogicalType = DEVICE_LOGICAL_TYPE;
//在 ZDApp.c 文件中定义了设备初始状态和启动模式:
devState = DEV_INIT;
devStartMode = MODE_HARD;
-
流程
-
代码跟踪
//ZDO_NETWORK_INIT
1234567891011121314151617181920212223242526272829void
ZDApp_Init( uint8 task_id )
{
......
ZDOInitDevice( 0 );
......
}
uint8 ZDOInitDevice( uint16 startDelay )
{
......
// Trigger the network start
ZDApp_NetworkInit( extendedDelay );
......
}
//ZDO_NETWORK_INIT
void
ZDApp_NetworkInit( uint16 delay )
{
if
( delay )
{
// Wait awhile before starting the device
osal_start_timerEx( ZDAppTaskID, ZDO_NETWORK_INIT, delay
);
}
else
{
osal_set_event( ZDAppTaskID, ZDO_NETWORK_INIT );
}
}
//ZDO_StartDevice
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )
{
......
if
( events & ZDO_NETWORK_INIT )
{
// Initialize apps and start the network
devState = DEV_INIT;
osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );
// Return unprocessed events
return
(events ^ ZDO_NETWORK_INIT);
}
......
}
|
//ZDO_NETWORK_START && ZDO_STATE_CHANGE_EVT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
void
ZDO_NetworkFormationConfirmCB( ZStatus_t Status )
{
......
//ZDO_NETWORK_START
osal_set_event( ZDAppTaskID, ZDO_NETWORK_START );
......
}
UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )
{
......
//ZDO_NETWORK_START
if
( events & ZDO_NETWORK_START )
{
ZDApp_NetworkStartEvt();
// Return unprocessed events
return
(events ^ ZDO_NETWORK_START);
}
......
//ZDO_STATE_CHANGE_EVT
if
( events & ZDO_STATE_CHANGE_EVT )
{
ZDO_UpdateNwkStatus( devState );
// Return unprocessed events
return
(events ^ ZDO_STATE_CHANGE_EVT);
}
......
}
void
ZDApp_NetworkStartEvt(
void
)
{
......
//ZDO_STATE_CHANGE_EVT
osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );
......
}
|
2、路由器加入网络流程
-
Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#define ZG_DEVICETYPE_COORDINATOR 0x00
#define ZG_DEVICETYPE_ROUTER 0x01
#define ZG_DEVICETYPE_ENDDEVICE 0x02
// Default Device Logical Type
#if !defined ( DEVICE_LOGICAL_TYPE )
......
#elif ( ZG_BUILD_RTR_TYPE )
#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ROUTER
......
......
uint8 zgDeviceLogicalType = DEVICE_LOGICAL_TYPE;
//在 ZDApp.c 文件中定义了设备初始状态和启动模式:
devState = DEV_INIT;
devStartMode = MODE_JOIN;
|
-
流程
-
代码跟踪
参见代码。
3、终端设备加入网络流程
-
Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#define ZG_DEVICETYPE_COORDINATOR 0x00
#define ZG_DEVICETYPE_ROUTER 0x01
#define ZG_DEVICETYPE_ENDDEVICE 0x02
// Default Device Logical Type
#if !defined ( DEVICE_LOGICAL_TYPE )
......
#elif ( ZG_BUILD_ENDDEVICE_TYPE )
// Must be an end device
#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ENDDEVICE
#
else
#error ZSTACK_DEVICE_BUILD must be defined as something!
#endif
#endif
......
......
uint8 zgDeviceLogicalType = DEVICE_LOGICAL_TYPE;
//在 ZDApp.c 文件中定义了设备初始状态和启动模式:
devState = DEV_INIT;
devStartMode = MODE_JOIN;
|
-
流程
-
代码跟踪
参见代码。
最后
以上就是负责星月为你收集整理的zigbee 4:协调器/路由器/终端 建立/加入 网络的全部内容,希望文章能够帮你解决zigbee 4:协调器/路由器/终端 建立/加入 网络所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复