Bladeren bron

Moved alerts code to match alerts bits definition

tags/v1.2.0
Bertrand Lemasle 6 jaren geleden
bovenliggende
commit
28efbe5a75
1 gewijzigde bestanden met toevoegingen van 15 en 12 verwijderingen
  1. +15
    -12
      GpsTracker/Alerts.cpp

+ 15
- 12
GpsTracker/Alerts.cpp Bestand weergeven

@@ -1,23 +1,18 @@
#pragma once

#include "Debug.h"
#include "Alerts.h"
#include "Config.h"
#include "Rtc.h"

#define LOGGER_NAME "Alerts"

namespace alerts {

uint8_t getTriggered(PositionEntryMetadata &metadata) {
config_t* config = &config::main::value;
uint8_t result = 0;

if (!rtc::isAccurate() && !bitRead(config->activeAlerts, ALERT_RTC_CLOCK_FAILURE)) {
bitSet(result, ALERT_RTC_CLOCK_FAILURE);
}

if (metadata.temperature == ALERT_SUSPICIOUS_RTC_TEMPERATURE && !bitRead(config->activeAlerts, ALERT_RTC_TEMPERATURE_FAILURE)) {
bitSet(result, ALERT_RTC_TEMPERATURE_FAILURE);
}

if (metadata.batteryLevel <= config->alertBatteryLevel1 && !bitRead(config->activeAlerts, ALERT_BATTERY_LEVEL_1)) {
bitSet(result, ALERT_BATTERY_LEVEL_1);
}
@@ -26,6 +21,14 @@ namespace alerts {
bitSet(result, ALERT_BATTERY_LEVEL_2);
}

if (metadata.temperature == ALERT_SUSPICIOUS_RTC_TEMPERATURE && !bitRead(config->activeAlerts, ALERT_RTC_TEMPERATURE_FAILURE)) {
bitSet(result, ALERT_RTC_TEMPERATURE_FAILURE);
}

if (!rtc::isAccurate() && !bitRead(config->activeAlerts, ALERT_RTC_CLOCK_FAILURE)) {
bitSet(result, ALERT_RTC_CLOCK_FAILURE);
}

return result;
}

@@ -41,16 +44,16 @@ namespace alerts {
config_t* config = &config::main::value;
uint8_t clearMask = 0;

if (bitRead(config->activeAlerts, ALERT_RTC_CLOCK_FAILURE) && rtc::isAccurate()) {
bitSet(clearMask, ALERT_RTC_CLOCK_FAILURE);
if ((config->activeAlerts & (_BV(ALERT_BATTERY_LEVEL_1) | _BV(ALERT_BATTERY_LEVEL_2))) && metadata.temperature >= config->alertBatteryLevelClear) {
clearMask |= _BV(ALERT_BATTERY_LEVEL_1) | _BV(ALERT_BATTERY_LEVEL_2);
}

if (bitRead(config->activeAlerts, ALERT_RTC_TEMPERATURE_FAILURE) && metadata.temperature != ALERT_SUSPICIOUS_RTC_TEMPERATURE) {
bitSet(clearMask, ALERT_RTC_TEMPERATURE_FAILURE);
}

if ((config->activeAlerts & (_BV(ALERT_BATTERY_LEVEL_1) | _BV(ALERT_BATTERY_LEVEL_2))) && metadata.temperature >= config->alertBatteryLevelClear) {
clearMask |= _BV(ALERT_BATTERY_LEVEL_1) | _BV(ALERT_BATTERY_LEVEL_2);
if (bitRead(config->activeAlerts, ALERT_RTC_CLOCK_FAILURE) && rtc::isAccurate()) {
bitSet(clearMask, ALERT_RTC_CLOCK_FAILURE);
}

if (!clearMask) return; //save a write to eeprom if there is no change


Laden…
Annuleren
Opslaan