@@ -195,26 +195,37 @@ bool GPSModel::AddGpsEventGGA(wippersnapper_gps_GPSDateTime datetime,
195195 return true ;
196196}
197197
198+ /* !
199+ * @brief Returns the previous GPS datetime as a DateTime object.
200+ * @returns A DateTime object representing the previous GPS datetime.
201+ */
202+ DateTime GPSModel::GetPrvGPSDateTime () {
203+ // Create a DateTime object from the previous GPS datetime
204+ return DateTime (_prv_msg_gps_datetime.year , _prv_msg_gps_datetime.month ,
205+ _prv_msg_gps_datetime.day , _prv_msg_gps_datetime.hour ,
206+ _prv_msg_gps_datetime.minute , _prv_msg_gps_datetime.seconds );
207+ }
208+
198209bool GPSModel::ProcessNMEASentence (char *sentence, GPSHardware *drv) {
199210 // Check for prefix: $GP or $GN
200211 if (strncmp (sentence, " $GP" , 3 ) != 0 && strncmp (sentence, " $GN" , 3 ) != 0 )
201212 return false ;
202213
203- wippersnapper_gps_GPSDateTime datetime = CreateGpsDatetime (
214+ _prv_msg_gps_datetime = CreateGpsDatetime (
204215 drv->GetHour (), drv->GetMinute (), drv->GetSeconds (),
205216 drv->GetMilliseconds (), drv->GetDay (), drv->GetMonth (), drv->GetYear ());
206217 char lat_dir = drv->GetLatDir ();
207218 char lon_dir = drv->GetLonDir ();
208219 if (sentence[3 ] == ' R' && sentence[4 ] == ' M' && sentence[5 ] == ' C' ) {
209220 // Process RMC sentence
210- if (!AddGpsEventRMC (datetime , drv->GetFix (), drv->GetLat (), &lat_dir ,
211- drv->GetLon (), &lon_dir, drv->GetSpeed (),
221+ if (!AddGpsEventRMC (_prv_msg_gps_datetime , drv->GetFix (), drv->GetLat (),
222+ &lat_dir, drv->GetLon (), &lon_dir, drv->GetSpeed (),
212223 drv->GetAngle ()))
213224 return false ;
214225 } else if (sentence[3 ] == ' G' && sentence[4 ] == ' G' && sentence[5 ] == ' A' ) {
215226 // Process GGA sentence
216- if (!AddGpsEventGGA (datetime , drv->GetFix (), drv->GetLat (), &lat_dir ,
217- drv->GetLon (), &lon_dir, drv->GetNumSats (),
227+ if (!AddGpsEventGGA (_prv_msg_gps_datetime , drv->GetFix (), drv->GetLat (),
228+ &lat_dir, drv->GetLon (), &lon_dir, drv->GetNumSats (),
218229 drv->GetHDOP (), drv->GetAltitude (),
219230 drv->GetGeoidHeight ()))
220231 return false ;
0 commit comments