diff --git a/src/NetworkPositionsBackup.cpp b/src/NetworkPositionsBackup.cpp index b4c9e45..4b90370 100644 --- a/src/NetworkPositionsBackup.cpp +++ b/src/NetworkPositionsBackup.cpp @@ -26,11 +26,13 @@ namespace positions { positions::count(config->network.lastSavedEntry) > (config->network.saveThreshold * networkUnavailablePostpone) - (forPrepare ? 1 : 0); } - bool NetworkPositionsBackup::appendPosition(PositionEntry &entry) { + bool NetworkPositionsBackup::appendPosition(PositionEntry &entry, int8_t signalAttenuation = 0) { char buffer[BUFFER_SIZE]; + if(signalAttenuation == 0) signalAttenuation = hardware::sim808::device.getSignalQuality().attenuation; + snprintf_P(buffer, BUFFER_SIZE, PSTR("%d,%d,%d,%d,%d,%d,%d,%s"), mainunit::freeRam(), - hardware::sim808::device.getSignalQuality().attenuation, + signalAttenuation, entry.metadata.batteryLevel, entry.metadata.batteryVoltage, entry.metadata.temperature, @@ -75,10 +77,11 @@ namespace positions { networkUnavailableInARow = 0; networkUnavailablePostpone = 1; + int8_t signalAttenuation = hardware::sim808::device.getSignalQuality().attenuation; hardware::i2c::powerOn(); do { if (!positions::get(currentEntryIndex, currentEntry)) break; - if (!appendPosition(currentEntry)) break; + if (!appendPosition(currentEntry, signalAttenuation)) break; config::main::value.network.lastSavedEntry = currentEntryIndex; config::main::save(); diff --git a/src/NetworkPositionsBackup.h b/src/NetworkPositionsBackup.h index 528c22b..7247fe8 100644 --- a/src/NetworkPositionsBackup.h +++ b/src/NetworkPositionsBackup.h @@ -10,7 +10,7 @@ namespace positions { class NetworkPositionsBackup : public PositionsBackup { private: bool isBackupNeeded(bool forPrepare); - bool appendPosition(PositionEntry &entry); + bool appendPosition(PositionEntry &entry, int8_t signalAttenuation = 0); void appendPositions(); public: