am 0dc9087b: am 208ce6f9: am deaaf79a: Share more code with the default recovery image.
* commit '0dc9087bb7b63b715ef85ac309d90b27a3709bc4':
Share more code with the default recovery image.
diff --git a/recovery/Android.mk b/recovery/Android.mk
index b19a472..dbe4afc 100644
--- a/recovery/Android.mk
+++ b/recovery/Android.mk
@@ -3,6 +3,7 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_CLANG := true
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := librecovery_updater_fugu
LOCAL_SRC_FILES := recovery_updater.c fw_version_check.c
@@ -12,7 +13,7 @@
include $(CLEAR_VARS)
-
+LOCAL_CLANG := true
LOCAL_MODULE_TAGS := optional
LOCAL_C_INCLUDES += bootable/recovery
LOCAL_SRC_FILES := recovery_ui.cpp
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
index e05caf3..f35f792 100644
--- a/recovery/recovery_ui.cpp
+++ b/recovery/recovery_ui.cpp
@@ -33,24 +33,13 @@
#include "ui.h"
#include "screen_ui.h"
-static const char* HEADERS[] = { "Use hardware button to move cursor; long-press to select item.",
- "",
- NULL };
-
-// these strings are never actually displayed
-static const char* ITEMS[] = {"reboot system now",
- "apply update from ADB",
- "wipe data/factory reset",
- "wipe cache partition",
- "view recovery logs",
- NULL };
-
#define kFBDevice "/dev/graphics/fb0"
+
#define FBIO_PSB_SET_RGBX _IOWR('F', 0x42, struct fb_var_screeninfo)
#define FBIO_PSB_SET_RMODE _IOWR('F', 0x43, struct fb_var_screeninfo)
class FuguUI : public ScreenRecoveryUI {
-public:
+ public:
FuguUI() :
up_keys(0),
next_key_pos(0),
@@ -66,34 +55,27 @@
}
void SetupDisplayMode() {
- int fb_dev = open(kFBDevice, O_RDWR);
- int res;
- uint32_t i;
printf("opening fb %s\n", kFBDevice);
- if (fb_dev < 0) {
- fprintf(stderr, "FAIL: failed to open \"%s\" (errno = %d)\n", kFBDevice, errno);
+ int fb_dev = open(kFBDevice, O_RDWR);
+ if (fb_dev == -1) {
+ fprintf(stderr, "FAIL: failed to open \"%s\": %s\n", kFBDevice, strerror(errno));
return;
}
struct fb_var_screeninfo current_mode;
-
- res = ioctl(fb_dev, FBIO_PSB_SET_RMODE, ¤t_mode);
- if (res) {
- fprintf(stderr,
- "FAIL: unable to set RGBX mode on display controller (errno = %d)\n",
- errno);
+ if (ioctl(fb_dev, FBIO_PSB_SET_RMODE, ¤t_mode) == -1) {
+ fprintf(stderr, "FAIL: unable to set RGBX mode on display controller: %s\n",
+ strerror(errno));
return;
}
- res = ioctl(fb_dev, FBIOGET_VSCREENINFO, ¤t_mode);
- if (res) {
- fprintf(stderr, "FAIL: unable to get mode, err %d\n", res);
+ if (ioctl(fb_dev, FBIOGET_VSCREENINFO, ¤t_mode) == -1) {
+ fprintf(stderr, "FAIL: unable to get mode: %s\n", strerror(errno));
return;
}
- res = ioctl(fb_dev, FBIOBLANK, FB_BLANK_POWERDOWN);
- if (res) {
- fprintf(stderr, "FAIL: unable to blank display, err %d\n", res);
+ if (ioctl(fb_dev, FBIOBLANK, FB_BLANK_POWERDOWN) == -1) {
+ fprintf(stderr, "FAIL: unable to blank display: %s\n", strerror(errno));
return;
}
@@ -105,24 +87,19 @@
current_mode.blue.offset = 16;
current_mode.blue.length = 8;
- res = ioctl(fb_dev, FBIOPUT_VSCREENINFO, ¤t_mode);
- if (res) {
- fprintf(stderr, "FAIL: unable to set mode, err %d\n", res);
+ if (ioctl(fb_dev, FBIOPUT_VSCREENINFO, ¤t_mode) == -1) {
+ fprintf(stderr, "FAIL: unable to set mode: %s\n", strerror(errno));
return;
}
- /* set our display controller for RGBX */
- res = ioctl(fb_dev, FBIO_PSB_SET_RGBX, ¤t_mode);
- if (res) {
- fprintf(stderr,
- "FAIL: unable to set RGBX mode on display controller (errno = %d)\n",
- errno);
+ if (ioctl(fb_dev, FBIO_PSB_SET_RGBX, ¤t_mode) == -1) {
+ fprintf(stderr, "FAIL: unable to set RGBX mode on display controller: %s\n",
+ strerror(errno));
return;
}
- res = ioctl(fb_dev, FBIOBLANK, FB_BLANK_UNBLANK);
- if (res) {
- fprintf(stderr, "FAIL: unable to unblank display, err %d\n", res);
+ if (ioctl(fb_dev, FBIOBLANK, FB_BLANK_UNBLANK) == -1) {
+ fprintf(stderr, "FAIL: unable to unblank display: %s\n", strerror(errno));
return;
}
}
@@ -163,7 +140,7 @@
long_press = is_long_press;
}
- void KeyLongPress(int key) override {
+ void KeyLongPress(int /*key*/) override {
pthread_mutex_lock(&long_mu);
pending_select = true;
pthread_mutex_unlock(&long_mu);
@@ -192,7 +169,7 @@
}
}
-private:
+ private:
static const int kKeyBufferSize = 100;
int up_keys;
@@ -207,52 +184,28 @@
class FuguDevice : public Device {
public:
- FuguDevice() : ui(new FuguUI) {
+ FuguDevice() : Device(new FuguUI) {
}
- RecoveryUI* GetUI() override { return ui; }
-
int HandleMenuKey(int key, int visible) override {
- static int running = 0;
-
if (visible) {
switch (key) {
case KEY_ENTER:
return kInvokeItem;
- break;
case KEY_UP:
return kHighlightUp;
- break;
case KEY_DOWN:
case KEY_CONNECT: // the Fugu hardware button
return kHighlightDown;
- break;
}
}
return kNoAction;
}
-
- BuiltinAction InvokeMenuItem(int menu_position) override {
- switch (menu_position) {
- case 0: return REBOOT;
- case 1: return APPLY_ADB_SIDELOAD;
- case 2: return WIPE_DATA;
- case 3: return WIPE_CACHE;
- case 4: return READ_RECOVERY_LASTLOG;
- default: return NO_ACTION;
- }
- }
-
- const char* const* GetMenuHeaders() override { return HEADERS; }
- const char* const* GetMenuItems() override { return ITEMS; }
-
- private:
- RecoveryUI* ui;
};
Device* make_device() {
- return new FuguDevice();
+ return new FuguDevice;
}
diff --git a/recovery/recovery_updater.c b/recovery/recovery_updater.c
index 75dd635..3b0158e 100644
--- a/recovery/recovery_updater.c
+++ b/recovery/recovery_updater.c
@@ -18,6 +18,8 @@
#include <stdio.h>
#include <unistd.h>
#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>