Quellcode durchsuchen

Merge branch 'alerts' into code-reduction

tags/v1.2.0
Bertrand Lemasle vor 6 Jahren
Ursprung
Commit
6c457151fd
6 geänderte Dateien mit 41 neuen und 33 gelöschten Zeilen
  1. +15
    -12
      GpsTracker/Alerts.cpp
  2. +4
    -4
      GpsTracker/Alerts.h
  3. +9
    -7
      GpsTracker/Core.cpp
  4. +6
    -4
      GpsTracker/Debug.cpp
  5. +5
    -4
      GpsTracker/Hardware.cpp
  6. +2
    -2
      GpsTracker/NetworkPositionsBackup.cpp

+ 15
- 12
GpsTracker/Alerts.cpp Datei anzeigen

@@ -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.batteryLevel >= 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


+ 4
- 4
GpsTracker/Alerts.h Datei anzeigen

@@ -2,10 +2,10 @@

#include "Positions.h"

#define ALERT_BATTERY_LEVEL_1 1
#define ALERT_BATTERY_LEVEL_2 2
#define ALERT_RTC_TEMPERATURE_FAILURE 3
#define ALERT_RTC_CLOCK_FAILURE 4
#define ALERT_BATTERY_LEVEL_1 0
#define ALERT_BATTERY_LEVEL_2 1
#define ALERT_RTC_TEMPERATURE_FAILURE 2
#define ALERT_RTC_CLOCK_FAILURE 3

namespace alerts {



+ 9
- 7
GpsTracker/Core.cpp Datei anzeigen

@@ -55,27 +55,29 @@ namespace core {
uint8_t notifyFailures(PositionEntryMetadata &metadata) {
SIM808RegistrationStatus networkStatus;
char buffer[SMS_BUFFER_SIZE];
const __FlashStringHelper * backupFailureString = F(" Backup battery failure ?\n");
const __FlashStringHelper * backupFailureString = F(" Backup battery failure ?");

uint8_t triggered = alerts::getTriggered(metadata);
if (!triggered) return NO_ALERTS_NOTIFIED;

NOTICE_FORMAT("notifyFailures", "triggered : %B", triggered);

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

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

details::appendToSmsBuffer(buffer, PSTR("Alerts !\n"));
strncpy_P(buffer, PSTR("Alerts !"), SMS_BUFFER_SIZE);
if (bitRead(triggered, ALERT_BATTERY_LEVEL_1) || bitRead(triggered, ALERT_BATTERY_LEVEL_2)) {
details::appendToSmsBuffer(buffer, PSTR("- Battery at %d%%.\n"), metadata.batteryLevel);
details::appendToSmsBuffer(buffer, PSTR("\n- Battery at %d%%."), metadata.batteryLevel);
}

if (bitRead(triggered, ALERT_RTC_CLOCK_FAILURE)) {
details::appendToSmsBuffer(buffer, PSTR("-RTC was stopped. %S"), backupFailureString);
if (bitRead(triggered, ALERT_RTC_TEMPERATURE_FAILURE)) {
details::appendToSmsBuffer(buffer, PSTR("\n- Temperature is %dC.%S"), static_cast<uint16_t>(metadata.temperature * 100), backupFailureString);
}

if (bitRead(triggered, ALERT_RTC_TEMPERATURE_FAILURE)) {
details::appendToSmsBuffer(buffer, PSTR("- Temperature is %dC. %S"), static_cast<uint16_t>(metadata.temperature * 100), backupFailureString);
if (bitRead(triggered, ALERT_RTC_CLOCK_FAILURE)) {
details::appendToSmsBuffer(buffer, PSTR("\n- RTC was stopped.%S"), backupFailureString);
}

bool notified = network::sendSms(buffer);


+ 6
- 4
GpsTracker/Debug.cpp Datei anzeigen

@@ -192,7 +192,7 @@ namespace debug {
tmElements_t time;
rtc::getTime(time);

NOTICE_FORMAT("getAndDisplayRtcTime", "%d/%d/%d %d:%d:%d", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second);
NOTICE_FORMAT("getAndDisplayRtcTime", "%d/%d/%d %d:%d:%d %t", tmYearToCalendar(time.Year), time.Month, time.Day, time.Hour, time.Minute, time.Second, rtc::isAccurate());
}

void setRtcTime() {
@@ -271,19 +271,21 @@ namespace debug {

void notifyFailures() {
PositionEntryMetadata metadata = {
1, //all battery alert should goes on with this
1, //all battery alerts should goes on with this
3800, //doesn't matter
ALERT_SUSPICIOUS_RTC_TEMPERATURE,
0,
SIM808_GPS_STATUS::OFF
};

core::notifyFailures(metadata);
uint8_t alerts = core::notifyFailures(metadata);
NOTICE_FORMAT("notifyFailures", "result : %B", alerts);
alerts::add(alerts);
}

void clearAlerts() {
PositionEntryMetadata metadata = {
100, //all battery alert should goes off with this
100, //all battery alerts should goes off with this
3800, //doesn't matter
10,
0,


+ 5
- 4
GpsTracker/Hardware.cpp Datei anzeigen

@@ -64,7 +64,7 @@ namespace hardware {

void gpsPowerOff() {
if (!device.powered()) {
networkPoweredCount = gpsPoweredCount = 0;
networkPoweredCount = gpsPoweredCount = 0; //just to be sure counts == 0
return;
}

@@ -74,7 +74,7 @@ namespace hardware {
powerOffIfUnused();
}

gpsPoweredCount--;
if (gpsPoweredCount) gpsPoweredCount--; //avoid 255 if 0--
}

void networkPowerOn() {
@@ -89,10 +89,11 @@ namespace hardware {

void networkPowerOff() {
if (!device.powered()) {
networkPoweredCount = gpsPoweredCount = 0;
networkPoweredCount = gpsPoweredCount = 0; //just to be sure counts == 0
return;
}


if (networkPoweredCount == 1) {
VERBOSE("networkPowerOff");
device.disableGprs();
@@ -101,7 +102,7 @@ namespace hardware {
powerOffIfUnused();
}

networkPoweredCount--;
if (networkPoweredCount) networkPoweredCount--; //avoid 255 if 0--
}
}



+ 2
- 2
GpsTracker/NetworkPositionsBackup.cpp Datei anzeigen

@@ -43,10 +43,10 @@ namespace positions {
buffer,
buffer,
BUFFER_SIZE
) == POSITIONS_CONFIG_NET_DEFAULT_EXPECTED_RESPONSE;
);

NOTICE_FORMAT("appendPosition", "Response : %d", responseCode);
return responseCode;
return responseCode == POSITIONS_CONFIG_NET_DEFAULT_EXPECTED_RESPONSE;
}

//__attribute__((__optimize__("O2")))


Laden…
Abbrechen
Speichern