package uk.co.mmscomputing.device.capi;
import java.io.*;
import uk.co.mmscomputing.util.metadata.*;
import uk.co.mmscomputing.device.capi.exception.*;
import uk.co.mmscomputing.device.capi.man.*;
public class CapiController{
private int ctrlid=-1;
private String manufacturer="";
private int manuid=0;
private CapiProfile profile;
CapiController(int id)throws IOException{
ctrlid=id; // capi starts counting from 1
manufacturer=jcapi.getManufacturer(ctrlid);
if(manufacturer.toLowerCase().indexOf("avm")>=0){
manuid=ManufacturerConstants.CAPI_MANUID_AVM;
profile=new uk.co.mmscomputing.device.capi.man.avm.AVMProfile(jcapi.getProfile(ctrlid));
}else if(manufacturer.toLowerCase().indexOf("eicon")>=0){
manuid=ManufacturerConstants.CAPI_MANUID_EICON;
profile=new uk.co.mmscomputing.device.capi.man.eicon.EiconProfile(jcapi.getProfile(ctrlid));
}else{
profile=new CapiProfile(jcapi.getProfile(ctrlid));
}
}
public int getNoOfBChannels(){ return profile.getNoOfBChannels();}
public void update(Metadata md){
md.putInt("capi.controller.id",ctrlid);
md.putBoolean("capi.controller.isSupportingDTMF",profile.isSupportingDTMF());
md.putBoolean("capi.controller.isSupportingGroup3Fax",profile.isSupportingGroup3Fax());
}
public String getManufacturer(){return manufacturer;}
public CapiProfile getProfile(){return profile;}
public boolean isSupportingDTMF(){return profile.isSupportingDTMF();}
public boolean isSupportingGroup3Fax(){return profile.isSupportingGroup3Fax();}
public boolean isSupportingSupplementaryServices(){return profile.isSupportingSupplementaryServices();}
public int getId(){ return ctrlid;}
public int getOptions(){ return profile.getOptions();}
public int getB1Protocols(){ return profile.getB1Protocols();}
public int getB2Protocols(){ return profile.getB2Protocols();}
public int getB3Protocols(){ return profile.getB3Protocols();}
public String getName(){
/*
This works only with Linux-CAPI as expected.
Windows XP does not differentiate between the controllers. It will give you always the CAPI2032.DLL details [ctrlid=0].
*/
String s=""+ctrlid;
try{
int[] version=jcapi.getVersion(ctrlid);
s+=" "+manufacturer;
try{
s+=" ["+jcapi.getSerialNumber(ctrlid)+"]";
}catch(CapiIOException cioe){
System.err.println(cioe);
}
s+=" V: "+version[0]+"."+version[1]+" - "+version[2]+"."+version[3]+"\n";
}catch(CapiIOException cioe){
System.err.println(cioe);
}
return s;
}
public String toString(){
String s="Controller : "+ctrlid+"\n";
try{
int[] version=jcapi.getVersion(ctrlid);
s+="Manufacturer "+manufacturer+" [0x"+Integer.toHexString(manuid)+"]\n";
s+="Version "+version[0]+"."+version[1]+" - "+version[2]+"."+version[3]+"\n";
s+="Serial No "+jcapi.getSerialNumber(ctrlid)+"\n";
}catch(CapiIOException cioe){
System.err.println(cioe);
}
s+="\n"+profile.toString();
return s;
}
}