From 7a9987c78a52e5bfa1a3aa84b04d81dbf0d93d35 Mon Sep 17 00:00:00 2001 From: Bertrand Lemasle Date: Wed, 14 Mar 2018 14:55:19 +1300 Subject: [PATCH] Improved gprs activation in NetworkPositionsBackup --- GpsTracker/Config.h | 4 ++-- GpsTracker/NetworkPositionsBackup.cpp | 29 +++++++++++---------------- GpsTracker/Positions.cpp | 7 +++---- GpsTracker/Rtc.cpp | 2 +- 4 files changed, 18 insertions(+), 24 deletions(-) diff --git a/GpsTracker/Config.h b/GpsTracker/Config.h index bd468a4..ebecca3 100644 --- a/GpsTracker/Config.h +++ b/GpsTracker/Config.h @@ -21,8 +21,8 @@ #define GPS_DEFAULT_INTERMEDIATE_TIMEOUT_MS 10000 #define GPS_DEFAULT_TOTAL_TIMEOUT_MS 180000 -#define NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS 2000 -#define NETWORK_DEFAULT_TOTAL_TIMEOUT_MS 60000 +#define NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS 6000 +#define NETWORK_DEFAULT_TOTAL_TIMEOUT_MS 1800000 struct sleepTimings_t { uint8_t speed; diff --git a/GpsTracker/NetworkPositionsBackup.cpp b/GpsTracker/NetworkPositionsBackup.cpp index 5be479e..10b9636 100644 --- a/GpsTracker/NetworkPositionsBackup.cpp +++ b/GpsTracker/NetworkPositionsBackup.cpp @@ -48,30 +48,25 @@ namespace positions { PositionEntry currentEntry; SIM808RegistrationStatus networkStatus; - hardware::i2c::powerOn(); network::powerOn(); networkStatus = network::waitForRegistered(NETWORK_DEFAULT_TOTAL_TIMEOUT_MS); - if (!network::isAvailable(networkStatus.stat)) { - VERBOSE_MSG("appendPositions", "network unavailable"); - return; - } - - if (!network::enableGprs()) { - VERBOSE_MSG("appendPositions", "gprs unavailable"); - return; - } + 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; + if (!appendPosition(config, currentEntry)) break; - do { - if (!positions::get(currentEntryIndex, currentEntry)) break; - if (!appendPosition(config, currentEntry)) break; + config.network.lastSavedEntry = currentEntryIndex; + config::main::set(config); - config.network.lastSavedEntry = currentEntryIndex; - config::main::set(config); + } while (positions::moveNext(currentEntryIndex)); + hardware::i2c::powerOff(); */ + } - } while (positions::moveNext(currentEntryIndex)); network::powerOff(); - hardware::i2c::powerOff(); } } diff --git a/GpsTracker/Positions.cpp b/GpsTracker/Positions.cpp index 0a0674b..4f18d01 100644 --- a/GpsTracker/Positions.cpp +++ b/GpsTracker/Positions.cpp @@ -41,14 +41,13 @@ namespace positions { #if BACKUP_ENABLE_SDCARD _backups[backupIdx] = new backup::sd::SdPositionsBackup(); - _backups[backupIdx++]->setup(); + _backups[backupIdx]->setup(); + backupIdx++; #endif #if BACKUP_ENABLE_NETWORK _backups[backupIdx] = new backup::net::NetworkPositionsBackup(); _backups[backupIdx]->setup(); - //_backups[backupIdx]->backup(); backupIdx++; - #endif #endif } @@ -140,7 +139,7 @@ namespace positions { void doBackup() { #ifdef BACKUPS_ENABLED VERBOSE_FORMAT("doBackup", "%d backups enabled", BACKUPS_ENABLED); - + Serial.println((unsigned int)_backups[0], HEX); _backups[0]->backup(); /*for (int i = 0; i < BACKUPS_ENABLED; i++) { diff --git a/GpsTracker/Rtc.cpp b/GpsTracker/Rtc.cpp index 308ff4c..b971178 100644 --- a/GpsTracker/Rtc.cpp +++ b/GpsTracker/Rtc.cpp @@ -17,7 +17,7 @@ namespace rtc { hardware::i2c::powerOn(); RTC.control(DS3231_12H, DS3231_OFF); //24 hours clock RTC.control(DS3231_A1_INT_ENABLE, DS3231_OFF); //Alarm 1 OFF - RTC.control(DS3231_INT_ENABLE, DS3231_ON); //INTCN OFF + RTC.control(DS3231_INT_ENABLE, DS3231_ON); //INTCN ON hardware::i2c::powerOff(); //TODO : check wether the osc has been halted (meaning the battery could be dead)