改變協調器設備類型

void change_dev_type(sZFrame *frm)
{
   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
    {

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章