am e001074f
: Merge "Move default implementations into Device."
* commit 'e001074f227fb74f6ebf5b26c222d09fe69712c0': Move default implementations into Device.
This commit is contained in:
commit
7b66aaebef
4 changed files with 103 additions and 88 deletions
19
Android.mk
19
Android.mk
|
@ -30,16 +30,17 @@ include $(BUILD_STATIC_LIBRARY)
|
|||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
recovery.cpp \
|
||||
bootloader.cpp \
|
||||
install.cpp \
|
||||
roots.cpp \
|
||||
ui.cpp \
|
||||
screen_ui.cpp \
|
||||
asn1_decoder.cpp \
|
||||
verifier.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
|
||||
|
||||
|
|
|
@ -14,39 +14,15 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <linux/input.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "device.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 {
|
||||
public:
|
||||
DefaultDevice() :
|
||||
ui(new ScreenRecoveryUI) {
|
||||
DefaultDevice() : Device(new ScreenRecoveryUI) {
|
||||
}
|
||||
|
||||
RecoveryUI* GetUI() { return ui; }
|
||||
|
||||
// TODO: make this handle more cases, and move the default implementation into Device too.
|
||||
int HandleMenuKey(int key, int visible) {
|
||||
if (visible) {
|
||||
switch (key) {
|
||||
|
@ -66,28 +42,8 @@ class DefaultDevice : public Device {
|
|||
|
||||
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() {
|
||||
return new DefaultDevice();
|
||||
return new DefaultDevice;
|
||||
}
|
||||
|
|
54
device.cpp
Normal file
54
device.cpp
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
28
device.h
28
device.h
|
@ -21,13 +21,14 @@
|
|||
|
||||
class Device {
|
||||
public:
|
||||
Device(RecoveryUI* ui) : ui_(ui) { }
|
||||
virtual ~Device() { }
|
||||
|
||||
// Called to obtain the UI object that should be used to display
|
||||
// the recovery user interface for this device. You should not
|
||||
// have called Init() on the UI object already, the caller will do
|
||||
// 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
|
||||
// and initialized and after the arguments have been parsed, but
|
||||
|
@ -60,6 +61,17 @@ class Device {
|
|||
APPLY_ADB_SIDELOAD, WIPE_DATA, WIPE_CACHE,
|
||||
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.
|
||||
// 'menu_position' will be the item number of the selected menu
|
||||
// item, or a non-negative number returned from
|
||||
|
@ -69,7 +81,7 @@ class Device {
|
|||
// builtin actions, you can just return the corresponding enum
|
||||
// value. If it is an action specific to your device, you
|
||||
// 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 kHighlightUp = -2;
|
||||
|
@ -84,16 +96,8 @@ class Device {
|
|||
// are erased AFTER this returns (whether it returns success or not).
|
||||
virtual int WipeData() { return 0; }
|
||||
|
||||
// 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() = 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;
|
||||
private:
|
||||
RecoveryUI* ui_;
|
||||
};
|
||||
|
||||
// The device-specific library must define this function (or the
|
||||
|
|
Loading…
Reference in a new issue