void CheckFinish(NMEA_INFO *Basic, DERIVED_INFO *Calculated) { if (InFinishSector(Basic,Calculated, ActiveWayPoint)) { Calculated->IsInSector = true; aatdistance.AddPoint(Basic->Longitude, Basic->Latitude, ActiveWayPoint); if (!Calculated->ValidFinish) { Calculated->ValidFinish = true; AnnounceWayPointSwitch(Calculated, false); // JMWX save calculated data at finish memcpy(&Finish_Derived_Info, Calculated, sizeof(DERIVED_INFO)); } } }
void CheckInSector(NMEA_INFO *Basic, DERIVED_INFO *Calculated) { if (ActiveWayPoint>0) { AddAATPoint(Basic, Calculated, ActiveWayPoint-1); } AddAATPoint(Basic, Calculated, ActiveWayPoint); // JMW Start bug XXX if (aatdistance.HasEntered(ActiveWayPoint)) { if (ReadyToAdvance(Calculated, true, false)) { AnnounceWayPointSwitch(Calculated, true); Calculated->LegStartTime = Basic->Time; flightstats.LegStartTime[ActiveWayPoint] = Basic->Time; } if (Calculated->Flying) { Calculated->ValidFinish = false; } } }
void StartTask(NMEA_INFO *Basic, DERIVED_INFO *Calculated, const bool do_advance, const bool do_announce) { Calculated->ValidFinish = false; Calculated->TaskStartTime = Basic->Time ; Calculated->TaskStartSpeed = Basic->Speed; Calculated->TaskStartAltitude = Calculated->NavAltitude; Calculated->LegStartTime = Basic->Time; flightstats.LegStartTime[0] = Basic->Time; flightstats.LegStartTime[1] = Basic->Time; Calculated->CruiseStartLat = Basic->Latitude; Calculated->CruiseStartLong = Basic->Longitude; Calculated->CruiseStartAlt = Calculated->NavAltitude; Calculated->CruiseStartTime = Basic->Time; aatdistance.Reset(); // JMW TODO accuracy: Get time from aatdistance module since this is // more accurate // JMW clear thermal climb average on task start flightstats.ThermalAverage.Reset(); flightstats.Task_Speed.Reset(); Calculated->AverageThermal = 0; Calculated->WaypointBearing=0; // JMW reset time cruising/time circling stats on task start Calculated->timeCircling = 0; Calculated->timeCruising = 0; Calculated->TotalHeightClimb = 0; if (do_announce) { AnnounceWayPointSwitch(Calculated, do_advance); } else { if (do_advance) { ActiveWayPoint=1; SelectedWaypoint = TASKINDEX; } } }