Ejemplo n.º 1
0
 public SystemInformationBlockType8 Decode(BitArrayInputStream input)
 {
     int num2;
     BitMaskStream stream2;
     SystemInformationBlockType8 type = new SystemInformationBlockType8();
     type.InitDefaults();
     bool flag = false;
     flag = input.readBit() != 0;
     BitMaskStream stream = flag ? new BitMaskStream(input, 5) : new BitMaskStream(input, 4);
     if (stream.Read())
     {
         type.systemTimeInfo = SystemTimeInfoCDMA2000.PerDecoder.Instance.Decode(input);
     }
     if (stream.Read())
     {
         type.searchWindowSize = (long)input.readBits(4);
     }
     if (stream.Read())
     {
         type.parametersHRPD = parametersHRPD_Type.PerDecoder.Instance.Decode(input);
     }
     if (stream.Read())
     {
         type.parameters1XRTT = parameters1XRTT_Type.PerDecoder.Instance.Decode(input);
     }
     if (flag && stream.Read())
     {
         int nBits = input.readBits(8);
         type.lateNonCriticalExtension = input.readOctetString(nBits);
     }
     if (flag)
     {
         stream2 = new BitMaskStream(input, 5);
         if (stream2.Read())
         {
             type.csfb_SupportForDualRxUEs_r9 = input.readBit() == 1;
         }
         if (stream2.Read())
         {
             type.cellReselectionParametersHRPD_v920 = CellReselectionParametersCDMA2000_v920.PerDecoder.Instance.Decode(input);
         }
         if (stream2.Read())
         {
             type.cellReselectionParameters1XRTT_v920 = CellReselectionParametersCDMA2000_v920.PerDecoder.Instance.Decode(input);
         }
         if (stream2.Read())
         {
             type.csfb_RegistrationParam1XRTT_v920 = CSFB_RegistrationParam1XRTT_v920.PerDecoder.Instance.Decode(input);
         }
         if (stream2.Read())
         {
             type.ac_BarringConfig1XRTT_r9 = AC_BarringConfig1XRTT_r9.PerDecoder.Instance.Decode(input);
         }
     }
     if (flag)
     {
         stream2 = new BitMaskStream(input, 1);
         if (stream2.Read())
         {
             num2 = 1;
             type.csfb_DualRxTxSupport_r10 = (csfb_DualRxTxSupport_r10_Enum)input.readBits(num2);
         }
     }
     if (flag)
     {
         stream2 = new BitMaskStream(input, 1);
         if (!stream2.Read())
         {
             return type;
         }
         type.sib8_PerPLMN_List_r11 = new List<SIB8_PerPLMN_r11>();
         num2 = 3;
         int num3 = input.readBits(num2) + 1;
         for (int i = 0; i < num3; i++)
         {
             SIB8_PerPLMN_r11 item = SIB8_PerPLMN_r11.PerDecoder.Instance.Decode(input);
             type.sib8_PerPLMN_List_r11.Add(item);
         }
     }
     return type;
 }
Ejemplo n.º 2
0
            public SystemInformationBlockType8 Decode(BitArrayInputStream input)
            {
                int           num2;
                BitMaskStream stream2;
                var           type = new SystemInformationBlockType8();

                type.InitDefaults();
                var flag = false;

                flag = input.ReadBit() != 0;
                var stream = flag ? new BitMaskStream(input, 5) : new BitMaskStream(input, 4);

                if (stream.Read())
                {
                    type.systemTimeInfo = SystemTimeInfoCDMA2000.PerDecoder.Instance.Decode(input);
                }
                if (stream.Read())
                {
                    type.searchWindowSize = (long)input.ReadBits(4);
                }
                if (stream.Read())
                {
                    type.parametersHRPD = parametersHRPD_Type.PerDecoder.Instance.Decode(input);
                }
                if (stream.Read())
                {
                    type.parameters1XRTT = parameters1XRTT_Type.PerDecoder.Instance.Decode(input);
                }
                if (flag && stream.Read())
                {
                    var nBits = input.ReadBits(8);
                    type.lateNonCriticalExtension = input.readOctetString(nBits);
                }
                if (flag)
                {
                    stream2 = new BitMaskStream(input, 5);
                    if (stream2.Read())
                    {
                        type.csfb_SupportForDualRxUEs_r9 = input.ReadBit() == 1;
                    }
                    if (stream2.Read())
                    {
                        type.cellReselectionParametersHRPD_v920 = CellReselectionParametersCDMA2000_v920.PerDecoder.Instance.Decode(input);
                    }
                    if (stream2.Read())
                    {
                        type.cellReselectionParameters1XRTT_v920 = CellReselectionParametersCDMA2000_v920.PerDecoder.Instance.Decode(input);
                    }
                    if (stream2.Read())
                    {
                        type.csfb_RegistrationParam1XRTT_v920 = CSFB_RegistrationParam1XRTT_v920.PerDecoder.Instance.Decode(input);
                    }
                    if (stream2.Read())
                    {
                        type.ac_BarringConfig1XRTT_r9 = AC_BarringConfig1XRTT_r9.PerDecoder.Instance.Decode(input);
                    }
                }
                if (flag)
                {
                    stream2 = new BitMaskStream(input, 1);
                    if (stream2.Read())
                    {
                        num2 = 1;
                        type.csfb_DualRxTxSupport_r10 = (csfb_DualRxTxSupport_r10_Enum)input.ReadBits(num2);
                    }
                }
                if (flag)
                {
                    stream2 = new BitMaskStream(input, 1);
                    if (!stream2.Read())
                    {
                        return(type);
                    }
                    type.sib8_PerPLMN_List_r11 = new List <SIB8_PerPLMN_r11>();
                    num2 = 3;
                    var num3 = input.ReadBits(num2) + 1;
                    for (var i = 0; i < num3; i++)
                    {
                        var item = SIB8_PerPLMN_r11.PerDecoder.Decode(input);
                        type.sib8_PerPLMN_List_r11.Add(item);
                    }
                }
                return(type);
            }