55// Local logging tag
66static const char TAG[] = __FILE__;
77
8- uint8_t batt_level = 0 ; // display value
8+ int8_t batt_level = - 1 ; // percent batt level, global variable, -1 means no batt
99
1010#ifdef BAT_MEASURE_ADC
1111esp_adc_cal_characteristics_t *adc_characs =
@@ -92,11 +92,11 @@ void AXP192_showstatus(void) {
9292 if (pmu.isBatteryConnect ())
9393 if (pmu.isCharging ())
9494 ESP_LOGI (TAG, " Battery charging, %.2fV @ %.0fmAh" ,
95- pmu.getBattVoltage () / 1000 , pmu.getBatteryChargeCurrent ());
95+ pmu.getBattVoltage () / 1000.0 , pmu.getBatteryChargeCurrent ());
9696 else
9797 ESP_LOGI (TAG, " Battery not charging" );
9898 else
99- ESP_LOGI (TAG, " No Battery" );
99+ ESP_LOGI (TAG, " Battery not present " );
100100
101101 if (pmu.isVbusIn ())
102102 ESP_LOGI (TAG, " USB powered, %.0fmW" ,
@@ -142,10 +142,14 @@ void AXP192_init(void) {
142142 // clear all interrupt flags
143143 pmu.clearIrqStatus ();
144144 // 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
149153 );
150154#endif // PMU_INT
151155
@@ -231,14 +235,13 @@ uint16_t read_voltage(void) {
231235 return voltage;
232236}
233237
234- uint8_t read_battlevel (mapFn_t mapFunction) {
238+ int8_t read_battlevel (mapFn_t mapFunction) {
235239 // returns the estimated battery level in values 0 ... 100 [percent]
236240 uint8_t batt_percent = 0 ;
237241#ifdef HAS_IP5306
238242 batt_percent = IP5306_GetBatteryLevel ();
239243#elif defined HAS_PMU
240- int bp = pmu.getBatteryPercent ();
241- batt_percent = bp < 0 ? 0 : bp;
244+ batt_percent = pmu.getBatteryPercent ();
242245#else
243246 const uint16_t batt_voltage = read_voltage ();
244247 if (batt_voltage <= BAT_MIN_VOLTAGE)
@@ -260,7 +263,7 @@ uint8_t read_battlevel(mapFn_t mapFunction) {
260263 // we calculate the applicable value from MCMD_DEVS_BATT_MIN to
261264 // MCMD_DEVS_BATT_MAX from batt_percent value
262265
263- if (batt_percent == 0 )
266+ if (batt_percent == - 1 )
264267 LMIC_setBatteryLevel (MCMD_DEVS_BATT_NOINFO);
265268 else
266269 LMIC_setBatteryLevel (batt_percent / 100.0 *
@@ -282,7 +285,7 @@ uint8_t read_battlevel(mapFn_t mapFunction) {
282285
283286bool batt_sufficient () {
284287#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
286289 return (batt_level > OTA_MIN_BATT);
287290 else
288291#endif
0 commit comments