@@ -10,50 +10,6 @@ arduino::GPSClass::~GPSClass()
10
10
{
11
11
}
12
12
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
-
57
13
int arduino::GPSClass::available (void )
58
14
{
59
15
return _serial->available ();
@@ -100,15 +56,21 @@ bool arduino::GPSClass::checkGNSSEngine(const char *prefix)
100
56
101
57
void arduino::GPSClass::readAndDrop ()
102
58
{
103
- char buf[256 ];
59
+ char buf[256 ];
60
+ uint32_t start = millis ();
104
61
int dataRead = 0 ;
105
- while ((dataRead = available ()) <= 0 );
62
+ while (! available () && millis () - start < 1000 ) {}
106
63
107
64
String tmp = " " ;
108
- while ((dataRead = _serial->read (buf, 1 ) ) > 0 );
65
+ while (_serial->read (buf, 1 ) > 0 );
109
66
}
110
67
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)
112
74
{
113
75
auto cmux = arduino::CMUXClass::get_default_instance ();
114
76
@@ -119,9 +81,6 @@ void arduino::GPSClass::begin(unsigned long baudrate)
119
81
_serial->write (" ATE0\r\n " , sizeof (" ATE0\r\n " ));
120
82
readAndDrop ();
121
83
122
- // burn any incoming message on gps rx buffer
123
- readAndDrop ();
124
-
125
84
do
126
85
{
127
86
_serial->write (" AT^SPIO=0\r\n " , sizeof (" AT^SPIO=0\r\n " ));
@@ -207,7 +166,7 @@ arduino::GPSClass::operator bool()
207
166
return checkGNSSEngine (" \" Engine\" ,\" 3\" " );
208
167
}
209
168
210
- static Stream *trace_stream = nullptr ;
169
+ extern Stream *trace_stream;
211
170
static void arduino_print (const char *c)
212
171
{
213
172
if (trace_stream)
0 commit comments