package uk.co.mmscomputing.device.capi.q931;
import uk.co.mmscomputing.device.capi.*;
public class ProgressIndicator extends Q931{
// ITU Recommendation Q.931 (03/93) p80 4.5.23.
// uk.co.mmscomputing.device.capi.plc.InfoInd
public int codingStandard=0;
public int location=0;
public int progressDescription=0;
public ProgressIndicator(Rider r){
r.setLength();
try{
int o=r.read(); // octet 3
codingStandard = getBits(o,7,6);
location = getBits(o,4,1);
if(codingStandard!=CCITT){throw new IllegalArgumentException();}
o=r.read(); // octet 4
progressDescription=getBits(o,7,1);
}catch(IndexOutOfBoundsException ioobe){
// ioobe.printStackTrace();
}finally{
r.skip();
}
}
public ProgressIndicator(byte[] data){
this(new Rider(data));
}
public String toString(){
String s="Progress Indicator - ";
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;
}
switch(progressDescription){
case 1: s+="\n Progress Description: Call is not end-to-end ISDN";break;
case 2: s+="\n Progress Description: Destination address is non ISDN";break;
case 3: s+="\n Progress Description: Origination address is non ISDN";break;
case 4: s+="\n Progress Description: Call has returned to the ISDN";break;
case 5: s+="\n Progress Description: Interworking has occurred and has resulted in a telecommunication service change.";break;
case 8: s+="\n Progress Description: Inband information or appropriate pattern now available";break;
}
return s;
}
}