package uk.co.mmscomputing.device.capi.facility; import uk.co.mmscomputing.device.capi.*; public class DTMFReq extends FacilityReq{ static final public int DTMF_START=1; static final public int DTMF_STOP=2; static final public int DTMF_SEND=3; public DTMFReq(int appid, int ncci, StructOut param){ super(appid,ncci,CAPI_FACILITY_DTMF,param); } public DTMFReq(int appid, int ncci, int fct, String digits){ this(appid,ncci,getFacReqParam(fct,digits)); } public DTMFReq(int appid, int ncci, int fct){ this(appid,ncci,getFacReqParam(fct)); } static private StructOut getFacReqParam(int fct){ StructOut dtmf=new StructOut(10); dtmf.writeWord(fct); // function 'stop listening' dtmf.writeWord(40); // tone-duration dtmf.writeWord(40); // gap-duration dtmf.writeByte(0); // dtmf.writeByte(2); // characteristics of DTMF recognition dtmf.writeWord(0); // default selectivity return dtmf; // facility request parameter } static private StructOut getFacReqParam(int fct,String digits){ // assert(digits.length()<255); int len=digits.length(); StructOut dtmf=new StructOut(10+len); dtmf.writeWord(fct); // function 'stop listening' dtmf.writeWord(40); // tone-duration dtmf.writeWord(40); // gap-duration dtmf.writeByte(len); // struct len digits dtmf.writeData(digits.getBytes(),0,len); // characters to be sent, '0'..'9','*','#','A'..'D' dtmf.writeByte(2); // characteristics of DTMF recognition dtmf.writeWord(0); // default selectivity return dtmf; // facility request parameter } static public DTMFReq getStartReq(int appid, int plci){ return new DTMFReq(appid,plci&0x0000FFFF,DTMFReq.DTMF_START); } static public DTMFReq getStopReq(int appid, int plci){ return new DTMFReq(appid,plci&0x0000FFFF,DTMFReq.DTMF_STOP); } static public DTMFReq getSendReq(int appid, int plci, String digits){ return new DTMFReq(appid,plci&0x0000FFFF,DTMFReq.DTMF_SEND,digits); } }