void CFlashExpert::readmtd(int readmtd) { char tmp[10]; sprintf(tmp, "%d", readmtd); string filename = "/tmp/mtd" + string(tmp) + string(".img"); if(readmtd==-1) { //ganzes flashimage lesen filename = "/tmp/flashimage.img"; readmtd = 4; } setTitle(g_Locale->getText("flashupdate.titlereadflash")); paint(); showGlobalStatus(0); showStatusMessage(g_Locale->getText("flashupdate.actionreadflash") + " (" + string(CMTDInfo::getInstance()->getMTDName(readmtd)) + ")"); CFlashTool ft; ft.setStatusViewer( this ); ft.setMTDDevice(CMTDInfo::getInstance()->getMTDFileName(readmtd)); if(!ft.readFromMTD(filename, 100)) { showStatusMessage( ft.getErrorMessage() ); sleep(10); } else { showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready")); char message[500]; sprintf(message, g_Locale->getText("flashupdate.savesuccess").c_str(), filename.c_str() ); sleep(1); hide(); ShowHint ( "messagebox.info", message ); } }
void CFlashExpert::writemtd(string filename, int mtdNumber) { char message[500]; sprintf(message, g_Locale->getText("flashupdate.reallyflashmtd").c_str(), filename.c_str(), CMTDInfo::getInstance()->getMTDName(mtdNumber).c_str()); if ( ShowMsg ( "messagebox.info", message , CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, "softupdate.raw" ) != CMessageBox::mbrYes ) { return; } setTitle( g_Locale->getText("flashupdate.titlewriteflash")); paint(); showGlobalStatus(0); CFlashTool ft; ft.setStatusViewer( this ); ft.setMTDDevice( CMTDInfo::getInstance()->getMTDFileName(mtdNumber) ); if(!ft.program( "/tmp/" + filename, 50, 100)) { showStatusMessage( ft.getErrorMessage() ); sleep(10); } else { showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready")); sleep(1); hide(); ShowHint ( "messagebox.info", g_Locale->getText("flashupdate.flashreadyreboot") ); ft.reboot(); } }
int CFlashUpdate::exec(CMenuTarget* parent, string) { if(parent) { parent->hide(); } paint(); if(!checkVersion4Update()) { hide(); return menu_return::RETURN_REPAINT; } showGlobalStatus(19); paint(); showGlobalStatus(20); if(g_settings.softupdate_mode==1) //internet-update { if(!getUpdateImage(newVersion)) { hide(); ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.getupdatefileerror") ); return menu_return::RETURN_REPAINT; } } showGlobalStatus(40); CFlashTool ft; ft.setMTDDevice("/dev/mtd/2"); ft.setStatusViewer(this); string sFileName = gTmpPath+ ImageFile; //image-check showStatusMessage(g_Locale->getText("flashupdate.md5check") ); if(!ft.check_cramfs(sFileName)) { hide(); ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.md5sumerror") ); return menu_return::RETURN_REPAINT; } showGlobalStatus(60); //flash it... if(!ft.program(sFileName, 80, 100)) { hide(); ShowHint ( "messagebox.error", ft.getErrorMessage() ); return menu_return::RETURN_REPAINT; } //status anzeigen showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready") ); CNeutrinoApp::getInstance()->exec(NULL, "savesettings"); sleep(2); hide(); ShowHint ( "messagebox.info", g_Locale->getText("flashupdate.flashreadyreboot") ); ft.reboot(); sleep(20000); hide(); return menu_return::RETURN_REPAINT; }