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; }
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); }