package io.sloeber.core.api;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import cc.arduino.packages.discoverers.NetworkDiscovery;
public class SerialManager {
static ISerialUser otherSerialUser = null; // If someone else uses the
// serial port he can register
// here so we can
// request him to disconnect
// when we need the serial port
static Set<IProject> fProjects = new HashSet<>();
/**
* This method is used to register a serial user. A serial user is alerted
* when the serial port will be disconnected (for instance for a upload) The
* serial user is requested to act appropriately Only 1 serial user can be
* registered at a given time. No check is done.
*
* @param serialUser
*/
public static void registerSerialUser(ISerialUser serialUser) {
otherSerialUser = serialUser;
}
/**
* This method is to unregister a serial user.
*/
public static void UnRegisterSerialUser() {
otherSerialUser = null;
}
public static boolean StopSerialMonitor(String mComPort) {
if (otherSerialUser != null) {
return otherSerialUser.PauzePort(mComPort);
}
return false;
}
public static void StartSerialMonitor(String mComPort) {
if (otherSerialUser != null) {
otherSerialUser.ResumePort(mComPort);
}
}
public static String[] listComPorts() {
List<String> serialList = Serial.list();
String[] outgoing = new String[serialList.size()];
serialList.toArray(outgoing);
return outgoing;
}
@SuppressWarnings("nls")
public static String[] listBaudRates() {
String[] outgoing = { "921600", "460800", "230400", "115200", "76800", "57600", "38400", "31250", "28800",
"19200", "14400", "9600", "4800", "2400", "1200", "300" };
return outgoing;
}
@SuppressWarnings("nls")
public static String[] listLineEndings() {
String[] outgoing = { "none", "CR", "NL", "CR/NL" };
return outgoing;
}
@SuppressWarnings("nls")
public static String getLineEnding(int selectionIndex) {
switch (selectionIndex) {
default:
case 0:
return "";
case 1:
return "\r";
case 2:
return "\n";
case 3:
return "\r\n";
}
}
public static String[] listNetworkPorts() {
return NetworkDiscovery.getList();
}
}