Esempio n. 1
0
        internal virtual void Load(IProgressiveCommand progressiveCommand)
        {
            Gaz = FloatToInt32Converter.Convert(progressiveCommand.Gaz);
            Yaw = FloatToInt32Converter.Convert(progressiveCommand.Yaw);

            if (Math.Abs(progressiveCommand.Pitch) < Threshold && Math.Abs(progressiveCommand.Roll) < Threshold)
            {
                Pitch = 0;
                Roll  = 0;
                Mode  = 0;
            }
            else
            {
                Pitch = FloatToInt32Converter.Convert(progressiveCommand.Pitch);
                Roll  = FloatToInt32Converter.Convert(progressiveCommand.Roll);
                Mode  = Modes.EnableProgressiveCommands;
            }

            if (progressiveCommand.CombineYaw)
            {
                Mode |= Modes.CombineYaw;
            }

            if (progressiveCommand.AbsoluteControlMode)
            {
                float normalizedMagnetoPsi = NormalizeMagnetoPsiDegrees(progressiveCommand.ControllerHeading);
                MagnetoPsi = FloatToInt32Converter.Convert(normalizedMagnetoPsi);
                float normalizedMagnetoPsiAccuracy =
                    NormalizedMagnetoPsiAccuracy(progressiveCommand.ControllerHeadingAccuracy);
                MagnetoPsiAccuracy = FloatToInt32Converter.Convert(normalizedMagnetoPsiAccuracy);
                Mode |= Modes.AbsoluteControl;
            }
            else
            {
                MagnetoPsi         = 0;
                MagnetoPsiAccuracy = 0;
            }
        }
        internal virtual void SendProgressiveCommand(IProgressiveCommand args)
        {
            string command;

            ProgressiveCommandFormatter.Load(args);

            if (args.AbsoluteControlMode)
            {
                string message = string.Format("{0},{1},{2},{3},{4},{5},{6}", (int)ProgressiveCommandFormatter.Mode,
                                               ProgressiveCommandFormatter.Roll, ProgressiveCommandFormatter.Pitch, ProgressiveCommandFormatter.Gaz,
                                               ProgressiveCommandFormatter.Yaw, ProgressiveCommandFormatter.MagnetoPsi,
                                               ProgressiveCommandFormatter.MagnetoPsiAccuracy);
                command = CommandFormatter.CreateCommand(PcmdMagCommand, message);
            }
            else
            {
                string message = string.Format("{0},{1},{2},{3},{4}", (int)ProgressiveCommandFormatter.Mode,
                                               ProgressiveCommandFormatter.Roll, ProgressiveCommandFormatter.Pitch, ProgressiveCommandFormatter.Gaz,
                                               ProgressiveCommandFormatter.Yaw);
                command = CommandFormatter.CreateCommand(PcmdCommand, message);
            }

            CommandQueue.Enqueue(command);
        }