public ReportConfigEUTRA Decode(BitArrayInputStream input)
            {
                BitMaskStream     stream;
                ReportConfigEUTRA geutra = new ReportConfigEUTRA();

                geutra.InitDefaults();
                bool flag = input.readBit() != 0;

                geutra.triggerType = triggerType_Type.PerDecoder.Instance.Decode(input);
                int nBits = 1;

                geutra.triggerQuantity = (triggerQuantity_Enum)input.readBits(nBits);
                nBits = 1;
                geutra.reportQuantity = (reportQuantity_Enum)input.readBits(nBits);
                geutra.maxReportCells = input.readBits(3) + 1;
                nBits = 4;
                geutra.reportInterval = (ReportInterval)input.readBits(nBits);
                nBits = 3;
                geutra.reportAmount = (reportAmount_Enum)input.readBits(nBits);
                if (flag)
                {
                    stream = new BitMaskStream(input, 8);
                    bool flag2 = input.readBit() != 0;//verExt3Present
                    stream = new BitMaskStream(input, 6);
                    stream = new BitMaskStream(input, 2);
                    if (stream.Read())
                    {
                        nBits = 1;
                        geutra.si_RequestForHO_r9 = (si_RequestForHO_r9_Enum)input.readBits(nBits);
                    }
                    if (stream.Read())
                    {
                        nBits = 1;
                        geutra.ue_RxTxTimeDiffPeriodical_r9 = (ue_RxTxTimeDiffPeriodical_r9_Enum)input.readBits(nBits);
                    }
                    stream = new BitMaskStream(input, 7);
                    if (flag2)
                    {
                        stream = new BitMaskStream(input, 8);
                        stream = new BitMaskStream(input, 2);
                        if (stream.Read())
                        {
                            nBits = 1;
                            geutra.includeLocationInfo_r10 = (includeLocationInfo_r10_Enum)input.readBits(nBits);
                        }
                        if (stream.Read())
                        {
                            nBits = 1;
                            geutra.reportAddNeighMeas_r10 = (reportAddNeighMeas_r10_Enum)input.readBits(nBits);
                        }
                        stream = new BitMaskStream(input, 4);
                        bool flag3 = input.readBit() != 0; //verExt4Present
                        if (flag3)
                        {
                            stream = new BitMaskStream(input, 1);
                            if (stream.Read())
                            {
                                nBits = 4;
                                geutra.alternativeTimeToTrigger_r12 = (TimeToTrigger)input.readBits(nBits);
                            }
                        }
                    }
                }
                return(geutra);
            }
Beispiel #2
0
 public ReportConfigEUTRA Decode(BitArrayInputStream input)
 {
     BitMaskStream stream;
     ReportConfigEUTRA geutra = new ReportConfigEUTRA();
     geutra.InitDefaults();
     bool flag = input.ReadBit() != 0;
     geutra.triggerType = triggerType_Type.PerDecoder.Instance.Decode(input);
     int nBits = 1;
     geutra.triggerQuantity = (triggerQuantity_Enum)input.ReadBits(nBits);
     nBits = 1;
     geutra.reportQuantity = (reportQuantity_Enum)input.ReadBits(nBits);
     geutra.maxReportCells = input.ReadBits(3) + 1;
     nBits = 4;
     geutra.reportInterval = (ReportInterval)input.ReadBits(nBits);
     nBits = 3;
     geutra.reportAmount = (reportAmount_Enum)input.ReadBits(nBits);
     if (flag)
     {
         stream = new BitMaskStream(input, 8);
         bool flag2 = input.ReadBit() != 0;//verExt3Present
         stream=new BitMaskStream(input, 6);
         stream=new BitMaskStream(input, 2);
         if (stream.Read())
         {
             nBits = 1;
             geutra.si_RequestForHO_r9 = (si_RequestForHO_r9_Enum) input.ReadBits(nBits);
         }
         if (stream.Read()) 
         {
             nBits = 1;
             geutra.ue_RxTxTimeDiffPeriodical_r9 = (ue_RxTxTimeDiffPeriodical_r9_Enum) input.ReadBits(nBits);
         }
         stream=new BitMaskStream(input, 7);
         if (flag2)
         {
             stream = new BitMaskStream(input, 8);
             stream = new BitMaskStream(input, 2);
             if (stream.Read())
             {
                 nBits = 1;
                 geutra.includeLocationInfo_r10 = (includeLocationInfo_r10_Enum) input.ReadBits(nBits);
             }
             if (stream.Read())
             {
                 nBits = 1;
                 geutra.reportAddNeighMeas_r10 = (reportAddNeighMeas_r10_Enum) input.ReadBits(nBits);
             }
             stream = new BitMaskStream(input, 4);
             bool flag3 = input.ReadBit() != 0; //verExt4Present
             if (flag3)
             {
                 stream = new BitMaskStream(input, 1);
                 if (stream.Read())
                 {
                     nBits = 4;
                     geutra.alternativeTimeToTrigger_r12 = (TimeToTrigger) input.ReadBits(nBits);
                 }
             }
         }
     }
     return geutra;
 }