Skip to content

Commit 2d0dc32

Browse files
authored
Merge pull request #695 from LeeLeahy2/ota-auto-update
OtaClient: Automatic firmware download over WiFi
2 parents e67d099 + 28fd120 commit 2d0dc32

File tree

11 files changed

+967
-14
lines changed

11 files changed

+967
-14
lines changed

Firmware/RTK_Surveyor/Ethernet.ino

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,8 @@ bool ethernetIsNeeded()
254254
return true;
255255

256256
// Does PVT client or server need Ethernet?
257-
if (settings.enablePvtClient || settings.enablePvtServer || settings.enablePvtUdpServer)
257+
if (settings.enablePvtClient || settings.enablePvtServer
258+
|| settings.enablePvtUdpServer || settings.enableAutoFirmwareUpdate)
258259
return true;
259260

260261
return false;

Firmware/RTK_Surveyor/Form.ino

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -757,6 +757,10 @@ void createSettingsString(char *newSettings)
757757
snprintf(ntpRefId, sizeof(ntpRefId), "%s", settings.ntpReferenceId);
758758
stringRecord(newSettings, "ntpReferenceId", ntpRefId);
759759

760+
// Automatic firmware update settings
761+
stringRecord(newSettings, "enableAutoFirmwareUpdate", settings.enableAutoFirmwareUpdate);
762+
stringRecord(newSettings, "autoFirmwareCheckMinutes", settings.autoFirmwareCheckMinutes);
763+
760764
// Turn on SD display block last
761765
stringRecord(newSettings, "sdMounted", online.microSD);
762766

@@ -1349,6 +1353,12 @@ void updateSettingWithValue(const char *settingName, const char *settingValueStr
13491353
else if (strcmp(settingName, "mdnsEnable") == 0)
13501354
settings.mdnsEnable = settingValueBool;
13511355

1356+
// Automatic firmware update settings
1357+
else if (strcmp(settingName, "enableAutoFirmwareUpdate") == 0)
1358+
settings.enableAutoFirmwareUpdate = settingValueBool;
1359+
else if (strcmp(settingName, "autoFirmwareCheckMinutes") == 0)
1360+
settings.autoFirmwareCheckMinutes = settingValueBool;
1361+
13521362
// Unused variables - read to avoid errors
13531363
else if (strcmp(settingName, "measurementRateSec") == 0)
13541364
{

Firmware/RTK_Surveyor/NVM.ino

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,11 @@ void recordSystemSettingsToFile(File *settingsFile)
435435
settingsFile->printf("%s=%d\r\n", "i2cInterruptsCore", settings.i2cInterruptsCore);
436436
settingsFile->printf("%s=%d\r\n", "rtcmTimeoutBeforeUsingLBand_s", settings.rtcmTimeoutBeforeUsingLBand_s);
437437

438+
// Automatic Firmware Update
439+
settingsFile->printf("%s=%d\r\n", "autoFirmwareCheckMinutes", settings.autoFirmwareCheckMinutes);
440+
settingsFile->printf("%s=%d\r\n", "debugFirmwareUpdate", settings.debugFirmwareUpdate);
441+
settingsFile->printf("%s=%d\r\n", "enableAutoFirmwareUpdate", settings.enableAutoFirmwareUpdate);
442+
438443
//Add new settings above
439444
//<------------------------------------------------------------>
440445
}
@@ -1344,6 +1349,14 @@ bool parseLine(char *str, Settings *settings)
13441349
else if (strcmp(settingName, "rtcmTimeoutBeforeUsingLBand_s") == 0)
13451350
settings->rtcmTimeoutBeforeUsingLBand_s = d;
13461351

1352+
// Automatic Firmware Update
1353+
else if (strcmp(settingName, "autoFirmwareCheckMinutes") == 0)
1354+
settings->autoFirmwareCheckMinutes = d;
1355+
else if (strcmp(settingName, "debugFirmwareUpdate") == 0)
1356+
settings->debugFirmwareUpdate = d;
1357+
else if (strcmp(settingName, "enableAutoFirmwareUpdate") == 0)
1358+
settings->enableAutoFirmwareUpdate = d;
1359+
13471360
//Add new settings above
13481361
//<------------------------------------------------------------>
13491362

Firmware/RTK_Surveyor/Network.ino

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ const char * const networkUser[] =
184184
"NTP Server",
185185
"NTRIP Client",
186186
"NTRIP Server",
187+
"OTA Firmware Update",
187188
"PVT Client",
188189
"PVT Server",
189190
"PVT UDP Server",
@@ -893,6 +894,12 @@ void networkStop(uint8_t networkType)
893894
ntripServerRestart();
894895
break;
895896

897+
case NETWORK_USER_OTA_FIRMWARE_UPDATE:
898+
if (settings.debugNetworkLayer)
899+
systemPrintln("Network layer stopping OTA firmware update");
900+
otaStop();
901+
break;
902+
896903
case NETWORK_USER_PVT_CLIENT:
897904
if (settings.debugNetworkLayer)
898905
systemPrintln("Network layer stopping PVT client");
@@ -1159,6 +1166,7 @@ void networkUpdate()
11591166
ntpServerUpdate(); // Process any received NTP requests
11601167
ntripClientUpdate(); // Check the NTRIP client connection and move data NTRIP --> ZED
11611168
ntripServerUpdate(); // Check the NTRIP server connection and move data ZED --> NTRIP
1169+
otaClientUpdate(); // Perform automatic over-the-air firmware updates
11621170
pvtClientUpdate(); // Turn on the PVT client as needed
11631171
pvtServerUpdate(); // Turn on the PVT server as needed
11641172
pvtUdpServerUpdate(); // Turn on the PVT UDP server as needed

0 commit comments

Comments
 (0)