mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-08-26 15:02:50 +02:00
update: allow ofgwrite to flash another partition
Signed-off-by: Thilo Graf <dbt@novatux.de>
Origin commit data
------------------
Branch: ni/coolstream
Commit: 80a9198603
Author: vanhofen <vanhofen@gmx.de>
Date: 2017-10-26 (Thu, 26 Oct 2017)
Origin message was:
------------------
- update: allow ofgwrite to flash another partition
Signed-off-by: Thilo Graf <dbt@novatux.de>
------------------
This commit was generated by Migit
This commit is contained in:
@@ -603,6 +603,7 @@ flashupdate.cantopenfile kann Datei nicht öffnen
|
||||
flashupdate.cantopenmtd kann MTD nicht öffnen
|
||||
flashupdate.checkupdate_internet Online-Update
|
||||
flashupdate.checkupdate_local Lokales Update
|
||||
flashupdate.choose_partition Partition wählen
|
||||
flashupdate.copy_image Kopiere Image in den Arbeitsspeicher
|
||||
flashupdate.createimage Image speichern
|
||||
flashupdate.createimage_add_env 'env' hinzufügen
|
||||
@@ -673,6 +674,8 @@ flashupdate.reallyflashmtd Wollen Sie den Flashvorgang wirklich durchführen?\n\
|
||||
flashupdate.savesuccess Das Image wurde erfolgreich unter dem\nDateinamen %s gespeichert.
|
||||
flashupdate.selectimage Verfügbare Images und Updates
|
||||
flashupdate.settings Update-Einstellungen
|
||||
flashupdate.start_ofgwrite Starte ofgwrite ...
|
||||
flashupdate.start_selected_partition Starte ausgewählte Partition?
|
||||
flashupdate.titlereadflash Flash auslesen
|
||||
flashupdate.titlewriteflash Flash schreiben
|
||||
flashupdate.type_addon Erweiterung
|
||||
|
@@ -603,6 +603,7 @@ flashupdate.cantopenfile can't open file
|
||||
flashupdate.cantopenmtd can't open MTD
|
||||
flashupdate.checkupdate_internet Online update
|
||||
flashupdate.checkupdate_local Local update
|
||||
flashupdate.choose_partition Choose partition
|
||||
flashupdate.copy_image Copy Image to main memory
|
||||
flashupdate.createimage Save image
|
||||
flashupdate.createimage_add_env Add 'env' to image
|
||||
@@ -673,6 +674,8 @@ flashupdate.reallyflashmtd Do you really want to flash?\n\nIf a error occurs or
|
||||
flashupdate.savesuccess The image was successfully saved \nunder %s.
|
||||
flashupdate.selectimage Available images and updates
|
||||
flashupdate.settings Update settings
|
||||
flashupdate.start_ofgwrite Starting ofgwrite ...
|
||||
flashupdate.start_selected_partition Start chosen partition?
|
||||
flashupdate.titlereadflash Reading Flash
|
||||
flashupdate.titlewriteflash Writing Flash
|
||||
flashupdate.type_addon Addon
|
||||
|
@@ -620,20 +620,83 @@ int CFlashUpdate::exec(CMenuTarget* parent, const std::string &actionKey)
|
||||
else if (fileType == 'Z')
|
||||
{
|
||||
showGlobalStatus(100);
|
||||
ShowHint(LOCALE_MESSAGEBOX_INFO, "Start ofgwrite");
|
||||
|
||||
// get active partition
|
||||
char c[2] = {0};
|
||||
FILE *f;
|
||||
f = fopen("/sys/firmware/devicetree/base/chosen/kerneldev", "r");
|
||||
if (f)
|
||||
{
|
||||
if (fseek(f, -2, SEEK_END) == 0)
|
||||
{
|
||||
c[0] = fgetc(f);
|
||||
printf("[update] Current partition: %s\n", c);
|
||||
}
|
||||
}
|
||||
|
||||
// select partition
|
||||
int selected = 0;
|
||||
CMenuSelectorTarget *selector = new CMenuSelectorTarget(&selected);
|
||||
|
||||
CMenuWidget m(LOCALE_FLASHUPDATE_CHOOSE_PARTITION, NEUTRINO_ICON_SETTINGS);
|
||||
m.addItem(GenericMenuSeparator);
|
||||
CMenuForwarder *mf;
|
||||
|
||||
for (int i = 1; i < 4+1; i++)
|
||||
{
|
||||
bool active = !strcmp(c, to_string(i).c_str());
|
||||
std::string m_title = "Partition " + to_string(i);
|
||||
mf = new CMenuForwarder(m_title, true, NULL, selector, to_string(i).c_str(), CRCInput::convertDigitToKey(i));
|
||||
mf->iconName_Info_right = active ? NEUTRINO_ICON_CHECKMARK : NULL;
|
||||
m.addItem(mf, active);
|
||||
}
|
||||
|
||||
m.enableSaveScreen(true);
|
||||
m.exec(NULL, "");
|
||||
|
||||
delete selector;
|
||||
|
||||
printf("[update] Flash into partition %d\n", selected);
|
||||
|
||||
int restart = CMsgBox::mbNo;
|
||||
|
||||
std::string ofgwrite_options("");
|
||||
if (selected > 0 && strcmp(c, to_string(selected).c_str()))
|
||||
{
|
||||
// align ofgwrite options
|
||||
ofgwrite_options = "-m" + to_string(selected);
|
||||
printf("[update] ofgwrite_options: %s\n", ofgwrite_options.c_str());
|
||||
|
||||
// start selected partition?
|
||||
restart = ShowMsg(LOCALE_MESSAGEBOX_INFO, LOCALE_FLASHUPDATE_START_SELECTED_PARTITION, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NEUTRINO_ICON_UPDATE);
|
||||
if (restart == CMsgBox::mbrYes)
|
||||
{
|
||||
std::string startup_new = "/boot/STARTUP_" + to_string(selected);
|
||||
printf("[update] Start selected partition %d (%s)\n", selected, startup_new.c_str());
|
||||
#ifndef DRYRUN
|
||||
CFileHelpers fh;
|
||||
fh.copyFile(startup_new.c_str(), "/boot/STARTUP");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
ShowHint(LOCALE_MESSAGEBOX_INFO, LOCALE_FLASHUPDATE_START_OFGWRITE);
|
||||
hide();
|
||||
|
||||
const char ofgwrite_tgz[] = "/bin/ofgwrite_tgz";
|
||||
printf("[update] calling %s %s %s\n", ofgwrite_tgz, g_settings.update_dir.c_str(), filename.c_str() );
|
||||
printf("[update] calling %s %s %s %s\n", ofgwrite_tgz, g_settings.update_dir.c_str(), filename.c_str(), ofgwrite_options.c_str());
|
||||
#ifndef DRYRUN
|
||||
my_system(3, ofgwrite_tgz, g_settings.update_dir.c_str(), filename.c_str());
|
||||
#endif
|
||||
my_system(4, ofgwrite_tgz, g_settings.update_dir.c_str(), filename.c_str(), ofgwrite_options.c_str());
|
||||
|
||||
/*
|
||||
ofgwrite is killing Neutrino.
|
||||
So we stay here and wait for our end. This avoids osd flickering.
|
||||
TODO: fix osd-flickering
|
||||
Neutrino is clearing framebuffer, so ofgwrite's gui is cleared too.
|
||||
*/
|
||||
while (true)
|
||||
sleep(1);
|
||||
|
||||
if (restart == CMsgBox::mbrYes)
|
||||
CNeutrinoApp::getInstance()->exec(NULL, "reboot");
|
||||
#endif
|
||||
return menu_return::RETURN_EXIT_ALL;
|
||||
}
|
||||
#endif
|
||||
else // not image, install
|
||||
|
@@ -630,6 +630,7 @@ typedef enum
|
||||
LOCALE_FLASHUPDATE_CANTOPENMTD,
|
||||
LOCALE_FLASHUPDATE_CHECKUPDATE_INTERNET,
|
||||
LOCALE_FLASHUPDATE_CHECKUPDATE_LOCAL,
|
||||
LOCALE_FLASHUPDATE_CHOOSE_PARTITION,
|
||||
LOCALE_FLASHUPDATE_COPY_IMAGE,
|
||||
LOCALE_FLASHUPDATE_CREATEIMAGE,
|
||||
LOCALE_FLASHUPDATE_CREATEIMAGE_ADD_ENV,
|
||||
@@ -700,6 +701,8 @@ typedef enum
|
||||
LOCALE_FLASHUPDATE_SAVESUCCESS,
|
||||
LOCALE_FLASHUPDATE_SELECTIMAGE,
|
||||
LOCALE_FLASHUPDATE_SETTINGS,
|
||||
LOCALE_FLASHUPDATE_START_OFGWRITE,
|
||||
LOCALE_FLASHUPDATE_START_SELECTED_PARTITION,
|
||||
LOCALE_FLASHUPDATE_TITLEREADFLASH,
|
||||
LOCALE_FLASHUPDATE_TITLEWRITEFLASH,
|
||||
LOCALE_FLASHUPDATE_TYPE_ADDON,
|
||||
|
@@ -630,6 +630,7 @@ const char * locale_real_names[] =
|
||||
"flashupdate.cantopenmtd",
|
||||
"flashupdate.checkupdate_internet",
|
||||
"flashupdate.checkupdate_local",
|
||||
"flashupdate.choose_partition",
|
||||
"flashupdate.copy_image",
|
||||
"flashupdate.createimage",
|
||||
"flashupdate.createimage_add_env",
|
||||
@@ -700,6 +701,8 @@ const char * locale_real_names[] =
|
||||
"flashupdate.savesuccess",
|
||||
"flashupdate.selectimage",
|
||||
"flashupdate.settings",
|
||||
"flashupdate.start_ofgwrite",
|
||||
"flashupdate.start_selected_partition",
|
||||
"flashupdate.titlereadflash",
|
||||
"flashupdate.titlewriteflash",
|
||||
"flashupdate.type_addon",
|
||||
|
Reference in New Issue
Block a user