package uk.co.mmscomputing.device.capi;
import java.io.*;
import java.util.*;
import uk.co.mmscomputing.util.metadata.*;
import uk.co.mmscomputing.concurrent.*;
import uk.co.mmscomputing.device.capi.protocol.*;
import uk.co.mmscomputing.device.capi.exception.*;
public class CapiMetadata extends Metadata implements CapiConstants, Serializable{
public CapiMetadata(){
}
public CapiMetadata(Class main){
super(main);
}
public void useALaw(){putInt(capiSpeechCodingID,LAYER1USERINFO_ALAW);}
public void useuLaw(){putInt(capiSpeechCodingID,LAYER1USERINFO_uLAW);}
public void use64kBit(){putInt("capi.bandwidth",KBIT64);}
public void use56kBit(){putInt("capi.bandwidth",KBIT56);}
public void useController(int no){putInt("capi.controller.id",no);}
public void setController(int no){putInt("capi.controller.id",no);}
public int getController(){return getInt("capi.controller.id");}
public void useMaxLogicalConnections(int max){putInt("capi.maxlogicalcon",max);}
public void useB3DataBlocks(int max){putInt("capi.maxb3datablocks",max);}
public void useB3DataBlockSize(int max){putInt("capi.maxb3datablocksize",max);}
public void acceptAllCalls(){putInt("capi.cipmask",CIP_ACCEPTALL);}
public void useLocalNo(String no){put("capi.localno",no);}
public void useFaxHeader(String header){put("capi.faxheader",header);}
public void setMaxIllegalLineCodings(int max){putInt("capi.fax.maxIllegalLineCodings",max);}
public int getMaxIllegalLineCodings(){return getInt("capi.fax.maxIllegalLineCodings",-1);}
static abstract public class State{
final int line;
public State(int line){this.line=line;}
public int getLine(){return line;}
public abstract String getName();
}
static public class Indication extends State{
public String localno;
public String remoteno;
public String name;
public boolean accept=false;
// private int speechcoding=-1;
private int cntl=-1;
public int rejectFlag=0;
public int waitformsecs=0;
public Semaphore blocker=null;
public boolean gotPickedUp=false;
public BProtocol protocol=null;
private CapiPlugin plugin=null;
public Indication(int line){super(line);}
public String getName(){return "INDICATION";};
public boolean isAccepted(){return accept;}
public void setProtocol(BProtocol protocol){this.protocol=protocol;}
public BProtocol getProtocol(){return protocol;}
public void setPlugin(CapiPlugin plugin){this.plugin=plugin;}
CapiPlugin getPlugin(){return plugin;}
// public void setSpeechCoding(int sc){speechcoding=sc;}
// public int getSpeechCoding(){return speechcoding;}
public void setController(int cntl){this.cntl=cntl;}
public int getController(){return cntl;}
public void setAccept(int msecs,Semaphore b){
accept=true;
rejectFlag=ACCEPT;
waitformsecs=msecs;
blocker=null;
if(msecs>0){
if(b!=null){
blocker=b;
}else{
blocker=new Semaphore(0,true);
}
}
}
public void setAccept(int msecs){
setAccept(msecs,null);
}
public void pickUp(){
if(blocker!=null){
gotPickedUp=true;
blocker.release();
blocker=null;
}
}
public void setIgnore(){
this.accept=false;
rejectFlag=IGNORE;
}
}
}