diff --git a/GpsTracker/Config.h b/GpsTracker/Config.h index a9946d8..bc04f9e 100644 --- a/GpsTracker/Config.h +++ b/GpsTracker/Config.h @@ -27,11 +27,11 @@ #define SLEEP_DEFAULT_TIME_SECONDS 1800 #define SLEEP_DEFAULT_INCREASE_THRESHOLD 3 -#define GPS_DEFAULT_INTERMEDIATE_TIMEOUT_MS 10000 -#define GPS_DEFAULT_TOTAL_TIMEOUT_MS 80000 +#define GPS_DEFAULT_INTERMEDIATE_TIMEOUT_MS 10000L +#define GPS_DEFAULT_TOTAL_TIMEOUT_MS 80000L -#define NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS 6000 -#define NETWORK_DEFAULT_TOTAL_TIMEOUT_MS 80000 +#define NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS 1000L +#define NETWORK_DEFAULT_TOTAL_TIMEOUT_MS 80000L #define NETWORK_DEFAULT_NO_NETWORK_QUALITY_THRESHOLD 8 #define NETWORK_DEFAULT_NO_NETWORK_TRIES 5 diff --git a/GpsTracker/Hardware.cpp b/GpsTracker/Hardware.cpp index c12dd39..acd0738 100644 --- a/GpsTracker/Hardware.cpp +++ b/GpsTracker/Hardware.cpp @@ -34,9 +34,9 @@ namespace hardware { void powerOffIfUnused() { bool gpsPowered = false; - bool gprsPowered = false; + if ((!device.getGpsPowerState(&gpsPowered) || !gpsPowered) && - (!device.getGprsPowerState(&gprsPowered) || !gprsPowered)) { + (device.getPhoneFunctionality() != SIM808_PHONE_FUNCTIONALITY::FULL)) { powerOff(); } } diff --git a/GpsTracker/Network.cpp b/GpsTracker/Network.cpp index d586e98..030435d 100644 --- a/GpsTracker/Network.cpp +++ b/GpsTracker/Network.cpp @@ -10,8 +10,8 @@ namespace network { - SIM808RegistrationStatus waitForRegistered(int32_t timeout) { - NOTICE_FORMAT("waitForRegistered", "Timeout : %d", timeout); + __attribute__((__optimize__("O2"))) + SIM808RegistrationStatus waitForRegistered(uint32_t timeout) { SIM808RegistrationStatus currentStatus; SIM808SignalQualityReport report; @@ -33,6 +33,7 @@ namespace network { mainunit::deepSleep(NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS / 1000); timeout -= NETWORK_DEFAULT_INTERMEDIATE_TIMEOUT_MS; + } while (timeout > 1); report = hardware::sim808::device.getSignalQuality(); diff --git a/GpsTracker/Network.h b/GpsTracker/Network.h index 49ad1d7..33ee41e 100644 --- a/GpsTracker/Network.h +++ b/GpsTracker/Network.h @@ -7,7 +7,7 @@ namespace network { inline void powerOn() { hardware::sim808::networkPowerOn(); } inline void powerOff() { hardware::sim808::networkPowerOff(); } - SIM808RegistrationStatus waitForRegistered(int32_t timeout); + SIM808RegistrationStatus waitForRegistered(uint32_t timeout); bool isAvailable(SIM808_NETWORK_REGISTRATION_STATE state); bool enableGprs(); } \ No newline at end of file diff --git a/GpsTracker/NetworkPositionsBackup.cpp b/GpsTracker/NetworkPositionsBackup.cpp index b3135f5..7ab1fc6 100644 --- a/GpsTracker/NetworkPositionsBackup.cpp +++ b/GpsTracker/NetworkPositionsBackup.cpp @@ -46,17 +46,16 @@ namespace positions { return responseCode; } - __attribute__((__optimize__("O2"))) + //__attribute__((__optimize__("O2"))) void NetworkPositionsBackup::appendPositions() { uint16_t currentEntryIndex = config::main::value.network.lastSavedEntry + 1; - int32_t networkTimeout = 0; + uint32_t networkTimeout = 0; PositionEntry currentEntry; SIM808RegistrationStatus networkStatus; network::powerOn(); - networkTimeout = _prepareTime > 0 ? - NETWORK_DEFAULT_TOTAL_TIMEOUT_MS - (rtc::getTime() - _prepareTime) * 1000 : - NETWORK_DEFAULT_TOTAL_TIMEOUT_MS; + networkTimeout = NETWORK_DEFAULT_TOTAL_TIMEOUT_MS; + if (_prepareTime > 0) networkTimeout -= (rtc::getTime() - _prepareTime) * 1000; networkStatus = network::waitForRegistered(networkTimeout);