protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.Frame> e) { _uas = SLWIOC.Get <IConnectedUasManager>().Active.Uas; _uas.Attitude.PropertyChanged += Attitude_PropertyChanged; DataContext = _uas; var gpsBindingHelper = new BindingHelper <GPSStatus>(_gpsStatus); gpsBindingHelper.Add(_uas.GPSs.First()).For(mod => mod.FixType, ctl => ctl.FixType); gpsBindingHelper.Add(_uas.GPSs.First()).For(mod => mod.HDOP, ctl => ctl.HDOP); gpsBindingHelper.Add(_uas.GPSs.First()).For(mod => mod.VDOP, ctl => ctl.VDOP); gpsBindingHelper.Add(_uas.GPSs.First()).For(mod => mod.SateliteCount, ctl => ctl.SatCount); var sysStatusbindingHelper = new BindingHelper <Controls.SystemStatus>(_systemStatus); sysStatusbindingHelper.Add(_uas.SystemStatus).For(mod => mod.Armed, ctl => ctl.Armed); sysStatusbindingHelper.Add(_uas.Batteries.First()).For(mod => mod.Voltage, ctl => ctl.BatteryVoltage); sysStatusbindingHelper.Add(_uas.Batteries.First()).For(mod => mod.RemainingPercent, ctl => ctl.PercentRemaining); sysStatusbindingHelper.Add(_uas.Batteries.First()).For(mod => mod.TimeRemaining, ctl => ctl.TimeRemaining); var altStatusbindingHelper = new BindingHelper <Controls.AltitudeIndicator>(_altitudeIndicator); altStatusbindingHelper.Add(_uas).For(mod => mod.CurrentLocation, ctl => ctl.Location); // _bindignHelper.Add(_uas.GPSs.First(), () => _gpsStatus.FixType, nameof(GPS.FixType)); base.OnElementChanged(e); Background = new SolidColorBrush(Colors.LightBlue); _video.GetDevices(); }
public void Start(IUas uas, ITransport transport) { _transport = transport; foreach (var config in _configManager.Current.StreamReadConfigurations) { StartDataStream(config); } }
protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.Frame> e) { if (e.NewElement != null) { SLWIOC.Get <ILocationProvider>().LocationUpdated += _locationProvier_LocationUpdated; _uas = SLWIOC.Get <IConnectedUasManager>().Active.Uas; _navigation = (e.NewElement.BindingContext as INavigationProvider).Navigation; if (_navigation == null) { throw new ArgumentException("Argument Not Set"); } _navigation.PropertyChanged += _navigation_PropertyChanged; } base.OnElementChanged(e); }
public ConnectedUas(IUas uas, ITransport transport) { Uas = uas; Transport = transport; }
public void UpdateUas(IUas uas, UasMessage message) { var apm = uas as APM; switch (message.MessageId) { case Core.MavLink.UasMessages.Heartbeat: uas.FlightController.Update(message as UasHeartbeat); uas.SystemStatus.Update(message as UasHeartbeat); break; case Core.MavLink.UasMessages.GpsRawInt: uas.GPSs.First().Update(message as UasGpsRawInt); break; case UasMessages.GlobalPositionInt: var pos = message as UasGlobalPositionInt; uas.CurrentLocation = new LagoVista.Core.Models.Geo.GeoLocation(pos.Lat.ToLatLon(), pos.Lon.ToLatLon(), pos.Alt / 1000f); break; case UasMessages.SysStatus: uas.Batteries.First().Update(message as UasSysStatus); uas.Sensors.Update(message as UasSysStatus); break; case UasMessages.AutopilotVersion: uas.FlightController.Update(message as UasAutopilotVersion); break; case UasMessages.Hwstatus: uas.FlightController.Update(message as UasHwstatus); break; case UasMessages.PowerStatus: uas.PowerStatus.Update(message as UasPowerStatus); break; case UasMessages.Attitude: uas.Attitude.Update(message as UasAttitude); break; case UasMessages.BatteryStatus: uas.Batteries.First().Update(message as UasBatteryStatus); break; case UasMessages.RadioStatus: uas.Comms.Update(message as UasRadioStatus, 0); break; case UasMessages.MagCalProgress: /* Compass Calibration Progress */ break; case UasMessages.CompassmotStatus: /* Compass Calibration Status */ break; case UasMessages.EkfStatusReport: uas.EKFStatus.Update(message as UasEkfStatusReport); break; case UasMessages.RcChannels: var rcRaw = message as UasRcChannels; uas.Channels[0].RawValue = rcRaw.Chan1Raw; uas.Channels[1].RawValue = rcRaw.Chan2Raw; uas.Channels[2].RawValue = rcRaw.Chan3Raw; uas.Channels[3].RawValue = rcRaw.Chan4Raw; uas.Channels[4].RawValue = rcRaw.Chan5Raw; uas.Channels[5].RawValue = rcRaw.Chan6Raw; uas.Channels[6].RawValue = rcRaw.Chan7Raw; uas.Channels[7].RawValue = rcRaw.Chan8Raw; uas.Channels[8].RawValue = rcRaw.Chan9Raw; uas.Channels[9].RawValue = rcRaw.Chan10Raw; uas.Channels[10].RawValue = rcRaw.Chan11Raw; uas.Channels[11].RawValue = rcRaw.Chan12Raw; uas.Channels[12].RawValue = rcRaw.Chan13Raw; uas.Channels[13].RawValue = rcRaw.Chan14Raw; uas.Channels[14].RawValue = rcRaw.Chan15Raw; uas.Channels[15].RawValue = rcRaw.Chan16Raw; break; case UasMessages.Rangefinder: uas.RangeFinder.Update(message as UasRangefinder); break; case UasMessages.RcChannelsScaled: var rc = message as UasRcChannelsScaled; uas.Channels[0].Value = rc.Chan1Scaled; uas.Channels[1].Value = rc.Chan2Scaled; uas.Channels[2].Value = rc.Chan3Scaled; uas.Channels[3].Value = rc.Chan4Scaled; uas.Channels[4].Value = rc.Chan5Scaled; uas.Channels[5].Value = rc.Chan6Scaled; uas.Channels[6].Value = rc.Chan7Scaled; uas.Channels[7].Value = rc.Chan8Scaled; break; case UasMessages.HighLatency: var hlm = message as UasHighLatency; uas.GPSs.First().FixType = ((GpsFixType)hlm.GpsFixType).ToString(); break; case UasMessages.Radio: var radio = message as UasRadio; break; case UasMessages.VfrHud: /* For fixed wing */ break; case Core.MavLink.UasMessages.RawImu: uas.Acc.First().Update(message as UasRawImu, DOFSensorType.Accelerometer); uas.Gyro.First().Update(message as UasRawImu, DOFSensorType.Gyro); uas.Magnometer.First().Update(message as UasRawImu, DOFSensorType.Magnometer); break; } }