Fixed a long-standing bug in the charging screen. The charging screen froze when OFF was pressed. The intention was to powerdown, but this cannot work on archos, so the charging screen must not react on OFF. Made the charging screen react on the ON press instead of the release for better feedback. Bootbox uses SYS_POWEROFF for powering down.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7104 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2005-07-11 19:14:26 +00:00
parent fbd4088df8
commit 7c7dd43ccf
3 changed files with 12 additions and 41 deletions

View file

@ -198,7 +198,7 @@ void init(void)
) )
{ {
rc = charging_screen(); /* display a "charging" screen */ rc = charging_screen(); /* display a "charging" screen */
if (rc == 1 || rc == 2) /* charger removed or "Off/Stop" pressed */ if (rc == 1) /* charger removed */
power_off(); power_off();
/* "On" pressed or USB connected: proceed */ /* "On" pressed or USB connected: proceed */
show_logo(); /* again, to provide better visual feedback */ show_logo(); /* again, to provide better visual feedback */

View file

@ -339,11 +339,6 @@ int charging_screen(void)
{ {
unsigned int button; unsigned int button;
int rc = 0; int rc = 0;
#ifdef BUTTON_OFF
const unsigned int offbutton = BUTTON_OFF;
#else
const unsigned int offbutton = BUTTON_STOP;
#endif
ide_power_enable(false); /* power down the disk, else would be spinning */ ide_power_enable(false); /* power down the disk, else would be spinning */
@ -365,21 +360,12 @@ int charging_screen(void)
status_draw(false); status_draw(false);
charging_display_info(true); charging_display_info(true);
button = button_get_w_tmo(HZ/3); button = button_get_w_tmo(HZ/3);
#ifdef BUTTON_ON if (button == BUTTON_ON)
if (button == (BUTTON_ON | BUTTON_REL))
#else
if (button == (BUTTON_RIGHT | BUTTON_REL))
#endif
rc = 3;
else if (button == offbutton)
rc = 2; rc = 2;
else else if (usb_detect())
{ rc = 3;
if (usb_detect()) else if (!charger_inserted())
rc = 4; rc = 1;
else if (!charger_inserted())
rc = 1;
}
} while (!rc); } while (!rc);
#ifdef HAVE_LCD_CHARCELLS #ifdef HAVE_LCD_CHARCELLS

View file

@ -42,12 +42,6 @@
#include "usb.h" #include "usb.h"
#include "powermgmt.h" #include "powermgmt.h"
#ifdef BUTTON_OFF
static const int offbutton = BUTTON_OFF;
#else
static const int offbutton = BUTTON_STOP;
#endif
void usb_screen(void) void usb_screen(void)
{ {
lcd_clear_display(); lcd_clear_display();
@ -88,21 +82,12 @@ int charging_screen(void)
do do
{ {
button = button_get_w_tmo(HZ/2); button = button_get_w_tmo(HZ/2);
#ifdef BUTTON_ON
if (button == (BUTTON_ON | BUTTON_REL)) if (button == (BUTTON_ON | BUTTON_REL))
#else
if (button == (BUTTON_RIGHT | BUTTON_REL))
#endif
rc = 3;
else if (button == offbutton)
rc = 2; rc = 2;
else else if (usb_detect())
{ rc = 3;
if (usb_detect()) else if (!charger_inserted())
rc = 4; rc = 1;
else if (!charger_inserted())
rc = 1;
}
} while (!rc); } while (!rc);
return rc; return rc;
@ -133,7 +118,7 @@ void prompt_usb(const char* msg1, const char* msg2)
do do
{ {
button = button_get(true); button = button_get(true);
if (button == offbutton) if (button == SYS_POWEROFF)
{ {
power_off(); power_off();
} }
@ -166,7 +151,7 @@ void main(void)
) )
{ {
rc = charging_screen(); /* display a "charging" screen */ rc = charging_screen(); /* display a "charging" screen */
if (rc == 1 || rc == 2) /* charger removed or "Off/Stop" pressed */ if (rc == 1) /* charger removed */
power_off(); power_off();
/* "On" pressed or USB connected: proceed */ /* "On" pressed or USB connected: proceed */
show_logo(); /* again, to provide better visual feedback */ show_logo(); /* again, to provide better visual feedback */