5
5
// Local logging tag
6
6
static const char TAG[] = __FILE__;
7
7
8
- uint8_t batt_level = 0 ; // display value
8
+ int8_t batt_level = - 1 ; // percent batt level, global variable, -1 means no batt
9
9
10
10
#ifdef BAT_MEASURE_ADC
11
11
esp_adc_cal_characteristics_t *adc_characs =
@@ -92,11 +92,11 @@ void AXP192_showstatus(void) {
92
92
if (pmu.isBatteryConnect ())
93
93
if (pmu.isCharging ())
94
94
ESP_LOGI (TAG, " Battery charging, %.2fV @ %.0fmAh" ,
95
- pmu.getBattVoltage () / 1000 , pmu.getBatteryChargeCurrent ());
95
+ pmu.getBattVoltage () / 1000.0 , pmu.getBatteryChargeCurrent ());
96
96
else
97
97
ESP_LOGI (TAG, " Battery not charging" );
98
98
else
99
- ESP_LOGI (TAG, " No Battery" );
99
+ ESP_LOGI (TAG, " Battery not present " );
100
100
101
101
if (pmu.isVbusIn ())
102
102
ESP_LOGI (TAG, " USB powered, %.0fmW" ,
@@ -142,10 +142,14 @@ void AXP192_init(void) {
142
142
// clear all interrupt flags
143
143
pmu.clearIrqStatus ();
144
144
// enable the required interrupt function
145
- pmu.enableIRQ (XPOWERS_AXP192_BAT_INSERT_IRQ | XPOWERS_AXP192_BAT_REMOVE_IRQ | // BATTERY
146
- XPOWERS_AXP192_VBUS_INSERT_IRQ | XPOWERS_AXP192_VBUS_REMOVE_IRQ | // VBUS
147
- XPOWERS_AXP192_PKEY_SHORT_IRQ | XPOWERS_AXP192_PKEY_LONG_IRQ | // POWER KEY
148
- XPOWERS_AXP192_BAT_CHG_DONE_IRQ | XPOWERS_AXP192_BAT_CHG_START_IRQ // CHARGE
145
+ pmu.enableIRQ (XPOWERS_AXP192_BAT_INSERT_IRQ |
146
+ XPOWERS_AXP192_BAT_REMOVE_IRQ | // BATTERY
147
+ XPOWERS_AXP192_VBUS_INSERT_IRQ |
148
+ XPOWERS_AXP192_VBUS_REMOVE_IRQ | // VBUS
149
+ XPOWERS_AXP192_PKEY_SHORT_IRQ |
150
+ XPOWERS_AXP192_PKEY_LONG_IRQ | // POWER KEY
151
+ XPOWERS_AXP192_BAT_CHG_DONE_IRQ |
152
+ XPOWERS_AXP192_BAT_CHG_START_IRQ // CHARGE
149
153
);
150
154
#endif // PMU_INT
151
155
@@ -231,14 +235,13 @@ uint16_t read_voltage(void) {
231
235
return voltage;
232
236
}
233
237
234
- uint8_t read_battlevel (mapFn_t mapFunction) {
238
+ int8_t read_battlevel (mapFn_t mapFunction) {
235
239
// returns the estimated battery level in values 0 ... 100 [percent]
236
240
uint8_t batt_percent = 0 ;
237
241
#ifdef HAS_IP5306
238
242
batt_percent = IP5306_GetBatteryLevel ();
239
243
#elif defined HAS_PMU
240
- int bp = pmu.getBatteryPercent ();
241
- batt_percent = bp < 0 ? 0 : bp;
244
+ batt_percent = pmu.getBatteryPercent ();
242
245
#else
243
246
const uint16_t batt_voltage = read_voltage ();
244
247
if (batt_voltage <= BAT_MIN_VOLTAGE)
@@ -260,7 +263,7 @@ uint8_t read_battlevel(mapFn_t mapFunction) {
260
263
// we calculate the applicable value from MCMD_DEVS_BATT_MIN to
261
264
// MCMD_DEVS_BATT_MAX from batt_percent value
262
265
263
- if (batt_percent == 0 )
266
+ if (batt_percent == - 1 )
264
267
LMIC_setBatteryLevel (MCMD_DEVS_BATT_NOINFO);
265
268
else
266
269
LMIC_setBatteryLevel (batt_percent / 100.0 *
@@ -282,7 +285,7 @@ uint8_t read_battlevel(mapFn_t mapFunction) {
282
285
283
286
bool batt_sufficient () {
284
287
#if (defined HAS_PMU || defined BAT_MEASURE_ADC || defined HAS_IP5306)
285
- if (batt_level) // we have a battery voltage
288
+ if (batt_level > 0 ) // we have a battery percent value
286
289
return (batt_level > OTA_MIN_BATT);
287
290
else
288
291
#endif
0 commit comments