diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/debug_menu.c | 66 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 10 | ||||
-rw-r--r-- | apps/menus/main_menu.c | 6 | ||||
-rw-r--r-- | apps/menus/theme_menu.c | 6 | ||||
-rw-r--r-- | apps/misc.c | 4 | ||||
-rw-r--r-- | apps/plugin.c | 2 | ||||
-rw-r--r-- | apps/plugin.h | 4 | ||||
-rw-r--r-- | apps/plugins/SOURCES | 2 | ||||
-rw-r--r-- | apps/settings.h | 2 | ||||
-rw-r--r-- | apps/settings_list.c | 2 |
10 files changed, 68 insertions, 36 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index b4d917a3eb..340407176c 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -900,8 +900,7 @@ static bool tsc2100_debug(void) | |||
900 | return simplelist_show_list(&info); | 900 | return simplelist_show_list(&info); |
901 | } | 901 | } |
902 | #endif | 902 | #endif |
903 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SAMSUNG_YPR0) | 903 | #if (CONFIG_BATTERY_MEASURE != 0) && defined(HAVE_LCD_BITMAP) && !defined(SIMULATOR) |
904 | #ifdef HAVE_LCD_BITMAP | ||
905 | /* | 904 | /* |
906 | * view_battery() shows a automatically scaled graph of the battery voltage | 905 | * view_battery() shows a automatically scaled graph of the battery voltage |
907 | * over time. Usable for estimating battery life / charging rate. | 906 | * over time. Usable for estimating battery life / charging rate. |
@@ -909,13 +908,14 @@ static bool tsc2100_debug(void) | |||
909 | */ | 908 | */ |
910 | 909 | ||
911 | #define BAT_LAST_VAL MIN(LCD_WIDTH, POWER_HISTORY_LEN) | 910 | #define BAT_LAST_VAL MIN(LCD_WIDTH, POWER_HISTORY_LEN) |
912 | #define BAT_YSPACE (LCD_HEIGHT - 20) | 911 | #define BAT_TSPACE 20 |
912 | #define BAT_YSPACE (LCD_HEIGHT - BAT_TSPACE) | ||
913 | 913 | ||
914 | 914 | ||
915 | static bool view_battery(void) | 915 | static bool view_battery(void) |
916 | { | 916 | { |
917 | int view = 0; | 917 | int view = 0; |
918 | int i, x, y, y1, y2, grid, graph; | 918 | int i, x, y, z, y1, y2, grid, graph; |
919 | unsigned short maxv, minv; | 919 | unsigned short maxv, minv; |
920 | 920 | ||
921 | lcd_setfont(FONT_SYSFIXED); | 921 | lcd_setfont(FONT_SYSFIXED); |
@@ -934,19 +934,28 @@ static bool view_battery(void) | |||
934 | if (power_history[i] < minv) | 934 | if (power_history[i] < minv) |
935 | minv = power_history[i]; | 935 | minv = power_history[i]; |
936 | } | 936 | } |
937 | 937 | /* print header */ | |
938 | #if (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE) | ||
938 | /* adjust grid scale */ | 939 | /* adjust grid scale */ |
939 | if ((maxv - minv) > 50) | 940 | if ((maxv - minv) > 50) |
940 | grid = 50; | 941 | grid = 50; |
941 | else | 942 | else |
942 | grid = 5; | 943 | grid = 5; |
943 | 944 | ||
944 | /* print header */ | ||
945 | lcd_putsf(0, 0, "battery %d.%03dV", power_history[0] / 1000, | 945 | lcd_putsf(0, 0, "battery %d.%03dV", power_history[0] / 1000, |
946 | power_history[0] % 1000); | 946 | power_history[0] % 1000); |
947 | lcd_putsf(0, 1, "%d.%03d-%d.%03dV (%2dmV)", | 947 | lcd_putsf(0, 1, "%d.%03d-%d.%03dV (%2dmV)", |
948 | minv / 1000, minv % 1000, maxv / 1000, maxv % 1000, | 948 | minv / 1000, minv % 1000, maxv / 1000, maxv % 1000, |
949 | grid); | 949 | grid); |
950 | #elif (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) | ||
951 | /* adjust grid scale */ | ||
952 | if ((maxv - minv) > 10) | ||
953 | grid = 10; | ||
954 | else | ||
955 | grid = 1; | ||
956 | lcd_putsf(0, 0, "battery %d%%", power_history[0]); | ||
957 | lcd_putsf(0, 1, "%d%%-%d%% (%d %%)", minv, maxv, grid); | ||
958 | #endif | ||
950 | 959 | ||
951 | i = 1; | 960 | i = 1; |
952 | while ((y = (minv - (minv % grid)+i*grid)) < maxv) | 961 | while ((y = (minv - (minv % grid)+i*grid)) < maxv) |
@@ -971,11 +980,11 @@ static bool view_battery(void) | |||
971 | { | 980 | { |
972 | y1 = (power_history[i] - minv) * BAT_YSPACE / | 981 | y1 = (power_history[i] - minv) * BAT_YSPACE / |
973 | (maxv - minv); | 982 | (maxv - minv); |
974 | y1 = MIN(MAX(LCD_HEIGHT-1 - y1, 20), | 983 | y1 = MIN(MAX(LCD_HEIGHT-1 - y1, BAT_TSPACE), |
975 | LCD_HEIGHT-1); | 984 | LCD_HEIGHT-1); |
976 | y2 = (power_history[i-1] - minv) * BAT_YSPACE / | 985 | y2 = (power_history[i-1] - minv) * BAT_YSPACE / |
977 | (maxv - minv); | 986 | (maxv - minv); |
978 | y2 = MIN(MAX(LCD_HEIGHT-1 - y2, 20), | 987 | y2 = MIN(MAX(LCD_HEIGHT-1 - y2, BAT_TSPACE), |
979 | LCD_HEIGHT-1); | 988 | LCD_HEIGHT-1); |
980 | 989 | ||
981 | lcd_set_drawmode(DRMODE_SOLID); | 990 | lcd_set_drawmode(DRMODE_SOLID); |
@@ -999,10 +1008,13 @@ static bool view_battery(void) | |||
999 | lcd_putsf(0, 0, "Pwr status: %s", | 1008 | lcd_putsf(0, 0, "Pwr status: %s", |
1000 | charging_state() ? "charging" : "discharging"); | 1009 | charging_state() ? "charging" : "discharging"); |
1001 | #else | 1010 | #else |
1002 | lcd_puts(0, 0, "Power status:"); | 1011 | lcd_puts(0, 0, "Power status: unknown"); |
1003 | #endif | 1012 | #endif |
1004 | battery_read_info(&y, NULL); | 1013 | battery_read_info(&y, &z); |
1005 | lcd_putsf(0, 1, "Battery: %d.%03d V", y / 1000, y % 1000); | 1014 | if (y > 0) |
1015 | lcd_putsf(0, 1, "Battery: %d.%03d V (%d %%)", y / 1000, y % 1000, z); | ||
1016 | else if (z > 0) | ||
1017 | lcd_putsf(0, 1, "Battery: %d %%", z); | ||
1006 | #ifdef ADC_EXT_POWER | 1018 | #ifdef ADC_EXT_POWER |
1007 | y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 1000; | 1019 | y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 1000; |
1008 | lcd_putsf(0, 2, "External: %d.%03d V", y / 1000, y % 1000); | 1020 | lcd_putsf(0, 2, "External: %d.%03d V", y / 1000, y % 1000); |
@@ -1169,16 +1181,23 @@ static bool view_battery(void) | |||
1169 | #endif /* target type */ | 1181 | #endif /* target type */ |
1170 | #endif /* CONFIG_CHARGING */ | 1182 | #endif /* CONFIG_CHARGING */ |
1171 | break; | 1183 | break; |
1172 | |||
1173 | case 2: /* voltage deltas: */ | 1184 | case 2: /* voltage deltas: */ |
1185 | #if (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE) | ||
1174 | lcd_puts(0, 0, "Voltage deltas:"); | 1186 | lcd_puts(0, 0, "Voltage deltas:"); |
1175 | 1187 | for (i = 0; i < POWER_HISTORY_LEN-1; i++) { | |
1176 | for (i = 0; i <= 6; i++) { | ||
1177 | y = power_history[i] - power_history[i+1]; | 1188 | y = power_history[i] - power_history[i+1]; |
1178 | lcd_putsf(0, i+1, "-%d min: %s%d.%03d V", i, | 1189 | lcd_putsf(0, i+1, "-%d min: %c%d.%03d V", i, |
1179 | (y < 0) ? "-" : "", ((y < 0) ? y * -1 : y) / 1000, | 1190 | (y < 0) ? '-' : ' ', ((y < 0) ? y * -1 : y) / 1000, |
1180 | ((y < 0) ? y * -1 : y ) % 1000); | 1191 | ((y < 0) ? y * -1 : y ) % 1000); |
1181 | } | 1192 | } |
1193 | #elif (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) | ||
1194 | lcd_puts(0, 0, "Percentage deltas:"); | ||
1195 | for (i = 0; i < POWER_HISTORY_LEN-1; i++) { | ||
1196 | y = power_history[i] - power_history[i+1]; | ||
1197 | lcd_putsf(0, i+1, "-%d min: %c%d%%", i, | ||
1198 | (y < 0) ? '-' : ' ', ((y < 0) ? y * -1 : y)); | ||
1199 | } | ||
1200 | #endif | ||
1182 | break; | 1201 | break; |
1183 | 1202 | ||
1184 | case 3: /* remaining time estimation: */ | 1203 | case 3: /* remaining time estimation: */ |
@@ -1195,13 +1214,19 @@ static bool view_battery(void) | |||
1195 | lcd_putsf(0, 4, "Trickle sec: %d/60", trickle_sec); | 1214 | lcd_putsf(0, 4, "Trickle sec: %d/60", trickle_sec); |
1196 | #endif /* ARCHOS_RECORDER */ | 1215 | #endif /* ARCHOS_RECORDER */ |
1197 | 1216 | ||
1217 | #if (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE) | ||
1198 | lcd_putsf(0, 5, "Last PwrHist: %d.%03dV", | 1218 | lcd_putsf(0, 5, "Last PwrHist: %d.%03dV", |
1199 | power_history[0] / 1000, | 1219 | power_history[0] / 1000, |
1200 | power_history[0] % 1000); | 1220 | power_history[0] % 1000); |
1221 | #endif | ||
1201 | 1222 | ||
1202 | lcd_putsf(0, 6, "battery level: %d%%", battery_level()); | 1223 | lcd_putsf(0, 6, "battery level: %d%%", battery_level()); |
1203 | 1224 | ||
1204 | lcd_putsf(0, 7, "Est. remain: %d m", battery_time()); | 1225 | int time_left = battery_time(); |
1226 | if (time_left >= 0) | ||
1227 | lcd_putsf(0, 7, "Est. remain: %d m", time_left); | ||
1228 | else | ||
1229 | lcd_puts(0, 7, "Estimation n/a"); | ||
1205 | break; | 1230 | break; |
1206 | } | 1231 | } |
1207 | 1232 | ||
@@ -1228,8 +1253,7 @@ static bool view_battery(void) | |||
1228 | return false; | 1253 | return false; |
1229 | } | 1254 | } |
1230 | 1255 | ||
1231 | #endif /* HAVE_LCD_BITMAP */ | 1256 | #endif /* (CONFIG_BATTERY_MEASURE != 0) && HAVE_LCD_BITMAP */ |
1232 | #endif | ||
1233 | 1257 | ||
1234 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) | 1258 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) |
1235 | #if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD) | 1259 | #if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD) |
@@ -2168,7 +2192,7 @@ static const struct the_menu_item menuitems[] = { | |||
2168 | { "View CPU stats", dbg_cpuinfo }, | 2192 | { "View CPU stats", dbg_cpuinfo }, |
2169 | #endif | 2193 | #endif |
2170 | #ifdef HAVE_LCD_BITMAP | 2194 | #ifdef HAVE_LCD_BITMAP |
2171 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SAMSUNG_YPR0) | 2195 | #if (CONFIG_BATTERY_MEASURE != 0) && !defined(SIMULATOR) |
2172 | { "View battery", view_battery }, | 2196 | { "View battery", view_battery }, |
2173 | #endif | 2197 | #endif |
2174 | #ifndef APPLICATION | 2198 | #ifndef APPLICATION |
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index 169c4a36fd..bae8ae8f8e 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -1068,9 +1068,13 @@ const char *get_token_value(struct gui_wps *gwps, | |||
1068 | 1068 | ||
1069 | case SKIN_TOKEN_BATTERY_VOLTS: | 1069 | case SKIN_TOKEN_BATTERY_VOLTS: |
1070 | { | 1070 | { |
1071 | unsigned int v = battery_voltage(); | 1071 | int v = battery_voltage(); |
1072 | snprintf(buf, buf_size, "%d.%02d", v / 1000, (v % 1000) / 10); | 1072 | if (v >= 0) { |
1073 | return buf; | 1073 | snprintf(buf, buf_size, "%d.%02d", v / 1000, (v % 1000) / 10); |
1074 | return buf; | ||
1075 | } else { | ||
1076 | return "?"; | ||
1077 | } | ||
1074 | } | 1078 | } |
1075 | 1079 | ||
1076 | case SKIN_TOKEN_BATTERY_TIME: | 1080 | case SKIN_TOKEN_BATTERY_TIME: |
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index cefc395b3d..b7472a6849 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c | |||
@@ -210,7 +210,7 @@ static const char* info_getname(int selected_item, void *data, | |||
210 | snprintf(buffer, buffer_len, str(LANG_BATTERY_TIME), | 210 | snprintf(buffer, buffer_len, str(LANG_BATTERY_TIME), |
211 | battery_level(), battery_time() / 60, battery_time() % 60); | 211 | battery_level(), battery_time() / 60, battery_time() % 60); |
212 | else | 212 | else |
213 | return "(n/a)"; | 213 | return "Battery n/a"; /* translating worth it? */ |
214 | break; | 214 | break; |
215 | case INFO_DISK1: /* disk usage 1 */ | 215 | case INFO_DISK1: /* disk usage 1 */ |
216 | #ifdef HAVE_MULTIVOLUME | 216 | #ifdef HAVE_MULTIVOLUME |
@@ -289,9 +289,11 @@ static int info_speak_item(int selected_item, void * data) | |||
289 | #endif /* CONFIG_CHARGING = */ | 289 | #endif /* CONFIG_CHARGING = */ |
290 | if (battery_level() >= 0) | 290 | if (battery_level() >= 0) |
291 | { | 291 | { |
292 | int time_left = battery_time(); | ||
292 | talk_id(LANG_BATTERY_TIME, false); | 293 | talk_id(LANG_BATTERY_TIME, false); |
293 | talk_value(battery_level(), UNIT_PERCENT, true); | 294 | talk_value(battery_level(), UNIT_PERCENT, true); |
294 | talk_value(battery_time() *60, UNIT_TIME, true); | 295 | if (time_left >= 0) |
296 | talk_value(time_left * 60, UNIT_TIME, true); | ||
295 | } | 297 | } |
296 | else talk_id(VOICE_BLANK, false); | 298 | else talk_id(VOICE_BLANK, false); |
297 | break; | 299 | break; |
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c index e1077a5efd..5e04191ed1 100644 --- a/apps/menus/theme_menu.c +++ b/apps/menus/theme_menu.c | |||
@@ -219,7 +219,11 @@ MAKE_MENU(bars_menu, ID2P(LANG_BARS_MENU), 0, Icon_NOICON, | |||
219 | #if CONFIG_KEYPAD == RECORDER_PAD | 219 | #if CONFIG_KEYPAD == RECORDER_PAD |
220 | &buttonbar, | 220 | &buttonbar, |
221 | #endif | 221 | #endif |
222 | &volume_type, &battery_display); | 222 | &volume_type |
223 | #if (CONFIG_BATTERY_MEASURE != 0) | ||
224 | , &battery_display | ||
225 | #endif | ||
226 | ); | ||
223 | #endif /* HAVE_LCD_BITMAP */ | 227 | #endif /* HAVE_LCD_BITMAP */ |
224 | 228 | ||
225 | /* */ | 229 | /* */ |
diff --git a/apps/misc.c b/apps/misc.c index b1def596ab..30c747113c 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -277,6 +277,7 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter) | |||
277 | 277 | ||
278 | if (batt_safe) | 278 | if (batt_safe) |
279 | { | 279 | { |
280 | int level; | ||
280 | #ifdef HAVE_TAGCACHE | 281 | #ifdef HAVE_TAGCACHE |
281 | if (!tagcache_prepare_shutdown()) | 282 | if (!tagcache_prepare_shutdown()) |
282 | { | 283 | { |
@@ -285,7 +286,8 @@ static bool clean_shutdown(void (*callback)(void *), void *parameter) | |||
285 | return false; | 286 | return false; |
286 | } | 287 | } |
287 | #endif | 288 | #endif |
288 | if (battery_level() > 10) | 289 | level = battery_level(); |
290 | if (level > 10 || level < 0) | ||
289 | splash(0, str(LANG_SHUTTINGDOWN)); | 291 | splash(0, str(LANG_SHUTTINGDOWN)); |
290 | else | 292 | else |
291 | { | 293 | { |
diff --git a/apps/plugin.c b/apps/plugin.c index f17ad3c57a..25280750ce 100644 --- a/apps/plugin.c +++ b/apps/plugin.c | |||
@@ -664,9 +664,7 @@ static const struct plugin_api rockbox_api = { | |||
664 | battery_level, | 664 | battery_level, |
665 | battery_level_safe, | 665 | battery_level_safe, |
666 | battery_time, | 666 | battery_time, |
667 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SAMSUNG_YPR0) | ||
668 | battery_voltage, | 667 | battery_voltage, |
669 | #endif | ||
670 | #if CONFIG_CHARGING | 668 | #if CONFIG_CHARGING |
671 | charger_inserted, | 669 | charger_inserted, |
672 | # if CONFIG_CHARGING >= CHARGING_MONITOR | 670 | # if CONFIG_CHARGING >= CHARGING_MONITOR |
diff --git a/apps/plugin.h b/apps/plugin.h index 0bb7262bd8..918206ab69 100644 --- a/apps/plugin.h +++ b/apps/plugin.h | |||
@@ -794,9 +794,7 @@ struct plugin_api { | |||
794 | int (*battery_level)(void); | 794 | int (*battery_level)(void); |
795 | bool (*battery_level_safe)(void); | 795 | bool (*battery_level_safe)(void); |
796 | int (*battery_time)(void); | 796 | int (*battery_time)(void); |
797 | #if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SAMSUNG_YPR0) | 797 | int (*battery_voltage)(void); |
798 | unsigned int (*battery_voltage)(void); | ||
799 | #endif | ||
800 | #if CONFIG_CHARGING | 798 | #if CONFIG_CHARGING |
801 | bool (*charger_inserted)(void); | 799 | bool (*charger_inserted)(void); |
802 | # if CONFIG_CHARGING >= CHARGING_MONITOR | 800 | # if CONFIG_CHARGING >= CHARGING_MONITOR |
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 1b14c0dd5e..a72579e3da 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES | |||
@@ -1,5 +1,5 @@ | |||
1 | /* plugins common to all models */ | 1 | /* plugins common to all models */ |
2 | #ifndef SIMULATOR | 2 | #if !defined(SIMULATOR) && (CONFIG_BATTERY_MEASURE != 0) |
3 | battery_bench.c | 3 | battery_bench.c |
4 | #endif | 4 | #endif |
5 | chessclock.c | 5 | chessclock.c |
diff --git a/apps/settings.h b/apps/settings.h index 676e5bfb56..d0fd3204e9 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -638,7 +638,7 @@ struct user_settings | |||
638 | 638 | ||
639 | /* power settings */ | 639 | /* power settings */ |
640 | int poweroff; /* idle power off timer */ | 640 | int poweroff; /* idle power off timer */ |
641 | #ifdef BATTERY_CAPACITY_DEFAULT | 641 | #if BATTERY_CAPACITY_DEFAULT > 0 |
642 | int battery_capacity; /* in mAh */ | 642 | int battery_capacity; /* in mAh */ |
643 | #endif | 643 | #endif |
644 | 644 | ||
diff --git a/apps/settings_list.c b/apps/settings_list.c index c9003bb8f3..dff5ed26f4 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -838,7 +838,7 @@ const struct settings_list settings[] = { | |||
838 | NULL, NULL, NULL), | 838 | NULL, NULL, NULL), |
839 | /* use this setting for user code even if there's no exchangable battery | 839 | /* use this setting for user code even if there's no exchangable battery |
840 | * support enabled */ | 840 | * support enabled */ |
841 | #ifdef BATTERY_CAPACITY_DEFAULT | 841 | #if BATTERY_CAPACITY_DEFAULT > 0 |
842 | /* define min/max/inc for this file if there's only one battery */ | 842 | /* define min/max/inc for this file if there's only one battery */ |
843 | #ifndef BATTERY_CAPACITY_MIN | 843 | #ifndef BATTERY_CAPACITY_MIN |
844 | #define BATTERY_CAPACITY_MIN BATTERY_CAPACITY_DEFAULT | 844 | #define BATTERY_CAPACITY_MIN BATTERY_CAPACITY_DEFAULT |