@@ -181,39 +181,38 @@ void GPSController::update() {
181
181
WS_DEBUG_PRINTLN (" times from GPS module." );
182
182
// Pop off the buffer and parse
183
183
char nmea_sentence[MAX_LEN_NMEA_SENTENCE];
184
- int rc = NmeaBufPop (nmea_sentence);
185
- if (rc == -1 ) {
186
- WS_DEBUG_PRINTLN (" [gps] NMEA sentence buffer empty!" );
187
- continue ; // No sentences to process, skip this driver
188
- }
189
- // Parse the NMEA sentence
190
- if (!drv->GetAdaGps ()->parse (nmea_sentence)) {
191
- WS_DEBUG_PRINT (" [gps] ERROR: Failed to parse NMEA sentence: " );
192
- WS_DEBUG_PRINTLN (nmea_sentence);
193
- continue ; // Skip this driver if parsing failed
194
- }
195
- Serial.print (" Fix: " );
196
- Serial.print ((int )drv->GetAdaGps ()->fix );
197
- Serial.print (" quality: " );
198
- Serial.println ((int )drv->GetAdaGps ()->fixquality );
199
- if (drv->GetAdaGps ()->fix ) {
200
- Serial.print (" Location: " );
201
- Serial.print (drv->GetAdaGps ()->latitude , 4 );
202
- Serial.print (drv->GetAdaGps ()->lat );
203
- Serial.print (" , " );
204
- Serial.print (drv->GetAdaGps ()->longitude , 4 );
205
- Serial.println (drv->GetAdaGps ()->lon );
206
- Serial.print (" Speed (knots): " );
207
- Serial.println (drv->GetAdaGps ()->speed );
208
- Serial.print (" Angle: " );
209
- Serial.println (drv->GetAdaGps ()->angle );
210
- Serial.print (" Altitude: " );
211
- Serial.println (drv->GetAdaGps ()->altitude );
212
- Serial.print (" Satellites: " );
213
- Serial.println ((int )drv->GetAdaGps ()->satellites );
214
- Serial.print (" Antenna status: " );
215
- Serial.println ((int )drv->GetAdaGps ()->antenna );
184
+ // Pop until we have no more sentences in the buffer
185
+ while (NmeaBufPop (nmea_sentence) != -1 ) {
186
+ // Parse the NMEA sentence
187
+ if (!drv->GetAdaGps ()->parse (nmea_sentence)) {
188
+ WS_DEBUG_PRINT (" [gps] ERROR: Failed to parse NMEA sentence: " );
189
+ WS_DEBUG_PRINTLN (nmea_sentence);
190
+ continue ; // Skip this driver if parsing failed
191
+ }
192
+ Serial.print (" Fix: " );
193
+ Serial.print ((int )drv->GetAdaGps ()->fix );
194
+ Serial.print (" quality: " );
195
+ Serial.println ((int )drv->GetAdaGps ()->fixquality );
196
+ if (drv->GetAdaGps ()->fix ) {
197
+ Serial.print (" Location: " );
198
+ Serial.print (drv->GetAdaGps ()->latitude , 4 );
199
+ Serial.print (drv->GetAdaGps ()->lat );
200
+ Serial.print (" , " );
201
+ Serial.print (drv->GetAdaGps ()->longitude , 4 );
202
+ Serial.println (drv->GetAdaGps ()->lon );
203
+ Serial.print (" Speed (knots): " );
204
+ Serial.println (drv->GetAdaGps ()->speed );
205
+ Serial.print (" Angle: " );
206
+ Serial.println (drv->GetAdaGps ()->angle );
207
+ Serial.print (" Altitude: " );
208
+ Serial.println (drv->GetAdaGps ()->altitude );
209
+ Serial.print (" Satellites: " );
210
+ Serial.println ((int )drv->GetAdaGps ()->satellites );
211
+ Serial.print (" Antenna status: " );
212
+ Serial.println ((int )drv->GetAdaGps ()->antenna );
213
+ }
216
214
}
215
+ WS_DEBUG_PRINTLN (" [gps] Finished processing NMEA sentences." );
217
216
// TODO: Successfully parsed the NMEA sentence, update the model
218
217
219
218
drv->SetPollPeriodPrv (cur_time);
0 commit comments