Пример #1
0
        public void OnRtxChanged(object sender, EventArgs e)
        {
            if (_StateManager.Radio.Rtx > 0)
            {
                _RtxBT.Text            = "Rtx " + (char)('G' + _StateManager.Radio.Rtx - 1);
                _RtxBT.ButtonColor     = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                _RtxBlinkTimer.Enabled = true;
                // _RtxErrorTimer.Enabled = false;
                //_RtxErrorActivated = false;
            }
            else
            {
                _RtxBlinkTimer.Enabled = false;
                // _RtxErrorTimer.Enabled = true;
                _RtxBlinkOn        = true;
                _RtxBT.Text        = "Rtx";
                _RtxBT.ButtonColor = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
            }

            int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                UrrRdButton bt  = _RdButtons[i];
                RdDst       dst = _StateManager.Radio[i + absPageBegin];

                Reset(bt, dst);
            }
        }
Пример #2
0
        /** Esta funcion se ha trasladado al Model Module */
        //private void RecuperaEstadoAsignacionFrecuencias()
        //{
        //    int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

        //    for (int i = absPageBegin, to = absPageBegin + _NumPositionsByPage; i < to; i++)
        //    {
        //        if (i < Settings.Default.AssignatedStates.Count)
        //        {
        //            string[] estado = Settings.Default.AssignatedStates[i].Split(',');

        //            EstadoAsignacion eAsignacion = new EstadoAsignacion();

        //            eAsignacion._Rx = estado[1] == "True";
        //            eAsignacion._Tx = estado[2] == "True";
        //            switch (estado[3])
        //            {
        //                case "HeadPhones":
        //                    eAsignacion._AudioVia = RdRxAudioVia.HeadPhones;
        //                    break;
        //                case "Speaker":
        //                    eAsignacion._AudioVia = RdRxAudioVia.Speaker;
        //                    break;
        //                case "NoAudio":
        //                    eAsignacion._AudioVia = RdRxAudioVia.NoAudio;
        //                    break;
        //            }

        //            _EstadosAsignacion[i - absPageBegin] = eAsignacion;

        //        }
        //    }
        //}

        private void Reset(UrrRdButton bt, RdDst dst, ref EstadoAsignacion estado)
        {
            Reset(bt, dst);

            if (!dst.Unavailable && estado.Unavailable && !_StateManager.ScreenSaver.On)
            {
                if (estado._Rx && !dst.Rx)
                {
                    //RdButton_RxShortClick(bt, null);
                    Forced_RxShortClick(bt);
                }
                else if (estado._AudioVia == RdRxAudioVia.HeadPhones)
                {
                    if (dst.TipoFrecuencia == TipoFrecuencia_t.HF && (dst.AudioVia == RdRxAudioVia.HfSpeaker || dst.AudioVia == RdRxAudioVia.Speaker))
                    {
                        //RdButton_RxShortClick(bt, null);
                        Forced_RxShortClick(bt);
                    }
                    else if (dst.TipoFrecuencia != TipoFrecuencia_t.HF && dst.AudioVia == RdRxAudioVia.Speaker)
                    {
                        //RdButton_RxShortClick(bt, null);
                        Forced_RxShortClick(bt);
                    }
                }
                else if (estado._AudioVia == RdRxAudioVia.HfSpeaker && dst.AudioVia == RdRxAudioVia.Speaker)
                {
                    //RdButton_RxShortClick(bt, null);
                    Forced_RxShortClick(bt);
                }

                if (estado._Tx && !dst.Tx)
                {
                    //RdButton_TxClick(bt, null);
                    try
                    {
                        // Forzar la asignación de Tx independientemente de si está ya asignada en otra posición
                        _CmdManager.RdConfirmTxState(bt.Id);
                    }
                    catch (Exception ex)
                    {
                        int    pos = _RdButtons.IndexOf(bt);
                        string msg = string.Format("ERROR modificando Tx de frecuencia RD [Pos={0}] [Id={1}]", pos, bt.Id);
                        _Logger.Error(msg, ex);
                    }
                }
            }
            else if (!dst.Unavailable && !estado.Unavailable)
            {
                estado._Tx       = dst.Tx;
                estado._Rx       = dst.Rx;
                estado._AudioVia = dst.AudioVia;
            }

            estado.Unavailable = dst.Unavailable ||
                                 estado._Rx != dst.Rx ||
                                 estado._Tx != dst.Tx ||
                                 estado._AudioVia != dst.AudioVia;
        }
Пример #3
0
        public void SiteChanged(object sender, StateMsg <string> msg)
        {
            int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                UrrRdButton bt  = _RdButtons[i];
                RdDst       dst = _StateManager.Radio[i + absPageBegin];

                Reset(bt, dst);
            }
        }
Пример #4
0
        public void OnRdPageChanged(object sender, EventArgs e)
        {
            _urrRdPageButton.Page = _StateManager.Radio.Page;
            int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                UrrRdButton bt  = _RdButtons[i];
                RdDst       dst = _StateManager.Radio[i + absPageBegin];

                Reset(bt, dst);
            }
        }
Пример #5
0
        public void OnRadioChanged(object sender, RangeMsg e)
        {
            Debug.Assert(e.Count > 0);
            int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

            for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++)
            {
                UrrRdButton      bt     = _RdButtons[i - absPageBegin];
                RdDst            dst    = _StateManager.Radio[i];
                EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin];
                Reset(bt, dst, ref estado);
            }

            _RtxBT.Enabled = _RtxEnabled;
        }
Пример #6
0
        public void OnTitleIdChanged(object sender, EventArgs e)
        {
            if (Settings.Default.Sector != _StateManager.Title.Id)
            {
                int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;

                for (int i = absPageBegin, to = absPageBegin + _NumPositionsByPage; i < to; i++)
                {
                    UrrRdButton bt = _RdButtons[i - absPageBegin];
                    if (!_StateManager.Radio[i].Unavailable && _StateManager.Radio[i].Rx)
                    {
                        RdButton_RxLongClick(bt, null);
                    }
                }

                Settings.Default.Sector = _StateManager.Title.Id;
                Settings.Default.Save();
            }
        }
Пример #7
0
        private void _SiteManagerBT_Click(object sender, EventArgs e)
        {
            try
            {
                _CmdManager.RdSiteManagerClick();

                int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage;
                for (int i = 0; i < _NumPositionsByPage; i++)
                {
                    UrrRdButton bt  = _RdButtons[i];
                    RdDst       dst = _StateManager.Radio[i + absPageBegin];

                    Reset(bt, dst);
                }
            }
            catch (Exception ex)
            {
                _Logger.Error("ERROR iniciando operacion SiteManager", ex);
            }
        }
Пример #8
0
        private void Reset(UrrRdButton bt, RdDst dst)
        {
            bt.Id = dst.Id;

            if (_PttBlinkList.Remove(bt) && (_PttBlinkList.Count == 0))
            {
                _PttBlinkTimer.Enabled = false;
                _PttBlinkOn            = true;
            }
            if (_SquelchBlinkList.Remove(bt) && (_SquelchBlinkList.Count == 0))
            {
                _SquelchBlinkTimer.Enabled = false;
                _SquelchBlinkOn            = true;
            }
            _RtxBlinkList.Remove(bt);
            _PttPushedList.Remove(bt);

            if (dst.IsConfigurated)
            {
                Color title          = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                Color tx             = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                Color rx             = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                Color txForeColor    = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black;
                Color rxForeColor    = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black;
                Color titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black;
                Image ptt            = null;
                Image squelch        = null;
                Image audio          = null;
                int   rtxGroup       = 0;
                bool  allAsOneBt     = false;
                /** 20190121. AGL. ALIAS a mostrar en la tecla... */
                // string alias = dst.Alias;
                string alias        = dst.KeyAlias;
                bool   isGreenIcons = false;

                if (!dst.Unavailable)
                {
                    rtxGroup = dst.RtxGroup;
                    alias    = (dst.TempAlias != string.Empty && dst.TempAlias != dst.Alias) ? dst.TempAlias : alias;

                    if (_StateManager.ManagingSite)
                    {
                        allAsOneBt        = true;
                        title             = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                        _RtxBlinkList[bt] = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow;
                    }
                    else if (dst.Rx)
                    {
                        rx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.White;

                        rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Green;

                        if (dst.Tx)
                        {
                            tx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1;
                            bt.changeTxText("Tx");
                            txForeColor        = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black;//Seleccionado en reposo
                            _PttPushedList[bt] = dst;

                            if (_StateManager.Radio.Rtx > 0)
                            {
                                rtxGroup = dst.RtxGroup < 0 ? dst.RtxGroup : dst.TempRtxGroup;

                                if (rtxGroup == 0)
                                {
                                    allAsOneBt        = true;
                                    title             = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : bt.CurrentBackColor;
                                    _RtxBlinkList[bt] = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow;
                                }
                                else if (rtxGroup == _StateManager.Radio.Rtx)
                                {
                                    allAsOneBt = true;
                                    title      = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow;
                                }
                            }
                        }
                        else
                        {
                            bt.changeTxText("");
                        }
                    }

                    NotifMsg msg = null;
                    switch (dst.Ptt)
                    {
                    case PttState.NoPtt:
                        if (dst.Tx)
                        {
                            tx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1;
                        }
                        else
                        {
                            tx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                        }
                        break;

                    case PttState.ExternPtt:
                        titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red;
                        break;

                    case PttState.PttOnlyPort:
                        title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen;
                        break;

                    case PttState.PttPortAndMod:
                        title                  = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen;
                        _PttBlinkList[bt]      = Resources.Ptt;
                        _PttBlinkTimer.Enabled = true;
                        break;

                    case PttState.Blocked:
                        title          = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red;
                        titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkRed;
                        break;

                    /** halfduplex */
                    case PttState.CarrierError:    //Error en portadora
                        title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red;
                        break;

                    case PttState.TxError:    //Error en la confirmacion de la Tx
                        title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red;
                        break;
                        //Sin default
                    }

                    switch (dst.Squelch)
                    {
                    case SquelchState.SquelchOnlyPort:
                        /** 20190205 */
                        if (dst.PttSrcId.StartsWith("Rtx_") && dst.Ptt == PttState.ExternPtt)
                        {
                            txForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red;
                        }
                        switch (dst.AudioVia)
                        {
                        case RdRxAudioVia.Speaker:
                            rx           = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen;
                            audio        = Resources.RxSpeakerBlack; //Iconos negros
                            isGreenIcons = true;
                            break;

                        case RdRxAudioVia.HeadPhones:
                            rx           = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen;
                            audio        = Resources.RxHeadPhonesBlack;
                            isGreenIcons = true;
                            break;

                        case RdRxAudioVia.NoAudio:
                            rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.StrongGreen;
                            rx          = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen;
                            break;
                        }


                        break;

                    case SquelchState.SquelchPortAndMod:
                        switch (dst.AudioVia)
                        {
                        case RdRxAudioVia.Speaker:
                            audio        = Resources.RxSpeaker; //Iconos verdes
                            isGreenIcons = true;
                            break;

                        case RdRxAudioVia.HeadPhones:
                            audio        = Resources.RxHeadPhones;
                            isGreenIcons = true;
                            break;

                        case RdRxAudioVia.NoAudio:
                            rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.StrongGreen;
                            break;
                        }
                        _SquelchBlinkList[bt]      = Resources.Squelch;
                        _SquelchBlinkTimer.Enabled = true;
                        break;

                    case SquelchState.NoSquelch:
                        break;
                    }

                    if (!isGreenIcons)
                    {
                        switch (dst.AudioVia)
                        {
                        case RdRxAudioVia.Speaker:
                            audio = Resources.RxSpeakerBlack;    //Iconos negros
                            break;

                        case RdRxAudioVia.HeadPhones:
                            audio = Resources.RxHeadPhonesBlack;
                            break;
                        }
                    }
                }
                else
                {
                    bt.changeTxText("");
                    title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1;
                    tx    = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                    rx    = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor;
                }
                // Mostrar información Qidx sólo si en HMI.exe.config está habilitado
                if (Settings.Default.ShowBssProperties)
                {
                    bt.Reset(dst.Frecuency, dst.TipoFrecuencia == TipoFrecuencia_t.FD ? dst.QidxResource : alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor,
                             dst.QidxResource, dst.QidxValue, dst.State == FrequencyState.Degraded);
                }
                else
                {
                    /** 20190121. AGL. ALIAS a mostrar en la tecla... */
                    // bt.Reset(dst.Frecuency, dst.TipoFrecuencia == TipoFrecuencia_t.FD ? string.Empty : alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor,
                    bt.Reset(dst.Frecuency, alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor,

                             dst.State == FrequencyState.Degraded);
                }
                bt.Enabled = _StateManager.Tft.Enabled && _StateManager.Engine.Operative && !dst.Unavailable;
            }

            bt.Visible = dst.IsConfigurated;
        }
Пример #9
0
        public RadioView([ServiceDependency] IModelCmdManagerService cmdManager, [ServiceDependency] StateManagerService stateManager)
        {
            InitializeComponent();

            _CmdManager   = cmdManager;
            _StateManager = stateManager;

            _RdButtonsTLP.RowCount = Settings.Default.RdRows;
            _RdButtonsTLP.RowStyles.Clear();

            for (int i = 0; i < _RdButtonsTLP.RowCount; i++)
            {
                RowStyle st = new RowStyle(SizeType.Percent, 100);
                _RdButtonsTLP.RowStyles.Add(st);
            }

            _RdButtonsTLP.ColumnCount = Settings.Default.RdColumns;
            _RdButtonsTLP.ColumnStyles.Clear();

            for (int i = 0; i < _RdButtonsTLP.ColumnCount; i++)
            {
                ColumnStyle st = new ColumnStyle(SizeType.Percent, 100);
                _RdButtonsTLP.ColumnStyles.Add(st);
            }

            _NumPositionsByPage = _RdButtonsTLP.RowCount * _RdButtonsTLP.ColumnCount;
            /** 20190205. Para que funcione la recuperacion de estados RSR */
            _StateManager.Radio.PageSize = _NumPositionsByPage;

            _PttBlinkList     = new Dictionary <UrrRdButton, Image>();
            _SquelchBlinkList = new Dictionary <UrrRdButton, Image>();
            _RtxBlinkList     = new Dictionary <UrrRdButton, Color>();
            _PttPushedList    = new Dictionary <UrrRdButton, RdDst>();

            for (int row = 0, pos = 0; row < _RdButtonsTLP.RowCount; row++)
            {
                for (int column = 0; column < _RdButtonsTLP.ColumnCount; column++, pos++)
                {
                    UrrRdButton bt = new UrrRdButton();
                    _RdButtonsTLP.Controls.Add(bt, column, row);
                    _RdButtons.Add(bt);
                    _EstadosAsignacion.Add(new EstadoAsignacion());

                    bt.Dock    = DockStyle.Fill;
                    bt.Name    = "_RdButton" + pos;
                    bt.Visible = false;
                    bt.Id      = pos;

                    bt.Click        += RdButton_Click;
                    bt.TxClick      += RdButton_TxClick;
                    bt.RxLongClick  += RdButton_RxLongClick;
                    bt.RxShortClick += RdButton_RxShortClick;
                }
            }

            _UrrRdSpeakerUDB.Level      = _StateManager.RdSpeaker.Level;
            _UrrRdSpeakerUDB.Enabled    = _RdSpeakerEnabled;
            _UrrRdHeadPhonesUDB.Level   = _StateManager.RdHeadPhones.Level;
            _UrrRdHeadPhonesUDB.Enabled = _RdHeadPhonesEnabled;
            _PttBT.Enabled           = _PttEnabled;
            _RtxBT.Enabled           = _RtxEnabled;
            _urrRdPageButton.Enabled = false; //_RdPageEnabled;
            _UrrUpPageBT.Enabled     = _RdPageEnabled;
            _UrrDownPageBT.Enabled   = _RdPageEnabled;
        }