Skip to content

Commit ed6be34

Browse files
authored
Merge pull request #521 from LeeLeahy2/firmware-version
Use a consistent format for the version number
2 parents a3ed882 + 55728db commit ed6be34

File tree

10 files changed

+74
-75
lines changed

10 files changed

+74
-75
lines changed

Firmware/RTK_Surveyor/Begin.ino

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,9 @@ void beginBoard()
230230
strncpy(platformPrefix, "Reference Station", sizeof(platformPrefix) - 1);
231231
}
232232

233-
systemPrintf("SparkFun RTK %s v%d.%d-%s\r\n", platformPrefix, FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR,
234-
__DATE__);
233+
char versionString[21];
234+
getFirmwareVersion(versionString, sizeof(versionString), true);
235+
systemPrintf("SparkFun RTK %s %s\r\n", platformPrefix, versionString);
235236

236237
// Get unit MAC address
237238
esp_read_mac(wifiMACAddress, ESP_MAC_WIFI_STA);

Firmware/RTK_Surveyor/Display.ino

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -636,11 +636,7 @@ void displaySplash()
636636

637637
yPos = yPos + fontHeight + 7;
638638
char unitFirmware[50];
639-
if (ENABLE_DEVELOPER)
640-
snprintf(unitFirmware, sizeof(unitFirmware), "v%d.%d-DEV", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR);
641-
else
642-
snprintf(unitFirmware, sizeof(unitFirmware), "v%d.%d", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR);
643-
639+
getFirmwareVersion(unitFirmware, sizeof(unitFirmware), false);
644640
printTextCenter(unitFirmware, yPos, QW_FONT_5X7, 1, false);
645641

646642
oled.display();

Firmware/RTK_Surveyor/Form.ino

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -573,8 +573,7 @@ void createSettingsString(char *newSettings)
573573
stringRecord(newSettings, "platformPrefix", platformPrefix);
574574

575575
char apRtkFirmwareVersion[86];
576-
snprintf(apRtkFirmwareVersion, sizeof(apRtkFirmwareVersion), "v%d.%d-%s", FIRMWARE_VERSION_MAJOR,
577-
FIRMWARE_VERSION_MINOR, __DATE__);
576+
getFirmwareVersion(apRtkFirmwareVersion, sizeof(apRtkFirmwareVersion), true);
578577
stringRecord(newSettings, "rtkFirmwareVersion", apRtkFirmwareVersion);
579578

580579
if (!configureViaEthernet) // ZED type is unknown if we are in configure-via-ethernet mode
@@ -1457,14 +1456,8 @@ void updateSettingWithValue(const char *settingName, const char *settingValueStr
14571456
if (otaCheckVersion(reportedVersion, sizeof(reportedVersion)))
14581457
{
14591458
// We got a version number, now determine if it's newer or not
1460-
char currentVersion[20];
1461-
if (enableRCFirmware == false)
1462-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d", FIRMWARE_VERSION_MAJOR,
1463-
FIRMWARE_VERSION_MINOR);
1464-
else
1465-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d-%s", FIRMWARE_VERSION_MAJOR,
1466-
FIRMWARE_VERSION_MINOR, __DATE__);
1467-
1459+
char currentVersion[21];
1460+
getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware);
14681461
if (isReportedVersionNewer(reportedVersion, currentVersion) == true)
14691462
{
14701463
log_d("New version detected");

Firmware/RTK_Surveyor/NVM.ino

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,7 @@ void recordSystemSettingsToFile(File *settingsFile)
193193
settingsFile->printf("%s=%d\r\n", "rtkIdentifier", settings.rtkIdentifier);
194194

195195
char firmwareVersion[30]; // v1.3 December 31 2021
196-
snprintf(firmwareVersion, sizeof(firmwareVersion), "v%d.%d-%s", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR,
197-
__DATE__);
196+
getFirmwareVersion(firmwareVersion, sizeof(firmwareVersion), true);
198197
settingsFile->printf("%s=%s\r\n", "rtkFirmwareVersion", firmwareVersion);
199198

200199
settingsFile->printf("%s=%s\r\n", "zedFirmwareVersion", zedFirmwareVersion);

Firmware/RTK_Surveyor/NtripClient.ino

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,11 @@ bool ntripClientConnect()
111111

112112
// Set up the server request (GET)
113113
char serverRequest[SERVER_BUFFER_SIZE];
114-
snprintf(serverRequest, SERVER_BUFFER_SIZE, "GET /%s HTTP/1.0\r\nUser-Agent: NTRIP SparkFun_RTK_%s_v%d.%d\r\n",
115-
settings.ntripClient_MountPoint, platformPrefix, FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR);
114+
int length;
115+
snprintf(serverRequest, SERVER_BUFFER_SIZE, "GET /%s HTTP/1.0\r\nUser-Agent: NTRIP SparkFun_RTK_%s_\r\n",
116+
settings.ntripClient_MountPoint, platformPrefix);
117+
length = strlen(serverRequest);
118+
getFirmwareVersion(&serverRequest[length], SERVER_BUFFER_SIZE - length, false);
116119

117120
// Set up the credentials
118121
char credentials[CREDENTIALS_BUFFER_SIZE];

Firmware/RTK_Surveyor/NtripServer.ino

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,10 @@ bool ntripServerConnectCaster()
111111
// * Mount point
112112
// * Password
113113
// * Agent
114-
snprintf(serverBuffer, SERVER_BUFFER_SIZE, "SOURCE %s /%s\r\nSource-Agent: NTRIP SparkFun_RTK_%s/v%d.%d\r\n\r\n",
115-
settings.ntripServer_MountPointPW, settings.ntripServer_MountPoint, platformPrefix, FIRMWARE_VERSION_MAJOR,
116-
FIRMWARE_VERSION_MINOR);
114+
snprintf(serverBuffer, SERVER_BUFFER_SIZE, "SOURCE %s /%s\r\nSource-Agent: NTRIP SparkFun_RTK_%s/\r\n\r\n",
115+
settings.ntripServer_MountPointPW, settings.ntripServer_MountPoint, platformPrefix);
116+
int length = strlen(serverBuffer);
117+
getFirmwareVersion(&serverBuffer[length], sizeof(serverBuffer) - length, false);
117118

118119
// Send the authorization credentials to the NTRIP caster
119120
ntripServer->write((const uint8_t *)serverBuffer, strlen(serverBuffer));

Firmware/RTK_Surveyor/menuFirmware.ino

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,9 @@ void menuFirmware()
1212
if (btPrintEcho == true)
1313
systemPrintln("Firmware update not available while configuration over Bluetooth is active");
1414

15-
char currentVersion[20];
16-
if (enableRCFirmware == false)
17-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR);
18-
else
19-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d-%s", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR,
20-
__DATE__);
21-
22-
systemPrintf("Current firmware: v%s\r\n", currentVersion);
15+
char currentVersion[21];
16+
getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware);
17+
systemPrintf("Current firmware: %s\r\n", currentVersion);
2318

2419
if (strlen(reportedVersion) > 0)
2520
{
@@ -60,15 +55,9 @@ void menuFirmware()
6055
if (otaCheckVersion(reportedVersion, sizeof(reportedVersion)))
6156
{
6257
// We got a version number, now determine if it's newer or not
63-
char currentVersion[20];
64-
if (enableRCFirmware == false)
65-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d", FIRMWARE_VERSION_MAJOR,
66-
FIRMWARE_VERSION_MINOR);
67-
else
68-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d-%s", FIRMWARE_VERSION_MAJOR,
69-
FIRMWARE_VERSION_MINOR, __DATE__);
70-
71-
if (isReportedVersionNewer(reportedVersion, currentVersion) == true)
58+
char currentVersion[21];
59+
getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware);
60+
if (isReportedVersionNewer(reportedVersion, &currentVersion[1]) == true)
7261
{
7362
log_d("New version detected");
7463
newOTAFirmwareAvailable = true;
@@ -97,15 +86,9 @@ void menuFirmware()
9786
if (otaCheckVersion(reportedVersion, sizeof(reportedVersion)))
9887
{
9988
// We got a version number, now determine if it's newer or not
100-
char currentVersion[20];
101-
if (enableRCFirmware == false)
102-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d", FIRMWARE_VERSION_MAJOR,
103-
FIRMWARE_VERSION_MINOR);
104-
else
105-
snprintf(currentVersion, sizeof(currentVersion), "%d.%d-%s", FIRMWARE_VERSION_MAJOR,
106-
FIRMWARE_VERSION_MINOR, __DATE__);
107-
108-
if (isReportedVersionNewer(reportedVersion, currentVersion) == true)
89+
char currentVersion[21];
90+
getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware);
91+
if (isReportedVersionNewer(reportedVersion, &currentVersion[1]) == true)
10992
{
11093
log_d("New version detected");
11194
newOTAFirmwareAvailable = true;
@@ -463,6 +446,39 @@ void updateFromSD(const char *firmwareFileName)
463446
systemPrintln("Firmware update failed. Please try again.");
464447
}
465448

449+
// Format the firmware version
450+
void formatFirmwareVersion(uint8_t major, uint8_t minor, char * buffer, int bufferLength, bool includeDate)
451+
{
452+
char prefix;
453+
454+
// Construct the full or release candidate version number
455+
prefix = ENABLE_DEVELOPER ? 'd' : 'v';
456+
if (enableRCFirmware && (bufferLength >= 21))
457+
// 123456789012345678901
458+
// pxxx.yyy-dd-mmm-yyyy0
459+
snprintf(buffer, bufferLength, "%c%d.%d-%s", prefix, major, minor, __DATE__);
460+
461+
// Construct a truncated version number
462+
else if (bufferLength >= 9)
463+
// 123456789
464+
// pxxx.yyy0
465+
snprintf(buffer, bufferLength, "%c%d.%d", prefix, major, minor);
466+
467+
// The buffer is too small for the version number
468+
else
469+
{
470+
systemPrintf("ERROR: Buffer too small for version number!\r\n");
471+
if (bufferLength > 0)
472+
*buffer = 0;
473+
}
474+
}
475+
476+
// Get the current firmware version
477+
void getFirmwareVersion(char * buffer, int bufferLength, bool includeDate)
478+
{
479+
formatFirmwareVersion(FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR, buffer, bufferLength, includeDate);
480+
}
481+
466482
// Returns true if we successfully got the versionAvailable
467483
// Modifies versionAvailable with OTA getVersion response
468484
// Connects to WiFi as needed
@@ -474,14 +490,8 @@ bool otaCheckVersion(char *versionAvailable, uint8_t versionAvailableLength)
474490

475491
if (wifiConnect(10000) == true)
476492
{
477-
char versionString[20];
478-
479-
if (enableRCFirmware == false)
480-
snprintf(versionString, sizeof(versionString), "%d.%d", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR);
481-
else
482-
snprintf(versionString, sizeof(versionString), "%d.%d-%s", FIRMWARE_VERSION_MAJOR, FIRMWARE_VERSION_MINOR,
483-
__DATE__);
484-
493+
char versionString[21];
494+
getFirmwareVersion(versionString, sizeof(versionString), enableRCFirmware);
485495
systemPrintf("Current firmware version: v%s\r\n", versionString);
486496

487497
if (enableRCFirmware == false)
@@ -546,16 +556,14 @@ void otaUpdate()
546556

547557
if (wifiConnect(10000) == true)
548558
{
549-
char versionString[20];
550-
snprintf(versionString, sizeof(versionString), "%d.%d", 0, 0); // Force update with version 0.0
559+
char versionString[9];
560+
formatFirmwareVersion(0, 0, versionString, sizeof(versionString), false);
551561

552562
ESP32OTAPull ota;
553563

554564
int response;
555-
if (enableRCFirmware == false)
556-
response = ota.CheckForOTAUpdate(OTA_FIRMWARE_JSON_URL, versionString, ESP32OTAPull::DONT_DO_UPDATE);
557-
else
558-
response = ota.CheckForOTAUpdate(OTA_RC_FIRMWARE_JSON_URL, versionString, ESP32OTAPull::DONT_DO_UPDATE);
565+
const char * url = enableRCFirmware ? OTA_RC_FIRMWARE_JSON_URL : OTA_FIRMWARE_JSON_URL;
566+
response = ota.CheckForOTAUpdate(url, &versionString[1], ESP32OTAPull::DONT_DO_UPDATE);
559567

560568
if (response == ESP32OTAPull::UPDATE_AVAILABLE)
561569
{

Firmware/RTK_Surveyor/menuMain.ino

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,9 @@ void menuMain()
2626
while (1)
2727
{
2828
systemPrintln();
29-
if (ENABLE_DEVELOPER)
30-
systemPrintf("SparkFun RTK %s v%d.%d-RC-%s\r\n", platformPrefix, FIRMWARE_VERSION_MAJOR,
31-
FIRMWARE_VERSION_MINOR, __DATE__);
32-
else
33-
systemPrintf("SparkFun RTK %s v%d.%d-%s\r\n", platformPrefix, FIRMWARE_VERSION_MAJOR,
34-
FIRMWARE_VERSION_MINOR, __DATE__);
29+
char versionString[21];
30+
getFirmwareVersion(versionString, sizeof(versionString), true);
31+
systemPrintf("SparkFun RTK %s %s\r\n", platformPrefix, versionString);
3532

3633
#ifdef COMPILE_BT
3734
systemPrint("** Bluetooth broadcasting as: ");
@@ -341,7 +338,7 @@ void factoryReset(bool alreadyHasSemaphore)
341338
tasksStopUART2();
342339

343340
// Attempt to write to file system. This avoids collisions with file writing from other functions like
344-
// recordSystemSettingsToFile() and F9PSerialReadTask() if (settings.enableSD && online.microSD)
341+
// recordSystemSettingsToFile() and F9PSerialReadTask() if (settings.enableSD && online.microSD)
345342
//Don't check settings.enableSD - it could be corrupt
346343
if (online.microSD)
347344
{

Firmware/RTK_Surveyor/menuMessages.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,8 +604,8 @@ void beginLogging(const char *customFileName)
604604

605605
// SparkFun RTK Express v1.10-Feb 11 2022
606606
char firmwareVersion[30]; // v1.3 December 31 2021
607-
snprintf(firmwareVersion, sizeof(firmwareVersion), "v%d.%d-%s", FIRMWARE_VERSION_MAJOR,
608-
FIRMWARE_VERSION_MINOR, __DATE__);
607+
firmwareVersion[0] = 'v';
608+
getFirmwareVersion(&firmwareVersion[1], sizeof(firmwareVersion) -1, true);
609609
createNMEASentence(CUSTOM_NMEA_TYPE_SYSTEM_VERSION, nmeaMessage, sizeof(nmeaMessage),
610610
firmwareVersion); // textID, buffer, sizeOfBuffer, text
611611
ubxFile->println(nmeaMessage);

Firmware/RTK_Surveyor/menuPP.ino

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,9 @@ bool pointperfectProvisionDevice()
201201
#endif // WHITELISTED_ID
202202

203203
char givenName[100];
204-
snprintf(givenName, sizeof(givenName), "SparkFun RTK %s v%d.%d - %s", platformPrefix, FIRMWARE_VERSION_MAJOR,
205-
FIRMWARE_VERSION_MINOR, hardwareID); // Get ready for JSON
204+
char versionString[9];
205+
getFirmwareVersion(versionString, sizeof(versionString), false);
206+
snprintf(givenName, sizeof(givenName), "SparkFun RTK %s %s - %s", platformPrefix, versionString, hardwareID); // Get ready for JSON
206207

207208
StaticJsonDocument<256> pointPerfectAPIPost;
208209

0 commit comments

Comments
 (0)