Пример #1
0
            public InterFreqCarrierFreqInfo Decode(BitArrayInputStream input)
            {
                BitMaskStream            stream3;
                InterFreqCarrierFreqInfo info = new InterFreqCarrierFreqInfo();

                info.InitDefaults();
                bool          flag    = input.readBit() != 0;
                BitMaskStream stream  = new BitMaskStream(input, 1);
                BitMaskStream stream2 = new BitMaskStream(input, 5);

                info.dl_CarrierFreq = input.readBits(0x10);
                info.q_RxLevMin     = input.readBits(6) + -70;
                if (stream2.Read())
                {
                    info.p_Max = input.readBits(6) + -30;
                }
                info.t_ReselectionEUTRA = input.readBits(3);
                if (stream2.Read())
                {
                    info.t_ReselectionEUTRA_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
                }
                info.threshX_High = input.readBits(5);
                info.threshX_Low  = input.readBits(5);
                int nBits = 3;

                info.allowedMeasBandwidth = (AllowedMeasBandwidth)input.readBits(nBits);
                info.presenceAntennaPort1 = input.readBit() == 1;
                if (stream2.Read())
                {
                    info.cellReselectionPriority = input.readBits(3);
                }
                info.neighCellConfig = input.readBitString(2);
                if (stream.Read())
                {
                    nBits             = 5;
                    info.q_OffsetFreq = (Q_OffsetRange)input.readBits(nBits);
                }
                if (stream2.Read())
                {
                    info.interFreqNeighCellList = new List <InterFreqNeighCellInfo>();
                    nBits = 4;
                    int num3 = input.readBits(nBits) + 1;
                    for (int i = 0; i < num3; i++)
                    {
                        InterFreqNeighCellInfo item = InterFreqNeighCellInfo.PerDecoder.Instance.Decode(input);
                        info.interFreqNeighCellList.Add(item);
                    }
                }
                if (stream2.Read())
                {
                    info.interFreqBlackCellList = new List <PhysCellIdRange>();
                    nBits = 4;
                    int num5 = input.readBits(nBits) + 1;
                    for (int j = 0; j < num5; j++)
                    {
                        PhysCellIdRange range = PhysCellIdRange.PerDecoder.Instance.Decode(input);
                        info.interFreqBlackCellList.Add(range);
                    }
                }
                if (flag)
                {
                    stream3 = new BitMaskStream(input, 2);
                    if (stream3.Read())
                    {
                        info.q_QualMin_r9 = input.readBits(5) + -34;
                    }
                    if (stream3.Read())
                    {
                        info.threshX_Q_r9 = threshX_Q_r9_Type.PerDecoder.Instance.Decode(input);
                    }
                }
                if (flag)
                {
                    stream3 = new BitMaskStream(input, 1);
                    if (stream3.Read())
                    {
                        info.q_QualMinWB_r11 = input.readBits(5) + -34;
                    }
                }
                return(info);
            }
Пример #2
0
 public InterFreqCarrierFreqInfo Decode(BitArrayInputStream input)
 {
     BitMaskStream stream3;
     InterFreqCarrierFreqInfo info = new InterFreqCarrierFreqInfo();
     info.InitDefaults();
     bool flag = input.readBit() != 0;
     BitMaskStream stream = new BitMaskStream(input, 1);
     BitMaskStream stream2 = new BitMaskStream(input, 5);
     info.dl_CarrierFreq = input.readBits(0x10);
     info.q_RxLevMin = input.readBits(6) + -70;
     if (stream2.Read())
     {
         info.p_Max = input.readBits(6) + -30;
     }
     info.t_ReselectionEUTRA = input.readBits(3);
     if (stream2.Read())
     {
         info.t_ReselectionEUTRA_SF = SpeedStateScaleFactors.PerDecoder.Instance.Decode(input);
     }
     info.threshX_High = input.readBits(5);
     info.threshX_Low = input.readBits(5);
     int nBits = 3;
     info.allowedMeasBandwidth = (AllowedMeasBandwidth)input.readBits(nBits);
     info.presenceAntennaPort1 = input.readBit() == 1;
     if (stream2.Read())
     {
         info.cellReselectionPriority = input.readBits(3);
     }
     info.neighCellConfig = input.readBitString(2);
     if (stream.Read())
     {
         nBits = 5;
         info.q_OffsetFreq = (Q_OffsetRange)input.readBits(nBits);
     }
     if (stream2.Read())
     {
         info.interFreqNeighCellList = new List<InterFreqNeighCellInfo>();
         nBits = 4;
         int num3 = input.readBits(nBits) + 1;
         for (int i = 0; i < num3; i++)
         {
             InterFreqNeighCellInfo item = InterFreqNeighCellInfo.PerDecoder.Instance.Decode(input);
             info.interFreqNeighCellList.Add(item);
         }
     }
     if (stream2.Read())
     {
         info.interFreqBlackCellList = new List<PhysCellIdRange>();
         nBits = 4;
         int num5 = input.readBits(nBits) + 1;
         for (int j = 0; j < num5; j++)
         {
             PhysCellIdRange range = PhysCellIdRange.PerDecoder.Instance.Decode(input);
             info.interFreqBlackCellList.Add(range);
         }
     }
     if (flag)
     {
         stream3 = new BitMaskStream(input, 2);
         if (stream3.Read())
         {
             info.q_QualMin_r9 = input.readBits(5) + -34;
         }
         if (stream3.Read())
         {
             info.threshX_Q_r9 = threshX_Q_r9_Type.PerDecoder.Instance.Decode(input);
         }
     }
     if (flag)
     {
         stream3 = new BitMaskStream(input, 1);
         if (stream3.Read())
         {
             info.q_QualMinWB_r11 = input.readBits(5) + -34;
         }
     }
     return info;
 }