Added battery state reporting over USB/Serial/Bluetooth. Implements #39.

This commit is contained in:
Mark Qvist 2023-10-07 19:45:55 +02:00
parent e4245c6177
commit 6d26997fa4
4 changed files with 24 additions and 1 deletions

View File

@ -19,7 +19,7 @@
#define CONFIG_H #define CONFIG_H
#define MAJ_VERS 0x01 #define MAJ_VERS 0x01
#define MIN_VERS 0x40 #define MIN_VERS 0x41
#define PLATFORM_AVR 0x90 #define PLATFORM_AVR 0x90
#define PLATFORM_ESP32 0x80 #define PLATFORM_ESP32 0x80

View File

@ -44,6 +44,7 @@
#define CMD_STAT_SNR 0x24 #define CMD_STAT_SNR 0x24
#define CMD_STAT_CHTM 0x25 #define CMD_STAT_CHTM 0x25
#define CMD_STAT_PHYPRM 0x26 #define CMD_STAT_PHYPRM 0x26
#define CMD_STAT_BAT 0x27
#define CMD_BLINK 0x30 #define CMD_BLINK 0x30
#define CMD_RANDOM 0x40 #define CMD_RANDOM 0x40

12
Power.h
View File

@ -32,6 +32,9 @@
uint32_t last_pmu_update = 0; uint32_t last_pmu_update = 0;
uint8_t pmu_target_pps = 1; uint8_t pmu_target_pps = 1;
int pmu_update_interval = 1000/pmu_target_pps; int pmu_update_interval = 1000/pmu_target_pps;
uint8_t pmu_rc = 0;
#define PMU_R_INTERVAL 5
void kiss_indicate_battery();
void measure_battery() { void measure_battery() {
#if BOARD_MODEL == BOARD_RNODE_NG_21 || BOARD_MODEL == BOARD_LORA32_V2_1 #if BOARD_MODEL == BOARD_RNODE_NG_21 || BOARD_MODEL == BOARD_LORA32_V2_1
@ -82,6 +85,8 @@ void measure_battery() {
#endif #endif
} }
// if (bt_state == BT_STATE_CONNECTED) { // if (bt_state == BT_STATE_CONNECTED) {
// SerialBT.printf("Bus voltage %.3fv. Unfiltered %.3fv.", battery_voltage, bat_v_samples[BAT_SAMPLES-1]); // SerialBT.printf("Bus voltage %.3fv. Unfiltered %.3fv.", battery_voltage, bat_v_samples[BAT_SAMPLES-1]);
// if (bat_voltage_dropping) { // if (bat_voltage_dropping) {
@ -154,6 +159,13 @@ void measure_battery() {
// SerialBT.println(""); // SerialBT.println("");
// } // }
#endif #endif
if (battery_ready) {
pmu_rc++;
if (pmu_rc%PMU_R_INTERVAL == 0) {
kiss_indicate_battery();
}
}
} }
void update_pmu() { void update_pmu() {

View File

@ -755,6 +755,16 @@ void kiss_indicate_phy_stats() {
#endif #endif
} }
void kiss_indicate_battery() {
#if MCU_VARIANT == MCU_ESP32
serial_write(FEND);
serial_write(CMD_STAT_BAT);
escaped_serial_write(battery_state);
escaped_serial_write((uint8_t)int(battery_percent));
serial_write(FEND);
#endif
}
void kiss_indicate_btpin() { void kiss_indicate_btpin() {
#if HAS_BLUETOOTH #if HAS_BLUETOOTH
serial_write(FEND); serial_write(FEND);