Exemple #1
0
 public MeasObjectEUTRA Decode(BitArrayInputStream input)
 {
     int num3;
     int num4;
     long num5;
     BitMaskStream stream3;
     MeasObjectEUTRA teutra = new MeasObjectEUTRA();
     teutra.InitDefaults();
     bool flag = input.ReadBit() != 0;
     BitMaskStream stream = new BitMaskStream(input, 1);
     BitMaskStream stream2 = new BitMaskStream(input, 5);
     teutra.carrierFreq = input.ReadBits(0x10);
     int nBits = 3;
     teutra.allowedMeasBandwidth = (AllowedMeasBandwidth)input.ReadBits(nBits);
     teutra.presenceAntennaPort1 = input.ReadBit() == 1;
     teutra.neighCellConfig = input.ReadBitString(2);
     if (stream.Read())
     {
         nBits = 5;
         teutra.offsetFreq = (Q_OffsetRange)input.ReadBits(nBits);
     }
     if (stream2.Read())
     {
         teutra.cellsToRemoveList = new List<long>();
         nBits = 5;
         num3 = input.ReadBits(nBits) + 1;
         for (num4 = 0; num4 < num3; num4++)
         {
             num5 = input.ReadBits(5) + 1;
             teutra.cellsToRemoveList.Add(num5);
         }
     }
     if (stream2.Read())
     {
         teutra.cellsToAddModList = new List<CellsToAddMod>();
         nBits = 5;
         int num6 = input.ReadBits(nBits) + 1;
         for (int i = 0; i < num6; i++)
         {
             CellsToAddMod item = CellsToAddMod.PerDecoder.Instance.Decode(input);
             teutra.cellsToAddModList.Add(item);
         }
     }
     if (stream2.Read())
     {
         teutra.blackCellsToRemoveList = new List<long>();
         nBits = 5;
         num3 = input.ReadBits(nBits) + 1;
         for (num4 = 0; num4 < num3; num4++)
         {
             num5 = input.ReadBits(5) + 1;
             teutra.blackCellsToRemoveList.Add(num5);
         }
     }
     if (stream2.Read())
     {
         teutra.blackCellsToAddModList = new List<BlackCellsToAddMod>();
         nBits = 5;
         int num8 = input.ReadBits(nBits) + 1;
         for (int j = 0; j < num8; j++)
         {
             BlackCellsToAddMod mod2 = BlackCellsToAddMod.PerDecoder.Instance.Decode(input);
             teutra.blackCellsToAddModList.Add(mod2);
         }
     }
     if (stream2.Read())
     {
         teutra.cellForWhichToReportCGI = input.ReadBits(9);
     }
     if (flag)
     {
         stream3 = new BitMaskStream(input, 2);
         if (stream3.Read())
         {
             nBits = 3;
             teutra.measCycleSCell_r10 = (MeasCycleSCell_r10)input.ReadBits(nBits);
         }
         if (stream3.Read())
         {
             teutra.measSubframePatternConfigNeigh_r10 = MeasSubframePatternConfigNeigh_r10.PerDecoder.Instance.Decode(input);
         }
     }
     if (flag)
     {
         stream3 = new BitMaskStream(input, 1);
         if (stream3.Read())
         {
             teutra.widebandRSRQ_Meas_r11 = input.ReadBit() == 1;
         }
     }
     if (flag)
     {
         stream3 = new BitMaskStream(input, 2);
         if (stream3.Read())
         {
             teutra.altTTT_CellsToRemoveList_r12 = new List<long>();
             nBits = 5;
             num3 = input.ReadBits(nBits) + 1;
             for (num4 = 0; num4 < num3; num4++)
             {
                 num5 = input.ReadBits(5) + 1;
                 teutra.altTTT_CellsToRemoveList_r12.Add(num5);
             }
         }
         if (!stream3.Read())
         {
             return teutra;
         }
         teutra.altTTT_CellsToAddModList_r12 = new List<AltTTT_CellsToAddMod_r12>();
         nBits = 5;
         int num10 = input.ReadBits(nBits) + 1;
         for (int k = 0; k < num10; k++)
         {
             AltTTT_CellsToAddMod_r12 _r = AltTTT_CellsToAddMod_r12.PerDecoder.Instance.Decode(input);
             teutra.altTTT_CellsToAddModList_r12.Add(_r);
         }
     }
     return teutra;
 }
Exemple #2
0
            public MeasObjectEUTRA Decode(BitArrayInputStream input)
            {
                int             num3;
                int             num4;
                long            num5;
                BitMaskStream   stream3;
                MeasObjectEUTRA teutra = new MeasObjectEUTRA();

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

                teutra.carrierFreq = input.ReadBits(0x10);
                int nBits = 3;

                teutra.allowedMeasBandwidth = (AllowedMeasBandwidth)input.ReadBits(nBits);
                teutra.presenceAntennaPort1 = input.ReadBit() == 1;
                teutra.neighCellConfig      = input.ReadBitString(2);
                if (stream.Read())
                {
                    nBits             = 5;
                    teutra.offsetFreq = (Q_OffsetRange)input.ReadBits(nBits);
                }
                if (stream2.Read())
                {
                    teutra.cellsToRemoveList = new List <long>();
                    nBits = 5;
                    num3  = input.ReadBits(nBits) + 1;
                    for (num4 = 0; num4 < num3; num4++)
                    {
                        num5 = input.ReadBits(5) + 1;
                        teutra.cellsToRemoveList.Add(num5);
                    }
                }
                if (stream2.Read())
                {
                    teutra.cellsToAddModList = new List <CellsToAddMod>();
                    nBits = 5;
                    int num6 = input.ReadBits(nBits) + 1;
                    for (int i = 0; i < num6; i++)
                    {
                        CellsToAddMod item = CellsToAddMod.PerDecoder.Instance.Decode(input);
                        teutra.cellsToAddModList.Add(item);
                    }
                }
                if (stream2.Read())
                {
                    teutra.blackCellsToRemoveList = new List <long>();
                    nBits = 5;
                    num3  = input.ReadBits(nBits) + 1;
                    for (num4 = 0; num4 < num3; num4++)
                    {
                        num5 = input.ReadBits(5) + 1;
                        teutra.blackCellsToRemoveList.Add(num5);
                    }
                }
                if (stream2.Read())
                {
                    teutra.blackCellsToAddModList = new List <BlackCellsToAddMod>();
                    nBits = 5;
                    int num8 = input.ReadBits(nBits) + 1;
                    for (int j = 0; j < num8; j++)
                    {
                        BlackCellsToAddMod mod2 = BlackCellsToAddMod.PerDecoder.Instance.Decode(input);
                        teutra.blackCellsToAddModList.Add(mod2);
                    }
                }
                if (stream2.Read())
                {
                    teutra.cellForWhichToReportCGI = input.ReadBits(9);
                }
                if (flag)
                {
                    stream3 = new BitMaskStream(input, 2);
                    if (stream3.Read())
                    {
                        nBits = 3;
                        teutra.measCycleSCell_r10 = (MeasCycleSCell_r10)input.ReadBits(nBits);
                    }
                    if (stream3.Read())
                    {
                        teutra.measSubframePatternConfigNeigh_r10 = MeasSubframePatternConfigNeigh_r10.PerDecoder.Instance.Decode(input);
                    }
                }
                if (flag)
                {
                    stream3 = new BitMaskStream(input, 1);
                    if (stream3.Read())
                    {
                        teutra.widebandRSRQ_Meas_r11 = input.ReadBit() == 1;
                    }
                }
                if (flag)
                {
                    stream3 = new BitMaskStream(input, 2);
                    if (stream3.Read())
                    {
                        teutra.altTTT_CellsToRemoveList_r12 = new List <long>();
                        nBits = 5;
                        num3  = input.ReadBits(nBits) + 1;
                        for (num4 = 0; num4 < num3; num4++)
                        {
                            num5 = input.ReadBits(5) + 1;
                            teutra.altTTT_CellsToRemoveList_r12.Add(num5);
                        }
                    }
                    if (!stream3.Read())
                    {
                        return(teutra);
                    }
                    teutra.altTTT_CellsToAddModList_r12 = new List <AltTTT_CellsToAddMod_r12>();
                    nBits = 5;
                    int num10 = input.ReadBits(nBits) + 1;
                    for (int k = 0; k < num10; k++)
                    {
                        AltTTT_CellsToAddMod_r12 _r = AltTTT_CellsToAddMod_r12.PerDecoder.Instance.Decode(input);
                        teutra.altTTT_CellsToAddModList_r12.Add(_r);
                    }
                }
                return(teutra);
            }