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(); } }
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 CSetupWriteFlash::DoAction( std::string _action ) { if( false == flag ) { this->entries.erase( entries.begin(), entries.end() ); this->file = _action; this->flag = true; title = "Select part"; int i = 0; for( i = 0; i < CMTDInfo::getInstance()->getMTDCount(); i++ ) { entries.push_back( CMTDInfo::getInstance()->getMTDName( i ) ); } } else { CFlashTool ft; int num = CMTDInfo::getInstance()->findMTDNumberByName( _action ); std::cout << "File : " << file << std::endl; std::cout << "Partition : " << _action << std::endl; std::cout << "MTD Device : " << CMTDInfo::getInstance()->getMTDFileName( num ) << std::endl; ft.setMTDDevice( CMTDInfo::getInstance()->getMTDFileName( num ) ); if( false == ft.program( file, 100, 100 ) ) { std::cout << ft.getErrorMessage() << std::endl; } remove = true; } }
void CSetupReadFlash::DoAction( std::string _action ) { std::string file = "/tmp/"; int num = CMTDInfo::getInstance()->findMTDNumberByName( _action ); file += _action; file += ".img"; unsigned int i = 0; for ( i = 0; i < file.size(); i++ ) { if( file[i] == ' ' || file[i] == '(' || file[i] == ')' ) { file[i] = '_'; } } std::cout << "File : " << file << std::endl; std::cout << "Partition : " << _action << std::endl; std::cout << "MTD Device : " << CMTDInfo::getInstance()->getMTDFileName( num ) << std::endl; if( num >= 0 ) { CFlashTool ft; ft.setMTDDevice( CMTDInfo::getInstance()->getMTDFileName( num ) ); if( false == ft.readFromMTD( file, 100 ) ) { std::cout << ft.getErrorMessage() << std::endl; } } remove = true; }
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; }