示例#1
0
        public FlightService(
            IMessagesService messagesService,
            IMissionPlanner missionPlanner,
            ISettings settings,
            IFlightDataService flightDataService,
            IAltitudeAngelClient client,
            IOutboundNotifsService notificationsService)
        {
            _messagesService                = messagesService;
            _missionPlanner                 = missionPlanner;
            _settings                       = settings;
            _client                         = client;
            _notificationsService           = notificationsService;
            _settings.CurrentFlightReportId = null;
            _settings.CurrentFlightId       = null;

            if (_settings.SurveillanceMode)
            {
                _disposer.Add(flightDataService.FlightArmed
                              .SubscribeWithAsync(async(i, ct) => await StartSurveillanceFlight(await _missionPlanner.GetFlightPlan())));
            }
            else
            {
                _disposer.Add(flightDataService.FlightArmed
                              .SubscribeWithAsync(async(i, ct) => await StartTelemetryFlight(await _missionPlanner.GetFlightPlan())));
                _disposer.Add(flightDataService.FlightDisarmed
                              .SubscribeWithAsync((i, ct) => CompleteFlight()));
            }
        }
        public AltitudeAngelService(
            IMessagesService messagesService,
            IMissionPlanner missionPlanner,
            ISettings settings,
            IAltitudeAngelClient client,
            ITelemetryService telemetryService,
            IFlightService flightService)
        {
            _messagesService  = messagesService;
            _missionPlanner   = missionPlanner;
            _settings         = settings;
            _client           = client;
            _telemetryService = telemetryService;
            _flightService    = flightService;

            IsSignedIn = new ObservableProperty <bool>(false);
            _disposer.Add(IsSignedIn);
            WeatherReport = new ObservableProperty <WeatherInfo>();
            _disposer.Add(WeatherReport);
            FilterInfoDisplay = _settings.MapFilters;

            _disposer.Add(_missionPlanner.FlightDataMap
                          .MapChanged
                          .SubscribeWithAsync((i, ct) => UpdateMapData(_missionPlanner.FlightDataMap, ct)));
            _disposer.Add(_missionPlanner.FlightPlanningMap
                          .MapChanged
                          .SubscribeWithAsync((i, ct) => UpdateMapData(_missionPlanner.FlightPlanningMap, ct)));

            _disposer.Add(_missionPlanner.FlightDataMap
                          .FeatureClicked
                          .Select(f => new { Feature = f, Properties = f.GetFeatureProperties() })
                          .Where(i => i.Properties.DetailedCategory == "user:flight_plan_report" && i.Properties.IsOwner)
                          .SubscribeWithAsync((i, ct) => OnFlightReportClicked(i.Feature)));
            _disposer.Add(_missionPlanner.FlightPlanningMap
                          .FeatureClicked
                          .Select(f => new { Feature = f, Properties = f.GetFeatureProperties() })
                          .Where(i => i.Properties.DetailedCategory == "user:flight_plan_report" && i.Properties.IsOwner)
                          .SubscribeWithAsync((i, ct) => OnFlightReportClicked(i.Feature)));
        }
示例#3
0
        public AltitudeAngelService(
            IMessagesService messagesService,
            IMissionPlanner missionPlanner,
            ISettings settings,
            IFlightDataService flightDataService,
            IAltitudeAngelClient client)
        {
            _messagesService = messagesService;
            _missionPlanner  = missionPlanner;
            _settings        = settings;
            _client          = client;

            IsSignedIn = new ObservableProperty <bool>(false);
            _disposer.Add(IsSignedIn);
            WeatherReport = new ObservableProperty <WeatherInfo>();
            _disposer.Add(WeatherReport);
            SentTelemetry = new ObservableProperty <Unit>();
            _disposer.Add(SentTelemetry);

            try
            {
                _disposer.Add(_missionPlanner.FlightDataMap
                              .MapChanged
                              .Throttle(TimeSpan.FromSeconds(10))
                              .RepeatLastValue(TimeSpan.FromSeconds(60))
                              .Subscribe(async i => await UpdateMapData(_missionPlanner.FlightDataMap)));
            }
            catch
            {
            }

            try
            {
                _disposer.Add(_missionPlanner.FlightPlanningMap
                              .MapChanged
                              .Throttle(TimeSpan.FromSeconds(1))
                              .RepeatLastValue(TimeSpan.FromSeconds(60))
                              .Subscribe(async i => await UpdateMapData(_missionPlanner.FlightPlanningMap)));
            }
            catch
            {
            }

            try
            {
                _disposer.Add(flightDataService.FlightArmed
                              .Subscribe(async i => await SubmitFlightReport(i)));
                _disposer.Add(flightDataService.FlightDisarmed
                              .Subscribe(async i => await CompleteFlightReport(i)));
            }
            catch
            {
            }

            try
            {
                FilteredOut = _settings.MapFilters;
            }
            catch
            {
            }
        }