From 90e64525b631deb233bf661cc1190e371ec9342c Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 20 Oct 2012 00:52:04 -0700 Subject: Added real router commands. --- src/net/tuschhcm/routercontrol/SwitcherApp.java | 3 ++ src/net/tuschhcm/routercontrol/router/Router.java | 5 ++ .../routercontrol/router/ShinyBow5544Router.java | 55 ++++++++++++++++++++-- 3 files changed, 58 insertions(+), 5 deletions(-) (limited to 'src/net') diff --git a/src/net/tuschhcm/routercontrol/SwitcherApp.java b/src/net/tuschhcm/routercontrol/SwitcherApp.java index 635999e..00127e8 100644 --- a/src/net/tuschhcm/routercontrol/SwitcherApp.java +++ b/src/net/tuschhcm/routercontrol/SwitcherApp.java @@ -67,6 +67,9 @@ public class SwitcherApp { } mUI.run(); + + // All done! + mRouter.close(); } private void loadPresets() { diff --git a/src/net/tuschhcm/routercontrol/router/Router.java b/src/net/tuschhcm/routercontrol/router/Router.java index 7291bfd..f2783b2 100644 --- a/src/net/tuschhcm/routercontrol/router/Router.java +++ b/src/net/tuschhcm/routercontrol/router/Router.java @@ -26,4 +26,9 @@ public interface Router { * @param enabled true to disable the controls. */ public void setLockControls(boolean enabled); + + /** + * Close communications with the router. + */ + public void close(); } 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(); + } } -- cgit v1.2.3