Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 15033) +++ apps/lang/english.lang (working copy) @@ -11389,3 +11389,33 @@ lcd_color: "Line Selector Colours" + + id: LANG_CHARGER_REMOVED + desc: Tell the user when the charger is disconnected. +Only for voice + user: + + *: "Charger removed" + + + *: "Charger removed" + + + *: "Charger removed" + + + + id: LANG_CHARGER_INSERTED + desc: Tell the user when the charger is connected. +Only for voice + user: + + *: "Charger inserted" + + + *: "Charger inserted" + + + *: "Charger inserted" + + Index: apps/misc.c =================================================================== --- apps/misc.c (revision 15033) +++ apps/misc.c (working copy) @@ -856,6 +856,13 @@ { switch(event) { + case SYS_BATTERY_UPDATE: + if(talk_menus_enabled ()) + { + talk_id(LANG_BATTERY_TIME, true); + talk_value(battery_level(), UNIT_PERCENT, true); + } + break; case SYS_USB_CONNECTED: if (callback != NULL) callback(parameter); @@ -887,10 +894,14 @@ #if CONFIG_CHARGING case SYS_CHARGER_CONNECTED: car_adapter_mode_processing(true); + if(talk_menus_enabled ()) + talk_id(LANG_CHARGER_INSERTED, true); return SYS_CHARGER_CONNECTED; case SYS_CHARGER_DISCONNECTED: car_adapter_mode_processing(false); + if(talk_menus_enabled ()) + talk_id(LANG_CHARGER_REMOVED, true); return SYS_CHARGER_DISCONNECTED; #endif #ifdef HAVE_HEADPHONE_DETECTION Index: firmware/export/kernel.h =================================================================== --- firmware/export/kernel.h (revision 15033) +++ firmware/export/kernel.h (working copy) @@ -62,6 +62,7 @@ #define SYS_POWEROFF MAKE_SYS_EVENT(SYS_EVENT_CLS_POWER, 0) #define SYS_CHARGER_CONNECTED MAKE_SYS_EVENT(SYS_EVENT_CLS_POWER, 1) #define SYS_CHARGER_DISCONNECTED MAKE_SYS_EVENT(SYS_EVENT_CLS_POWER, 2) +#define SYS_BATTERY_UPDATE MAKE_SYS_EVENT(SYS_EVENT_CLS_POWER, 3) #define SYS_FS_CHANGED MAKE_SYS_EVENT(SYS_EVENT_CLS_FILESYS, 0) #define SYS_HOTSWAP_INSERTED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 0) #define SYS_HOTSWAP_EXTRACTED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 1) Index: firmware/export/powermgmt.h =================================================================== --- firmware/export/powermgmt.h (revision 15033) +++ firmware/export/powermgmt.h (working copy) @@ -174,5 +174,5 @@ void cancel_shutdown(void); void shutdown_hw(void); void sys_poweroff(void); - +void send_level (void); #endif Index: firmware/powermgmt.c =================================================================== --- firmware/powermgmt.c (revision 15033) +++ firmware/powermgmt.c (working copy) @@ -74,7 +74,6 @@ #else #define DEBUG_STACK 0 #endif - static int shutdown_timeout = 0; #if CONFIG_CHARGING >= CHARGING_MONITOR charge_state_type charge_state; /* charging mode */ @@ -111,6 +110,7 @@ batt_level = 100 * (batt_millivolts - BATT_MINMVOLT) / (BATT_MAXMVOLT - BATT_MINMVOLT); batt_time = batt_level * BATT_MAXRUNTIME / 100; } + send_level (); } void battery_read_info(int *voltage, int *level) @@ -459,6 +459,7 @@ } battery_percent = level; + send_level (); } /* @@ -1192,3 +1193,30 @@ power_off(); #endif /* #ifndef SIMULATOR */ } + +/*Returns the battery level on certain levels.*/ +void send_level (void) +{ + static int send_battery_level =100; + if(charger_input_state ==CHARGER_UNPLUGGED) + send_battery_level =100; + if (charge_state == CHARGING) + send_battery_level =0; + if(battery_level () <=50 && battery_level () >21 && send_battery_level >90) + { + send_battery_level =85; + queue_broadcast(SYS_BATTERY_UPDATE, send_battery_level); + } + else if(battery_level () <=5 && battery_level () >0 && send_battery_level >80) + { + send_battery_level =70; + queue_broadcast(SYS_BATTERY_UPDATE, send_battery_level); + } + else if(battery_level () <=20 && battery_level () >5 && send_battery_level >65) + { + send_battery_level =60; + queue_broadcast(SYS_BATTERY_UPDATE,send_battery_level); + } + if(charger_input_state ==CHARGER_PLUGGED) + send_battery_level =0; +}