summaryrefslogtreecommitdiff
path: root/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java')
-rw-r--r--src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java55
1 files changed, 50 insertions, 5 deletions
diff --git a/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java b/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
index 0bc9c98..17d9bd7 100644
--- a/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
+++ b/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
@@ -1,34 +1,79 @@
package net.tuschhcm.routercontrol.router;
+import java.io.PrintStream;
+
+import gnu.io.CommPortIdentifier;
+import gnu.io.SerialPort;
+
/**
* Router implementation for a ShinyBow SB-5544
*
*/
public class ShinyBow5544Router implements Router {
+ private final SerialPort mSerialPort;
+ private final PrintStream mOut;
+
/**
* Create a new ShinyBow router using the given comm port.
*
* @param portName Com port name
*/
public ShinyBow5544Router(final String portName) {
-
+ try {
+ CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(portName);
+
+ // 9600 baud, 8 bit, no parity, 1 stop bit
+ mSerialPort = (SerialPort) portId.open("routercontrol", 1000);
+ mSerialPort.setSerialPortParams(9600,
+ SerialPort.DATABITS_8,
+ SerialPort.STOPBITS_1,
+ SerialPort.PARITY_NONE);
+
+ mOut = new PrintStream(mSerialPort.getOutputStream());
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Unable to open serial port: " + e.getMessage(), e);
+ }
}
@Override
public void switchInput(int output, int input)
throws IllegalArgumentException {
- System.out.println(">>> Switching output " + output + " to " + input);
+ if (output < 1 || output > 4) {
+ throw new IllegalArgumentException("Invalid Output");
+ }
+
+ if (input < 1 || input > 4) {
+ throw new IllegalArgumentException("Invalid Input");
+ }
+
+
+ mOut.format("SBI0%dO0%d", output, input);
}
@Override
public void setPower(boolean on) {
- System.out.println(">>> Setting power to " + on);
+ if (on) {
+ mOut.print("SBSYSMON");
+
+ } else {
+ mOut.print("SBSYSMOF");
+ }
}
@Override
public void setLockControls(boolean enabled) {
- System.out.println(">>> Setting control lock to " + enabled);
- }
+ if (enabled) {
+ mOut.print("SBSYSMLK");
+ } else {
+ mOut.print("SBSYSMUK");
+ }
+ }
+
+ @Override
+ public void close() {
+ mOut.close();
+ mSerialPort.close();
+ }
}