From 9655908caeeed9ef9eef9d106ec48d7bbe880ec6 Mon Sep 17 00:00:00 2001 From: Bertrand Lemasle Date: Sat, 4 Aug 2018 21:24:46 +1200 Subject: [PATCH 1/4] Using printf with entry.position instead of strcat (-24 bytes) --- GpsTracker/NetworkPositionsBackup.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/GpsTracker/NetworkPositionsBackup.cpp b/GpsTracker/NetworkPositionsBackup.cpp index 5ec6c1e..127cac1 100644 --- a/GpsTracker/NetworkPositionsBackup.cpp +++ b/GpsTracker/NetworkPositionsBackup.cpp @@ -26,16 +26,15 @@ namespace positions { bool NetworkPositionsBackup::appendPosition(PositionEntry &entry) { char buffer[BUFFER_SIZE]; - snprintf_P(buffer, BUFFER_SIZE, PSTR("%d,%d,%d,%d,%d,%d,%d,"), + snprintf_P(buffer, BUFFER_SIZE, PSTR("%d,%d,%d,%d,%d,%d,%d,%s"), debug::freeRam(), hardware::sim808::device.getSignalQuality().attenuation, entry.metadata.batteryLevel, entry.metadata.batteryVoltage, static_cast(entry.metadata.temperature * 100), static_cast(entry.metadata.status), - entry.metadata.timeToFix); - - strcat(buffer, entry.position); + entry.metadata.timeToFix, + entry.position); NOTICE_FORMAT("appendPosition", "Sending : %s", buffer); uint16_t responseCode = hardware::sim808::device.httpPost( From 25bad44a0a79a182b6f49181153ab65fcba33f48 Mon Sep 17 00:00:00 2001 From: Bertrand Lemasle Date: Sat, 4 Aug 2018 21:34:24 +1200 Subject: [PATCH 2/4] Fixed bad conditional compilation location --- GpsTracker/Config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GpsTracker/Config.cpp b/GpsTracker/Config.cpp index 0b79a58..771b057 100644 --- a/GpsTracker/Config.cpp +++ b/GpsTracker/Config.cpp @@ -73,12 +73,12 @@ namespace config { POSITIONS_CONFIG_NET_DEFAULT_APN, POSITIONS_CONFIG_NET_DEFAULT_URL, }, +#endif CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1, CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2, CONFIG_DEFAULT_BATTERY_ALERT_CLEAR, CONFIG_DEFAULT_ACTIVE_ALERTS, CONFIG_DEFAULT_CONTACT_PHONE -#endif }; value = config; From 0bc78bea88b08bc08419848eebb06a6af33cbc7b Mon Sep 17 00:00:00 2001 From: Bertrand Lemasle Date: Sat, 4 Aug 2018 21:35:40 +1200 Subject: [PATCH 3/4] Added reserved space is the case where network backup is disabled --- GpsTracker/Config.cpp | 2 ++ GpsTracker/Config.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/GpsTracker/Config.cpp b/GpsTracker/Config.cpp index 771b057..dfed77e 100644 --- a/GpsTracker/Config.cpp +++ b/GpsTracker/Config.cpp @@ -73,6 +73,8 @@ namespace config { POSITIONS_CONFIG_NET_DEFAULT_APN, POSITIONS_CONFIG_NET_DEFAULT_URL, }, +#else + "", #endif CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1, CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2, diff --git a/GpsTracker/Config.h b/GpsTracker/Config.h index a5fc792..5171454 100644 --- a/GpsTracker/Config.h +++ b/GpsTracker/Config.h @@ -66,6 +66,8 @@ struct config_t { uint16_t lastEntry; //sizeof = 2 #if BACKUP_ENABLE_NETWORK networkConfig_t network; //sizeof = 73 +#else + char reserved[73]; #endif uint8_t alertBatteryLevel1; //sizeof = 1 uint8_t alertBatteryLevel2; //sizeof = 1 From 4a94de380009835f619db15e8abdca029d21655c Mon Sep 17 00:00:00 2001 From: Bertrand Lemasle Date: Sat, 4 Aug 2018 21:56:27 +1200 Subject: [PATCH 4/4] Reworked config reset code to avoid static init that eats SRAM --- GpsTracker/Config.cpp | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/GpsTracker/Config.cpp b/GpsTracker/Config.cpp index dfed77e..2328035 100644 --- a/GpsTracker/Config.cpp +++ b/GpsTracker/Config.cpp @@ -30,12 +30,12 @@ namespace config { //}; //value.network = c; #endif - /*strcpy(value.version, VERSION); + /*strcpy_P(value.version, PSTR(VERSION)); value.alertBatteryLevel1 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1; value.alertBatteryLevel2 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2; value.alertBatteryLevelClear = CONFIG_DEFAULT_BATTERY_ALERT_CLEAR; value.activeAlerts = CONFIG_DEFAULT_ACTIVE_ALERTS; - strcpy(value.contactPhone, CONFIG_DEFAULT_CONTACT_PHONE);*/ + strcpy_P(config.contactPhone, PSTR(CONFIG_DEFAULT_CONTACT_PHONE));*/ } void write() { @@ -61,27 +61,22 @@ namespace config { void reset() { VERBOSE("reset"); - config_t config = { - CONFIG_SEED, - VERSION, - 0xFFFF, - 0xFFFF, + config_t config = {}; + config.seed = CONFIG_SEED; + strcpy_P(config.version, PSTR(VERSION)); + config.firstEntry = config.lastEntry = 0xFFFF; + config.alertBatteryLevel1 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1; + config.alertBatteryLevel2 = CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2; + config.alertBatteryLevelClear = CONFIG_DEFAULT_BATTERY_ALERT_CLEAR; + config.activeAlerts = CONFIG_DEFAULT_ACTIVE_ALERTS; + strcpy_P(config.contactPhone, PSTR(CONFIG_DEFAULT_CONTACT_PHONE)); + #if BACKUP_ENABLE_NETWORK - { - POSITIONS_CONFIG_NET_DEFAULT_SAVE_THRESHOLD, - 0xFFFF, - POSITIONS_CONFIG_NET_DEFAULT_APN, - POSITIONS_CONFIG_NET_DEFAULT_URL, - }, -#else - "", + config.network.saveThreshold = POSITIONS_CONFIG_NET_DEFAULT_SAVE_THRESHOLD; + config.network.lastSavedEntry = 0xFFFF; + strcpy_P(config.network.apn, PSTR(POSITIONS_CONFIG_NET_DEFAULT_APN)); + strcpy_P(config.network.url, PSTR(POSITIONS_CONFIG_NET_DEFAULT_URL)); #endif - CONFIG_DEFAULT_BATTERY_ALERT_LEVEL1, - CONFIG_DEFAULT_BATTERY_ALERT_LEVEL2, - CONFIG_DEFAULT_BATTERY_ALERT_CLEAR, - CONFIG_DEFAULT_ACTIVE_ALERTS, - CONFIG_DEFAULT_CONTACT_PHONE - }; value = config; save();