bugfix getBattLevel() (issue #444)
This commit is contained in:
parent
af0fd577d3
commit
d9c6153559
@ -49,6 +49,7 @@ void myRxCallback(void *pUserData, uint8_t port, const uint8_t *pMsg,
|
|||||||
void myTxCallback(void *pUserData, int fSuccess);
|
void myTxCallback(void *pUserData, int fSuccess);
|
||||||
void mac_decode(const uint8_t cmd[], const uint8_t cmdlen, const mac_t table[],
|
void mac_decode(const uint8_t cmd[], const uint8_t cmdlen, const mac_t table[],
|
||||||
const uint8_t tablesize);
|
const uint8_t tablesize);
|
||||||
|
uint8_t getBattLevel(void);
|
||||||
|
|
||||||
#if (TIME_SYNC_LORAWAN)
|
#if (TIME_SYNC_LORAWAN)
|
||||||
void user_request_network_time_callback(void *pVoidUserUTCTime,
|
void user_request_network_time_callback(void *pVoidUserUTCTime,
|
||||||
|
@ -19,6 +19,6 @@ void AXP192_init(void);
|
|||||||
void AXP192_displaypower(void);
|
void AXP192_displaypower(void);
|
||||||
uint16_t read_voltage(void);
|
uint16_t read_voltage(void);
|
||||||
void calibrate_voltage(void);
|
void calibrate_voltage(void);
|
||||||
uint8_t getBattLevel(void);
|
bool batt_sufficient(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -666,4 +666,30 @@ void mac_decode(const uint8_t cmd[], const uint8_t cmdlen, const mac_t table[],
|
|||||||
|
|
||||||
} // mac_decode()
|
} // mac_decode()
|
||||||
|
|
||||||
|
uint8_t getBattLevel() {
|
||||||
|
/*
|
||||||
|
return values:
|
||||||
|
MCMD_DEVS_EXT_POWER = 0x00, // external power supply
|
||||||
|
MCMD_DEVS_BATT_MIN = 0x01, // min battery value
|
||||||
|
MCMD_DEVS_BATT_MAX = 0xFE, // max battery value
|
||||||
|
MCMD_DEVS_BATT_NOINFO = 0xFF, // unknown battery level
|
||||||
|
*/
|
||||||
|
#if (defined HAS_PMU || defined BAT_MEASURE_ADC)
|
||||||
|
uint16_t voltage = read_voltage();
|
||||||
|
|
||||||
|
switch (voltage) {
|
||||||
|
case 0:
|
||||||
|
return MCMD_DEVS_BATT_NOINFO;
|
||||||
|
case 0xffff:
|
||||||
|
return MCMD_DEVS_EXT_POWER;
|
||||||
|
default:
|
||||||
|
return (voltage > OTA_MIN_BATT ? MCMD_DEVS_BATT_MAX : MCMD_DEVS_BATT_MIN);
|
||||||
|
}
|
||||||
|
#else // we don't have any info on battery level
|
||||||
|
return MCMD_DEVS_BATT_NOINFO;
|
||||||
|
#endif
|
||||||
|
} // getBattLevel()
|
||||||
|
|
||||||
|
//u1_t os_getBattLevel(void) { return getBattLevel(); };
|
||||||
|
|
||||||
#endif // HAS_LORA
|
#endif // HAS_LORA
|
@ -41,7 +41,7 @@ inline String getHeaderValue(String header, String headerName) {
|
|||||||
void start_ota_update() {
|
void start_ota_update() {
|
||||||
|
|
||||||
// check battery status if we can before doing ota
|
// check battery status if we can before doing ota
|
||||||
if (getBattLevel() == MCMD_DEVS_BATT_MIN) {
|
if (!batt_sufficient()) {
|
||||||
ESP_LOGE(TAG, "Battery voltage %dmV too low for OTA", batt_voltage);
|
ESP_LOGE(TAG, "Battery voltage %dmV too low for OTA", batt_voltage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -167,31 +167,15 @@ void calibrate_voltage(void) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t getBattLevel() {
|
bool batt_sufficient() {
|
||||||
/*
|
|
||||||
return values:
|
|
||||||
MCMD_DEVS_EXT_POWER = 0x00, // external power supply
|
|
||||||
MCMD_DEVS_BATT_MIN = 0x01, // min battery value
|
|
||||||
MCMD_DEVS_BATT_MAX = 0xFE, // max battery value
|
|
||||||
MCMD_DEVS_BATT_NOINFO = 0xFF, // unknown battery level
|
|
||||||
*/
|
|
||||||
#if (defined HAS_PMU || defined BAT_MEASURE_ADC)
|
#if (defined HAS_PMU || defined BAT_MEASURE_ADC)
|
||||||
uint16_t voltage = read_voltage();
|
uint16_t volts = read_voltage();
|
||||||
|
return ((volts < 1000) ||
|
||||||
switch (voltage) {
|
(volts > OTA_MIN_BATT)); // no battery or battery sufficient
|
||||||
case 0:
|
#else
|
||||||
return MCMD_DEVS_BATT_NOINFO;
|
return true;
|
||||||
case 0xffff:
|
|
||||||
return MCMD_DEVS_EXT_POWER;
|
|
||||||
default:
|
|
||||||
return (voltage > OTA_MIN_BATT ? MCMD_DEVS_BATT_MAX : MCMD_DEVS_BATT_MIN);
|
|
||||||
}
|
|
||||||
#else // we don't have any info on battery level
|
|
||||||
return MCMD_DEVS_BATT_NOINFO;
|
|
||||||
#endif
|
#endif
|
||||||
} // getBattLevel()
|
}
|
||||||
|
|
||||||
// u1_t os_getBattLevel(void) { return getBattLevel(); };
|
|
||||||
|
|
||||||
uint16_t read_voltage() {
|
uint16_t read_voltage() {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user