コード例 #1
0
ファイル: update.cpp プロジェクト: GWARDAR/OpenPLi-1
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 );
	}
}
コード例 #2
0
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;
	}

}
コード例 #3
0
ファイル: update.cpp プロジェクト: GWARDAR/OpenPLi-1
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();
	}
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: update.cpp プロジェクト: GWARDAR/OpenPLi-1
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;
}