package uk.co.mmscomputing.device.capi.q931; import uk.co.mmscomputing.device.capi.*; public class BearerCapability extends Q931{ // ITU Recommendation Q.931 (03/93) p64 4.5.5. // uk.co.mmscomputing.device.capi.plc.ConnectInd // maximum length 12 octets public int codingStandard =-1; public int infoTransferCap =-1; // 0x00 = Speech; 0x10 = 3.1.kHz audio public int transferMode =-1; public int infoTransferRate =-1; // 0x10 = 64kbit/s; 0x11 = 128kbits/s; 0x18 = multi rate public int rateMultiplier =-1; public int userInfoLayer1Protocol =-1; // 0x02=G.711 u-law; 0x03=G.711 A-Law public int userInfoLayer2Protocol =-1; // public int userInfoLayer3Protocol =-1; // public BearerCapability(Rider r){ // decode r.setLength(); try{ int o=r.read(); // octet 3 codingStandard=getBits(o,7,6); if(codingStandard!=CCITT){throw new IllegalArgumentException();} infoTransferCap=getBits(o,5,1); o=r.read(); // octet 4 transferMode=getBits(o,7,6); infoTransferRate=getBits(o,5,1); if(infoTransferRate==0x18){ // multi rate rateMultiplier=getBits(r.read(),7,1); // octet 4.1 } o=r.read(); // octet 5 if(getBits(o,7,6)!=0x01){ System.err.println(getClass().getName()+":\n\tExpect Layer 1 Information.");return; } userInfoLayer1Protocol=getBits(o,5,1); if(isExt(o)){ o=r.read(); // octet 5a if(isExt(o)){ o=r.read(); // octet 5b if(isExt(o)){ o=r.read(); // octet 5c if(isExt(o)){ o=r.read(); // octet 5d } } } } o=r.read(); // octet 6 if(getBits(o,7,6)!=0x02){ System.err.println(getClass().getName()+":\n\tExpect Layer 2 Information.");return; } userInfoLayer2Protocol=getBits(o,5,1); o=r.read(); // octet 7 if(getBits(o,7,6)!=0x03){ System.err.println(getClass().getName()+":\n\tExpect Layer 3 Information.");return; } userInfoLayer3Protocol=getBits(o,5,1); }catch(IndexOutOfBoundsException ioobe){ // ioobe.printStackTrace(); }finally{ r.skip(); } } public BearerCapability(byte[] data){ // decode this(new Rider(data)); } public int getSpeechCoding(){ return userInfoLayer1Protocol; } public String toString(){ String s="Bearer Capability - "; s+="\n Transfer Capability = "+InformationTransferCapabilityStrs[infoTransferCap]; s+="\n Transfer Rate = "+InformationTransferRateStrs[infoTransferRate]; switch(userInfoLayer1Protocol){ case 2: s+="\n G.711 u-law";break; case 3: s+="\n G.711 A-law";break; } return s; } /* public static void main(String[] argv){ try{ System.err.println(InformationTransferCapabilityStrs[0]); System.err.println(InformationTransferCapabilityStrs[0x8]); System.err.println(InformationTransferCapabilityStrs[0x9]); System.err.println(InformationTransferCapabilityStrs[0x10]); System.err.println(InformationTransferCapabilityStrs[0x11]); System.err.println(InformationTransferCapabilityStrs[0x18]); System.err.println(InformationTransferCapabilityStrs[31]); System.err.println(InformationTransferRateStrs[0x10]); System.err.println(InformationTransferRateStrs[0x11]); System.err.println(InformationTransferRateStrs[0x13]); System.err.println(InformationTransferRateStrs[0x15]); System.err.println(InformationTransferRateStrs[0x17]); System.err.println(InformationTransferRateStrs[0x18]); System.err.println(InformationTransferRateStrs[31]); System.err.println(UserInformationLayer1ProtocolStrs[1]); System.err.println(UserInformationLayer1ProtocolStrs[2]); System.err.println(UserInformationLayer1ProtocolStrs[3]); System.err.println(UserInformationLayer1ProtocolStrs[4]); System.err.println(UserInformationLayer1ProtocolStrs[5]); System.err.println(UserInformationLayer1ProtocolStrs[7]); System.err.println(UserInformationLayer1ProtocolStrs[8]); System.err.println(UserInformationLayer1ProtocolStrs[9]); System.err.println(UserInformationLayer1ProtocolStrs[31]); }catch(Exception e){ System.err.println(e.getMessage()); } } */ }