BakeoutController  0.1
A Controller for the Omicron vacuum chamber
RXTXPortDriver.java
1 package kernel.serial_ports;
2 
3 import gnu.io.CommPortIdentifier;
5 
6 import java.util.ArrayList;
7 import java.util.Enumeration;
8 import java.util.List;
9 import java.util.Vector;
10 
14 public class RXTXPortDriver implements PortDriver {
19  private final String applicationName;
20 
25  private final PortIdentifierGetter portWrapper;
26 
32  String applicationName, PortIdentifierGetter portWrapper
33  ){
34  this.applicationName = applicationName;
35  this.portWrapper = portWrapper;
36  }
37 
41  @Override public String getApplicationName(){
42  return this.applicationName;
43  }
44 
48  @Override public List<String> getSerialPortNames(){
49  Enumeration portIdentifiers = this.portWrapper.getPortIdentifiers();
50  List<CommPortIdentifier> identifierList = castPortIdentifiersToList(
51  portIdentifiers);
52 
53  List<CommPortIdentifier> serialPortList = filterForSerialPorts(
54  identifierList
55  );
56 
57  return getPortNamesForList(serialPortList);
58  }
59 
66  @Override public SerialPort getPortByName(String portName) {
67  return new RXTXPortWrapper(portName);
68  }
69 
81  private static List<CommPortIdentifier> castPortIdentifiersToList(
82  Enumeration commPortIdentifiers
83  ){
84  List<CommPortIdentifier> portIdentifierList = new Vector<>();
85  CommPortIdentifier portIdentifier;
86 
87  while(commPortIdentifiers.hasMoreElements()){
88  portIdentifier = castToPortIdentifier(
89  commPortIdentifiers.nextElement()
90  );
91  portIdentifierList.add(portIdentifier);
92  }
93 
94  return portIdentifierList;
95  }
96 
103  private static CommPortIdentifier castToPortIdentifier(
104  Object portIdentifier){
105  return (CommPortIdentifier)(portIdentifier);
106  }
107 
116  private static List<CommPortIdentifier> filterForSerialPorts(
117  List<CommPortIdentifier> identifierList){
118 
119  List<CommPortIdentifier> serialPorts = new ArrayList<>(
120  identifierList.size()
121  );
122 
123  for(CommPortIdentifier identifier: identifierList){
124  if(identifier.getPortType() == CommPortIdentifier.PORT_SERIAL){
125  serialPorts.add(identifier);
126  }
127  }
128 
129  return serialPorts;
130  }
131 
137  private static List<String> getPortNamesForList(
138  List<CommPortIdentifier> portIdentifiers
139  ){
140  List<String> portNames = new ArrayList<>(portIdentifiers.size());
141 
142  for(CommPortIdentifier identifier: portIdentifiers){
143  portNames.add(identifier.getName());
144  }
145 
146  return portNames;
147  }
148 }
SerialPort getPortByName(String portName)
RXTXPortDriver(String applicationName, PortIdentifierGetter portWrapper)
Git Repo