コード例 #1
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
 public Radio()
 {
     for (int i = 0; i < NumDestinations; i++)
     {
         _Dst[i] = new RdDst(i);
     }
 }
コード例 #2
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }
コード例 #3
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }
コード例 #4
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }
コード例 #5
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }
コード例 #6
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }
コード例 #7
0
ファイル: Radio.cs プロジェクト: agluque62/svn-dev_TFT
        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);
        }