Merge "Move default implementations into Device."
This commit is contained in:
+10
-9
@@ -30,16 +30,17 @@ include $(BUILD_STATIC_LIBRARY)
|
|||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_SRC_FILES := \
|
LOCAL_SRC_FILES := \
|
||||||
recovery.cpp \
|
|
||||||
bootloader.cpp \
|
|
||||||
install.cpp \
|
|
||||||
roots.cpp \
|
|
||||||
ui.cpp \
|
|
||||||
screen_ui.cpp \
|
|
||||||
asn1_decoder.cpp \
|
|
||||||
verifier.cpp \
|
|
||||||
adb_install.cpp \
|
adb_install.cpp \
|
||||||
fuse_sdcard_provider.c
|
asn1_decoder.cpp \
|
||||||
|
bootloader.cpp \
|
||||||
|
device.cpp \
|
||||||
|
fuse_sdcard_provider.c \
|
||||||
|
install.cpp \
|
||||||
|
recovery.cpp \
|
||||||
|
roots.cpp \
|
||||||
|
screen_ui.cpp \
|
||||||
|
ui.cpp \
|
||||||
|
verifier.cpp \
|
||||||
|
|
||||||
LOCAL_MODULE := recovery
|
LOCAL_MODULE := recovery
|
||||||
|
|
||||||
|
|||||||
+23
-67
@@ -14,80 +14,36 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/input.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "screen_ui.h"
|
#include "screen_ui.h"
|
||||||
|
|
||||||
static const char* HEADERS[] = {
|
|
||||||
"Volume up/down to move highlight.",
|
|
||||||
"Power button to select.",
|
|
||||||
"",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char* ITEMS[] = {
|
|
||||||
"Reboot system now",
|
|
||||||
"Reboot to bootloader",
|
|
||||||
"Apply update from ADB",
|
|
||||||
"Apply update from SD card",
|
|
||||||
"Wipe data/factory reset",
|
|
||||||
"Wipe cache partition",
|
|
||||||
"View recovery logs",
|
|
||||||
"Power off",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
class DefaultDevice : public Device {
|
class DefaultDevice : public Device {
|
||||||
public:
|
public:
|
||||||
DefaultDevice() :
|
DefaultDevice() : Device(new ScreenRecoveryUI) {
|
||||||
ui(new ScreenRecoveryUI) {
|
}
|
||||||
|
|
||||||
|
// TODO: make this handle more cases, and move the default implementation into Device too.
|
||||||
|
int HandleMenuKey(int key, int visible) {
|
||||||
|
if (visible) {
|
||||||
|
switch (key) {
|
||||||
|
case KEY_DOWN:
|
||||||
|
case KEY_VOLUMEDOWN:
|
||||||
|
return kHighlightDown;
|
||||||
|
|
||||||
|
case KEY_UP:
|
||||||
|
case KEY_VOLUMEUP:
|
||||||
|
return kHighlightUp;
|
||||||
|
|
||||||
|
case KEY_ENTER:
|
||||||
|
case KEY_POWER:
|
||||||
|
return kInvokeItem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RecoveryUI* GetUI() { return ui; }
|
return kNoAction;
|
||||||
|
}
|
||||||
int HandleMenuKey(int key, int visible) {
|
|
||||||
if (visible) {
|
|
||||||
switch (key) {
|
|
||||||
case KEY_DOWN:
|
|
||||||
case KEY_VOLUMEDOWN:
|
|
||||||
return kHighlightDown;
|
|
||||||
|
|
||||||
case KEY_UP:
|
|
||||||
case KEY_VOLUMEUP:
|
|
||||||
return kHighlightUp;
|
|
||||||
|
|
||||||
case KEY_ENTER:
|
|
||||||
case KEY_POWER:
|
|
||||||
return kInvokeItem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return kNoAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuiltinAction InvokeMenuItem(int menu_position) {
|
|
||||||
switch (menu_position) {
|
|
||||||
case 0: return REBOOT;
|
|
||||||
case 1: return REBOOT_BOOTLOADER;
|
|
||||||
case 2: return APPLY_ADB_SIDELOAD;
|
|
||||||
case 3: return APPLY_EXT;
|
|
||||||
case 4: return WIPE_DATA;
|
|
||||||
case 5: return WIPE_CACHE;
|
|
||||||
case 6: return READ_RECOVERY_LASTLOG;
|
|
||||||
case 7: return SHUTDOWN;
|
|
||||||
default: return NO_ACTION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* const* GetMenuHeaders() { return HEADERS; }
|
|
||||||
const char* const* GetMenuItems() { return ITEMS; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
RecoveryUI* ui;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Device* make_device() {
|
Device* make_device() {
|
||||||
return new DefaultDevice();
|
return new DefaultDevice;
|
||||||
}
|
}
|
||||||
|
|||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "device.h"
|
||||||
|
|
||||||
|
// TODO: this is a lie for, say, fugu.
|
||||||
|
static const char* HEADERS[] = {
|
||||||
|
"Volume up/down to move highlight.",
|
||||||
|
"Power button to select.",
|
||||||
|
"",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char* ITEMS[] = {
|
||||||
|
"Reboot system now",
|
||||||
|
"Reboot to bootloader",
|
||||||
|
"Apply update from ADB",
|
||||||
|
"Apply update from SD card",
|
||||||
|
"Wipe data/factory reset",
|
||||||
|
"Wipe cache partition",
|
||||||
|
"View recovery logs",
|
||||||
|
"Power off",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* const* Device::GetMenuHeaders() { return HEADERS; }
|
||||||
|
const char* const* Device::GetMenuItems() { return ITEMS; }
|
||||||
|
|
||||||
|
Device::BuiltinAction Device::InvokeMenuItem(int menu_position) {
|
||||||
|
switch (menu_position) {
|
||||||
|
case 0: return REBOOT;
|
||||||
|
case 1: return REBOOT_BOOTLOADER;
|
||||||
|
case 2: return APPLY_ADB_SIDELOAD;
|
||||||
|
case 3: return APPLY_EXT;
|
||||||
|
case 4: return WIPE_DATA;
|
||||||
|
case 5: return WIPE_CACHE;
|
||||||
|
case 6: return READ_RECOVERY_LASTLOG;
|
||||||
|
case 7: return SHUTDOWN;
|
||||||
|
default: return NO_ACTION;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,13 +21,14 @@
|
|||||||
|
|
||||||
class Device {
|
class Device {
|
||||||
public:
|
public:
|
||||||
|
Device(RecoveryUI* ui) : ui_(ui) { }
|
||||||
virtual ~Device() { }
|
virtual ~Device() { }
|
||||||
|
|
||||||
// Called to obtain the UI object that should be used to display
|
// Called to obtain the UI object that should be used to display
|
||||||
// the recovery user interface for this device. You should not
|
// the recovery user interface for this device. You should not
|
||||||
// have called Init() on the UI object already, the caller will do
|
// have called Init() on the UI object already, the caller will do
|
||||||
// that after this method returns.
|
// that after this method returns.
|
||||||
virtual RecoveryUI* GetUI() = 0;
|
virtual RecoveryUI* GetUI() { return ui_; }
|
||||||
|
|
||||||
// Called when recovery starts up (after the UI has been obtained
|
// Called when recovery starts up (after the UI has been obtained
|
||||||
// and initialized and after the arguments have been parsed, but
|
// and initialized and after the arguments have been parsed, but
|
||||||
@@ -60,6 +61,17 @@ class Device {
|
|||||||
APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE,
|
APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE,
|
||||||
REBOOT_BOOTLOADER, SHUTDOWN, READ_RECOVERY_LASTLOG };
|
REBOOT_BOOTLOADER, SHUTDOWN, READ_RECOVERY_LASTLOG };
|
||||||
|
|
||||||
|
// Return the headers (an array of strings, one per line,
|
||||||
|
// NULL-terminated) for the main menu. Typically these tell users
|
||||||
|
// what to push to move the selection and invoke the selected
|
||||||
|
// item.
|
||||||
|
virtual const char* const* GetMenuHeaders();
|
||||||
|
|
||||||
|
// Return the list of menu items (an array of strings,
|
||||||
|
// NULL-terminated). The menu_position passed to InvokeMenuItem
|
||||||
|
// will correspond to the indexes into this array.
|
||||||
|
virtual const char* const* GetMenuItems();
|
||||||
|
|
||||||
// Perform a recovery action selected from the menu.
|
// Perform a recovery action selected from the menu.
|
||||||
// 'menu_position' will be the item number of the selected menu
|
// 'menu_position' will be the item number of the selected menu
|
||||||
// item, or a non-negative number returned from
|
// item, or a non-negative number returned from
|
||||||
@@ -69,7 +81,7 @@ class Device {
|
|||||||
// builtin actions, you can just return the corresponding enum
|
// builtin actions, you can just return the corresponding enum
|
||||||
// value. If it is an action specific to your device, you
|
// value. If it is an action specific to your device, you
|
||||||
// actually perform it here and return NO_ACTION.
|
// actually perform it here and return NO_ACTION.
|
||||||
virtual BuiltinAction InvokeMenuItem(int menu_position) = 0;
|
virtual BuiltinAction InvokeMenuItem(int menu_position);
|
||||||
|
|
||||||
static const int kNoAction = -1;
|
static const int kNoAction = -1;
|
||||||
static const int kHighlightUp = -2;
|
static const int kHighlightUp = -2;
|
||||||
@@ -84,16 +96,8 @@ class Device {
|
|||||||
// are erased AFTER this returns (whether it returns success or not).
|
// are erased AFTER this returns (whether it returns success or not).
|
||||||
virtual int WipeData() { return 0; }
|
virtual int WipeData() { return 0; }
|
||||||
|
|
||||||
// Return the headers (an array of strings, one per line,
|
private:
|
||||||
// NULL-terminated) for the main menu. Typically these tell users
|
RecoveryUI* ui_;
|
||||||
// what to push to move the selection and invoke the selected
|
|
||||||
// item.
|
|
||||||
virtual const char* const* GetMenuHeaders() = 0;
|
|
||||||
|
|
||||||
// Return the list of menu items (an array of strings,
|
|
||||||
// NULL-terminated). The menu_position passed to InvokeMenuItem
|
|
||||||
// will correspond to the indexes into this array.
|
|
||||||
virtual const char* const* GetMenuItems() = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// The device-specific library must define this function (or the
|
// The device-specific library must define this function (or the
|
||||||
|
|||||||
Reference in New Issue
Block a user