{
uint8 startUp = ZCD_STARTOPT_DEFAULT_NETWORK_STATE;
osal_nv_read( ZCD_NV_LOGICAL_TYPE,0,sizeof(zgDeviceLogicalType),&zgDeviceLogicalType);
if ( zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR )
{
ChangeDevFlag = 2;
(void)osal_nv_write( ZCD_NV_STARTUP_OPTION, 0, sizeof( startUp ), &startUp );
(void)osal_nv_write( ZCD_NV_DEV_CHANGED,0, sizeof( ChangeDevFlag ), &ChangeDevFlag );
SystemReset(); //reset to start the process again.
}
else if(zgDeviceLogicalType == ZG_DEVICETYPE_ENDDEVICE)//ZG_DEVICETYPE_ROUTER ||
{
ChangeDevFlag = 1;
(void)osal_nv_write( ZCD_NV_STARTUP_OPTION, 0, sizeof( startUp ), &startUp );
(void)osal_nv_write( ZCD_NV_DEV_CHANGED,0, sizeof( ChangeDevFlag ), &ChangeDevFlag );
SystemReset(); //reset to start the process again.
}
}
void Generic_Init( byte task_id )
{
osal_nv_item_init(ZCD_NV_DEV_CHANGED, 1, &ChangeDevFlag);
osal_nv_read( ZCD_NV_DEV_CHANGED,0,sizeof(ChangeDevFlag),&ChangeDevFlag);
if(ChangeDevFlag)
{
#if defined ( BUILD_ALL_DEVICES )
if(1 == ChangeDevFlag )
{
zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
(void)osal_nv_write( ZCD_NV_LOGICAL_TYPE, 0, sizeof( zgDeviceLogicalType ), &zgDeviceLogicalType );
}
else if(2 == ChangeDevFlag)
{
zgDeviceLogicalType = ZG_DEVICETYPE_ENDDEVICE;
(void)osal_nv_write( ZCD_NV_LOGICAL_TYPE, 0, sizeof( zgDeviceLogicalType ), &zgDeviceLogicalType );
}
else if(3 == ChangeDevFlag)
{
zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;
(void)osal_nv_write( ZCD_NV_LOGICAL_TYPE, 0, sizeof( zgDeviceLogicalType ), &zgDeviceLogicalType );
}
#endif // BUILD_ALL_DEVICES
#if defined ( HOLD_AUTO_START )
ZDOInitDevice(0);
#endif
}
else
{
}
}