From cdacab3d89cdbbd8fd7c20b3b340e27352e6737e Mon Sep 17 00:00:00 2001 From: Brandon Low Date: Thu, 19 Jan 2006 07:47:34 +0000 Subject: Charging state reporting on H3x0 Don't read the GPIO every refresh of statusbar or gwps for plugged state, use a variable exported from powermgmt instead. Allow Custom WPS to access %bc for battery charge state on targets that support this. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8383 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/gwps-common.c | 18 +++++++++++++++++- apps/gui/statusbar.c | 18 ++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) (limited to 'apps/gui') diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 3af52b5396..37f4fea310 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -655,11 +655,27 @@ static char* get_tag(struct wps_data* wps_data, case 'p': /* External power plugged in? */ { - if(charger_inserted()) + if(charger_input_state==CHARGER) return "p"; else return NULL; } +#if defined(HAVE_CHARGE_CTRL) || \ + defined (HAVE_CHARGE_STATE) || \ + CONFIG_BATTERY == BATT_LIION2200 + case 'c': /* Charging */ + { + if (charge_state == CHARGING +#ifdef HAVE_CHARGE_CTRL + || charge_state == TOPOFF +#endif + ) { + return "c"; + } else { + return NULL; + } + } +#endif } break; diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index 80de707a72..b4070394f9 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -127,7 +127,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) #endif /* HAVE_LCD_CHARCELLS */ bar->info.volume = sound_val2phys(SOUND_VOLUME, global_settings.volume); - bar->info.inserted = charger_inserted(); + bar->info.inserted = (charger_input_state == CHARGER); bar->info.battlevel = battery_level(); bar->info.battery_safe = battery_level_safe(); @@ -178,16 +178,21 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) #ifdef HAVE_CHARGING if (bar->info.inserted) { battery_state = true; -#if defined(HAVE_CHARGE_CTRL) || CONFIG_BATTERY == BATT_LIION2200 +#if defined(HAVE_CHARGE_CTRL) || \ + defined(HAVE_CHARGE_STATE) || \ + CONFIG_BATTERY == BATT_LIION2200 /* zero battery run time if charging */ - if (charge_state > 0) { + if (charge_state > DISCHARGING) { global_settings.runtime = 0; lasttime = current_tick; } /* animate battery if charging */ - if ((charge_state == 1) || - (charge_state == 2)) { + if ((charge_state == CHARGING) +#ifdef HAVE_CHARGE_CTRL + || (charge_state == TOPOFF) +#endif + ) { #else global_settings.runtime = 0; lasttime = current_tick; @@ -323,7 +328,8 @@ void gui_statusbar_icon_battery(struct screen * display, int percent) if (fill > 100) fill = 100; -#if defined(HAVE_CHARGE_CTRL) && !defined(SIMULATOR) /* Rec v1 target only */ +#if (defined(HAVE_CHARGE_CTRL) || defined(HAVE_CHARGE_STATE)) && \ + !defined(SIMULATOR) /* Certain charge controlled targets */ /* show graphical animation when charging instead of numbers */ if ((global_settings.battery_display) && (charge_state != 1) && -- cgit v1.2.3