package uk.co.mmscomputing.device.capi.q931; import uk.co.mmscomputing.device.capi.*; // ETSI 300 102, Q.931 public class Q931Factory implements Q931Constants{ static public Q931 create(Rider r){ return create(r.read(),r); // Information element identifier Q.931/Table 4-3 p59 } static public Q931 create(int iei,Rider r){ switch(iei){ // case 0x0000: return new SegmentedMessage(r); case 0x0004: return new BearerCapability(r); case 0x0008: return new Cause(r); // case 0x0010: return new CallIdentity(r); // case 0x0014: return new CallState(r); case 0x0018: return new ChannelIdentification(r); // case 0x001C: return new Facility(r); case 0x001E: return new ProgressIndicator(r); // case 0x0020: return new NetworkSpecificFacilities(r); // case 0x0027: return new NotificationIndicator(r); case 0x0028: return new Display(r); case 0x0029: return new Q931Date(r); case 0x002C: return new KeypadFacility(r); // case 0x0034: return new Signal(r); // case 0x0036: return new Switchhook(r); // case 0x0038: return new FeatureActivation(r); // case 0x0039: return new FeatureIndication(r); // case 0x0040: return new InformationRate(r); // case 0x0042: return new End2EndTransitDelay(r); // case 0x0043: return new TransitDelaySelectionAndIndication(r); // case 0x0044: return new PacketLayerBinaryParameters(r); // case 0x0045: return new PacketLayerWindowSize(r); // case 0x0046: return new PacketSize(r); case 0x006C: return new CallingPartyNumber(r); case 0x006D: return new CallingPartySubAddress(r); case 0x0070: return new CalledPartyNumber(r); case 0x0071: return new CalledPartySubAddress(r); // case 0x0074: return new RedirectingNumber(r); // case 0x0078: return new TransitNetworkSelection(r); // case 0x0079: return new RestartIndicator(r); case 0x007C: return new LowLayerCompatibility(r); case 0x007D: return new HighLayerCompatibility(r); case 0x007E: return new UserUser(r); // case 0x007F: return new Escape for extension(r); // case 0x0090: return new Shift(r); // case 0x00A0: return new MoreData(r); case 0x00A1: return new SendingComplete(r); // case 0x00B0: return new CongestionLevel(r); // case 0x00D0: return new RepeatIndicator(r); } System.err.println("Unimplemented IEI = 0x"+Integer.toHexString(iei)); r.setLength(); try{ System.err.println(r.toString()); }catch(IndexOutOfBoundsException ioobe){ }finally{ r.skip(); } return new Q931(); } }