搜索
 找回密码
 立即注册

简单一步 , 微信登陆

如何通过USB备份和恢复部分变量的值

作者:charles | 时间:2016-9-28 12:21:33 | 阅读:3613| 只看该作者
适用机型:使用SKINTOOL开发OSD的MSTAR方案
        我们经常有加过通过U盘来做整个数据的备份和恢复的功能。这个比较常见,有现成的代码,这里就不多说了。今天我主要讲下如果只备份和恢复个别数据该什么做。其实,这个功能说来也比较简单,只是在备份和恢复数据时要注意起始地址的书写格式。现将代码贴出来,供参考。
typedef struct  //added by Weng 2012.11.16
{
  U8 u8BackupWhiteBalanceRo;
  U8 u8BackupWhiteBalanceGo;
  U8 u8BackupWhiteBalanceBo;
//  U8 u8BackupWhiteBalanceRg;
//  U8 u8BackupWhiteBalanceGg;
//  U8 u8BackupWhiteBalanceBg;
  S8 s8BackupCont_Min;
  U8 u8BackupCont_Max;
  S8 s8BackupCont_View;
// S8 s8BackupCont_Min_PC;
// U8 u8BackupCont_Max_PC;
  S8 s8BackupBright_Min;
  U8 u8BackupBright_Max;
  S8 s8BackupBright_View;
// S8 s8BackupVD_Stan_Cont;
// S8 s8BackupVD_Stan_Bright;
  S8 s8BackupVD_View_Cust_Cont;
  S8 s8BackupVD_View_Cust_Bright ;
  S8 s8BackupEnergySaverLevel1;
  S8 s8BackupEnergySaverLevel1_2 ;
}ST_BACKUPPARA;
INTERFACE ST_BACKUPPARA  BackupPara;
BOOLEAN MApp_BackupGenPara(void)
{
   
  #if  ENABLE_WBBeforeUpDate
    。。。。。。
    EE_PRINTF("HandleNo is 0x%x\n",u8HandleNo);
    if(u8HandleNo != FCTRL_INVALID_FILE_HANDLE)
    {
       //MApp_SaveGenSetting();      //General setting
        MsOS_DelayTask(10);
        EE_PUTSTR("start write\n");
       msAPI_FCtrl_FileWrite(u8HandleNo,_VA2PA((U32)(&(BackupPara.u8BackupWhiteBalanceRo))), sizeof(BackupPara));
        EE_PUTSTR("Save to file:msAPI_FCtrl_FileClose\n");
        msAPI_FCtrl_FileClose(u8HandleNo);
    }
#endif
return TRUE;
}
BOOLEAN MApp_RestoreGenPara(void)
{
  #if  ENABLE_WBBeforeUpDate
。。。。。。
    if (MApp_UsbSaveData_SearchFileInRoot((U8 *)u8FileName,&g_fileEntry))
{
  u8HandleNo = msAPI_FCtrl_FileOpen(&g_fileEntry,OPEN_MODE_FOR_READ);
       if(u8HandleNo != FCTRL_INVALID_FILE_HANDLE)
        {
      EE_PUTSTR("current file i**ist\r\n");
            msAPI_FCtrl_FileRead(u8HandleNo,_VA2PA((U32)(&(BackupPara.u8BackupWhiteBalanceRo))), sizeof(BackupPara));
            EE_PUTSTR("Close file: msAPI_FCtrl_FileClose\n" );
           msAPI_FCtrl_FileClose(u8HandleNo);
        }
        else
        {
           EE_PUTSTR("Open file fail\n");
            // UpdateFailed
         FAILIDSET(FAIL_MODE_UPDATE_FAILED_WB);
         MAPP_FailMode_Menu();
         //printf("\r\nEnter failmode");
      return FALSE;
        }
}
else
{
  EE_PUTSTR("database file is not exist\r\n");
           // Invalid image
        FAILIDSET(FAIL_MODE_INVALID_IMAGE_WB);
         MAPP_FailMode_Menu();
         //printf("\r\nEnter failmode");
  return FALSE;
}
     Mapp_RestoreServiceParaForWB();
     #endif
  return TRUE;
}



收藏
收藏0
分享
分享
点赞
点赞0
反对
反对0
该会员没有填写今日想说内容.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版