1 package kernel.serial_ports;
3 import gnu.io.CommPortIdentifier;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
8 import java.util.ArrayList;
9 import java.util.Enumeration;
10 import java.util.List;
11 import java.util.Vector;
17 private static Logger log = LoggerFactory.getLogger(
RXTXPortDriver.class);
23 private final String applicationName;
38 this.applicationName = applicationName;
39 this.portWrapper = portWrapper;
46 return this.applicationName;
54 List<CommPortIdentifier> identifierList = castPortIdentifiersToList(
57 List<CommPortIdentifier> serialPortList = filterForSerialPorts(
60 return getPortNamesForList(serialPortList);
84 private static List<CommPortIdentifier> castPortIdentifiersToList(
85 Enumeration commPortIdentifiers
87 List<CommPortIdentifier> portIdentifierList =
new Vector<>();
88 CommPortIdentifier portIdentifier;
90 while(commPortIdentifiers.hasMoreElements()){
91 portIdentifier = castToPortIdentifier(
92 commPortIdentifiers.nextElement()
94 portIdentifierList.add(portIdentifier);
97 return portIdentifierList;
106 private static CommPortIdentifier castToPortIdentifier(
107 Object portIdentifier){
108 return (CommPortIdentifier)(portIdentifier);
119 private List<CommPortIdentifier> filterForSerialPorts(
120 List<CommPortIdentifier> identifierList){
122 List<CommPortIdentifier> serialPorts =
new ArrayList<>(
123 identifierList.size()
126 for(CommPortIdentifier identifier: identifierList){
127 if(identifier.getPortType() == CommPortIdentifier.PORT_SERIAL){
128 writeLogEntryForSerialPort(identifier);
129 serialPorts.add(identifier);
141 private static List<String> getPortNamesForList(
142 List<CommPortIdentifier> portIdentifiers
144 List<String> portNames =
new ArrayList<>(portIdentifiers.size());
146 for(CommPortIdentifier identifier: portIdentifiers){
147 portNames.add(identifier.getName());
160 private void writeLogEntryForSerialPort(CommPortIdentifier identifier){
162 "Port identifier {} has been detected as a serial port",
SerialPort getPortByName(String portName)
String getApplicationName()
RXTXPortDriver(String applicationName, PortIdentifierGetter portWrapper)
List< String > getSerialPortNames()
Enumeration getPortIdentifiers()