5cae445e43
If recovery sits for 2 minutes in prompt_and_wait(), and you've never turned the screen on via the magic keypress, go ahead and reboot. (We used to assume that the user could pull the battery to get out of this state, but on devices with nonremovable batteries...) If you've ever enabled display of the log/menu since recovery started, we assume you know what you're doing and will stay in recovery until you choose to reboot. Bug: 3387873 Bug: 3387274 Change-Id: I041621e5db132df9a925e6808845a7c45e1b427a
105 lines
3.8 KiB
C
105 lines
3.8 KiB
C
/*
|
|
* Copyright (C) 2007 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.
|
|
*/
|
|
|
|
#ifndef RECOVERY_COMMON_H
|
|
#define RECOVERY_COMMON_H
|
|
|
|
#include <stdio.h>
|
|
|
|
// Initialize the graphics system.
|
|
void ui_init();
|
|
|
|
// Use KEY_* codes from <linux/input.h> or KEY_DREAM_* from "minui/minui.h".
|
|
int ui_wait_key(); // waits for a key/button press, returns the code
|
|
int ui_key_pressed(int key); // returns >0 if the code is currently pressed
|
|
int ui_text_visible(); // returns >0 if text log is currently visible
|
|
int ui_text_ever_visible(); // returns >0 if text log was ever visible
|
|
void ui_show_text(int visible);
|
|
void ui_clear_key_queue();
|
|
|
|
// Write a message to the on-screen log shown with Alt-L (also to stderr).
|
|
// The screen is small, and users may need to report these messages to support,
|
|
// so keep the output short and not too cryptic.
|
|
void ui_print(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
|
|
|
|
// Display some header text followed by a menu of items, which appears
|
|
// at the top of the screen (in place of any scrolling ui_print()
|
|
// output, if necessary).
|
|
void ui_start_menu(char** headers, char** items, int initial_selection);
|
|
// Set the menu highlight to the given index, and return it (capped to
|
|
// the range [0..numitems).
|
|
int ui_menu_select(int sel);
|
|
// End menu mode, resetting the text overlay so that ui_print()
|
|
// statements will be displayed.
|
|
void ui_end_menu();
|
|
|
|
// Set the icon (normally the only thing visible besides the progress bar).
|
|
enum {
|
|
BACKGROUND_ICON_NONE,
|
|
BACKGROUND_ICON_INSTALLING,
|
|
BACKGROUND_ICON_ERROR,
|
|
NUM_BACKGROUND_ICONS
|
|
};
|
|
void ui_set_background(int icon);
|
|
|
|
// Show a progress bar and define the scope of the next operation:
|
|
// portion - fraction of the progress bar the next operation will use
|
|
// seconds - expected time interval (progress bar moves at this minimum rate)
|
|
void ui_show_progress(float portion, int seconds);
|
|
void ui_set_progress(float fraction); // 0.0 - 1.0 within the defined scope
|
|
|
|
// Default allocation of progress bar segments to operations
|
|
static const int VERIFICATION_PROGRESS_TIME = 60;
|
|
static const float VERIFICATION_PROGRESS_FRACTION = 0.25;
|
|
static const float DEFAULT_FILES_PROGRESS_FRACTION = 0.4;
|
|
static const float DEFAULT_IMAGE_PROGRESS_FRACTION = 0.1;
|
|
|
|
// Show a rotating "barberpole" for ongoing operations. Updates automatically.
|
|
void ui_show_indeterminate_progress();
|
|
|
|
// Hide and reset the progress bar.
|
|
void ui_reset_progress();
|
|
|
|
#define LOGE(...) ui_print("E:" __VA_ARGS__)
|
|
#define LOGW(...) fprintf(stdout, "W:" __VA_ARGS__)
|
|
#define LOGI(...) fprintf(stdout, "I:" __VA_ARGS__)
|
|
|
|
#if 0
|
|
#define LOGV(...) fprintf(stdout, "V:" __VA_ARGS__)
|
|
#define LOGD(...) fprintf(stdout, "D:" __VA_ARGS__)
|
|
#else
|
|
#define LOGV(...) do {} while (0)
|
|
#define LOGD(...) do {} while (0)
|
|
#endif
|
|
|
|
#define STRINGIFY(x) #x
|
|
#define EXPAND(x) STRINGIFY(x)
|
|
|
|
typedef struct {
|
|
const char* mount_point; // eg. "/cache". must live in the root directory.
|
|
|
|
const char* fs_type; // "yaffs2" or "ext4" or "vfat"
|
|
|
|
const char* device; // MTD partition name if fs_type == "yaffs"
|
|
// block device if fs_type == "ext4" or "vfat"
|
|
|
|
const char* device2; // alternative device to try if fs_type
|
|
// == "ext4" or "vfat" and mounting
|
|
// 'device' fails
|
|
} Volume;
|
|
|
|
#endif // RECOVERY_COMMON_H
|