Pārlūkot izejas kodu

Using a common buffer for both http and sms

tags/v1.2.0
Bertrand Lemasle pirms 6 gadiem
vecāks
revīzija
5aa4eed174
4 mainītis faili ar 38 papildinājumiem un 16 dzēšanām
  1. +9
    -0
      GpsTracker/Buffer.cpp
  2. +11
    -0
      GpsTracker/Buffer.h
  3. +11
    -9
      GpsTracker/Core.cpp
  4. +7
    -7
      GpsTracker/NetworkPositionsBackup.cpp

+ 9
- 0
GpsTracker/Buffer.cpp Parādīt failu

@@ -0,0 +1,9 @@
#include "Buffer.h"
#include "string.h"


namespace buffer {
char value[BUFFER_SIZE];

void clear() { memset(buffer::value, NULL, BUFFER_SIZE); }
}

+ 11
- 0
GpsTracker/Buffer.h Parādīt failu

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

#define BUFFER_SIZE 170


namespace buffer {
extern char value[BUFFER_SIZE];

void clear();

}

+ 11
- 9
GpsTracker/Core.cpp Parādīt failu

@@ -2,9 +2,10 @@
#include "Config.h"
#include "Flash.h"
#include "Alerts.h"
#include "Buffer.h"

#define LOGGER_NAME "Core"
#define SMS_BUFFER_SIZE 140
#define SMS_MAX_SIZE 140
#define NO_ALERTS_NOTIFIED 0

using namespace utils;
@@ -16,12 +17,12 @@ namespace core {

namespace details {

void appendToSmsBuffer(char * buffer, const char * fmt, ...) {
void appendToSmsBuffer(const char * fmt, ...) {
va_list args;
va_start(args, fmt);

size_t bufferLeft = SMS_BUFFER_SIZE - strlen(buffer);
char * p = buffer + strlen(buffer);
size_t bufferLeft = SMS_MAX_SIZE - strlen(buffer::value);
char * p = buffer::value + strlen(buffer::value);
vsnprintf_P(p, bufferLeft, fmt, args);

va_end(args);
@@ -54,7 +55,6 @@ namespace core {

uint8_t notifyFailures(PositionEntryMetadata &metadata) {
SIM808RegistrationStatus networkStatus;
char buffer[SMS_BUFFER_SIZE] = "Alerts !\n";
const __FlashStringHelper * backupFailureString = F(" Backup battery failure ?\n");

uint8_t triggered = alerts::getTriggered(metadata);
@@ -65,19 +65,21 @@ namespace core {

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

buffer::clear();
strcpy_P(buffer::value, PSTR("Alerts !\n"));
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(PSTR("- Battery at %d%%.\n"), metadata.batteryLevel);
}

if (bitRead(triggered, ALERT_RTC_CLOCK_FAILURE)) {
details::appendToSmsBuffer(buffer, PSTR("-RTC was stopped. %S"), backupFailureString);
details::appendToSmsBuffer(PSTR("-RTC was stopped. %S"), backupFailureString);
}

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

bool notified = network::sendSms(buffer);
bool notified = network::sendSms(buffer::value);
if (!notified) NOTICE_MSG("notifyFailure", "SMS not sent !");

network::powerOff();


+ 7
- 7
GpsTracker/NetworkPositionsBackup.cpp Parādīt failu

@@ -7,9 +7,9 @@
#include "Debug.h"
#include "Hardware.h"
#include "Network.h"
#include "Buffer.h"

#define LOGGER_NAME "Positions::backup::network"
#define BUFFER_SIZE 170

namespace positions {
namespace backup {
@@ -25,8 +25,8 @@ namespace positions {
}

bool NetworkPositionsBackup::appendPosition(PositionEntry &entry) {
char buffer[BUFFER_SIZE];
snprintf_P(buffer, BUFFER_SIZE, PSTR("%d,%d,%d,%d,%d,%d,%d,"),
buffer::clear();
snprintf_P(buffer::value, BUFFER_SIZE, PSTR("%d,%d,%d,%d,%d,%d,%d,"),
debug::freeRam(),
hardware::sim808::device.getSignalQuality().attenuation,
entry.metadata.batteryLevel,
@@ -35,14 +35,14 @@ namespace positions {
static_cast<uint8_t>(entry.metadata.status),
entry.metadata.timeToFix);

strcat(buffer, entry.position);
strcat(buffer::value, entry.position);

NOTICE_FORMAT("appendPosition", "Sending : %s", buffer);
NOTICE_FORMAT("appendPosition", "Sending : %s", buffer::value);
uint16_t responseCode = hardware::sim808::device.httpPost(
config::main::value.network.url,
F("text/gpstracker"),
buffer,
buffer,
buffer::value,
buffer::value,
BUFFER_SIZE
) == POSITIONS_CONFIG_NET_DEFAULT_EXPECTED_RESPONSE;



Notiek ielāde…
Atcelt
Saglabāt