/// <summary> /// Creates the decoder. /// </summary> /// <param name="information">The information.</param> /// <returns></returns> public static AbstractExpandedDecoder createDecoder(BitArray information) { if (information[1]) { return(new AI01AndOtherAIs(information)); } if (!information[2]) { return(new AnyAIDecoder(information)); } int fourBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 4); switch (fourBitEncodationMethod) { case 4: return(new AI013103decoder(information)); case 5: return(new AI01320xDecoder(information)); } int fiveBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 5); switch (fiveBitEncodationMethod) { case 12: return(new AI01392xDecoder(information)); case 13: return(new AI01393xDecoder(information)); } int sevenBitEncodationMethod = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 7); switch (sevenBitEncodationMethod) { case 56: return(new AI013x0x1xDecoder(information, "310", "11")); case 57: return(new AI013x0x1xDecoder(information, "320", "11")); case 58: return(new AI013x0x1xDecoder(information, "310", "13")); case 59: return(new AI013x0x1xDecoder(information, "320", "13")); case 60: return(new AI013x0x1xDecoder(information, "310", "15")); case 61: return(new AI013x0x1xDecoder(information, "320", "15")); case 62: return(new AI013x0x1xDecoder(information, "310", "17")); case 63: return(new AI013x0x1xDecoder(information, "320", "17")); } throw new InvalidOperationException("unknown decoder: " + information); }
internal AbstractExpandedDecoder(BitArray information) { this.information = information; this.generalDecoder = new GeneralAppIdDecoder(information); }