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); } } }
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 } }