diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2020-08-11 09:30:29 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2020-08-11 09:30:29 +0200 |
commit | 043918edf5473a3e60beeb45067839548bb10bae (patch) | |
tree | da29361eac733f94aa51b280869b3fe0f4217ba0 /src/common/GPIO/batterycharge.c | |
parent | 77ed964956a8b5bff5a62d2c5ebc530946ea13a1 (diff) | |
download | glutte-o-matic-043918edf5473a3e60beeb45067839548bb10bae.tar.gz glutte-o-matic-043918edf5473a3e60beeb45067839548bb10bae.tar.bz2 glutte-o-matic-043918edf5473a3e60beeb45067839548bb10bae.zip |
Use battery charge to set QRP
Diffstat (limited to 'src/common/GPIO/batterycharge.c')
-rw-r--r-- | src/common/GPIO/batterycharge.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/common/GPIO/batterycharge.c b/src/common/GPIO/batterycharge.c index 95176cd..d68a805 100644 --- a/src/common/GPIO/batterycharge.c +++ b/src/common/GPIO/batterycharge.c @@ -29,8 +29,13 @@ #include <stdlib.h> #include <errno.h> +// Hysteresis: +#define CHARGE_QRP 1300000 +#define CHARGE_QRO 1350000 + static int charge_valid; static uint32_t last_charge; +static int charge_qrp; void batterycharge_init() { @@ -39,6 +44,7 @@ void batterycharge_init() */ charge_valid = 0; last_charge = 0; + charge_qrp = 0; } void batterycharge_push_message(const char *ccounter_msg) @@ -85,3 +91,24 @@ uint32_t batterycharge_retrieve_last_capacity() taskENABLE_INTERRUPTS(); return ret; } + +int batterycharge_too_low() +{ + taskDISABLE_INTERRUPTS(); + uint32_t c = 0; + if (charge_valid) { + c = last_charge; + } + taskENABLE_INTERRUPTS(); + + if (c == 0) { + return -1; + } + else if (charge_qrp == 0 && c < CHARGE_QRP) { + charge_qrp = 1; + } + else if (charge_qrp == 1 && c >= CHARGE_QRO) { + charge_qrp = 0; + } + return charge_qrp; +} |