public void RdHfFrAssignedEngine(object sender, RdHfFrAssigned msg) { string text; _Logger.Trace("Procesando {0}: {1}", EventTopicNames.RdHfFrAssignedEngine, msg); RdDst rd = _StateManager.Radio[msg.Id]; NotifMsg notif; switch (msg.HfEstado) { case 0xFF: text = Resources.RdHfFrAssignedEngine; break; case 0xFD: text = string.Format(Resources.RdFrAsignedToOtherConfirmation, rd.Frecuency); break; case 0xFE: text = string.Format(Resources.RdHfResourceError, rd.Frecuency); break; default: text = Resources.RdHfEquipment; break; } //= msg.HfEstado == 0xFF ? Resources.RdHfFrAssignedEngine : Resources.RdHfEquipment; notif = new NotifMsg("RdHfFrAssignedEngine", Resources.MessageInfoCaption, text, 0, MessageType.Information, MessageButtons.Ok, msg); _StateManager.ShowUIMessage(notif); }
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); } }
public void OnRadioChanged(object sender, RangeMsg e) { Debug.Assert(e.Count > 0); int absPageBegin = _RdPageBT.Page * _NumPositionsByPage; for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++) { RdButton bt = _RdButtons[i - absPageBegin]; RdDst dst = _StateManager.Radio[i]; /* * if (!dst.Restored || dst.Unavailable) * { * Reset(bt, dst); * * if (!dst.Unavailable && i < Settings.Default.AssignatedStates.Count) * { * Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin); * Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx + * "," + dst.AudioVia + "," + dst.Unavailable); * } * else if (!dst.Unavailable) * { * Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx + * "," + dst.AudioVia + "," + dst.Unavailable); * } * // Envío de vuelta confirmación para que Engine envíe histórico (si corresponde) * // De momento a este comando solo se atiende si Engine es OPE (CD30) * _CmdManager.SendCmdHistoricalEvent(_StateManager.Title.Id, dst.Frecuency); * } * else*/ { EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin]; Reset(bt, dst, ref estado); //Reset(bt, dst); _EstadosAsignacion[i - absPageBegin] = estado; if (/*!dst.Unavailable &&*/ i < Settings.Default.AssignatedStates.Count) { Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin); Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + estado._Rx.ToString() + "," + estado._Tx + "," + dst.AudioVia + "," + dst.Unavailable); } else //if (!dst.Unavailable) { Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + estado._Rx.ToString() + "," + estado._Tx + "," + dst.AudioVia + "," + dst.Unavailable); } // Envío de vuelta confirmación para que Engine envíe histórico (si corresponde) // De momento a este comando solo se atiende si Engine es OPE (CD30) _CmdManager.SendCmdHistoricalEvent(_StateManager.Title.Id, dst.Frecuency); } } Settings.Default.Save(); _RtxBT.Enabled = _RtxEnabled; }
public void RdForceTxOff(int id) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); _EngineCmdManager.ForceTxOff(id); }
public void RdConfirmTxState(int id) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); _EngineCmdManager.ConfirmRdTx(id); }
public void RdConfirmRxAudio(int id, RdRxAudioVia via) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); _EngineCmdManager.SetRdAudio(id, via); }
public void RdSwitchTxState(int id) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); _EngineCmdManager.SetRdTx(id, !dst.Tx); }
/** 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; }
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); } }
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); } }
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; }
public void OnHfGlobalStatus(object sender, StateMsg <string> msg) { if (msg.State != _HfGlobalStatus) { _HfGlobalStatus = msg.State; _RdPageBT.Page = _StateManager.Radio.Page; int absPageBegin = _RdPageBT.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { RdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; UpdateTx(bt, dst); } } }
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); } }
public void RdFrAsignedToOtherEngine(object sender, RdFrAsignedToOtherMsg msg) { _Logger.Trace("Procesando {0}: {1}", EventTopicNames.RdFrAsignedToOtherEngine, msg); RdDst rd = _StateManager.Radio[msg.RdId]; NotifMsg notif; if (!rd.Tx) { string text = string.Format(Resources.RdFrAsignedToOtherConfirmation, rd.Frecuency); notif = new NotifMsg("RdFrAsignedToOtherConfirmation", Resources.MessageInfoCaption, text, 0, MessageType.Warning, MessageButtons.OkCancel, msg); } else { string text = string.Format(Resources.RdFrAsignedToOtherNotification, msg.Owner, rd.Frecuency); notif = new NotifMsg("RdFrAsignedToOther", Resources.MessageInfoCaption, text, Settings.Default.MessageToutSg * 1000, MessageType.Information, MessageButtons.Ok, null); } _StateManager.ShowUIMessage(notif); }
public void RdSwitchRxState(int id, bool longClick) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); if (!dst.Rx || dst.Monitoring) { _EngineCmdManager.SetRdRx(id, true); } else if ((dst.Ptt != PttState.NoPtt && dst.Ptt != PttState.ExternPtt) || longClick) { _EngineCmdManager.SetRdRx(id, false); } else { _EngineCmdManager.NextRdAudio(id); } }
private void OnHangupCallsTimerElapsed(object sender, ElapsedEventArgs e) { if (!_StateManager.Jacks.SomeJack && _StateManager.Engine.Connected) { for (int i = 0; i < Tlf.NumDestinations + Tlf.NumIaDestinations; i++) { TlfDst dst = _StateManager.Tlf[i]; switch (dst.State) { case TlfState.Hold: _EngineCmdManager.EndTlfCall(i, TlfState.Hold); break; case TlfState.Conf: _EngineCmdManager.EndTlfConfCall(i); break; case TlfState.OutOfService: case TlfState.Congestion: case TlfState.Busy: case TlfState.Out: case TlfState.Set: case TlfState.RemoteHold: _EngineCmdManager.EndTlfCall(i); break; } } for (int i = 0; i < Radio.NumDestinations; i++) { RdDst dst = _StateManager.Radio[i]; if (dst.Rx) { _EngineCmdManager.ResetRdPosition(i); //_EngineCmdManager.SetRdRx(i, false); } } } }
public void RdForceRxState(int id) { RdDst dst = _StateManager.Radio[id]; Debug.Assert((_StateManager.Radio.Rtx == 0) || !dst.Tx || ((dst.RtxGroup != 0) && (dst.RtxGroup != _StateManager.Radio.Rtx))); if (!dst.Rx) { _EngineCmdManager.SetRdRx(id, true, true); } else if ((!dst.Tx && (dst.AudioVia == RdRxAudioVia.HeadPhones))) { _EngineCmdManager.SetRdRx(id, false, true); } else { RdRxAudioVia audio; if (dst.TipoFrecuencia == TipoFrecuencia_t.HF) { if (dst.AudioVia == RdRxAudioVia.HeadPhones) { audio = RdRxAudioVia.Speaker; } else if (dst.AudioVia == RdRxAudioVia.Speaker) { audio = RdRxAudioVia.HfSpeaker; } else { audio = RdRxAudioVia.HeadPhones; } } else { audio = dst.AudioVia == RdRxAudioVia.HeadPhones ? RdRxAudioVia.Speaker : RdRxAudioVia.HeadPhones; } _EngineCmdManager.SetRdAudio(id, audio, true); } }
public void OnRadioChanged(object sender, RangeMsg e) { Debug.Assert(e.Count > 0); int absPageBegin = _RdPageBT.Page * _NumPositionsByPage; _Logger.Debug("******** M+N [RadioView::OnRadioChanged]"); for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++) { RdButton bt = _RdButtons[i - absPageBegin]; RdDst dst = _StateManager.Radio[i]; EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin]; Reset(bt, dst, ref estado); //Reset(bt, dst); _EstadosAsignacion[i - absPageBegin] = estado; /** Esta funcion se ha trasladado al MODEL MODULE */ //if (i < Settings.Default.AssignatedStates.Count) //{ // Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin); // Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + _EstadosAsignacion[i - absPageBegin]._Rx.ToString() + "," + // ((dst.TipoFrecuencia == TipoFrecuencia_t.HF) ? false : _EstadosAsignacion[i - absPageBegin]._Tx) + // "," + _EstadosAsignacion[i - absPageBegin]._AudioVia + "," + _EstadosAsignacion[i - absPageBegin].Unavailable); //} //else //{ // Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + _EstadosAsignacion[i - absPageBegin]._Rx.ToString() + "," + // ((dst.TipoFrecuencia == TipoFrecuencia_t.HF) ? false : _EstadosAsignacion[i - absPageBegin]._Tx) + // "," + _EstadosAsignacion[i - absPageBegin]._AudioVia + "," + _EstadosAsignacion[i - absPageBegin].Unavailable); //} } /** Esta funcion se ha trasladado al MODEL MODULE */ //Settings.Default.Save(); _RtxBT.Enabled = _RtxEnabled; }
/// <summary> /// Actualiza el estado habilitado o no del tx del botón, según el estado global Hf /// Se llama en los reset generales y en los cambios del estado global Hf /// Si la frecuencia no es HF, el TX está siempre habilitado (caso cambio destino en sectorizaciones) /// </summary> /// <param name="bt" botón sobre el que se actualiza></param> /// <param name="dst" destino al que corresponde el botón></param> private void UpdateTx(RdButton bt, RdDst dst) { if (dst.TipoFrecuencia == TipoFrecuencia_t.HF) { switch (_HfGlobalStatus) { case "DISC": if (dst.Tx) { // Quitarlo de transimisión, ya que el gestor de HF no esta disponible _CmdManager.RdForceTxOff(bt.Id); } bt.EnableTx(false); break; case "NODISP": // Sólo las frecuencias HF que no están ya asignadas en TX se deben de inhabilitar if (!dst.Tx) { bt.EnableTx(false); } break; case "DISP": bt.EnableTx(true); break; default: _Logger.Warn("Unknown _HfGlobalStatus {0}", _HfGlobalStatus); break; } } else { bt.EnableTx(true); } }
public void OnRdPageChanged(object sender, EventArgs e) { _RdPageBT.Page = _StateManager.Radio.Page; int absPageBegin = _RdPageBT.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { RdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; //EstadoAsignacion estado = _EstadosAsignacion[i]; //Reset(bt, dst, ref estado); Reset(bt, dst); if (i < Settings.Default.AssignatedStates.Count) { Settings.Default.AssignatedStates.RemoveAt(i); } Settings.Default.AssignatedStates.Insert(i, dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx + "," + dst.AudioVia + "," + dst.Unavailable); } Settings.Default.Save(); }
private void Reset(RdButton 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 = VisualStyle.ButtonColor; Color tx = VisualStyle.ButtonColor; Color rx = VisualStyle.ButtonColor; Color txForeColor = VisualStyle.Colors.White; Color rxForeColor = VisualStyle.Colors.White; Image ptt = null; Image squelch = null; Image audio = null; int rtxGroup = 0; bool allAsOneBt = false; if (!dst.Unavailable) { rtxGroup = dst.RtxGroup; if (dst.Rx) { title = rx = VisualStyle.Colors.White; rxForeColor = VisualStyle.Colors.Green; if (dst.Tx) { tx = VisualStyle.Colors.White; txForeColor = VisualStyle.Colors.Green; _PttPushedList[bt] = dst;//VMG lista con los botones seleccionados en la UI if (_StateManager.Radio.Rtx > 0) { rtxGroup = dst.RtxGroup < 0 ? dst.RtxGroup : dst.TempRtxGroup; if (rtxGroup == 0) { allAsOneBt = true; title = _RtxBlinkOn ? VisualStyle.Colors.Yellow : VisualStyle.ButtonColor; _RtxBlinkList[bt] = VisualStyle.Colors.Yellow; } else if (rtxGroup == _StateManager.Radio.Rtx) { allAsOneBt = true; title = VisualStyle.Colors.Yellow; } } } } NotifMsg msg = null; switch (dst.Ptt) { case PttState.NoPtt: break; case PttState.ExternPtt: case PttState.PttOnlyPort: ptt = Resources.Ptt; break; case PttState.PttPortAndMod: ptt = _PttBlinkOn ? Resources.Ptt : null; _PttBlinkList[bt] = Resources.Ptt; _PttBlinkTimer.Enabled = true; break; case PttState.Blocked: ptt = Resources.PttBlocked; break; //VMG 04/09/2018 Cambios en los estados case PttState.Error: //Error en portadora title = VisualStyle.Colors.Red; txForeColor = VisualStyle.Colors.Red; msg = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.CarrierDetectionError, 3000, MessageType.Error, MessageButtons.Ok); General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg); break; //VMG 05/09/2018 Cambios en los estados case PttState.CarrierError: //Error en portadora title = VisualStyle.Colors.Red; txForeColor = VisualStyle.Colors.Red; if (!_CarrierDetectionEventFired && !_TxErrorEventFired) { //Lanzamos el mensaje solo una vez msg = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.CarrierDetectionError, 3000, MessageType.Error, MessageButtons.Ok); General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg); } break; case PttState.TxError: //Error en la confirmacion de la Tx // PttState.PttNotConfirmed title = VisualStyle.Colors.Red; txForeColor = VisualStyle.Colors.Red; if (!_TxErrorEventFired && !_CarrierDetectionEventFired) { //Lanzamos el mensaje solo una vez msg = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.TxConfirmationDetectionError, 3000, MessageType.Error, MessageButtons.Ok); General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg); } break; /*default://Error en la confirmacion de la Tx lo capturamos como PttState.NoPtt * // PttState.PttNotConfirmed * title = VisualStyle.Colors.Red; * txForeColor = VisualStyle.Colors.Red; * NotifMsg msg2 = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.TxConfirmationDetectionError, 3000, MessageType.Error, MessageButtons.Ok); * General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg2); * break;*/ } switch (dst.Squelch) { case SquelchState.SquelchOnlyPort: squelch = Resources.Squelch; break; case SquelchState.SquelchPortAndMod: squelch = _SquelchBlinkOn ? Resources.Squelch : null; _SquelchBlinkList[bt] = Resources.Squelch; _SquelchBlinkTimer.Enabled = true; break; } switch (dst.AudioVia) { case RdRxAudioVia.Speaker: if (_StateManager.Radio.DoubleRadioSpeaker) { audio = Resources.SpeakerUp; } else { audio = Resources.RxSpeaker; } break; case RdRxAudioVia.HeadPhones: audio = Resources.RxHeadPhones; break; case RdRxAudioVia.HfSpeaker: if (_StateManager.Radio.DoubleRadioSpeaker) { audio = Resources.HFSpeakerUp; } else { audio = Resources.HfSpeaker; } break; } } bt.Reset(dst.Frecuency, dst.Alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, dst.TipoFrecuencia == TipoFrecuencia_t.HF ? VisualStyle.Colors.HfColor : VisualStyle.Colors.Black); bt.Enabled = _StateManager.Tft.Enabled && _StateManager.Engine.Operative && !dst.Unavailable; UpdateTx(bt, dst); } bt.Visible = dst.IsConfigurated; }
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; }