#pragma once #include "NetworkPositionsBackup.h" #include "Debug.h" #include "Positions.h" #include "Config.h" #include "Hardware.h" #include "Network.h" #define LOGGER_NAME "Positions::backup::network" #define BUFFER_SIZE 170 namespace positions { namespace backup { namespace net { namespace details { bool isBackupNeeded() { config_t *config = &config::main::value; return config->network.lastSavedEntry == 0xFFFF || positions::count(config->network.lastSavedEntry) > config->network.saveThreshold; } bool appendPosition(PositionEntry &entry) { VERBOSE("appendPosition"); debug::displayFreeRam(); delay(100); char buffer[BUFFER_SIZE]; sprintf(buffer, "%d", 2100); /*snprintf(buffer, BUFFER_SIZE, "%d,%d,%.2f,%d,", entry.metadata.batteryLevel, entry.metadata.batteryVoltage, entry.metadata.temperature, static_cast(entry.metadata.status));*/ ////strcat(buffer, entry.position); //Serial.println(buffer); debug::displayFreeRam(); return false; /*return hardware::sim808::device.httpPost( config.network.url, PSTR("text/csv"), buffer, buffer, BUFFER_SIZE ) == POSITIONS_CONFIG_NET_DEFAULT_EXPECTED_RESPONSE;*/ } void appendPositions() { VERBOSE("appendPositions"); debug::displayFreeRam(); uint16_t currentEntryIndex = config::main::value.network.lastSavedEntry + 1; PositionEntry currentEntry; SIM808RegistrationStatus networkStatus; /*network::powerOn(); networkStatus = network::waitForRegistered(NETWORK_DEFAULT_TOTAL_TIMEOUT_MS); if (!network::isAvailable(networkStatus.stat)) VERBOSE_MSG("appendPositions", "network unavailable"); else if (!network::enableGprs()) VERBOSE_MSG("appendPositions", "gprs unavailable"); else {*/ hardware::i2c::powerOn(); do { if (!positions::get(currentEntryIndex, currentEntry)) break; debug::displayFreeRam(); //if (!appendPosition(currentEntry)) break; /*config::main::value.network.lastSavedEntry = currentEntryIndex; config::main::save(); */ } while (positions::moveNext(currentEntryIndex)); debug::displayFreeRam(); hardware::i2c::powerOff(); //} //network::powerOff(); debug::displayFreeRam(); } } void NetworkPositionsBackup::setup() { VERBOSE("setup"); } void NetworkPositionsBackup::backup() { VERBOSE("backup"); debug::displayFreeRam(); if (!details::isBackupNeeded()) return; debug::displayFreeRam(); details::appendPositions(); } } } }