Added Power off capability
Change-Id: I545f8b73e84c5083d2d17b98f8edcdd612c0f78e
diff --git a/default_recovery_ui.c b/default_recovery_ui.c
index 9c192a2..51fd330 100644
--- a/default_recovery_ui.c
+++ b/default_recovery_ui.c
@@ -30,6 +30,7 @@
"backup and restore",
"mounts and storage",
"advanced",
+ "power off",
NULL };
int device_recovery_start() {
diff --git a/recovery.c b/recovery.c
index bb4c1be..963c724 100644
--- a/recovery.c
+++ b/recovery.c
@@ -61,6 +61,7 @@
static const char *LAST_LOG_FILE = "/cache/recovery/last_log";
static const char *SDCARD_ROOT = "/sdcard";
static int allow_display_toggle = 1;
+static int poweroff = 0;
static const char *SDCARD_PACKAGE_FILE = "/sdcard/update.zip";
static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";
static const char *SIDELOAD_TEMP_DIR = "/tmp/sideload";
@@ -707,6 +708,7 @@
switch (chosen_item) {
case ITEM_REBOOT:
+ poweroff=0;
return;
case ITEM_WIPE_DATA:
@@ -751,6 +753,9 @@
case ITEM_ADVANCED:
show_advanced_menu();
break;
+ case ITEM_POWEROFF:
+ poweroff=1;
+ return;
}
}
}
@@ -782,6 +787,9 @@
return nandroid_main(argc, argv);
if (strstr(argv[0], "reboot"))
return reboot_main(argc, argv);
+ if (strstr(argv[0], "poweroff")){
+ return reboot_main(argc, argv);
+ }
if (strstr(argv[0], "setprop"))
return setprop_main(argc, argv);
return busybox_driver(argc, argv);
@@ -939,9 +947,12 @@
// Otherwise, get ready to boot the main system...
finish_recovery(send_intent);
- ui_print("Rebooting...\n");
+ if(!poweroff)
+ ui_print("Rebooting...\n");
+ else
+ ui_print("Shutting down...\n");
sync();
- reboot(RB_AUTOBOOT);
+ reboot((!poweroff) ? RB_AUTOBOOT : RB_POWER_OFF);
return EXIT_SUCCESS;
}
diff --git a/recovery_ui.h b/recovery_ui.h
index f34365f..50af45b 100644
--- a/recovery_ui.h
+++ b/recovery_ui.h
@@ -74,6 +74,7 @@
#define ITEM_NANDROID 5
#define ITEM_PARTITION 6
#define ITEM_ADVANCED 7
+#define ITEM_POWEROFF 8
// Header text to display above the main menu.
extern char* MENU_HEADERS[];