@@ -26,7 +26,6 @@ static OtaState otaState;
26
26
#endif // COMPILE_OTA_AUTO
27
27
28
28
bool newOTAFirmwareAvailable = false ;
29
- char otaReportedVersion[50 ];
30
29
31
30
// ----------------------------------------
32
31
// Menu
@@ -433,85 +432,52 @@ bool otaCheckVersion(char *versionAvailable, uint8_t versionAvailableLength)
433
432
{
434
433
bool gotVersion = false ;
435
434
#ifdef COMPILE_NETWORK
436
- bool wasInAPmode;
437
435
438
436
if (networkIsOnline () == false )
439
437
{
440
- if (wifiNetworkCount () == 0 )
441
- systemPrintln (" Error: Please enter at least one SSID before checking for new firmware" );
442
- else
443
- systemPrintln (" Error: Network not available!" );
438
+ systemPrintln (" Error: Network not available!" );
439
+ return (false );
444
440
}
445
- else
446
- {
447
- // Determine if WiFi is running
448
- bool wifiRunning = WiFi.STA .started () || WiFi.STA .linkUp () || WiFi.STA .connected ();
449
-
450
- wasInAPmode = false ;
451
- if (networkIsOnline () || (wifiConnect (settings.wifiConnectTimeoutMs , true , &wasInAPmode) ==
452
- true )) // Use WIFI_AP_STA if already in WIFI_AP mode
453
- {
454
- char versionString[21 ];
455
- getFirmwareVersion (versionString, sizeof (versionString), enableRCFirmware);
456
- systemPrintf (" Current firmware version: %s\r\n " , versionString);
457
-
458
- const char *url = otaGetUrl ();
459
- systemPrintf (" Checking to see if an update is available from %s\r\n " , url);
460
441
461
- ESP32OTAPull ota;
442
+ // Create a string of the unit's current firmware version
443
+ char currentVersion[21 ];
444
+ getFirmwareVersion (currentVersion, sizeof (currentVersion), enableRCFirmware);
462
445
463
- int response = ota. CheckForOTAUpdate (url, versionString, ESP32OTAPull::DONT_DO_UPDATE );
446
+ systemPrintf ( " Current firmware version: %s \r\n " , currentVersion );
464
447
465
- // We don't care if the library thinks the available firmware is newer, we just need a successful JSON parse
466
- if (response == ESP32OTAPull::UPDATE_AVAILABLE || response == ESP32OTAPull::NO_UPDATE_AVAILABLE)
467
- {
468
- gotVersion = true ;
448
+ const char *url = otaGetUrl ();
449
+ if (settings.debugFirmwareUpdate )
450
+ systemPrintf (" Checking to see if an update is available from %s\r\n " , url);
469
451
470
- // Call getVersion after original inquiry
471
- String otaVersion = ota.GetVersion ();
472
- otaVersion.toCharArray (versionAvailable, versionAvailableLength);
473
- }
474
- else if (response == ESP32OTAPull::HTTP_FAILED)
475
- {
476
- systemPrintln (" Firmware server not available" );
477
- }
478
- else
479
- {
480
- systemPrintln (" OTA failed" );
481
- }
452
+ ESP32OTAPull ota;
482
453
483
- // If we were in WIFI_AP mode, return to WIFI_AP mode
484
- // There may be some overlap with systemState STATE_WIFI_CONFIG ? Not sure...
485
- if (wasInAPmode)
486
- wifiSetApMode ();
454
+ int response = ota.CheckForOTAUpdate (url, currentVersion, ESP32OTAPull::DONT_DO_UPDATE);
487
455
488
- if (systemState != STATE_WIFI_CONFIG)
489
- {
490
- // WIFI_STOP() turns off the entire radio including the webserver. We need to turn off Station mode
491
- // only. For now, unit exits AP mode via reset so if we are in AP config mode, leave WiFi Station
492
- // running.
456
+ // We don't care if the library thinks the available firmware is newer, we just need a successful JSON parse
457
+ if (response == ESP32OTAPull::UPDATE_AVAILABLE || response == ESP32OTAPull::NO_UPDATE_AVAILABLE)
458
+ {
459
+ gotVersion = true ;
493
460
494
- // If WiFi was originally off, turn it off again
495
- if (wifiRunning == false )
496
- WIFI_STOP ();
497
- }
498
- }
499
- else
500
- {
501
- systemPrintln (" Network not available for OTA!" );
502
- }
461
+ // Call getVersion after original inquiry
462
+ String otaVersion = ota.GetVersion ();
463
+ otaVersion.toCharArray (versionAvailable, versionAvailableLength);
464
+ }
465
+ else if (response == ESP32OTAPull::HTTP_FAILED)
466
+ {
467
+ systemPrintln (" Firmware server not available" );
468
+ }
469
+ else
470
+ {
471
+ systemPrintln (" OTA failed" );
503
472
}
504
-
505
- if (gotVersion == true )
506
- log_d (" Available OTA firmware version: %s\r\n " , versionAvailable);
507
473
508
474
#endif // COMPILE_NETWORK
509
475
return (gotVersion);
510
476
}
511
477
512
- // Force updates firmware using OTA pull
478
+ // Updates firmware using OTA pull
513
479
// Exits by either updating firmware and resetting, or failing to connect
514
- void overTheAirUpdate ()
480
+ void otaUpdateFirmware ()
515
481
{
516
482
#ifdef COMPILE_NETWORK
517
483
char versionString[9 ];
@@ -567,7 +533,7 @@ void otaForcedUpdate()
567
533
568
534
if ((networkIsOnline) || (wifiConnect (settings.wifiConnectTimeoutMs , true , &wasInAPmode) ==
569
535
true )) // Use WIFI_AP_STA if already in WIFI_AP mode
570
- overTheAirUpdate ();
536
+ otaUpdateFirmware ();
571
537
572
538
// Update failed.
573
539
// If we were in WIFI_AP mode, return to WIFI_AP mode
@@ -681,12 +647,15 @@ bool isReportedVersionNewer(char *reportedVersion, char *currentVersion)
681
647
breakVersionIntoParts (reportedVersion, &reportedVersionNumberMajor, &reportedVersionNumberMinor, &reportedYear,
682
648
&reportedMonth, &reportedDay);
683
649
684
- log_d (" currentVersion (%s): %d.%d %d %d %d" , currentVersion, currentVersionNumberMajor, currentVersionNumberMinor,
685
- currentYear, currentMonth, currentDay);
686
- log_d (" reportedVersion (%s): %d.%d %d %d %d" , reportedVersion, reportedVersionNumberMajor,
687
- reportedVersionNumberMinor, reportedYear, reportedMonth, reportedDay);
688
- if (enableRCFirmware)
689
- log_d (" RC firmware enabled" );
650
+ if (settings.debugFirmwareUpdate )
651
+ {
652
+ systemPrintf (" currentVersion (%s): %d.%d %d %d %d\r\n " , currentVersion, currentVersionNumberMajor,
653
+ currentVersionNumberMinor, currentYear, currentMonth, currentDay);
654
+ systemPrintf (" reportedVersion (%s): %d.%d %d %d %d\r\n " , reportedVersion, reportedVersionNumberMajor,
655
+ reportedVersionNumberMinor, reportedYear, reportedMonth, reportedDay);
656
+ if (enableRCFirmware)
657
+ systemPrintln (" RC firmware enabled" );
658
+ }
690
659
691
660
// Production firmware is named "2.6"
692
661
// Release Candidate firmware is named "2.6-Dec 5 2022"
@@ -716,10 +685,7 @@ bool isReportedVersionNewer(char *reportedVersion, char *currentVersion)
716
685
int currentVersionScore = currentDay + currentMonth * 100 + currentYear * 2000 ;
717
686
718
687
if (reportedVersionScore > currentVersionScore)
719
- {
720
- log_d (" Reported version is greater" );
721
688
return (true );
722
- }
723
689
724
690
return (false );
725
691
}
@@ -923,10 +889,6 @@ void otaUpdate()
923
889
otaReportedVersion[0 ] = 0 ;
924
890
if (otaCheckVersion (otaReportedVersion, sizeof (otaReportedVersion)))
925
891
{
926
- // We got a version number, now determine if it's newer or not
927
- char currentVersion[21 ];
928
- getFirmwareVersion (currentVersion, sizeof (currentVersion), enableRCFirmware);
929
-
930
892
// If we are doing just a version check, set version number, turn off network request and stop machine
931
893
if (otaRequestFirmwareVersionCheck == true )
932
894
{
@@ -935,13 +897,18 @@ void otaUpdate()
935
897
return ;
936
898
}
937
899
900
+ // Create a string of the unit's current firmware version
901
+ char currentVersion[21 ];
902
+ getFirmwareVersion (currentVersion, sizeof (currentVersion), enableRCFirmware);
903
+
938
904
// If we are doing a scheduled automatic update or a manually requested update, continue through the
939
905
// state machine
940
906
941
- // Allow update if locally compiled developer version
907
+ // We got a version number, now determine if it's newer or not
942
908
if ((isReportedVersionNewer (otaReportedVersion, ¤tVersion[1 ]) == true ) ||
943
909
(currentVersion[0 ] == ' d' ) || (FIRMWARE_VERSION_MAJOR == 99 ))
944
910
{
911
+ // Allow update if locally compiled developer version
945
912
if (settings.debugFirmwareUpdate )
946
913
systemPrintf (" Firmware update detected new firmware version %s\r\n " , otaReportedVersion);
947
914
otaSetState (OTA_STATE_UPDATE_FIRMWARE);
@@ -969,7 +936,7 @@ void otaUpdate()
969
936
else
970
937
{
971
938
// Perform the firmware update
972
- overTheAirUpdate ();
939
+ otaUpdateFirmware ();
973
940
otaUpdateStop ();
974
941
}
975
942
break ;
0 commit comments