@@ -10,50 +10,6 @@ arduino::GPSClass::~GPSClass()
1010{
1111}
1212
13- void arduino::GPSClass::begin (unsigned long baudrate, uint16_t config)
14- {
15- auto cmux = arduino::CMUXClass::get_default_instance ();
16-
17- auto serial = cmux->get_serial (1 );
18- _serial = (arduino::PTYSerial *)serial;
19- nextSerialPort++;
20-
21- _serial->write (" ATE0\r\n " , sizeof (" ATE0\r\n " ));
22- readAndDrop ();
23-
24- // burn any incoming message on gps rx buffer
25- readAndDrop ();
26-
27- do
28- {
29- _serial->write (" AT^SPIO=0\r\n " , sizeof (" AT^SPIO=0\r\n " ));
30- readAndDrop ();
31-
32- _serial->write (" AT^SPIO=1\r\n " , sizeof (" AT^SPIO=1\r\n " ));
33- readAndDrop ();
34-
35- _serial->write (" AT^SCPIN=1,7,1,0\r\n " , sizeof (" AT^SCPIN=1,7,1,0\r\n " ));
36- readAndDrop ();
37-
38- _serial->write (" AT^SSIO=7,1\r\n " , sizeof (" AT^SSIO=7,1\r\n " ));
39- readAndDrop ();
40-
41- _serial->write (" AT^SGIO=7\r\n " , sizeof (" AT^SGIO=7\r\n " ));
42- } while (!checkGNSSEngine (" ^SGIO: 1" ));
43-
44- _serial->write (" AT^SGPSC=Engine/StartMode,0\r\n " , sizeof (" AT^SGPSC=Engine/StartMode,0\r\n " ));
45- checkGNSSEngine (" ^SGPSC: \" Engine/StartMode\" ,\" 0\" " );
46-
47- while (!_engine)
48- {
49- _serial->write (" AT^SGPSC=Engine,3\r\n " , sizeof (" AT^SGPSC=Engine,3\r\n " ));
50- _engine = checkGNSSEngine (" ^SGPSC: \" Engine\" ,\" 3\" " );
51- }
52-
53- _serial->write (" AT^SGPSC=Nmea/Urc,on\r\n " , sizeof (" AT^SGPSC=Nmea/Urc,on\r\n " ));
54- readAndDrop ();
55- }
56-
5713int arduino::GPSClass::available (void )
5814{
5915 return _serial->available ();
@@ -100,15 +56,21 @@ bool arduino::GPSClass::checkGNSSEngine(const char *prefix)
10056
10157void arduino::GPSClass::readAndDrop ()
10258{
103- char buf[256 ];
59+ char buf[256 ];
60+ uint32_t start = millis ();
10461 int dataRead = 0 ;
105- while ((dataRead = available ()) <= 0 );
62+ while (! available () && millis () - start < 1000 ) {}
10663
10764 String tmp = " " ;
108- while ((dataRead = _serial->read (buf, 1 ) ) > 0 );
65+ while (_serial->read (buf, 1 ) > 0 );
10966}
11067
111- void arduino::GPSClass::begin (unsigned long baudrate)
68+ void arduino::GPSClass::begin (unsigned long baudrate) {
69+ begin (baudrate, 0 );
70+ }
71+
72+
73+ void arduino::GPSClass::begin (unsigned long baudrate, uint16_t config)
11274{
11375 auto cmux = arduino::CMUXClass::get_default_instance ();
11476
@@ -119,9 +81,6 @@ void arduino::GPSClass::begin(unsigned long baudrate)
11981 _serial->write (" ATE0\r\n " , sizeof (" ATE0\r\n " ));
12082 readAndDrop ();
12183
122- // burn any incoming message on gps rx buffer
123- readAndDrop ();
124-
12584 do
12685 {
12786 _serial->write (" AT^SPIO=0\r\n " , sizeof (" AT^SPIO=0\r\n " ));
@@ -207,7 +166,7 @@ arduino::GPSClass::operator bool()
207166 return checkGNSSEngine (" \" Engine\" ,\" 3\" " );
208167}
209168
210- static Stream *trace_stream = nullptr ;
169+ extern Stream *trace_stream;
211170static void arduino_print (const char *c)
212171{
213172 if (trace_stream)
0 commit comments