瀏覽代碼

Added alerts conditions and framework

tags/v1.2.0
Bertrand Lemasle 6 年之前
父節點
當前提交
701043b4a3
共有 3 個文件被更改,包括 65 次插入0 次删除
  1. +43
    -0
      GpsTracker/Alerts.cpp
  2. +16
    -0
      GpsTracker/Alerts.h
  3. +6
    -0
      GpsTracker/Config.h

+ 43
- 0
GpsTracker/Alerts.cpp 查看文件

@@ -0,0 +1,43 @@
#pragma once

#include "Alerts.h"
#include "Config.h"

namespace alerts {

uint8_t _alerts = 0;

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

if (metadata.temperature == ALERT_RTC_TEMPERATURE_FAILURE && !bitRead(_alerts, ALERT_RTC_FAILURE)) {
bitSet(result, ALERT_RTC_FAILURE);
}

if (metadata.batteryLevel <= config->alertBatteryLevel1 && !bitRead(_alerts, ALERT_BATTERY_LEVEL_1)) {
bitSet(result, ALERT_BATTERY_LEVEL_1);
}

if (metadata.batteryLevel <= config->alertBatteryLevel2 && !bitRead(_alerts, ALERT_BATTERY_LEVEL_2)) {
bitSet(result, ALERT_BATTERY_LEVEL_2);
}

return result;
}

void clear(PositionEntryMetadata &metadata) {
config_t* config = &config::main::value;
uint8_t clearMask = 0;

if (bitRead(_alerts, ALERT_RTC_FAILURE) && metadata.temperature != ALERT_RTC_TEMPERATURE_FAILURE) {
bitSet(clearMask, ALERT_RTC_FAILURE);
}

if (_alerts & (_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);
}

_alerts &= ~clearMask;
}
}

+ 16
- 0
GpsTracker/Alerts.h 查看文件

@@ -0,0 +1,16 @@
#pragma once

#include "Positions.h"

#define ALERT_BATTERY_LEVEL_1 1
#define ALERT_BATTERY_LEVEL_2 2
#define ALERT_RTC_FAILURE 3

namespace alerts {

extern uint8_t _alerts;

uint8_t getTriggered(PositionEntryMetadata &metadata);
inline void add(uint8_t mask) { _alerts |= mask; }
void clear(PositionEntryMetadata &metadata);
}

+ 6
- 0
GpsTracker/Config.h 查看文件

@@ -43,6 +43,8 @@
#define NETWORK_DEFAULT_NO_NETWORK_QUALITY_THRESHOLD 8
#define NETWORK_DEFAULT_NO_NETWORK_TRIES 5

#define ALERT_RTC_TEMPERATURE_FAILURE 0

#pragma endregion

struct sleepTimings_t {
@@ -60,6 +62,10 @@ struct config_t {
#if BACKUP_ENABLE_NETWORK
networkConfig_t network;
#endif
uint8_t alertBatteryLevel1;
uint8_t alertBatteryLevel2;
uint8_t alertBatteryLevelClear;
char contactPhone[15];
};

namespace config {


Loading…
取消
儲存