Exemplo n.º 1
0
 public void TelemetryCallBack(ServiceTelemetryDTO dto, int tempId)
 {
     if (ClientVehicle != null)
     {
         Mapper.Map <ServiceTelemetryDTO, ClientTelemetry>(dto, ClientVehicle.Telemetry);
         if (ClientVehicle.Telemetry.LatitudeGPS != null && ClientVehicle.Telemetry.LongitudeGPS != null)
         {
             if (!_initMapCenter)
             {
                 _initMapCenter = true;
                 MapViewModel.InitMapCenter(ClientVehicle.Telemetry.LatitudeGPS.Value, ClientVehicle.Telemetry.LongitudeGPS.Value);
             }
             MapViewModel.ChangeCoordinates(ClientVehicle.Telemetry.LatitudeGPS.Value, ClientVehicle.Telemetry.LongitudeGPS.Value, ClientVehicle.Telemetry.AltitudeAGL, ClientVehicle.Telemetry.Camera1Yaw);
         }
     }
 }
Exemplo n.º 2
0
        private void _telemetryReceived(int vehicleId, List <Telemetry> telemetry)
        {
            Debug.Assert(_telemetryDTOList.ContainsKey(vehicleId), "_telemetryDTOList.ContainsKey(vehicleId)");

            ServiceTelemetryDTO vehicleTelemetry = _telemetryDTOList[vehicleId].ServiceTelemetryDTO;

            try
            {
                foreach (Telemetry t in telemetry)
                {
                    if (t.TelemetryField.Code == "downlink_present" && t.TelemetryField.Semantic == Semantic.S_BOOL && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        //case TelemetryType.TT_DOWNLINK_CONNECTED:
                        var value = GetValueOrNull <bool>(t.Value).GetValueOrDefault();
                        vehicleTelemetry.DownlinkPresent = value;
                        _downlinkCb(vehicleId, value);
                    }
                    if (t.TelemetryField.Code == "altitude_amsl" && t.TelemetryField.Semantic == Semantic.S_ALTITUDE_AMSL && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        //case TelemetryType.TT_MSL_ALTITUDE:
                        vehicleTelemetry.AltitudeAMSL = GetValueOrNull <float>(t.Value);
                    }
                    if (t.TelemetryField.Code == "latitude" && t.TelemetryField.Semantic == Semantic.S_LATITUDE && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        //case TelemetryType.TT_LATITUDE:
                        vehicleTelemetry.Latitude = GetValueOrNull <double>(t.Value);
                    }
                    if (t.TelemetryField.Code == "longitude" && t.TelemetryField.Semantic == Semantic.S_LONGITUDE && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        //case TelemetryType.TT_LONGITUDE:
                        vehicleTelemetry.Longitude = GetValueOrNull <double>(t.Value);
                    }
                    if (t.TelemetryField.Code == "heading" && t.TelemetryField.Semantic == Semantic.S_HEADING && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        vehicleTelemetry.Heading = GetValueOrDefault <float>(t.Value);
                    }
                    if (t.TelemetryField.Code == "pitch" && t.TelemetryField.Semantic == Semantic.S_PITCH && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        vehicleTelemetry.Pitch = GetValueOrDefault <float>(t.Value);
                    }
                    if (t.TelemetryField.Code == "roll" && t.TelemetryField.Semantic == Semantic.S_ROLL && t.TelemetryField.Subsystem == Subsystem.S_FLIGHT_CONTROLLER)
                    {
                        vehicleTelemetry.Roll = GetValueOrDefault <float>(t.Value);
                    }
                    if (t.TelemetryField.Code == "heading" && t.TelemetryField.Semantic == Semantic.S_HEADING && t.TelemetryField.Subsystem == Subsystem.S_GIMBAL)
                    {
                        vehicleTelemetry.PayloadHeading = Math.Round(GetTelemetryValueOrDefault <double>(t.Value), 10);
                    }
                    if (t.TelemetryField.Code == "pitch" && t.TelemetryField.Semantic == Semantic.S_PITCH && t.TelemetryField.Subsystem == Subsystem.S_GIMBAL)
                    {
                        vehicleTelemetry.PayloadPitch = Math.Round(GetTelemetryValueOrDefault <double>(t.Value), 10);
                    }
                    if (t.TelemetryField.Code == "roll" && t.TelemetryField.Semantic == Semantic.S_ROLL && t.TelemetryField.Subsystem == Subsystem.S_GIMBAL)
                    {
                        vehicleTelemetry.PayloadRoll = Math.Round(GetTelemetryValueOrDefault <double>(t.Value), 10);
                    }
                    if (t.TelemetryField.Code == "video_stream_uri" && t.TelemetryField.Semantic == Semantic.S_STRING && t.TelemetryField.Subsystem == Subsystem.S_CAMERA)
                    {
                        string oldValue = vehicleTelemetry.VideoStreamUrl;

                        string videoStreamUri;
                        if (!t.Value.TryGetAsString(out videoStreamUri))
                        {
                            videoStreamUri = null;
                        }

                        if (oldValue != videoStreamUri)
                        {
                            vehicleTelemetry.VideoStreamUrl = videoStreamUri;
                            TelemetryVideoUrlChanged?.Invoke(new VideoSourceChangedDTO()
                            {
                                VehicleId       = vehicleId,
                                VideoSourceName = videoStreamUri
                            });
                        }
                    }
                }
            }
            catch
            {
                //Silent
            }
        }