public void TestForeflightSending()
        {
            FlightData data            = DEFUALT_DATA;
            string     GPS_STRING      = "XGPSMSFS 2020,5.5000,4.4000,1.1,3.30,2.2";
            string     ATTITUDE_STRING = "XATTMSFS 2020,8.8,6.6,7.7";

            var mock = new Mock <ForeFlightSender>(MockBehavior.Default, data, new UdpClient())
            {
                CallBase = true
            };

            ForeFlightSender sender = mock.Object;

            mock.Protected().SetupGet <FlightData>("FlightData").Returns(data);
            mock.Protected().Setup("Send", ItExpr.IsAny <string>())
            .Callback((string msg) => { });

            IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ForeFlightSender.DEFAULT_PORT);

            sender.EndPoint = endpoint;

            sender.Start();
            System.Threading.Thread.Sleep(5100);
            sender.Stop();
            System.Threading.Thread.Sleep(1100);

            mock.Protected().Verify("Send", Times.Exactly(5), ItExpr.Is <string>(s => GPS_STRING.Equals(s)));
            // giving some leway on Attitude sending just in case of lag.
            mock.Protected().Verify("Send", Times.AtLeast(31), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s)));
            mock.Protected().Verify("Send", Times.AtMost(32), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s)));
        }
        public void TestForeflightNoEndpoint()
        {
            FlightData       fd     = null;
            ForeFlightSender sender = new ForeFlightSender(ref fd, null);

            sender.Start();
        }
        public void TestForeflightSendingSkipInvalid(FlightData data)
        {
            string GPS_STRING      = "XGPSMSFS 2020,5.5000,4.4000,1.1,3.30,2.2";
            string ATTITUDE_STRING = "XATTMSFS 2020,8.8,6.6,7.7";

            var mock = new Mock <ForeFlightSender>(MockBehavior.Default, data, new UdpClient())
            {
                CallBase = true
            };

            ForeFlightSender sender = mock.Object;

            mock.Protected().SetupGet <FlightData>("FlightData").Returns(data);
            mock.Protected().Setup("Send", ItExpr.IsAny <string>())
            .Callback((string msg) => { });

            IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), ForeFlightSender.DEFAULT_PORT);

            sender.EndPoint = endpoint;

            sender.Start();
            System.Threading.Thread.Sleep(1100);
            sender.Stop();

            mock.Protected().Verify("Send", Times.Never(), ItExpr.Is <string>(s => GPS_STRING.Equals(s)));
            mock.Protected().Verify("Send", Times.Never(), ItExpr.Is <string>(s => ATTITUDE_STRING.Equals(s)));
        }
示例#4
0
        private void buttonForeflight_Click(object sender, EventArgs e)
        {
            if (null == foreFlightSender)
            {
                IPAddress foreflightIPAddress         = null;
                ForeFlightNetworkOption networkOption = cbForeflightConnectType.Items[cbForeflightConnectType.SelectedIndex] as ForeFlightNetworkOption;
                switch (networkOption.NetworkType)
                {
                case ForeFlightNetworkOption.NetworkTypes.DirectIPv4:
                    foreflightIPAddress = IPAddress.Parse(settings.ForeFlightDirectIp);
                    break;

                case ForeFlightNetworkOption.NetworkTypes.IPv4NetworkBroadcast:
                case ForeFlightNetworkOption.NetworkTypes.IPv6LinkLocal:
                    foreflightIPAddress = networkOption.Address;
                    break;
                }

                foreFlightSender = new ForeFlightSender(ref flightData, new UdpClient(
                                                            networkOption.NetworkType == NetworkTypes.IPv6LinkLocal ? AddressFamily.InterNetworkV6 : AddressFamily.InterNetwork
                                                            ));
                foreFlightSender.OnForeFlightSenderError += ForeFlightSender_OnForeFlightSenderError;
                IPEndPoint endpoint = new IPEndPoint(
                    foreflightIPAddress, ForeFlightSender.DEFAULT_PORT);
                foreFlightSender.EndPoint = endpoint;
                foreFlightSender.Start();
                SetForeflightControls(ConnectorState.Connected);
                labelIncompleteData.Visible = !ForeFlightSender.VerifyCompleteFlightData(flightData) && null != foreFlightSender;
                labelIncompleteData.Invalidate();
            }
            else
            {
                foreFlightSender.Stop();
                foreFlightSender = null;
                GC.Collect();
                SetForeflightControls(ConnectorState.Disconnected);
            }
        }
示例#5
0
        private void FlightData_OnFlightDataUpdate(object sender, FlightData.FlightDataUpdatedEventArgs e)
        {
            if (0 != (e.Field | FlightDataField.Altitude))
            {
                UpdateValueTextBox(tbAltitude, flightData.AltitudeFt, 2, " ft");
            }
            if (0 != (e.Field | FlightDataField.GroundSpeed))
            {
                UpdateValueTextBox(tbGroundSpeed, flightData.GroundSpeedKt, 1, " knots");
            }
            if (0 != (e.Field | FlightDataField.GroundTrack))
            {
                UpdateValueTextBox(tbGroundTrack, flightData.GroundTrackDegrees, 1, "°");
            }
            if (0 != (e.Field | FlightDataField.TrueHeading))
            {
                UpdateValueTextBox(tbHeading, flightData.TrueHeadingDegrees, 1, "°");
            }
            if (0 != (e.Field | FlightDataField.Latitude))
            {
                UpdateValueTextBox(tbLatitude, flightData.Latitude, 4, "°");
            }
            if (0 != (e.Field | FlightDataField.Longitude))
            {
                UpdateValueTextBox(tbLongitude, flightData.Longitude, 4, "°");
            }
            if (0 != (e.Field | FlightDataField.Pitch))
            {
                UpdateValueTextBox(tbPitch, flightData.PitchDegrees, 2, "°");
            }
            if (0 != (e.Field | FlightDataField.Roll))
            {
                UpdateValueTextBox(tbRoll, flightData.RollDegrees, 2, "°");
            }

            labelIncompleteData.Visible = !ForeFlightSender.VerifyCompleteFlightData(flightData) && null != foreFlightSender;
            labelIncompleteData.Invalidate();
        }