瀏覽代碼

Added alerts notification and clearance in the main core function

tags/v1.2.0
Bertrand Lemasle 6 年之前
父節點
當前提交
8d51ceb975
共有 2 個文件被更改,包括 33 次插入1 次删除
  1. +31
    -1
      GpsTracker/Core.cpp
  2. +2
    -0
      GpsTracker/Core.h

+ 31
- 1
GpsTracker/Core.cpp 查看文件

@@ -1,8 +1,10 @@
#include "Core.h"
#include "Config.h"
#include "Flash.h"
#include "Alerts.h"

#define LOGGER_NAME "Core"
#define SMS_BUFFER_SIZE 100

using namespace utils;

@@ -21,17 +23,45 @@ namespace core {

if (acquired) {
positions::appendLast(metadata);
forceBackup = updateSleepTime();

gps::preserveCurrentCoordinates();
}

notifyFailures(metadata);
alerts::clear(metadata);
positions::doBackup(forceBackup);

if (acquired) updateRtcTime();
mainunit::deepSleep(sleepTime);
}

void notifyFailures(PositionEntryMetadata &metadata) {
uint8_t triggered = alerts::getTriggered(metadata);
uint8_t notified = 0;
SIM808RegistrationStatus networkStatus;
char buffer[SMS_BUFFER_SIZE] = "Alerts !\n";

if (!triggered) return;

network::powerOn();
networkStatus = network::waitForRegistered(NETWORK_DEFAULT_TOTAL_TIMEOUT_MS);

if (!network::isAvailable(networkStatus.stat)) return;

if (bitRead(triggered, ALERT_BATTERY_LEVEL_1) || bitRead(triggered, ALERT_BATTERY_LEVEL_2)) {
sprintf_P(buffer + strlen(buffer), PSTR(" - Battery at %d%%.\n"), metadata.batteryLevel);
}
if (bitRead(triggered, ALERT_RTC_TEMPERATURE_FAILURE)) {
sprintf_P(buffer + strlen(buffer), PSTR(" - Temperature is %.2f°C. Backup battery failure ?\n"), metadata.batteryLevel);
}

//TODO : send sms, return if failed
alerts::add(notified); //only add the successly notified failures
//TODO : network::powerOff(); count "handles" like for i2c ?
}

void updateRtcTime() {
tmElements_t time;
gps::getTime(time);


+ 2
- 0
GpsTracker/Core.h 查看文件

@@ -17,4 +17,6 @@ namespace core {
void updateRtcTime();
bool updateSleepTime();
uint16_t mapSleepTime(uint8_t velocity);

void notifyFailures(PositionEntryMetadata &metadata);
}

Loading…
取消
儲存