public Radio() { for (int i = 0; i < NumDestinations; i++) { _Dst[i] = new RdDst(i); } }
public void Reset(RangeMsg <RdDestination> msg) { Debug.Assert(msg.From + msg.Count <= NumDestinations); for (int i = 0; i < msg.Count; i++) { RdDst dst = _Dst[i + msg.From]; dst.Reset(msg.Info[i]); } General.SafeLaunchEvent(RadioChanged, this, (RangeMsg)msg); }
public bool EnableSelCal() { for (int i = 0; i < _Dst.Length; i++) { RdDst dst = _Dst[i]; if (dst.TipoFrecuencia == TipoFrecuencia_t.HF && dst.Tx) { return(true); } } return(false); }
public Dictionary <int, RtxState> SetRtx(int group, int numPositionsByPage) { Dictionary <int, RtxState> prevRtxGroup = new Dictionary <int, RtxState>(); if (_Rtx != group) { if (_Rtx > 0) { for (int i = 0, to = NumDestinations; i < to; i++) { RdDst dst = _Dst[i]; if (dst.TempRtxGroup != dst.RtxGroup) { prevRtxGroup[i] = (dst.RtxGroup == 0 ? RtxState.Add : RtxState.Delete); dst.TempRtxGroup = dst.RtxGroup; } else if (dst.RtxGroup == _Rtx) { prevRtxGroup[i] = RtxState.NoChanged; } } } _NumRtx = 0; _Rtx = group; if (group > 0) { for (int i = _Page * numPositionsByPage, to = (_Page + 1) * numPositionsByPage; i < to; i++) //for (int i = 0, to = NumDestinations; i < to; i++) { RdDst dst = _Dst[i]; if (dst.RtxGroup == group) { _NumRtx++; } } } General.SafeLaunchEvent(RtxChanged, this); } return(prevRtxGroup); }
public int GetNumFrAvalilablesForRtx(int from, int count) { Debug.Assert(from + count <= NumDestinations); int numTx = 0; for (int i = 0; i < count; i++) { RdDst dst = _Dst[i + from]; if (dst.Tx && (dst.RtxGroup != -1)) { numTx++; } } return(numTx); }
public NotifMsg SwitchTempGroupIfRtxOn(int id, bool someJack) { RdDst dst = _Dst[id]; if ((_Rtx > 0) && dst.Tx && !dst.Unavailable && ((dst.RtxGroup == 0) || (dst.RtxGroup == _Rtx))) { Debug.Assert((dst.TempRtxGroup == 0) || (dst.TempRtxGroup == _Rtx)); if (dst.TempRtxGroup == 0) { if (!someJack) { NotifMsg msg = new NotifMsg(Resources.NoJacksError, Resources.BadOperation, Resources.NoJacksError, 0, MessageType.Error, MessageButtons.Ok); return(msg); } if (_NumRtx == 10) { NotifMsg msg = new NotifMsg(Resources.RtxMaxFrError, Resources.MessageErrorCaption, Resources.RtxMaxFrError, 0, MessageType.Error, MessageButtons.Ok); return(msg); } dst.TempRtxGroup = _Rtx; _NumRtx++; } else { // No está permitido sacar un elemento del grupo de RTX si hay una retransmisión en curso //Ver Incidencia #2852 if ((dst.Ptt == PttState.ExternPtt) || (dst.Squelch == SquelchState.SquelchOnlyPort) || (dst.Squelch == SquelchState.SquelchPortAndMod)) { NotifMsg msg = new NotifMsg(Resources.RtxActiveNoRemove, Resources.MessageErrorCaption, Resources.RtxActiveNoRemove, 0, MessageType.Error, MessageButtons.Ok); return(msg); } dst.TempRtxGroup = 0; _NumRtx--; } General.SafeLaunchEvent(RadioChanged, this, new RangeMsg(id, 1)); } return(null); }
public Dictionary <int, RtxState> ResetRtx() { Dictionary <int, RtxState> prevRtxGroup = new Dictionary <int, RtxState>(); for (int i = 0, to = NumDestinations; i < to; i++) { RdDst dst = _Dst[i]; //Debug.Assert(dst.Tx && !dst.Unavailable); //Debug.Assert(((dst.RtxGroup == 0) && (dst.TempRtxGroup == _Rtx)) || ((dst.RtxGroup == _Rtx) && (dst.TempRtxGroup == 0))); if (dst.RtxGroup != 0) { prevRtxGroup[i] = RtxState.Delete; dst.TempRtxGroup = 0; } } _NumRtx = 0; _Rtx = 0; General.SafeLaunchEvent(RtxChanged, this); return(prevRtxGroup); }