package uk.co.mmscomputing.device.capi.facility; import uk.co.mmscomputing.device.capi.*; import uk.co.mmscomputing.device.capi.exception.CapiIOException; public class SupServiceInd extends FacilityInd{ protected int function; public SupServiceInd(Rider r){ super(r); function=r.readWord(); // supplementary services function r.structBegin(); // supplementary service-specific parameter } static public MsgIn create(Rider r){ int function = r.readWord(); // supplementary services function r.structBegin(); // supplementary service-specific parameter switch(function){ // case CAPI_SERVICES_GETSUPPORTEDSERVICES: n/a // case CAPI_SERVICES_LISTEN: n/a case CAPI_SERVICES_HOLD: return new SupServiceInd.HoldInd(r); case CAPI_SERVICES_RETRIEVE: return new SupServiceInd.RetrieveInd(r); case CAPI_SERVICES_ECT: return new SupServiceInd.ECTInd(r); case CAPI_SERVICES_CF_ACTIVATE: return new CallForwardInd.ActivateInd(r); case CAPI_SERVICES_CF_DEACTIVATE: return new CallForwardInd.DeactivateInd(r); case CAPI_SERVICES_CF_INTERROGATEPARAMETERS: return new CallForwardInd.InterrogateParametersInd(r); case CAPI_SERVICES_CF_INTERROGATENUMBERS: return new CallForwardInd.InterrogateNumbersInd(r); case CAPI_SERVICES_CD: return new CallDeflectionInd(r); } throw new IllegalArgumentException(); } static public class HoldInd extends SupServiceInd{ private int reason; public HoldInd(Rider r){ super(r);reason=r.readWord(); // Supplementary Service Reason } public int getReason(){return reason;} public String toString(){ String s=super.toString(); s+="reason = 0x"+Integer.toHexString(reason)+" - "+CapiIOException.capiInfo2Str(reason)+"\n"; return s; } } static public class RetrieveInd extends SupServiceInd{ private int reason; public RetrieveInd(Rider r){ super(r);reason=r.readWord(); // Supplementary Service Reason } public int getReason(){return reason;} public String toString(){ String s=super.toString(); s+="reason = 0x"+Integer.toHexString(reason)+" - "+CapiIOException.capiInfo2Str(reason)+"\n"; return s; } } static public class ECTInd extends SupServiceInd{ private int reason; public ECTInd(Rider r){ super(r);reason=r.readWord(); // Supplementary Service Reason } public int getReason(){return reason;} public String toString(){ String s=super.toString(); s+="reason = 0x"+Integer.toHexString(reason)+" - "+CapiIOException.capiInfo2Str(reason)+"\n"; return s; } } }