diff options
Diffstat (limited to 'flash/bootbox/main.c')
-rw-r--r-- | flash/bootbox/main.c | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/flash/bootbox/main.c b/flash/bootbox/main.c index b0350923f3..8c7c398ff8 100644 --- a/flash/bootbox/main.c +++ b/flash/bootbox/main.c | |||
@@ -42,7 +42,11 @@ | |||
42 | #include "usb.h" | 42 | #include "usb.h" |
43 | #include "powermgmt.h" | 43 | #include "powermgmt.h" |
44 | 44 | ||
45 | int line = 0; | 45 | #ifdef BUTTON_OFF |
46 | static const int offbutton = BUTTON_OFF; | ||
47 | #else | ||
48 | static const int offbutton = BUTTON_STOP; | ||
49 | #endif | ||
46 | 50 | ||
47 | void usb_screen(void) | 51 | void usb_screen(void) |
48 | { | 52 | { |
@@ -72,11 +76,6 @@ int charging_screen(void) | |||
72 | { | 76 | { |
73 | unsigned int button; | 77 | unsigned int button; |
74 | int rc = 0; | 78 | int rc = 0; |
75 | #ifdef BUTTON_OFF | ||
76 | const unsigned int offbutton = BUTTON_OFF; | ||
77 | #else | ||
78 | const unsigned int offbutton = BUTTON_STOP; | ||
79 | #endif | ||
80 | 79 | ||
81 | ide_power_enable(false); /* power down the disk, else would be spinning */ | 80 | ide_power_enable(false); /* power down the disk, else would be spinning */ |
82 | 81 | ||
@@ -119,6 +118,29 @@ int mmc_remove_request(void) | |||
119 | } | 118 | } |
120 | #endif /* HAVE_MMC */ | 119 | #endif /* HAVE_MMC */ |
121 | 120 | ||
121 | /* prompt user to plug USB and fix a problem */ | ||
122 | void prompt_usb(const char* msg1, const char* msg2) | ||
123 | { | ||
124 | int button; | ||
125 | lcd_clear_display(); | ||
126 | lcd_puts(0, 0, msg1); | ||
127 | lcd_puts(0, 1, msg2); | ||
128 | #ifdef HAVE_LCD_BITMAP | ||
129 | lcd_puts(0, 2, "Insert USB cable"); | ||
130 | lcd_puts(0, 3, "and fix it."); | ||
131 | lcd_update(); | ||
132 | #endif | ||
133 | do | ||
134 | { | ||
135 | button = button_get(true); | ||
136 | if (button == offbutton) | ||
137 | { | ||
138 | power_off(); | ||
139 | } | ||
140 | } while (button != SYS_USB_CONNECTED); | ||
141 | usb_screen(); | ||
142 | system_reboot(); | ||
143 | } | ||
122 | 144 | ||
123 | void main(void) | 145 | void main(void) |
124 | { | 146 | { |
@@ -178,31 +200,14 @@ void main(void) | |||
178 | rc = disk_mount_all(); | 200 | rc = disk_mount_all(); |
179 | if (rc<=0) | 201 | if (rc<=0) |
180 | { | 202 | { |
181 | lcd_clear_display(); | 203 | prompt_usb("No partition", "found."); |
182 | lcd_puts(0, 0, "No partition"); | ||
183 | lcd_puts(0, 1, "found."); | ||
184 | #ifdef HAVE_LCD_BITMAP | ||
185 | lcd_puts(0, 2, "Insert USB cable"); | ||
186 | lcd_puts(0, 3, "and fix it."); | ||
187 | lcd_update(); | ||
188 | #endif | ||
189 | while(button_get(true) != SYS_USB_CONNECTED) {}; | ||
190 | usb_screen(); | ||
191 | system_reboot(); | ||
192 | } | 204 | } |
193 | 205 | ||
194 | { // rolo the firmware | 206 | { // rolo the firmware |
195 | static const char filename[] = "/" BOOTFILE; | 207 | static const char filename[] = "/" BOOTFILE; |
196 | rolo_load((char*)filename); /* won't return if started */ | 208 | rolo_load((char*)filename); /* won't return if started */ |
197 | 209 | ||
198 | lcd_clear_display(); | 210 | prompt_usb("No firmware", filename); |
199 | lcd_puts(0, 0, "No firmware"); | ||
200 | lcd_puts(0, 1, filename); | ||
201 | #ifdef HAVE_LCD_BITMAP | ||
202 | lcd_update(); | ||
203 | #endif | ||
204 | while(!(button_get(true) & BUTTON_REL)); | ||
205 | system_reboot(); | ||
206 | } | 211 | } |
207 | 212 | ||
208 | 213 | ||