summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-12-11 16:18:30 +0000
committerAidan MacDonald <amachronic@protonmail.com>2021-12-23 11:40:22 +0000
commit22d0c4da7085610136939ffe82bb3877a4fd8d5b (patch)
treef45d267c37796e83c73449fa4708e219e193bb16
parent1a313dc9bff109d155e35bac79c475ea65198aea (diff)
downloadrockbox-22d0c4da70.tar.gz
rockbox-22d0c4da70.zip
Revert "powermgmt: Remove an unnecessary function"
This reverts commit 6ff1a935b923b69d34d18e68af612297912c806b. Reason: it created a mismatch between the displayed voltage and percent since the voltage was unfiltered but percentage was based off the filtered voltage. Change-Id: I4cba099f2e1edf0ef7c4e17a32f566aa66f5b933
-rw-r--r--apps/debug_menu.c11
-rw-r--r--firmware/export/powermgmt.h4
-rw-r--r--firmware/powermgmt.c18
-rw-r--r--firmware/target/coldfire/debug-coldfire.c5
4 files changed, 29 insertions, 9 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index b11458fef8..3a9218bc84 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -849,7 +849,7 @@ static bool tsc2100_debug(void)
static bool view_battery(void)
{
int view = 0;
- int i, x, y, y1, y2, grid, graph;
+ int i, x, y, z, y1, y2, grid, graph;
unsigned short maxv, minv;
lcd_setfont(FONT_SYSFIXED);
@@ -944,12 +944,11 @@ static bool view_battery(void)
#else
lcd_puts(0, 0, "Power status: unknown");
#endif
-
- y = _battery_voltage();
+ battery_read_info(&y, &z);
if (y > 0)
- lcd_putsf(0, 1, "Battery: %d.%03d V (%d %%)", y / 1000, y % 1000, battery_level());
- else
- lcd_putsf(0, 1, "Battery: %d %%", _battery_level());
+ lcd_putsf(0, 1, "Battery: %d.%03d V (%d %%)", y / 1000, y % 1000, z);
+ else if (z > 0)
+ lcd_putsf(0, 1, "Battery: %d %%", z);
#ifdef ADC_EXT_POWER
y = (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 1000;
lcd_putsf(0, 2, "External: %d.%03d V", y / 1000, y % 1000);
diff --git a/firmware/export/powermgmt.h b/firmware/export/powermgmt.h
index 9d4d4e06aa..77177e61af 100644
--- a/firmware/export/powermgmt.h
+++ b/firmware/export/powermgmt.h
@@ -143,6 +143,10 @@ unsigned int input_millivolts(void); /* voltage that device is running from */
void reset_battery_filter(int millivolts);
#endif /* HAVE_BATTERY_SWITCH || HAVE_RESET_BATTERY_FILTER */
+
+/* read unfiltered battery info */
+void battery_read_info(int *voltage, int *level);
+
/* Tells if the battery level is safe for disk writes */
bool battery_level_safe(void);
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index 30d37927ca..55da2a5a44 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -392,6 +392,24 @@ static void battery_status_update(void)
send_battery_level_event(level);
}
+void battery_read_info(int *voltage, int *level)
+{
+ int millivolts = _battery_voltage();
+
+ if (voltage)
+ *voltage = millivolts;
+
+ if (level) {
+#if (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE)
+ *level = _battery_level();
+#elif (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE)
+ *level = voltage_to_battery_level(millivolts);
+#else
+ *level = -1;
+#endif
+ }
+}
+
#if BATTERY_TYPES_COUNT > 1
void set_battery_type(int type)
{
diff --git a/firmware/target/coldfire/debug-coldfire.c b/firmware/target/coldfire/debug-coldfire.c
index 56f1bbe1a7..ef44a82176 100644
--- a/firmware/target/coldfire/debug-coldfire.c
+++ b/firmware/target/coldfire/debug-coldfire.c
@@ -144,7 +144,7 @@ bool dbg_ports(void)
adc_buttons = adc_read(ADC_BUTTONS);
adc_remote = adc_read(ADC_REMOTE);
-
+ battery_read_info(&adc_battery_voltage, &adc_battery_level);
#if defined(IAUDIO_X5) || defined(IAUDIO_M5) || defined(IRIVER_H300_SERIES)
lcd_putsf(0, line++, "ADC_BUTTONS (%c): %02x",
button_scan_enabled() ? '+' : '-', adc_buttons);
@@ -162,8 +162,7 @@ bool dbg_ports(void)
adc_read(ADC_REMOTEDETECT));
#endif
- adc_battery_voltage = _battery_voltage();
- adc_battery_level = battery_level();
+ battery_read_info(&adc_battery_voltage, &adc_battery_level);
lcd_putsf(0, line++, "Batt: %d.%03dV %d%% ", adc_battery_voltage / 1000,
adc_battery_voltage % 1000, adc_battery_level);