Add battery detection

Don't turn on battery LEDs or report it connected if not initialized.
This commit is contained in:
Tim Crawford 2020-09-03 21:35:26 -06:00 committed by Jeremy Soller
parent 61ca9c7b6a
commit 83c219589a
3 changed files with 11 additions and 4 deletions

View File

@ -99,8 +99,10 @@ uint8_t acpi_read(uint8_t addr) {
// AC adapter connected // AC adapter connected
data |= 1 << 0; data |= 1 << 0;
} }
// BAT0 always connected - TODO if (battery_status & BATTERY_INITIALIZED) {
data |= 1 << 2; // BAT0 connected
data |= 1 << 2;
}
break; break;
ACPI_16(0x16, battery_design_capacity); ACPI_16(0x16, battery_design_capacity);

View File

@ -3,6 +3,8 @@
#include <stdint.h> #include <stdint.h>
#define BATTERY_INITIALIZED (1U << 7)
extern uint16_t battery_temp; extern uint16_t battery_temp;
extern uint16_t battery_voltage; extern uint16_t battery_voltage;
extern uint16_t battery_current; extern uint16_t battery_current;

View File

@ -552,7 +552,11 @@ void power_event(void) {
//TODO: do not require both LEDs //TODO: do not require both LEDs
#if HAVE_LED_BAT_CHG && HAVE_LED_BAT_FULL #if HAVE_LED_BAT_CHG && HAVE_LED_BAT_FULL
if (ac_new) { if (!(battery_status & BATTERY_INITIALIZED)) {
// No battery connected
gpio_set(&LED_BAT_CHG, false);
gpio_set(&LED_BAT_FULL, false);
} else if (ac_new) {
// Discharging (no AC adapter) // Discharging (no AC adapter)
gpio_set(&LED_BAT_CHG, false); gpio_set(&LED_BAT_CHG, false);
gpio_set(&LED_BAT_FULL, false); gpio_set(&LED_BAT_FULL, false);
@ -563,7 +567,6 @@ void power_event(void) {
gpio_set(&LED_BAT_FULL, true); gpio_set(&LED_BAT_FULL, true);
} else { } else {
// Charging // Charging
// TODO: detect no battery connected
gpio_set(&LED_BAT_CHG, true); gpio_set(&LED_BAT_CHG, true);
gpio_set(&LED_BAT_FULL, false); gpio_set(&LED_BAT_FULL, false);
} }