#include "ClearRegistedInf.h" #include "Runtime.h" extern "C"{ #include "user_norflash.h" #include "user_eeprom.h" #include "uart_key_drv.h" #include "task.h" #include "HW_config.h" } #define dWdClr clSkyBlue #define dWdDisabelClr clNearWhite #define dWWidth 24 #define dWHeigh 24 #define dRoundR 7 static const int xFirst = 10; class TItemList *TClearRegistedInf::sIList; void TClearRegistedInf::Init() { CtlIndex = 0; IsShowing = 0; PermissionCmd =0; IsPermission =0; Eraser.OnGo = 0; Eraser.Step = 0xFF; Eraser.NotDone = 0; } void TClearRegistedInf::sDelayMs(unsigned int aMs) { volatile unsigned int mTick; volatile unsigned int Tick; for(Tick=0; Tick清除注册数据"); TextRender_string24(Lv.Grid.Left[0] + 10, Lv.Grid.Top[0] +6, clNearWhite, "清除注册数据"); TRoundRect::sDrawBySize(xFirst, Lv.Grid.Top[0] + 36, 72, 30, 7, clBlue, "确定", 12, clNearWhite); }else{ TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, CaptionColor, "Advanced Setup->Clear Registed Data"); TextRender_string24(Lv.Grid.Left[0] + 10, Lv.Grid.Top[0] +6, clNearWhite, "Registed Data"); TRoundRect::sDrawBySize(xFirst, Lv.Grid.Top[0] + 36, 72, 30, 7, clBlue, "Clear", 6, clNearWhite); } } void TClearRegistedInf::DrawSelf(void) { RenderBackGround(); RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor); for(int i=0; iReadWriteData.Reset(); do{ sDelayMs(2); aFlashState = nor_get_busy_state(0); }while(aFlashState); for(i=0; i<8; i++){ SysLoopTick = 0; fAddr = dFlashRegisterDataAddr + (0x000010000 * i); nor_erase_sector_64k(0,fAddr); sDelayMs(250); do{ sDelayMs(30); aFlashState = nor_get_busy_state(0); }while(aFlashState); LoopCheck1S(); } for(i=0; i 2){ PermissionCmdGO(); }else{ IsPermission = 1; if(LanguageEnCn==0) TRoundRect::sDrawBySize(xFirst, Lv.Grid.Top[0] + 36, 72, 30, 7, clNearWhite, "确定", 12, clNearBlack); else TRoundRect::sDrawBySize(xFirst, Lv.Grid.Top[0] + 36, 72, 30, 7, clNearWhite, "Clear", 6, clNearBlack); PmsIntervene4Gui.Show4Gui(100, Lv.Grid.Bottom[0] + 40, 600 , 120, 3); } } break; case VK_RETURN: IsShowing = 0; if(Eraser.OnGo){ ForceExit(); } aMsg = guiMsgReturn; break; } } return aMsg; } void TClearRegistedInf::Task1000Ms() { volatile unsigned int uiVal; return; if(IsShowing){ if(Eraser.OnGo == 0xB6){ if(Eraser.Step < 8){ sDelayMs(2); uiVal = nor_get_busy_state(dFlashRegisterDataChip); if(uiVal)return; uiVal = dFlashRegisterDataAddr + (0x000010000 * Eraser.Step); nor_erase_sector_64k(dFlashRegisterDataChip,uiVal); Eraser.Step++; }else if(Eraser.Step < 9){ sDelayMs(2); uiVal = nor_get_busy_state(dFlashRegisterDataChip); if(uiVal)return; Eraser.Step++; }else if(Eraser.Step < 10){ for(uiVal=0; uiVal<40; uiVal++){ for(int i=0; i<250; i++){ Port[uiVal].ExistTable[i] = 0; Port[uiVal].dTypeTable[i] = 0; //EpDev[m][i].fData.Split.dType = 0; //EpDev[m][i].fData.Split.Id = 0; } MainCtl.fData.Split.ExistTablePort[uiVal] = 0; } MainCtl.fData.Split.PortCount = 0; Eraser.Step++; }else{ sDelayMs(2); uiVal = nor_get_busy_state(dFlashRegisterDataChip); if(uiVal)return; InnerCan.SendCmdClearRegData(); Record.ReadRegisterData(); if(LanguageEnCn==0) TextRender_string24(400, Lv.Grid.Top[0]+ 36, clNearWhite, ItemColor, "清除完成 "); else TextRender_string24(400, Lv.Grid.Top[0]+ 36, clNearWhite, ItemColor, "Cleared "); Record.OperateAdd_CleanUp(0); Eraser.OnGo =0; Eraser.NotDone =0; } } } } void TClearRegistedInf::ForceExit() { sDelayMs(20); Record.ReadRegisterData(); Record.OperateAdd_CleanUp(0xF0); Eraser.OnGo =0; } int TClearRegistedInf::ExtRequst(unsigned char Prm) { IsShowing =0; if(Eraser.OnGo){ ForceExit(); } return 0; }