private void SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsMiG21Bis knob)
        {
            if (!DataHasBeenReceivedFromDCSBIOS)
            {
                //Don't start communication with DCS-BIOS before we have had a first contact from "them"
                return;
            }
            switch (knob)
            {
            case RadioPanelPZ69KnobsMiG21Bis.UpperFreqSwitch:
            {
                switch (_currentUpperRadioMode)
                {
                case CurrentMiG21BisRadioMode.Radio:
                {
                    DCSBIOS.Send(RadioOnOffToggleCommand);
                    break;
                }

                case CurrentMiG21BisRadioMode.RSBN:
                {
                    DCSBIOS.Send(SelectRSBNCommand);
                    break;
                }

                case CurrentMiG21BisRadioMode.ARC:
                {
                    DCSBIOS.Send(SelectARCCommand);
                    break;
                }
                }
                break;
            }

            case RadioPanelPZ69KnobsMiG21Bis.LowerFreqSwitch:
            {
                switch (_currentLowerRadioMode)
                {
                case CurrentMiG21BisRadioMode.Radio:
                {
                    DCSBIOS.Send(RadioOnOffToggleCommand);
                    break;
                }

                case CurrentMiG21BisRadioMode.RSBN:
                {
                    DCSBIOS.Send(SelectRSBNCommand);
                    break;
                }

                case CurrentMiG21BisRadioMode.ARC:
                {
                    DCSBIOS.Send(SelectARCCommand);
                    break;
                }
                }
                break;
            }
            }
        }
        public override void Dispose()
        {
            EventHandlers.DetachDCSBIOSDecoder(this);
            DCSBIOSStringManager.DetachListener(this);
            DCSBIOS.GetInstance()?.DetachDataReceivedListener(this);
            _shutdown = true;
            try
            {
                //_autoResetEvent.Set();
            }
            catch (Exception e)
            {
                Debugger.Break();
            }
            try
            {
                if (_imageUpdateTread != null && (_imageUpdateTread.ThreadState & (ThreadState.Aborted | ThreadState.AbortRequested)) == 0)
                {
                    _imageUpdateTread.Abort();
                }
            }
            catch (Exception)
            {}

            base.Dispose();
        }
Beispiel #3
0
        public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios)
        {
            InitializeComponent();
            ParentTabItem = parentTabItem;

            //no worky worky for this library hidSkeleton.HIDReadDevice.Removed += DeviceRemovedHandler;

            _streamDeckPanel = new StreamDeckPanel(panelType, hidSkeleton);
            _streamDeckPanel.Attach((IGamingPanelListener)this);
            globalHandler.Attach(_streamDeckPanel);
            GlobalHandler = globalHandler;
            _dcsbios      = dcsbios;

            UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel);
            UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel);

            StackPanelButtonUI.Children.Clear();
            switch (panelType)
            {
            case GamingPanelEnum.StreamDeckMini:
            {
                var child = new UserControlStreamDeckUIMini(_streamDeckPanel);
                _uiButtonGrid = child;
                StackPanelButtonUI.Children.Add(child);

                break;
            }

            case GamingPanelEnum.StreamDeck:
            {
                var child = new UserControlStreamDeckUINormal(_streamDeckPanel);
                _uiButtonGrid = child;
                StackPanelButtonUI.Children.Add(child);

                break;
            }

            case GamingPanelEnum.StreamDeckXL:
            {
                var child = new UserControlStreamDeckUIXL(_streamDeckPanel);
                _uiButtonGrid = child;
                StackPanelButtonUI.Children.Add(child);
                break;
            }
            }


            EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonAction);
            EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonFace);
            EventHandlers.AttachStreamDeckListener(_uiButtonGrid);
            EventHandlers.AttachStreamDeckConfigListener(_uiButtonGrid);
            EventHandlers.AttachStreamDeckListener(this);

            UCStreamDeckButtonAction.GlobalHandler = GlobalHandler;
            UCStreamDeckButtonFace.GlobalHandler   = GlobalHandler;

            UCStreamDeckButtonFace.SetStreamDeckPanel(_streamDeckPanel);
            UCStreamDeckButtonAction.SetStreamDeckPanel(_streamDeckPanel);
        }
Beispiel #4
0
        private void SendDCSBIOSCommandsThread(List <DCSBIOSInput> dcsbiosInputs, CancellationToken cancellationToken)
        {
            CancelSendDCSBIOSCommands = false;
            try
            {
                try
                {
                    if (_isSequenced)
                    {
                        if (dcsbiosInputs.Count == 0)
                        {
                            return;
                        }
                        if (_sequenceIndex <= dcsbiosInputs.Count - 1)
                        {
                            var command = dcsbiosInputs[_sequenceIndex].SelectedDCSBIOSInput.GetDCSBIOSCommand();
                            Thread.Sleep(dcsbiosInputs[_sequenceIndex].SelectedDCSBIOSInput.Delay);
                            if (CancelSendDCSBIOSCommands || cancellationToken.IsCancellationRequested)
                            {
                                return;
                            }
                            DCSBIOS.Send(command);
                            _sequenceIndex++;

                            if (_sequenceIndex >= dcsbiosInputs.Count)
                            {
                                _sequenceIndex = 0;
                            }
                        }
                    }
                    else
                    {
                        foreach (var dcsbiosInput in dcsbiosInputs)
                        {
                            if (CancelSendDCSBIOSCommands || cancellationToken.IsCancellationRequested)
                            {
                                return;
                            }
                            var command = dcsbiosInput.SelectedDCSBIOSInput.GetDCSBIOSCommand();
                            Thread.Sleep(dcsbiosInput.SelectedDCSBIOSInput.Delay);
                            if (CancelSendDCSBIOSCommands || cancellationToken.IsCancellationRequested)
                            {
                                return;
                            }
                            DCSBIOS.Send(command);
                        }
                    }
                }
                catch (ThreadAbortException)
                { }
                catch (Exception ex)
                {
                    Common.LogError(ex);
                }
            }
            finally
            {
            }
        }
        private void SendFrequencyToDCSBIOS(RadioPanelKnobAV8BNA knob)
        {
            if (IgnoreSwitchButtonOnce() && (knob.RadioPanelPZ69Knob == RadioPanelPZ69KnobsAV8BNA.UPPER_FREQ_SWITCH || knob.RadioPanelPZ69Knob == RadioPanelPZ69KnobsAV8BNA.LOWER_FREQ_SWITCH))
            {
                //Don't do anything on the very first button press as the panel sends ALL
                //switches when it is manipulated the first time
                //This would cause unintended sync.
                return;
            }
            if (!DataHasBeenReceivedFromDCSBIOS)
            {
                //Don't start communication with DCS-BIOS before we have had a first contact from "them"
                return;
            }
            switch (knob.RadioPanelPZ69Knob)
            {
            case RadioPanelPZ69KnobsAV8BNA.UPPER_FREQ_SWITCH:
            {
                switch (_currentUpperRadioMode)
                {
                case CurrentAV8BNARadioMode.COMM1:
                {
                    DCSBIOS.Send(knob.IsOn ? COMM1_PULL_PRESS : COMM1_PULL_RELEASE);
                    ShowFrequenciesOnPanel();
                    break;
                }

                case CurrentAV8BNARadioMode.COMM2:
                {
                    DCSBIOS.Send(knob.IsOn ? COMM2_PULL_PRESS : COMM2_PULL_RELEASE);
                    ShowFrequenciesOnPanel();
                    break;
                }
                }
                break;
            }

            case RadioPanelPZ69KnobsAV8BNA.LOWER_FREQ_SWITCH:
            {
                switch (_currentLowerRadioMode)
                {
                case CurrentAV8BNARadioMode.COMM1:
                {
                    DCSBIOS.Send(knob.IsOn ? COMM1_PULL_PRESS : COMM1_PULL_RELEASE);
                    ShowFrequenciesOnPanel();
                    break;
                }

                case CurrentAV8BNARadioMode.COMM2:
                {
                    DCSBIOS.Send(knob.IsOn ? COMM2_PULL_PRESS : COMM2_PULL_RELEASE);
                    ShowFrequenciesOnPanel();
                    break;
                }
                }
                break;
            }
            }
        }
 public void SendDCSBIOSCommands()
 {
     foreach (var dcsbiosInput in _dcsbiosInputs)
     {
         var command = dcsbiosInput.SelectedDCSBIOSInput.GetDCSBIOSCommand();
         DCSBIOS.Send(command);
     }
 }
 public DCSBIOSDecoder()
 {
     _jaceId           = RandomFactory.Get();
     _imageUpdateTread = new Thread(ImageRefreshingThread);
     _imageUpdateTread.Start();
     DCSBIOS.GetInstance().AttachDataReceivedListener(this);
     EventHandlers.AttachDCSBIOSDecoder(this);
 }
Beispiel #8
0
        public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios)
        {
            InitializeComponent();
            _parentTabItem       = parentTabItem;
            _parentTabItemHeader = _parentTabItem.Header.ToString();
            _streamDeckPanel     = new StreamDeckPanel(panelType, hidSkeleton);
            _streamDeckPanel.Attach((IGamingPanelListener)this);
            globalHandler.Attach(_streamDeckPanel);
            _globalHandler = globalHandler;
            _dcsbios       = dcsbios;


            StackPanelButtonUI.Children.Clear();
            switch (panelType)
            {
            case GamingPanelEnum.StreamDeckMini:
            {
                var child = new UserControlStreamDeckUIMini();
                child.PanelHash = _streamDeckPanel.PanelHash;
                _uiButtonGrid   = child;
                StackPanelButtonUI.Children.Add(child);

                break;
            }

            case GamingPanelEnum.StreamDeck:
            {
                var child = new UserControlStreamDeckUINormal();
                child.PanelHash = _streamDeckPanel.PanelHash;
                _uiButtonGrid   = child;
                StackPanelButtonUI.Children.Add(child);

                break;
            }

            case GamingPanelEnum.StreamDeckXL:
            {
                var child = new UserControlStreamDeckUIXL();
                child.PanelHash = _streamDeckPanel.PanelHash;
                _uiButtonGrid   = child;
                StackPanelButtonUI.Children.Add(child);
                break;
            }
            }


            EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonAction);
            EventHandlers.AttachStreamDeckListener(UCStreamDeckButtonFace);
            EventHandlers.AttachStreamDeckListener(_uiButtonGrid);
            EventHandlers.AttachStreamDeckConfigListener(_uiButtonGrid);
            EventHandlers.AttachStreamDeckListener(this);

            UCStreamDeckButtonAction.GlobalHandler = _globalHandler;
            UCStreamDeckButtonFace.GlobalHandler   = _globalHandler;

            UCStreamDeckButtonFace.PanelHash   = _streamDeckPanel.PanelHash;
            UCStreamDeckButtonAction.PanelHash = _streamDeckPanel.PanelHash;
        }
        public JaceSandboxWindow(DCSBIOS dcsbios)
        {
            _dcsbios = dcsbios;
            _dcsbios.AttachDataReceivedListener(this);
            DCSBIOSControlLocator.LoadControls();
            _dcsbiosControls = DCSBIOSControlLocator.GetIntegerOutputControls();
            var thread = new Thread(ThreadLoop);

            thread.Start();
            InitializeComponent();
        }
 public override void AfterClone()
 {
     DCSBIOS.GetInstance().AttachDataReceivedListener(this);
     //_autoResetEvent = new AutoResetEvent(false);
     if (_imageUpdateTread != null)
     {
         try
         {
             _imageUpdateTread.Abort();
         }
         catch (Exception) { }
     }
     _imageUpdateTread = new Thread(ImageRefreshingThread);
     _imageUpdateTread.Start();
 }
Beispiel #11
0
        public StreamDeckUserControl(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, TabItem parentTabItem, IGlobalHandler globalHandler, DCSBIOS dcsbios)
        {
            InitializeComponent();
            _parentTabItem       = parentTabItem;
            _parentTabItemHeader = _parentTabItem.Header.ToString();
            _streamDeck          = new StreamDeckPanel(this, panelType, hidSkeleton);
            _streamDeck.Attach((IGamingPanelListener)this);
            globalHandler.Attach(_streamDeck);
            _globalHandler = globalHandler;

            _dcsbios = dcsbios;

            StackPanelButtonUI.Children.Clear();
            switch (panelType)
            {
            case GamingPanelEnum.StreamDeckMini:
            case GamingPanelEnum.StreamDeck:
            {
                var child = new UserControlStreamDeckUINormal();
                _streamDeckUI = child;
                child.SetSDUIParent(this);
                StackPanelButtonUI.Children.Add(child);

                break;
            }

            case GamingPanelEnum.StreamDeckXL:
            {
                var child = new UserControlStreamDeckUIXL();
                _streamDeckUI = child;
                child.SetSDUIParent(this);
                StackPanelButtonUI.Children.Add(child);
                break;
            }
            }

            UCStreamDeckButtonAction.SDUIParent    = this;
            UCStreamDeckButtonAction.GlobalHandler = _globalHandler;
            UCStreamDeckButtonFace.SDUIParent      = this;
            UCStreamDeckButtonFace.GlobalHandler   = _globalHandler;
            UCStreamDeckButtonFace.UserControlStreamDeckButtonAction = UCStreamDeckButtonAction;
            UCStreamDeckButtonAction.UserControlStreamDeckButtonFace = UCStreamDeckButtonFace;
            _streamDeckUI.HideAllDotImages();
        }
Beispiel #12
0
        private void SendDecVHFPresetCommand()
        {
            Interlocked.Increment(ref _doUpdatePanelLCD);
            lock (_lockVhf1DialObject1)
            {
                switch (_vhf1CockpitPresetActiveButton)
                {
                case 0:
                {
                    break;
                }

                case 1:
                {
                    DCSBIOS.Send("VHF_RADIO_ON_OFF 1\n");
                    break;
                }

                case 2:
                {
                    DCSBIOS.Send("VHF_RADIO_CHAN_A 1\n");
                    break;
                }

                case 3:
                {
                    DCSBIOS.Send("VHF_RADIO_CHAN_B 1\n");
                    break;
                }

                case 4:
                {
                    DCSBIOS.Send("VHF_RADIO_CHAN_C 1\n");
                    break;
                }
                }
            }
        }
Beispiel #13
0
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobAJS37 = (RadioPanelKnobAJS37)o;
                    if (radioPanelKnobAJS37.IsOn)
                    {
                        switch (radioPanelKnobAJS37.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_BIG_DIAL_INCREASE_COMMAND : FR22_RIGHT_BIG_DIAL_INCREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipTilsChannelDialChange())
                                {
                                    DCSBIOS.Send(TILS_CHANNEL_DIAL_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_BIG_DIAL_DECREASE_COMMAND : FR22_RIGHT_BIG_DIAL_DECREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipTilsChannelDialChange())
                                {
                                    DCSBIOS.Send(TILS_CHANNEL_DIAL_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_SMALL_DIAL_INCREASE_COMMAND : FR22_RIGHT_SMALL_DIAL_INCREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipMasterModeSelectorChange())
                                {
                                    DCSBIOS.Send(MASTER_MODE_SELECTOR_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_SMALL_DIAL_DECREASE_COMMAND : FR22_RIGHT_SMALL_DIAL_DECREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipMasterModeSelectorChange())
                                {
                                    DCSBIOS.Send(MASTER_MODE_SELECTOR_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_BIG_DIAL_INCREASE_COMMAND : FR22_RIGHT_BIG_DIAL_INCREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipTilsChannelDialChange())
                                {
                                    DCSBIOS.Send(TILS_CHANNEL_DIAL_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_BIG_DIAL_DECREASE_COMMAND : FR22_RIGHT_BIG_DIAL_DECREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipTilsChannelDialChange())
                                {
                                    DCSBIOS.Send(TILS_CHANNEL_DIAL_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_SMALL_DIAL_INCREASE_COMMAND : FR22_RIGHT_SMALL_DIAL_INCREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipMasterModeSelectorChange())
                                {
                                    DCSBIOS.Send(MASTER_MODE_SELECTOR_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentAJS37RadioMode.FR22:
                            {
                                DCSBIOS.Send(_fr22DialSideSelected == FR22DialSideSelected.Left ? FR22_LEFT_SMALL_DIAL_DECREASE_COMMAND : FR22_RIGHT_SMALL_DIAL_DECREASE_COMMAND);
                                break;
                            }

                            case CurrentAJS37RadioMode.FR24:
                            {
                                break;
                            }

                            case CurrentAJS37RadioMode.TILS:
                            {
                                if (!SkipMasterModeSelectorChange())
                                {
                                    DCSBIOS.Send(MASTER_MODE_SELECTOR_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentAJS37RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }
                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
Beispiel #14
0
        public void PZ69KnobChanged(bool isFirstReport, IEnumerable <object> hashSet)
        {
            try
            {
                Interlocked.Add(ref _doUpdatePanelLCD, 1);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobAJS37)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsAJS37.UPPER_FR22:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.FR22);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_FR24:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.FR24);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_TILS:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.TILS);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FR22:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.FR22);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FR24:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.FR24);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_TILS:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.TILS);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE0:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE0:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE3:
                        {
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            //Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH:
                        {
                            if (_currentUpperRadioMode == CurrentAJS37RadioMode.FR22)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    _fr22DialSideSelected = _fr22DialSideSelected == FR22DialSideSelected.Left ? FR22DialSideSelected.Right : FR22DialSideSelected.Left;
                                }
                            }
                            else if (_currentUpperRadioMode == CurrentAJS37RadioMode.FR24 && radioPanelKnob.IsOn)
                            {
                            }
                            else if (_currentUpperRadioMode == CurrentAJS37RadioMode.TILS && radioPanelKnob.IsOn)
                            {
                                DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                            }
                            else if (radioPanelKnob.IsOn)
                            {
                                SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentAJS37RadioMode.FR22)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    _fr22DialSideSelected = _fr22DialSideSelected == FR22DialSideSelected.Left ? FR22DialSideSelected.Right : FR22DialSideSelected.Left;
                                }
                            }
                            else if (_currentLowerRadioMode == CurrentAJS37RadioMode.FR24 && radioPanelKnob.IsOn)
                            {
                            }
                            else if (_currentLowerRadioMode == CurrentAJS37RadioMode.TILS && radioPanelKnob.IsOn)
                            {
                                DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                            }
                            else if (radioPanelKnob.IsOn)
                            {
                                SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH);
                            }
                            break;
                        }
                        }
                    }
                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
Beispiel #15
0
        private void SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsAJS37 knob)
        {
            try
            {
                if (IgnoreSwitchButtonOnce() && (knob == RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH || knob == RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH))
                {
                    //Don't do anything on the very first button press as the panel sends ALL
                    //switches when it is manipulated the first time
                    //This would cause unintended sync.
                    return;
                }
                if (!DataHasBeenReceivedFromDCSBIOS)
                {
                    //Don't start communication with DCS-BIOS before we have had a first contact from "them"
                    return;
                }
                switch (knob)
                {
                case RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH:
                {
                    switch (_currentUpperRadioMode)
                    {
                    case CurrentAJS37RadioMode.FR22:
                    {
                        break;
                    }

                    case CurrentAJS37RadioMode.FR24:
                    {
                        break;
                    }

                    case CurrentAJS37RadioMode.TILS:
                    {
                        DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                        break;
                    }

                    case CurrentAJS37RadioMode.NOUSE:
                    {
                        break;
                    }
                    }
                    break;
                }

                case RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH:
                {
                    switch (_currentLowerRadioMode)
                    {
                    case CurrentAJS37RadioMode.FR22:
                    {
                        break;
                    }

                    case CurrentAJS37RadioMode.FR24:
                    {
                        break;
                    }

                    case CurrentAJS37RadioMode.TILS:
                    {
                        DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                        break;
                    }

                    case CurrentAJS37RadioMode.NOUSE:
                    {
                        break;
                    }
                    }
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            if (SkipCurrentFrequencyChange())
            {
                return;
            }

            foreach (var o in hashSet)
            {
                var radioPanelKnobAV8BNA = (RadioPanelKnobAV8BNA)o;
                if (radioPanelKnobAV8BNA.IsOn)
                {
                    switch (radioPanelKnobAV8BNA.RadioPanelPZ69Knob)
                    {
                    case RadioPanelPZ69KnobsAV8BNA.UPPER_LARGE_FREQ_WHEEL_INC:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            if (_comm1ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM1_CHANNEL_INC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM1_CHANNEL_INC);
                            }
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            if (_comm2ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM2_CHANNEL_INC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM2_CHANNEL_INC);
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.UPPER_LARGE_FREQ_WHEEL_DEC:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            if (_comm1ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM1_CHANNEL_DEC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM1_CHANNEL_DEC);
                            }
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            if (_comm2ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM2_CHANNEL_DEC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM2_CHANNEL_DEC);
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.UPPER_SMALL_FREQ_WHEEL_INC:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            DCSBIOS.Send(COMM1_VOL_INC);
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            DCSBIOS.Send(COMM2_VOL_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.UPPER_SMALL_FREQ_WHEEL_DEC:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            DCSBIOS.Send(COMM1_VOL_DEC);
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            DCSBIOS.Send(COMM2_VOL_DEC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.LOWER_LARGE_FREQ_WHEEL_INC:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            if (_comm1ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM1_CHANNEL_INC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM1_CHANNEL_INC);
                            }
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            if (_comm2ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM2_CHANNEL_INC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM2_CHANNEL_INC);
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.LOWER_LARGE_FREQ_WHEEL_DEC:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            if (_comm1ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM1_CHANNEL_DEC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM1_CHANNEL_DEC);
                            }
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            if (_comm2ChannelClickSpeedDetector.ClickAndCheck())
                            {
                                //No need for turbo
                                DCSBIOS.Send(COMM2_CHANNEL_DEC);
                            }
                            else
                            {
                                DCSBIOS.Send(COMM2_CHANNEL_DEC);
                            }
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.LOWER_SMALL_FREQ_WHEEL_INC:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            DCSBIOS.Send(COMM1_VOL_INC);
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            DCSBIOS.Send(COMM2_VOL_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsAV8BNA.LOWER_SMALL_FREQ_WHEEL_DEC:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentAV8BNARadioMode.COMM1:
                        {
                            DCSBIOS.Send(COMM1_VOL_DEC);
                            break;
                        }

                        case CurrentAV8BNARadioMode.COMM2:
                        {
                            DCSBIOS.Send(COMM2_VOL_DEC);
                            break;
                        }
                        }
                        break;
                    }
                    }
                }
            }
            Interlocked.Add(ref _doUpdatePanelLCD, 1);
            ShowFrequenciesOnPanel();
        }
 public DCSBIOSDecoder()
 {
     DCSBIOS.GetInstance().AttachDataReceivedListener(this);
 }
Beispiel #18
0
        public void PZ69KnobChanged(IEnumerable <object> hashSet)
        {
            try
            {
                Common.DebugP("Entering Bf 109 Radio PZ69KnobChanged()");
                Interlocked.Add(ref _doUpdatePanelLCD, 1);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobBf109)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsBf109.UPPER_FUG16ZY:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentBf109RadioMode.FUG16ZY);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentBf109RadioMode.IFF);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_HOMING:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentBf109RadioMode.HOMING);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsBf109.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsBf109.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsBf109.UPPER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentBf109RadioMode.NOUSE);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_FUG16ZY:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentBf109RadioMode.FUG16ZY);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentBf109RadioMode.IFF);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_HOMING:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentBf109RadioMode.HOMING);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsBf109.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsBf109.LOWER_NO_USE3:
                        case RadioPanelPZ69KnobsBf109.LOWER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentBf109RadioMode.NOUSE);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsBf109.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsBf109.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsBf109.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsBf109.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsBf109.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsBf109.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsBf109.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            //Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentBf109RadioMode.IFF)
                            {
                                DCSBIOS.Send(radioPanelKnob.IsOn ? FU_G25_A_TEST_COMMAND_INC : FU_G25_A_TEST_COMMAND_DEC);
                            }
                            if (_currentUpperRadioMode == CurrentBf109RadioMode.HOMING)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    lock (_lockHomingDialObject1)
                                    {
                                        DCSBIOS.Send(_homingCockpitDialPos == 1 ? HOMING_COMMAND_DEC : HOMING_COMMAND_INC);
                                    }
                                }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentBf109RadioMode.IFF)
                            {
                                DCSBIOS.Send(radioPanelKnob.IsOn ? FU_G25_A_TEST_COMMAND_INC : FU_G25_A_TEST_COMMAND_DEC);
                            }
                            if (_currentLowerRadioMode == CurrentBf109RadioMode.HOMING)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    lock (_lockHomingDialObject1)
                                    {
                                        DCSBIOS.Send(_homingCockpitDialPos == 1 ? HOMING_COMMAND_DEC : HOMING_COMMAND_INC);
                                    }
                                }
                            }
                            break;
                        }
                        }
                    }
                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                Common.LogError(82006, ex);
            }
            Common.DebugP("Leaving Bf 109 Radio PZ69KnobChanged()");
        }
Beispiel #19
0
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobP51D = (RadioPanelKnobP51D)o;
                    if (radioPanelKnobP51D.IsOn)
                    {
                        switch (radioPanelKnobP51D.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsP51D.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendIncVHFPresetCommand();
                                }

                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendDecVHFPresetCommand();
                                }

                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(VHF1_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(VHF1_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendIncVHFPresetCommand();
                                }

                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendDecVHFPresetCommand();
                                }

                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(VHF1_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(VHF1_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }

                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Beispiel #20
0
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobFw190 = (RadioPanelKnobFw190)o;
                    if (radioPanelKnobFw190.IsOn)
                    {
                        switch (radioPanelKnobFw190.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_INC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25_AIFF_COMMAND_INC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_DEC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25_AIFF_COMMAND_DEC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Fine tuning
                                DCSBIOS.Send(FUG16_ZY_FINE_TUNE_COMMAND_INC);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Fine tuning
                                DCSBIOS.Send(FUG16_ZY_FINE_TUNE_COMMAND_DEC);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_INC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25_AIFF_COMMAND_INC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_DEC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25_AIFF_COMMAND_DEC);
                                }

                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Fine tuning
                                DCSBIOS.Send(FUG16_ZY_FINE_TUNE_COMMAND_INC);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                // Fine tuning
                                DCSBIOS.Send(FUG16_ZY_FINE_TUNE_COMMAND_DEC);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }

                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Beispiel #21
0
        public void PZ69KnobChanged(bool isFirstReport, IEnumerable <object> hashSet)
        {
            if (isFirstReport)
            {
                return;
            }

            try
            {
                Interlocked.Increment(ref _doUpdatePanelLCD);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobFw190)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsFw190.UPPER_FUG16ZY:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentFw190RadioMode.FUG16ZY);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentFw190RadioMode.IFF);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_HOMING:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentFw190RadioMode.HOMING);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsFw190.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsFw190.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsFw190.UPPER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentFw190RadioMode.NOUSE);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_FUG16ZY:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentFw190RadioMode.FUG16ZY);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentFw190RadioMode.IFF);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_HOMING:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentFw190RadioMode.HOMING);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsFw190.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsFw190.LOWER_NO_USE3:
                        case RadioPanelPZ69KnobsFw190.LOWER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentFw190RadioMode.NOUSE);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            // Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentFw190RadioMode.IFF)
                            {
                                DCSBIOS.Send(radioPanelKnob.IsOn ? FU_G25_A_TEST_COMMAND_INC : FU_G25_A_TEST_COMMAND_DEC);
                            }

                            if (_currentUpperRadioMode == CurrentFw190RadioMode.HOMING)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    lock (_lockHomingDialObject1)
                                    {
                                        DCSBIOS.Send(_homingCockpitDialPos == 1 ? HOMING_COMMAND_DEC : HOMING_COMMAND_INC);
                                    }
                                }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentFw190RadioMode.IFF)
                            {
                                DCSBIOS.Send(radioPanelKnob.IsOn ? FU_G25_A_TEST_COMMAND_INC : FU_G25_A_TEST_COMMAND_DEC);
                            }

                            if (_currentLowerRadioMode == CurrentFw190RadioMode.HOMING)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    lock (_lockHomingDialObject1)
                                    {
                                        DCSBIOS.Send(_homingCockpitDialPos == 1 ? HOMING_COMMAND_DEC : HOMING_COMMAND_INC);
                                    }
                                }
                            }

                            break;
                        }
                        }

                        if (PluginManager.PlugSupportActivated && PluginManager.HasPlugin())
                        {
                            PluginManager.DoEvent(DCSFPProfile.SelectedProfile.Description, HIDInstance, PluginGamingPanelEnum.PZ69RadioPanel_PreProg_FW190, (int)radioPanelKnob.RadioPanelPZ69Knob, radioPanelKnob.IsOn, null);
                        }
                    }

                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                Common.DebugP("Entering Fw 190 Radio AdjustFrequency()");

                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobFw190 = (RadioPanelKnobFw190)o;
                    if (radioPanelKnobFw190.IsOn)
                    {
                        switch (radioPanelKnobFw190.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(Fug16ZyPresetCommandInc);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandInc);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(Fug16ZyPresetCommandDec);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandDec);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                Common.DebugP("Sending Fug16ZyFineTuneCommandInc");
                                DCSBIOS.Send(Fug16ZyFineTuneCommandInc);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                Common.DebugP("Sending RadioVolumeKnobCommandInc");
                                DCSBIOS.Send(RadioVolumeKnobCommandInc);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                Common.DebugP("Sending Fug16ZyFineTuneCommandDec");
                                DCSBIOS.Send(Fug16ZyFineTuneCommandDec);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                Common.DebugP("Sending RadioVolumeKnobCommandDec");
                                DCSBIOS.Send(RadioVolumeKnobCommandDec);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(Fug16ZyPresetCommandInc);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandInc);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(Fug16ZyPresetCommandDec);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandDec);
                                }
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                Common.DebugP("Sending Fug16ZyFineTuneCommandInc");
                                DCSBIOS.Send(Fug16ZyFineTuneCommandInc);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                Common.DebugP("Sending RadioVolumeKnobCommandInc");
                                DCSBIOS.Send(RadioVolumeKnobCommandInc);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsFw190.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentFw190RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                Common.DebugP("Sending Fug16ZyFineTuneCommandDec");
                                DCSBIOS.Send(Fug16ZyFineTuneCommandDec);
                                break;
                            }

                            case CurrentFw190RadioMode.IFF:
                            {
                                Common.DebugP("Sending RadioVolumeKnobCommandDec");
                                DCSBIOS.Send(RadioVolumeKnobCommandDec);
                                break;
                            }

                            case CurrentFw190RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentFw190RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }
                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                Common.LogError(83007, ex);
            }
            Common.DebugP("Leaving Fw 190 Radio AdjustFrequency()");
        }
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                Common.DebugP("Entering P-51D Radio AdjustFrequency()");

                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobP51D = (RadioPanelKnobP51D)o;
                    if (radioPanelKnobP51D.IsOn)
                    {
                        switch (radioPanelKnobP51D.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsP51D.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendIncVHFPresetCommand();
                                }
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendDecVHFPresetCommand();
                                }
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(Vhf1VolumeKnobCommandInc);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(Vhf1VolumeKnobCommandDec);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendIncVHFPresetCommand();
                                }
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                if (!SkipVhf1PresetDialChange())
                                {
                                    SendDecVHFPresetCommand();
                                }
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(Vhf1VolumeKnobCommandInc);
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsP51D.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentP51DRadioMode.VHF:
                            {
                                DCSBIOS.Send(Vhf1VolumeKnobCommandDec);
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }
                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                Common.LogError(84007, ex);
            }
            Common.DebugP("Leaving P-51D Radio AdjustFrequency()");
        }
        private void SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsMiG21Bis knob)
        {
            if (IgnoreSwitchButtonOnce() && (knob == RadioPanelPZ69KnobsMiG21Bis.UpperFreqSwitch || knob == RadioPanelPZ69KnobsMiG21Bis.LowerFreqSwitch))
            {
                //Don't do anything on the very first button press as the panel sends ALL
                //switches when it is manipulated the first time
                //This would cause unintended sync.
                return;
            }
            if (!DataHasBeenReceivedFromDCSBIOS)
            {
                //Don't start communication with DCS-BIOS before we have had a first contact from "them"
                return;
            }
            switch (knob)
            {
            case RadioPanelPZ69KnobsMiG21Bis.UpperFreqSwitch:
            {
                switch (_currentUpperRadioMode)
                {
                case CurrentMiG21BisRadioMode.Radio:
                {
                    DCSBIOS.Send(RADIO_ON_OFF_TOGGLE_COMMAND);
                    break;
                }

                case CurrentMiG21BisRadioMode.RSBN:
                {
                    DCSBIOS.Send(SELECT_RSBN_COMMAND);
                    break;
                }

                case CurrentMiG21BisRadioMode.ARC:
                {
                    DCSBIOS.Send(SELECT_ARC_COMMAND);
                    break;
                }
                }
                break;
            }

            case RadioPanelPZ69KnobsMiG21Bis.LowerFreqSwitch:
            {
                switch (_currentLowerRadioMode)
                {
                case CurrentMiG21BisRadioMode.Radio:
                {
                    DCSBIOS.Send(RADIO_ON_OFF_TOGGLE_COMMAND);
                    break;
                }

                case CurrentMiG21BisRadioMode.RSBN:
                {
                    DCSBIOS.Send(SELECT_RSBN_COMMAND);
                    break;
                }

                case CurrentMiG21BisRadioMode.ARC:
                {
                    DCSBIOS.Send(SELECT_ARC_COMMAND);
                    break;
                }
                }
                break;
            }
            }
        }
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            if (SkipCurrentFrequencyChange())
            {
                return;
            }

            foreach (var o in hashSet)
            {
                var radioPanelKnobMiG21Bis = (RadioPanelKnobMiG21Bis)o;
                if (radioPanelKnobMiG21Bis.IsOn)
                {
                    switch (radioPanelKnobMiG21Bis.RadioPanelPZ69Knob)
                    {
                    case RadioPanelPZ69KnobsMiG21Bis.UpperLargeFreqWheelInc:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_FREQ_SELECTOR_POSITION_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_NAV_CHANNEL_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_SECTOR_COMMAND_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.UpperLargeFreqWheelDec:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_FREQ_SELECTOR_POSITION_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_NAV_CHANNEL_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_SECTOR_COMMAND_DEC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.UpperSmallFreqWheelInc:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_VOLUME_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_ILS_CHANNEL_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_PRESET_CHANNEL_COMMAND_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.UpperSmallFreqWheelDec:
                    {
                        switch (_currentUpperRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_VOLUME_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_ILS_CHANNEL_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_PRESET_CHANNEL_COMMAND_DEC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.LowerLargeFreqWheelInc:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_FREQ_SELECTOR_POSITION_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_NAV_CHANNEL_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_SECTOR_COMMAND_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.LowerLargeFreqWheelDec:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_FREQ_SELECTOR_POSITION_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_NAV_CHANNEL_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_SECTOR_COMMAND_DEC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.LowerSmallFreqWheelInc:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_VOLUME_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_ILS_CHANNEL_COMMAND_INC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_PRESET_CHANNEL_COMMAND_INC);
                            break;
                        }
                        }
                        break;
                    }

                    case RadioPanelPZ69KnobsMiG21Bis.LowerSmallFreqWheelDec:
                    {
                        switch (_currentLowerRadioMode)
                        {
                        case CurrentMiG21BisRadioMode.Radio:
                        {
                            DCSBIOS.Send(RADIO_VOLUME_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.RSBN:
                        {
                            DCSBIOS.Send(RSBN_ILS_CHANNEL_COMMAND_DEC);
                            break;
                        }

                        case CurrentMiG21BisRadioMode.ARC:
                        {
                            DCSBIOS.Send(ARC_PRESET_CHANNEL_COMMAND_DEC);
                            break;
                        }
                        }
                        break;
                    }
                    }
                }
            }
            ShowFrequenciesOnPanel();
        }
Beispiel #26
0
        public void PZ69KnobChanged(bool isFirstReport, IEnumerable <object> hashSet)
        {
            if (isFirstReport)
            {
                return;
            }

            try
            {
                Interlocked.Increment(ref _doUpdatePanelLCD);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobSpitfireLFMkIX)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_HFRADIO:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.HFRADIO);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.IFF);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE0:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.NOUSE);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_HFRADIO:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.HFRADIO);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.IFF);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE0:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE3:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.NOUSE);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            // Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentSpitfireLFMkIXRadioMode.HFRADIO)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    DCSBIOS.Send(HF_RADIO_LIGHT_SWITCH_COMMAND);
                                }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentSpitfireLFMkIXRadioMode.HFRADIO)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    DCSBIOS.Send(HF_RADIO_LIGHT_SWITCH_COMMAND);
                                }
                            }

                            break;
                        }
                        }

                        if (PluginManager.PlugSupportActivated && PluginManager.HasPlugin())
                        {
                            PluginManager.DoEvent(
                                DCSFPProfile.SelectedProfile.Description,
                                HIDInstance,
                                PluginGamingPanelEnum.PZ69RadioPanel_PreProg_SPITFIRELFMKIX,
                                (int)radioPanelKnob.RadioPanelPZ69Knob,
                                radioPanelKnob.IsOn,
                                null);
                        }
                    }

                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Beispiel #27
0
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                Common.DebugP("Entering Bf 109 Radio AdjustFrequency()");

                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobBf109 = (RadioPanelKnobBf109)o;
                    if (radioPanelKnobBf109.IsOn)
                    {
                        switch (radioPanelKnobBf109.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsBf109.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandInc);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandDec);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                var changeFaster = false;
                                _fineTuneIncreaseChangeMonitor.Click();
                                if (_fineTuneIncreaseChangeMonitor.ClickThresholdReached())
                                {
                                    //Change faster
                                    changeFaster = true;
                                }
                                DCSBIOS.Send(changeFaster ? FUG16_ZY_FINE_TUNE_COMMAND_INC_MORE : FUG16_ZY_FINE_TUNE_COMMAND_INC);
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                var changeFaster = false;
                                _fineTuneDecreaseChangeMonitor.Click();
                                if (_fineTuneDecreaseChangeMonitor.ClickThresholdReached())
                                {
                                    //Change faster
                                    changeFaster = true;
                                }

                                DCSBIOS.Send(changeFaster ? FUG16_ZY_FINE_TUNE_COMMAND_DEC_MORE : FUG16_ZY_FINE_TUNE_COMMAND_DEC);
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_INC);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandInc);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Presets
                                if (!SkipFuG16ZYPresetDialChange())
                                {
                                    DCSBIOS.Send(FUG16_ZY_PRESET_COMMAND_DEC);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                if (!SkipIFFDialChange())
                                {
                                    DCSBIOS.Send(FUG25AIFFCommandDec);
                                }
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                var changeFaster = false;
                                _fineTuneIncreaseChangeMonitor.Click();
                                if (_fineTuneIncreaseChangeMonitor.ClickThresholdReached())
                                {
                                    //Change faster
                                    changeFaster = true;
                                }

                                DCSBIOS.Send(changeFaster ? FUG16_ZY_FINE_TUNE_COMMAND_INC_MORE : FUG16_ZY_FINE_TUNE_COMMAND_INC);
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_INC);
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsBf109.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentBf109RadioMode.FUG16ZY:
                            {
                                //Fine tuning
                                var changeFaster = false;
                                _fineTuneDecreaseChangeMonitor.Click();
                                if (_fineTuneDecreaseChangeMonitor.ClickThresholdReached())
                                {
                                    //Change faster
                                    changeFaster = true;
                                }

                                DCSBIOS.Send(changeFaster ? FUG16_ZY_FINE_TUNE_COMMAND_DEC_MORE : FUG16_ZY_FINE_TUNE_COMMAND_DEC);
                                break;
                            }

                            case CurrentBf109RadioMode.IFF:
                            {
                                DCSBIOS.Send(RADIO_VOLUME_KNOB_COMMAND_DEC);
                                break;
                            }

                            case CurrentBf109RadioMode.HOMING:
                            {
                                break;
                            }

                            case CurrentBf109RadioMode.NOUSE:
                            {
                                break;
                            }
                            }
                            break;
                        }
                        }
                    }
                }
                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                Common.LogError(82007, ex);
            }
            Common.DebugP("Leaving Bf 109 Radio AdjustFrequency()");
        }
Beispiel #28
0
        private void AdjustFrequency(IEnumerable <object> hashSet)
        {
            try
            {
                if (SkipCurrentFrequencyChange())
                {
                    return;
                }

                foreach (var o in hashSet)
                {
                    var radioPanelKnobSpitfireLFMkIX = (RadioPanelKnobSpitfireLFMkIX)o;
                    if (radioPanelKnobSpitfireLFMkIX.IsOn)
                    {
                        switch (radioPanelKnobSpitfireLFMkIX.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // MODE
                                if (!SkipHFRadioModeDialChange())
                                {
                                    var s = GetHFRadioModeStringCommand(true);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffdDialChange())
                                {
                                    DCSBIOS.Send(IFFD_COMMAND_INC);
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.NOUSE:
                            {
                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // MODE
                                if (!SkipHFRadioModeDialChange())
                                {
                                    var s = GetHFRadioModeStringCommand(false);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffdDialChange())
                                {
                                    DCSBIOS.Send(IFFD_COMMAND_DEC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // CHANNEL
                                if (!SkipHFRadioChannelPresetDialChange())
                                {
                                    var s = GetHFRadioChannelStringCommand(true);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffbDialChange())
                                {
                                    DCSBIOS.Send(IFFB_COMMAND_INC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentUpperRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // CHANNEL
                                if (!SkipHFRadioChannelPresetDialChange())
                                {
                                    var s = GetHFRadioChannelStringCommand(false);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffbDialChange())
                                {
                                    DCSBIOS.Send(IFFB_COMMAND_DEC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // MODE
                                if (!SkipHFRadioModeDialChange())
                                {
                                    var s = GetHFRadioModeStringCommand(true);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffdDialChange())
                                {
                                    DCSBIOS.Send(IFFD_COMMAND_INC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // MODE
                                if (!SkipHFRadioModeDialChange())
                                {
                                    var s = GetHFRadioModeStringCommand(false);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffdDialChange())
                                {
                                    DCSBIOS.Send(IFFD_COMMAND_DEC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_INC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // CHANNEL
                                if (!SkipHFRadioChannelPresetDialChange())
                                {
                                    var s = GetHFRadioChannelStringCommand(true);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffbDialChange())
                                {
                                    DCSBIOS.Send(IFFB_COMMAND_INC);
                                }

                                break;
                            }
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            switch (_currentLowerRadioMode)
                            {
                            case CurrentSpitfireLFMkIXRadioMode.HFRADIO:
                            {
                                // CHANNEL
                                if (!SkipHFRadioChannelPresetDialChange())
                                {
                                    var s = GetHFRadioChannelStringCommand(false);
                                    if (!string.IsNullOrEmpty(s))
                                    {
                                        DCSBIOS.Send(s);
                                    }
                                }

                                break;
                            }

                            case CurrentSpitfireLFMkIXRadioMode.IFF:
                            {
                                if (!SkipIffbDialChange())
                                {
                                    DCSBIOS.Send(IFFB_COMMAND_DEC);
                                }

                                break;
                            }
                            }

                            break;
                        }
                        }
                    }
                }

                ShowFrequenciesOnPanel();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }
Beispiel #29
0
        public void PZ69KnobChanged(bool isFirstReport, IEnumerable <object> hashSet)
        {
            try
            {
                Interlocked.Add(ref _doUpdatePanelLCD, 1);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobSpitfireLFMkIX)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_HFRADIO:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.HFRADIO);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.IFF);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE0:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentSpitfireLFMkIXRadioMode.NOUSE);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_HFRADIO:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.HFRADIO);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_IFF:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.IFF);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE0:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE3:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_NO_USE4:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentSpitfireLFMkIXRadioMode.NOUSE);
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            //Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.UPPER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentSpitfireLFMkIXRadioMode.HFRADIO)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    DCSBIOS.Send(HF_RADIO_LIGHT_SWITCH_COMMAND);
                                }
                            }
                            break;
                        }

                        case RadioPanelPZ69KnobsSpitfireLFMkIX.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentSpitfireLFMkIXRadioMode.HFRADIO)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    DCSBIOS.Send(HF_RADIO_LIGHT_SWITCH_COMMAND);
                                }
                            }
                            break;
                        }
                        }
                    }
                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                Common.LogError(ex);
            }
        }
Beispiel #30
0
        public void PZ69KnobChanged(bool isFirstReport, IEnumerable <object> hashSet)
        {
            if (isFirstReport)
            {
                return;
            }

            try
            {
                Interlocked.Increment(ref _doUpdatePanelLCD);
                lock (LockLCDUpdateObject)
                {
                    foreach (var radioPanelKnobObject in hashSet)
                    {
                        var radioPanelKnob = (RadioPanelKnobAJS37)radioPanelKnobObject;

                        switch (radioPanelKnob.RadioPanelPZ69Knob)
                        {
                        case RadioPanelPZ69KnobsAJS37.UPPER_FR22:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.FR22);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_FR24:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.FR24);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_TILS:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetUpperRadioMode(CurrentAJS37RadioMode.TILS);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FR22:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.FR22);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FR24:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.FR24);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_TILS:
                        {
                            if (radioPanelKnob.IsOn)
                            {
                                SetLowerRadioMode(CurrentAJS37RadioMode.TILS);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE0:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE1:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE2:
                        case RadioPanelPZ69KnobsAJS37.UPPER_NO_USE3:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE0:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE1:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE2:
                        case RadioPanelPZ69KnobsAJS37.LOWER_NO_USE3:
                        {
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.UPPER_SMALL_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_LARGE_FREQ_WHEEL_DEC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_INC:
                        case RadioPanelPZ69KnobsAJS37.LOWER_SMALL_FREQ_WHEEL_DEC:
                        {
                            // Ignore
                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH:
                        {
                            if (_currentUpperRadioMode == CurrentAJS37RadioMode.FR22)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    _fr22DialSideSelected = _fr22DialSideSelected == FR22DialSideSelected.Left ? FR22DialSideSelected.Right : FR22DialSideSelected.Left;
                                }
                            }
                            else if (_currentUpperRadioMode == CurrentAJS37RadioMode.FR24 && radioPanelKnob.IsOn)
                            {
                            }
                            else if (_currentUpperRadioMode == CurrentAJS37RadioMode.TILS && radioPanelKnob.IsOn)
                            {
                                DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                            }
                            else if (radioPanelKnob.IsOn)
                            {
                                SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsAJS37.UPPER_FREQ_SWITCH);
                            }

                            break;
                        }

                        case RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH:
                        {
                            if (_currentLowerRadioMode == CurrentAJS37RadioMode.FR22)
                            {
                                if (radioPanelKnob.IsOn)
                                {
                                    _fr22DialSideSelected = _fr22DialSideSelected == FR22DialSideSelected.Left ? FR22DialSideSelected.Right : FR22DialSideSelected.Left;
                                }
                            }
                            else if (_currentLowerRadioMode == CurrentAJS37RadioMode.FR24 && radioPanelKnob.IsOn)
                            {
                            }
                            else if (_currentLowerRadioMode == CurrentAJS37RadioMode.TILS && radioPanelKnob.IsOn)
                            {
                                DCSBIOS.Send(TILS_CHANNEL_LAYER_DIAL_COMMAND_TOGGLE);
                            }
                            else if (radioPanelKnob.IsOn)
                            {
                                SendFrequencyToDCSBIOS(RadioPanelPZ69KnobsAJS37.LOWER_FREQ_SWITCH);
                            }

                            break;
                        }
                        }

                        if (PluginManager.PlugSupportActivated && PluginManager.HasPlugin())
                        {
                            PluginManager.DoEvent(DCSFPProfile.SelectedProfile.Description, HIDInstance, PluginGamingPanelEnum.PZ69RadioPanel_PreProg_AJS37, (int)radioPanelKnob.RadioPanelPZ69Knob, radioPanelKnob.IsOn, null);
                        }
                    }

                    AdjustFrequency(hashSet);
                }
            }
            catch (Exception ex)
            {
                Common.ShowErrorMessageBox(ex);
            }
        }