package uk.co.mmscomputing.device.capi; import java.io.*; import uk.co.mmscomputing.device.capi.exception.*; public class CapiEnumerator{ static private int nobc=0; // number of b-channels static private CapiController[] ctrls=new CapiController[0]; static private void updateControllers(){ try{ nobc=0; int noc=jcapi.getNoOfControllers(); ctrls=new CapiController[noc]; int i=0,n=0; while(i<noc){ n++; // capi starts counting at 1 try{ ctrls[i]=new CapiController(n); nobc+=ctrls[i].getNoOfBChannels(); i++; }catch(Exception e){ // e.printStackTrace(); } } }catch(Exception e){ System.err.println(CapiEnumerator.class.getName()+"\n\t"+e.getMessage()); } } // static public int getNoOfControllers(){ // return ctrls.length; // } static public int getNoOfBChannels(){ return nobc; } static public CapiController[] getControllers(){ return ctrls; } static public CapiController getController(int id)throws CapiException{ for(int n=0;n<ctrls.length;n++){ CapiController cntl = ctrls[n]; if(cntl.getId()==id){ return cntl;} } if(nobc>0){ CapiController cntl = ctrls[0]; System.err.println("CapiEnumerator.getControllerById:\n\tUse controller "+cntl.getId()+" instead of "+id); return cntl; } throw new CapiException("CapiEnumerator.getControllerById:\n\tCannot find any controller."); } static public CapiController getController(CapiChannel channel)throws CapiException{ return getController(channel.getCtrlId()); } public CapiEnumerator(){ } public String toString(){ String s=""; s+="CapiEnumerator.getNoOfControllers() = "+ctrls.length+"\n\n\n"; for(int i=0;i<ctrls.length;i++){ s+="CapiEnumerator.getController("+ctrls[i].getId()+"):\n\n"+ctrls[i].toString()+"\n\n"; } return s; } static{ try{ jcapi.checkInstalled(); updateControllers(); }catch(Exception e){ System.err.println(CapiEnumerator.class.getName()+"\n\t"+e.getMessage()); } } }