Merge "Add "Apply update from sdcard" to default recovery image."

This commit is contained in:
Elliott Hughes
2015-03-23 15:03:23 +00:00
committed by Gerrit Code Review
3 changed files with 44 additions and 20 deletions
+14
View File
@@ -0,0 +1,14 @@
The Recovery Image
==================
Quick turn-around testing
-------------------------
mm -j
m ramdisk-nodeps
m recoveryimage-nodeps
adb reboot bootloader
# To boot into the new recovery image
# without flashing the recovery partition:
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img
+23 -17
View File
@@ -20,19 +20,24 @@
#include "device.h" #include "device.h"
#include "screen_ui.h" #include "screen_ui.h"
static const char* HEADERS[] = { "Volume up/down to move highlight;", static const char* HEADERS[] = {
"enter button to select.", "Volume up/down to move highlight.",
"", "Power button to select.",
NULL }; "",
NULL
};
static const char* ITEMS[] = {"reboot system now", static const char* ITEMS[] = {
"apply update from ADB", "Reboot system now",
"wipe data/factory reset", "Reboot to bootloader",
"wipe cache partition", "Apply update from ADB",
"reboot to bootloader", "Apply update from SD card",
"power down", "Wipe data/factory reset",
"view recovery logs", "Wipe cache partition",
NULL }; "View recovery logs",
"Power off",
NULL
};
class DefaultDevice : public Device { class DefaultDevice : public Device {
public: public:
@@ -65,12 +70,13 @@ class DefaultDevice : public Device {
BuiltinAction InvokeMenuItem(int menu_position) { BuiltinAction InvokeMenuItem(int menu_position) {
switch (menu_position) { switch (menu_position) {
case 0: return REBOOT; case 0: return REBOOT;
case 1: return APPLY_ADB_SIDELOAD; case 1: return REBOOT_BOOTLOADER;
case 2: return WIPE_DATA; case 2: return APPLY_ADB_SIDELOAD;
case 3: return WIPE_CACHE; case 3: return APPLY_EXT;
case 4: return REBOOT_BOOTLOADER; case 4: return WIPE_DATA;
case 5: return SHUTDOWN; case 5: return WIPE_CACHE;
case 6: return READ_RECOVERY_LASTLOG; case 6: return READ_RECOVERY_LASTLOG;
case 7: return SHUTDOWN;
default: return NO_ACTION; default: return NO_ACTION;
} }
} }
+7 -3
View File
@@ -512,7 +512,7 @@ prepend_title(const char* const* headers) {
const char** new_headers = (const char**)malloc((count+1) * sizeof(char*)); const char** new_headers = (const char**)malloc((count+1) * sizeof(char*));
const char** h = new_headers; const char** h = new_headers;
*(h++) = "Android system recovery <" EXPAND(RECOVERY_API_VERSION) "e>"; *(h++) = "Android system recovery (API " EXPAND(RECOVERY_API_VERSION) ")";
*(h++) = recovery_version; *(h++) = recovery_version;
*(h++) = ""; *(h++) = "";
for (p = headers; *p; ++p, ++h) *h = *p; for (p = headers; *p; ++p, ++h) *h = *p;
@@ -877,7 +877,11 @@ prompt_and_wait(Device* device, int status) {
break; break;
case Device::APPLY_EXT: { case Device::APPLY_EXT: {
ensure_path_mounted(SDCARD_ROOT); if (ensure_path_mounted(SDCARD_ROOT) != 0) {
ui->Print("\n-- Couldn't mount %s.\n", SDCARD_ROOT);
break;
}
char* path = browse_directory(SDCARD_ROOT, device); char* path = browse_directory(SDCARD_ROOT, device);
if (path == NULL) { if (path == NULL) {
ui->Print("\n-- No package file selected.\n", path); ui->Print("\n-- No package file selected.\n", path);
@@ -910,7 +914,7 @@ prompt_and_wait(Device* device, int status) {
} else if (!ui->IsTextVisible()) { } else if (!ui->IsTextVisible()) {
return Device::NO_ACTION; // reboot if logs aren't visible return Device::NO_ACTION; // reboot if logs aren't visible
} else { } else {
ui->Print("\nInstall from sdcard complete.\n"); ui->Print("\nInstall from SD card complete.\n");
} }
} }
break; break;