#pragma once #include <stdint.h> #include <stdbool.h> typedef enum { FULL_CHARGED, CHARGING, DISCHARGING, LOW_VOLTAGE, UNKNOWN, } battery_status_t; typedef enum { LED_CHARGER = 0, LED_ON, LED_OFF, LED_TOGGLE, } battery_led_t; /* Battery API */ void battery_init(void); void battery_led(battery_led_t val); bool battery_charging(void); uint16_t battery_voltage(void); battery_status_t battery_status(void); #define BATTERY_VOLTAGE_LOW_LIMIT 3500 #define BATTERY_VOLTAGE_LOW_RECOVERY 3700 // ADC offset:16, resolution:5mV #define BATTERY_ADC_OFFSET 16 #define BATTERY_ADC_RESOLUTION 5