LilyGo-LoRa-Series/examples/GPS/Example3_FactoryDefaultsviaSerial/Example3_FactoryDefaultsviaSerial.ino
2020-11-24 17:03:49 +08:00

83 lines
2.7 KiB
C++

/*
Test baud rate changes on serial, factory reset, and hard reset.
Base on SparkFun_Ublox_Arduino_Library //https://github.com/sparkfun/SparkFun_Ublox_Arduino_Library
*/
#include "SparkFun_Ublox_Arduino_Library.h"
#include "utilities.h"
SFE_UBLOX_GPS myGPS;
int state = 0; // steps through auto-baud, reset, etc states
void setup()
{
initBoard();
// When the power is turned on, a delay is required.
delay(1500);
Serial.println("SparkFun Ublox Example");
}
void loop()
{
Serial.print("===== STATE ");
Serial.println(state);
switch (state) {
case 0: // auto-baud connection, then switch to 38400 and save config
do {
Serial.println("GPS: trying 38400 baud");
Serial1.begin(38400, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
if (myGPS.begin(Serial1)) break;
delay(100);
Serial.println("GPS: trying 9600 baud");
Serial1.begin(9600, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
if (myGPS.begin(Serial1)) {
Serial.println("GPS: connected at 9600 baud, switching to 38400");
myGPS.setSerialRate(38400);
delay(100);
} else {
delay(2000); //Wait a bit before trying again to limit the Serial output flood
}
} while (1);
myGPS.setUART1Output(COM_TYPE_UBX); //Set the UART port to output UBX only
myGPS.saveConfiguration(); //Save the current settings to flash and BBR
Serial.println("GPS serial connected, saved config");
state++;
break;
case 1: // hardReset, expect to see GPS back at 38400 baud
Serial.println("Issuing hardReset (cold start)");
myGPS.hardReset();
delay(1000);
Serial1.begin(38400, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
if (myGPS.begin(Serial1)) {
Serial.println("Success.");
state++;
} else {
Serial.println("*** GPS did not respond at 38400 baud, starting over.");
state = 0;
}
break;
case 2: // factoryReset, expect to see GPS back at 9600 baud
Serial.println("Issuing factoryReset");
myGPS.factoryReset();
delay(2000); // takes more than one second... a loop to resync would be best
Serial1.begin(9600, SERIAL_8N1, GPS_RX_PIN, GPS_TX_PIN);
if (myGPS.begin(Serial1)) {
Serial.println("Success.");
state++;
} else {
Serial.println("*** GPS did not come back at 9600 baud, starting over.");
state = 0;
}
break;
case 3: // print version info
state = 0;
Serial.println("Reset Done");
while (1) {
delay(10000);
}
}
delay(1000);
}