Skip to content

Commit ca2e93e

Browse files
authored
Merge pull request #80 from sparkfun/release_candidate
Supplement v1.10 - Programming batch fix
2 parents 0992746 + 9fd477f commit ca2e93e

File tree

7 files changed

+51
-20
lines changed

7 files changed

+51
-20
lines changed
16 Bytes
Binary file not shown.

Binaries/batch_program.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ if [%1]==[] goto usage
99
@echo -
1010
@echo Programming binary: %1 on %2
1111

12-
esptool.exe --chip esp32 --port COM26 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect ^
12+
esptool.exe --chip esp32 --port %2 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect ^
1313
0x1000 ./bin/RTK_Surveyor.ino.bootloader.bin ^
1414
0x8000 ./bin/RTK_Surveyor.ino.partitions.bin ^
1515
0xe000 ./bin/boot_app0.bin ^

Firmware/RTK_Surveyor/Begin.ino

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,9 +329,29 @@ void beginGNSS()
329329
delay(1000); //Wait for ZED-F9P to power up before it can respond to ACK
330330
if (i2cGNSS.begin() == false)
331331
{
332-
Serial.println(F("u-blox GNSS not detected at default I2C address. Hard stop."));
332+
if (productVariant == RTK_SURVEYOR)
333+
blinkError(ERROR_NO_I2C); //Infinite loop
334+
333335
displayGNSSFail(0);
334-
blinkError(ERROR_NO_I2C);
336+
337+
//Present user with prompt to factory reset unit over serial
338+
while (1)
339+
{
340+
Serial.println(F("GNSS Error: u-blox GNSS not detected at default I2C address. Press 'r' to factory reset."));
341+
byte incoming = getByteChoice(2); //Timeout after x seconds
342+
343+
if (incoming == 'r')
344+
{
345+
Serial.println(F("\r\nResetting to factory defaults. Press 'y' to confirm:"));
346+
byte bContinue = getByteChoice(menuTimeout);
347+
if (bContinue == 'y')
348+
{
349+
factoryReset();
350+
}
351+
else
352+
Serial.println(F("Reset aborted"));
353+
}
354+
}
335355
}
336356
}
337357

@@ -394,9 +414,29 @@ void configureGNSS()
394414

395415
if (response == false)
396416
{
397-
Serial.println(F("Failed to configure module. Hard stop."));
417+
if (productVariant == RTK_SURVEYOR)
418+
blinkError(ERROR_GPS_CONFIG_FAIL); //Infinite loop
419+
398420
displayGNSSFail(0);
399-
blinkError(ERROR_GPS_CONFIG_FAIL);
421+
422+
//Present user with prompt to factory reset unit over serial
423+
while (1)
424+
{
425+
Serial.println(F("GNSS Error: Failed to configure module. Press 'r' to factory reset."));
426+
byte incoming = getByteChoice(2); //Timeout after x seconds
427+
428+
if (incoming == 'r')
429+
{
430+
Serial.println(F("\r\nResetting to factory defaults. Press 'y' to confirm:"));
431+
byte bContinue = getByteChoice(menuTimeout);
432+
if (bContinue == 'y')
433+
{
434+
factoryReset();
435+
}
436+
else
437+
Serial.println(F("Reset aborted"));
438+
}
439+
}
400440
}
401441
}
402442

Firmware/RTK_Surveyor/NVM.ino

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -352,17 +352,7 @@ bool parseLine(char* str) {
352352
//If user sets sizeOfSettings to -1 in config file, RTK Surveyor will factory reset
353353
if (d == -1)
354354
{
355-
eepromErase();
356-
357-
//Assemble settings file name
358-
char settingsFileName[40]; //SFE_Surveyor_Settings.txt
359-
strcpy(settingsFileName, platformFilePrefix);
360-
strcat(settingsFileName, "_Settings.txt");
361-
sd.remove(settingsFileName);
362-
363-
Serial.printf("RTK %s has been factory reset via settings file. Unit restarting. Please open terminal at 115200bps.\n\r", platformPrefix);
364-
delay(2000);
365-
ESP.restart();
355+
factoryReset(); //Erase EEPROM, erase settings file, reset u-blox module, display message on OLED
366356
}
367357

368358
//Check to see if this setting file is compatible with this version of RTK Surveyor
Binary file not shown.

Firmware/RTK_Surveyor/menuFirmware.ino

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ void updateFromSD(const char *firmwareFileName)
183183
{
184184
displayFirmwareUpdateProgress(100);
185185

186+
//Clear all settings from EEPROM
187+
eepromErase();
188+
186189
Serial.println(F("Firmware updated successfully. Rebooting. Good bye!"));
187190

188191
//If forced firmware is detected, do a full reset of config as well
@@ -194,8 +197,6 @@ void updateFromSD(const char *firmwareFileName)
194197
firmwareFile.close();
195198
sd.remove(firmwareFileName);
196199

197-
eepromErase();
198-
199200
//Assemble settings file name
200201
char settingsFileName[40]; //SFE_Surveyor_Settings.txt
201202
strcpy(settingsFileName, platformFilePrefix);

Firmware/RTK_Surveyor/menuMain.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ void menuMain()
104104
//Erase all settings. Upon restart, unit will use defaults
105105
void factoryReset()
106106
{
107+
displaySytemReset(); //Display friendly message on OLED
108+
107109
eepromErase();
108110

109111
//Assemble settings file name
@@ -122,8 +124,6 @@ void factoryReset()
122124
} //End xFATSemaphore
123125
}
124126

125-
displaySytemReset(); //Display friendly message on OLED
126-
127127
i2cGNSS.factoryReset(); //Reset everything: baud rate, I2C address, update rate, everything.
128128

129129
Serial.println(F("Settings erased successfully. Rebooting. Good bye!"));

0 commit comments

Comments
 (0)