@@ -183,8 +183,8 @@ void GPSController::update() {
183
183
}
184
184
}
185
185
WS_DEBUG_PRINTLN (" [gps] Finished reading GPS data." );
186
-
187
- // We are done reading for this period
186
+ // We are done reading for this period, create a new GPSEvent message
187
+ _gps_model-> CreateGPSEvent ();
188
188
189
189
// TODO: This is for debugging purposes only, remove later!
190
190
WS_DEBUG_PRINT (" [gps] Read " );
@@ -224,11 +224,50 @@ void GPSController::update() {
224
224
Serial.println ((int )drv->GetAdaGps ()->antenna );
225
225
}
226
226
227
- // TODO: Okay so here we are going to create the model of gps data
228
- }
229
- WS_DEBUG_PRINTLN (" [gps] Finished processing NMEA sentences." );
230
- // TODO: Successfully parsed the NMEA sentence, update the model
227
+ // now, let's build the model from the sentence
228
+ // $GPGGA
229
+ // $GPRMC
230
+ if (strncmp (nmea_sentence, " $GPRMC" , 7 )) {
231
+ // parse GPRMC into event
232
+ WS_DEBUG_PRINT (
233
+ " [gps] Adding GGA to GPSEvent..." ); // TODO: This is for debug,
234
+ // remove in production!
235
+ wippersnapper_gps_GPSDateTime datetime = _gps_model->CreateGpsDatetime (
236
+ drv->GetAdaGps ()->hour , drv->GetAdaGps ()->minute ,
237
+ drv->GetAdaGps ()->seconds , drv->GetAdaGps ()->milliseconds ,
238
+ drv->GetAdaGps ()->day , drv->GetAdaGps ()->month ,
239
+ drv->GetAdaGps ()->year );
240
+ _gps_model->AddGpsEventRMC (
241
+ datetime, drv->GetAdaGps ()->fix , drv->GetAdaGps ()->latitude ,
242
+ &drv->GetAdaGps ()->lat , drv->GetAdaGps ()->longitude ,
243
+ &drv->GetAdaGps ()->lon , drv->GetAdaGps ()->speed ,
244
+ drv->GetAdaGps ()->angle );
245
+ WS_DEBUG_PRINTLN (" added!" ); // TODO: THIS IS FOR DEBUG, REMOVE IN PROD
246
+ } else if (strncmp (nmea_sentence, " $GPRMC" , 7 )) {
247
+ // parse GPGGA into event
248
+ WS_DEBUG_PRINT (
249
+ " [gps] Adding GGA to GPSEvent..." ); // TODO: This is for debug,
250
+ // remove in production!
251
+ wippersnapper_gps_GPSDateTime datetime = _gps_model->CreateGpsDatetime (
252
+ drv->GetAdaGps ()->hour , drv->GetAdaGps ()->minute ,
253
+ drv->GetAdaGps ()->seconds , drv->GetAdaGps ()->milliseconds ,
254
+ drv->GetAdaGps ()->day , drv->GetAdaGps ()->month ,
255
+ drv->GetAdaGps ()->year );
256
+ _gps_model->AddGpsEventGGA (
257
+ datetime, drv->GetAdaGps ()->fix , drv->GetAdaGps ()->latitude ,
258
+ &drv->GetAdaGps ()->lat , drv->GetAdaGps ()->longitude ,
259
+ &drv->GetAdaGps ()->lon , drv->GetAdaGps ()->satellites ,
260
+ drv->GetAdaGps ()->HDOP , drv->GetAdaGps ()->altitude ,
261
+ drv->GetAdaGps ()->geoidheight );
262
+ WS_DEBUG_PRINTLN (" added!" ); // TODO: THIS IS FOR DEBUG, REMOVE IN PROD
263
+ } else {
264
+ WS_DEBUG_PRINTLN (
265
+ " [gps] WARNING - Parsed sentence is not type RMC or GGA!" );
266
+ }
267
+ WS_DEBUG_PRINTLN (" [gps] Finished processing NMEA sentences." );
268
+ _gps_model->EncodeGPSEvent ();
231
269
232
- drv->SetPollPeriodPrv (cur_time);
270
+ drv->SetPollPeriodPrv (cur_time);
271
+ }
233
272
}
234
273
}
0 commit comments