diff options
author | Thomas Martitz <kugel@rockbox.org> | 2012-01-03 23:44:38 +0000 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2012-01-03 23:44:38 +0000 |
commit | c1bd9b0361ba92c29ceef68d74093e70a1a3e481 (patch) | |
tree | 1a42acdf2099b7f5ac06eee11e1d488b388c6d9f /apps | |
parent | 949e6398c89e3c277a4c542f67a5ee788c6f642d (diff) | |
download | rockbox-c1bd9b0361ba92c29ceef68d74093e70a1a3e481.tar.gz rockbox-c1bd9b0361ba92c29ceef68d74093e70a1a3e481.zip |
Rework powermgmt to enable code re-use on appliation and sims.
* Introduce CONFIG_BATTERY_MEASURE define, to allow targets (application)
to break powermgmt.c's assumption about the ability to read battery voltage.
There's now additionally percentage (android) and remaining time measure
(maemo). No measure at all also works (sdl app). If voltage can't be measured,
then battery_level() is king and it'll be used for power_history and runtime
estimation.
* Implement target's API in the simulator, i.e. _battery_voltage(), so it
doesn't need to implement it's own powermgmt.c and other stubs. Now
the sim behaves much more like a native target, although it still
changes the simulated battery voltage quickly,
* Other changes include include renaming battery_adc_voltage() to
_battery_voltage(), for consistency with the new target functions and
making some of the apps code aware that voltage and runtime estimation
is not always available.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31548 a1c6a512-1295-4272-9138-f99709370657
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 |