@@ -37,6 +37,7 @@ void arduino::GPSClass::begin(unsigned long baudrate, uint16_t config)
37
37
38
38
_serial->write (" AT^SSIO=7,1\r\n " , sizeof (" AT^SSIO=7,1\r\n " ));
39
39
readAndDrop ();
40
+
40
41
_serial->write (" AT^SGIO=7\r\n " , sizeof (" AT^SGIO=7\r\n " ));
41
42
} while (!checkGNSSEngine (" ^SGIO: 1" ));
42
43
@@ -108,7 +109,7 @@ void arduino::GPSClass::readAndDrop()
108
109
}
109
110
110
111
void arduino::GPSClass::begin (unsigned long baudrate)
111
- { // alligne with other begin
112
+ {
112
113
auto cmux = arduino::CMUXClass::get_default_instance ();
113
114
114
115
auto serial = cmux->get_serial (1 );
@@ -118,27 +119,37 @@ void arduino::GPSClass::begin(unsigned long baudrate)
118
119
_serial->write (" ATE0\r\n " , sizeof (" ATE0\r\n " ));
119
120
readAndDrop ();
120
121
121
- _serial-> write ( " AT^SGPSC=Engine/StartMode,0 \r\n " , sizeof ( " AT^SGPSC=Engine/StartMode,0 \r\n " ));
122
+ // burn any incoming message on gps rx buffer
122
123
readAndDrop ();
123
124
124
- _serial->write (" AT^SPIO=1\r\n " , sizeof (" AT^SPIO=1\r\n " ));
125
- readAndDrop ();
125
+ do
126
+ {
127
+ _serial->write (" AT^SPIO=0\r\n " , sizeof (" AT^SPIO=0\r\n " ));
128
+ readAndDrop ();
126
129
127
- _serial->write (" AT^SCPIN=1,7,1,0 \r\n " , sizeof (" AT^SCPIN=1,7,1,0 \r\n " ));
128
- readAndDrop ();
130
+ _serial->write (" AT^SPIO=1 \r\n " , sizeof (" AT^SPIO=1 \r\n " ));
131
+ readAndDrop ();
129
132
130
- _serial->write (" AT^SSIO=7,1\r\n " , sizeof (" AT^SSIO=7,1\r\n " ));
131
- readAndDrop ();
133
+ _serial->write (" AT^SCPIN=1,7,1,0\r\n " , sizeof (" AT^SCPIN=1,7,1,0\r\n " ));
134
+ readAndDrop ();
135
+
136
+ _serial->write (" AT^SSIO=7,1\r\n " , sizeof (" AT^SSIO=7,1\r\n " ));
137
+ readAndDrop ();
138
+
139
+ _serial->write (" AT^SGIO=7\r\n " , sizeof (" AT^SGIO=7\r\n " ));
140
+ } while (!checkGNSSEngine (" ^SGIO: 1" ));
132
141
133
- _serial->write (" AT^SGPSC=Engine,3\r\n " , sizeof (" AT^SGPSC=Engine,3\r\n " )); //
134
- checkGNSSEngine (" ^SGPSC: \" Engine\" ,\" 3\" " );
135
- _engine = true ;
142
+ _serial->write (" AT^SGPSC=Engine/StartMode,0\r\n " , sizeof (" AT^SGPSC=Engine/StartMode,0\r\n " ));
143
+ checkGNSSEngine (" ^SGPSC: \" Engine/StartMode\" ,\" 0\" " );
136
144
137
- if ( _engine)
145
+ while (! _engine)
138
146
{
139
- _serial->write (" AT^SGPSC=Nmea/Urc,on \r\n " , sizeof (" AT^SGPSC=Nmea/Urc,on \r\n " ));
140
- readAndDrop ( );
147
+ _serial->write (" AT^SGPSC=Engine,3 \r\n " , sizeof (" AT^SGPSC=Engine,3 \r\n " ));
148
+ _engine = checkGNSSEngine ( " ^SGPSC: \" Engine \" , \" 3 \" " );
141
149
}
150
+
151
+ _serial->write (" AT^SGPSC=Nmea/Urc,on\r\n " , sizeof (" AT^SGPSC=Nmea/Urc,on\r\n " ));
152
+ readAndDrop ();
142
153
}
143
154
144
155
int arduino::GPSClass::peek (void )
@@ -177,7 +188,6 @@ size_t arduino::GPSClass::write(uint8_t c)
177
188
178
189
void arduino::GPSClass::end ()
179
190
{
180
-
181
191
_serial->write (" AT^SGPSC=Nmea/Urc,off\r\n " , sizeof (" AT^SGPSC=Nmea/Urc,off\r\n " ));
182
192
readAndDrop ();
183
193
@@ -188,7 +198,7 @@ void arduino::GPSClass::end()
188
198
}
189
199
190
200
_serial->write (" ^SSIO=7,0\r\n " , sizeof (" ^SSIO=7,0\r\n " ));
191
- readAndDrop (); // sgio in modo da verificare l effettivo spegnimento
201
+ readAndDrop ();
192
202
}
193
203
194
204
arduino::GPSClass::operator bool ()
0 commit comments