@@ -381,7 +381,10 @@ void updateSettingWithValue(const char *settingName, const char* settingValueStr
381381 if (strcmp (settingValueStr, " true" ) == 0 ) settingValueBool = true ;
382382
383383 if (strcmp (settingName, " maxLogTime_minutes" ) == 0 )
384+ {
385+ newAPSettings = true ; // Mark settings as new to force record before reset
384386 settings.maxLogTime_minutes = settingValue;
387+ }
385388 else if (strcmp (settingName, " measurementRateHz" ) == 0 )
386389 settings.measurementRate = (int )(1000.0 / settingValue);
387390 else if (strcmp (settingName, " dynamicModel" ) == 0 )
@@ -457,14 +460,18 @@ void updateSettingWithValue(const char *settingName, const char* settingValueStr
457460 else if (strcmp (settingName, " firmwareFileName" ) == 0 )
458461 {
459462 updateFromSD (settingValueStr);
463+
464+ // If update is successful, it will force system reset and not get here.
465+
460466 requestChangeState (STATE_ROVER_NOT_STARTED); // If update failed, return to Rover mode.
461467 }
462468 else if (strcmp (settingName, " factoryDefaultReset" ) == 0 )
463469 factoryReset ();
464- else if (strcmp (settingName, " exitToRoverMode " ) == 0 )
470+ else if (strcmp (settingName, " exitAndReset " ) == 0 )
465471 {
472+ if (newAPSettings == true ) recordSystemSettings (); // If we've recieved settings, record before restart
473+
466474 ESP.restart ();
467- // requestChangeState(STATE_ROVER_NOT_STARTED);
468475 }
469476
470477 // Check for bulk settings (constellations and message rates)
@@ -590,7 +597,7 @@ bool parseIncomingSettings()
590597 headPtr = commaPtr + 1 ;
591598 }
592599
593- Serial.printf (" settingName: %s value: %s\n\r " , settingName, valueStr);
600+ // Serial.printf("settingName: %s value: %s\n\r", settingName, valueStr);
594601
595602 // Ignore zero length values (measurementRateSec) received from browser
596603 if (strlen (valueStr) > 0 )
0 commit comments