internal async Task StartAsync()
{
if (_gps == null || _navRunning)
return;
_navRunning = true;
foreach (var wp in _waypoints)
{
if (wp.Lat == 0 || wp.Lon == 0)
continue;
await NavigateToWaypoint(wp, _cancellationTokenSource.Token);
if (_cancellationTokenSource.IsCancellationRequested || !_navRunning)
break;
}
}