1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef _RECOVERY_UI_H 18 #define _RECOVERY_UI_H 19 20 #include "common.h" 21 22 // Called before UI library is initialized. Can change things like 23 // how many frames are included in various animations, etc. 24 extern void device_ui_init(UIParameters* ui_parameters); 25 26 // Called when recovery starts up. Returns 0. 27 extern int device_recovery_start(); 28 29 // Called in the input thread when a new key (key_code) is pressed. 30 // *key_pressed is an array of KEY_MAX+1 bytes indicating which other 31 // keys are already pressed. Return true if the text display should 32 // be toggled. 33 extern int device_toggle_display(volatile char* key_pressed, int key_code); 34 35 // Called in the input thread when a new key (key_code) is pressed. 36 // *key_pressed is an array of KEY_MAX+1 bytes indicating which other 37 // keys are already pressed. Return true if the device should reboot 38 // immediately. 39 extern int device_reboot_now(volatile char* key_pressed, int key_code); 40 41 // Called from the main thread when recovery is waiting for input and 42 // a key is pressed. key is the code of the key pressed; visible is 43 // true if the recovery menu is being shown. Implementations can call 44 // ui_key_pressed() to discover if other keys are being held down. 45 // Return one of the defined constants below in order to: 46 // 47 // - move the menu highlight (HIGHLIGHT_*) 48 // - invoke the highlighted item (SELECT_ITEM) 49 // - do nothing (NO_ACTION) 50 // - invoke a specific action (a menu position: any non-negative number) 51 extern int device_handle_key(int key, int visible); 52 53 // Perform a recovery action selected from the menu. 'which' will be 54 // the item number of the selected menu item, or a non-negative number 55 // returned from device_handle_key(). The menu will be hidden when 56 // this is called; implementations can call ui_print() to print 57 // information to the screen. 58 extern int device_perform_action(int which); 59 60 // Called when we do a wipe data/factory reset operation (either via a 61 // reboot from the main system with the --wipe_data flag, or when the 62 // user boots into recovery manually and selects the option from the 63 // menu.) Can perform whatever device-specific wiping actions are 64 // needed. Return 0 on success. The userdata and cache partitions 65 // are erased after this returns (whether it returns success or not). 66 int device_wipe_data(); 67 68 #define NO_ACTION -1 69 70 #define HIGHLIGHT_UP -2 71 #define HIGHLIGHT_DOWN -3 72 #define SELECT_ITEM -4 73 74 #define ITEM_REBOOT 0 75 #define ITEM_APPLY_EXT 1 76 #define ITEM_APPLY_SDCARD 1 // historical synonym for ITEM_APPLY_EXT 77 #define ITEM_WIPE_DATA 2 78 #define ITEM_WIPE_CACHE 3 79 #define ITEM_APPLY_CACHE 4 80 81 // Header text to display above the main menu. 82 extern char* MENU_HEADERS[]; 83 84 // Text of menu items. 85 extern char* MENU_ITEMS[]; 86 87 #endif 88