package uk.co.mmscomputing.device.capi.q931;
import uk.co.mmscomputing.device.capi.*;
public class Cause extends Q931{
// ITU Recommendation Q.931 (03/93) p84 4.5.12.
// ITU Recommendation Q.850 (03/93)
// uk.co.mmscomputing.device.capi.plc.InfoInd
public int codingStandard=0;
public int location=0;
public int recommendation=0;
public int cause=0;
public Cause(Rider r){
r.setLength();
try{
int o=r.read(); // octet 3
codingStandard = getBits(o,7,6);
if(codingStandard!=CCITT){throw new IllegalArgumentException();}
location = getBits(o,4,1);
if(isExt(o)){
recommendation=r.read(); // octet 3*
}
o=r.read(); // octet 4
cause=getBits(o,7,1);
}catch(IndexOutOfBoundsException ioobe){
// ioobe.printStackTrace();
}finally{
r.skip();
}
}
public Cause(byte[] data){ // decode
this(new Rider(data));
}
public String toString(){
String s="Cause - ";
switch(location){
case 0: s+="\n Location: User";break;
case 1: s+="\n Location: Private network serving the local user";break;
case 2: s+="\n Location: Public network serving the local user";break;
case 3: s+="\n Location: Transit network";break;
case 4: s+="\n Location: Public network serving the remote user";break;
case 5: s+="\n Location: Private network serving the remote user";break;
case 6: s+="\n Location: Network beyond interworking point";break;
}
/*
http://www.cisco.com/warp/public/129/isdn_disc_code.html
last accessed 2004-04-09
*/
switch(cause){
case 1: s+="\n unallocated (unassigned) number";break;
case 2: s+="\n no route to specifies transit network";break;
case 3: s+="\n no route to destination";break;
case 6: s+="\n channel unacceptable";break;
case 7: s+="\n call awarded and being delivered in an established channel";break;
case 16: s+="\n normal call clearing";break;
case 17: s+="\n user busy";break;
case 18: s+="\n no user responding";break;
case 19: s+="\n no answer from user (user alerted)";break;
case 22: s+="\n number changed";break;
case 26: s+="\n non-selected user clearing";break;
case 27: s+="\n destination out of order";break;
case 28: s+="\n invalid format (address incomplete)";break;
case 29: s+="\n facility rejected";break;
case 30: s+="\n response to status enquiry";break;
case 31: s+="\n normal, unspecified";break;
case 34: s+="\n no circuit/channel available";break;
case 38: s+="\n network out of order";break;
case 41: s+="\n temporary failure";break;
case 42: s+="\n switching equipment congestion";break;
case 43: s+="\n access information discarded";break;
case 44: s+="\n requested circuit/channel not available";break;
case 47: s+="\n resource unavailable, unspecified";break;
case 49: s+="\n quality of service not available";break;
case 50: s+="\n requested facility not subscribed";break;
case 57: s+="\n bearer capability not authorised";break;
case 58: s+="\n bearer capability not presently available";break;
case 63: s+="\n service or option not available unspecified";break;
case 65: s+="\n bearer capability not implemented";break;
case 66: s+="\n channel type not implemented";break;
case 69: s+="\n requested facility not implemented";break;
case 70: s+="\n only restricted digital information bearer capability is available";break;
case 79: s+="\n service or option not implemented, unspecified";break;
case 81: s+="\n invalid call reference value";break;
case 82: s+="\n identified channel does not exist";break;
case 83: s+="\n a suspended call exists, but this call identity does not";break;
case 84: s+="\n call identity in use";break;
case 85: s+="\n no call suspended";break;
case 86: s+="\n call having the requested call identity has been cleared";break;
case 88: s+="\n incompatible destination";break;
case 91: s+="\n invalid transit network selection";break;
case 95: s+="\n invalid message, unspecified";break;
case 96: s+="\n mandatory information element is missing";break;
case 97: s+="\n message type non-existent or not implemented";break;
case 98: s+="\n message not compatible with call state or messages TYPE NON-EXISTENT OR NOT IMPLEMENTED";break;
case 99: s+="\n information element non-existent or not implemented";break;
case 100:s+="\n invalid information element contents";break;
case 101:s+="\n message not compatible with call start";break;
case 102:s+="\n recovery on timer expiry";break;
case 111:s+="\n protocol error, unspecified";break;
case 127:s+="\n interworking, unspecified"; break;
}
return s;
}
}