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);
        }
Ejemplo n.º 4
0
 public ConnectedUas(IUas uas, ITransport transport)
 {
     Uas       = uas;
     Transport = transport;
 }
Ejemplo n.º 5
0
        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;
            }
        }