summaryrefslogtreecommitdiff
path: root/firmware/powermgmt.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/powermgmt.c')
-rw-r--r--firmware/powermgmt.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index a05e0aeb68..51ea99f6fa 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -88,16 +88,12 @@ static long last_event_tick = 0;
88#if (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) == PERCENTAGE_MEASURE 88#if (CONFIG_BATTERY_MEASURE & PERCENTAGE_MEASURE) == PERCENTAGE_MEASURE
89#ifdef SIMULATOR 89#ifdef SIMULATOR
90int _battery_level(void) { return -1; } 90int _battery_level(void) { return -1; }
91int _battery_voltage(void);
92extern const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11];
93extern const unsigned short percent_to_volt_charge[11];
94#else
95int _battery_voltage(void) { return -1; }
96const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11];
97const unsigned short percent_to_volt_charge[11];
98#endif 91#endif
99#elif (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE) == VOLTAGE_MEASURE 92#else
100int _battery_level(void) { return -1; } 93int _battery_level(void) { return -1; }
94#endif
95
96#if (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE) == VOLTAGE_MEASURE
101/* 97/*
102 * Average battery voltage and charger voltage, filtered via a digital 98 * Average battery voltage and charger voltage, filtered via a digital
103 * exponential filter (aka. exponential moving average, scaled): 99 * exponential filter (aka. exponential moving average, scaled):
@@ -106,10 +102,8 @@ int _battery_level(void) { return -1; }
106static unsigned int avgbat; 102static unsigned int avgbat;
107/* filtered battery voltage, millivolts */ 103/* filtered battery voltage, millivolts */
108static unsigned int battery_millivolts; 104static unsigned int battery_millivolts;
109#elif (CONFIG_BATTERY_MEASURE == 0) 105#else
110int _battery_voltage(void) { return -1; } 106int _battery_voltage(void) { return -1; }
111int _battery_level(void) { return -1; }
112
113const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11]; 107const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11];
114const unsigned short percent_to_volt_charge[11]; 108const unsigned short percent_to_volt_charge[11];
115#endif 109#endif
@@ -156,9 +150,9 @@ void battery_read_info(int *voltage, int *level)
156 *voltage = millivolts; 150 *voltage = millivolts;
157 151
158 if (level) { 152 if (level) {
159 percent = voltage_to_battery_level(millivolts); 153 percent = _battery_level();
160 if (percent < 0) 154 if (percent < 0)
161 percent = _battery_level(); 155 percent = voltage_to_battery_level(millivolts);
162 *level = percent; 156 *level = percent;
163 } 157 }
164} 158}