summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/tuschhcm/routercontrol/Preset.java2
-rw-r--r--src/net/tuschhcm/routercontrol/SwitcherApp.java3
-rw-r--r--src/net/tuschhcm/routercontrol/router/Router.java5
-rw-r--r--src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java58
4 files changed, 59 insertions, 9 deletions
diff --git a/src/net/tuschhcm/routercontrol/Preset.java b/src/net/tuschhcm/routercontrol/Preset.java
index 7b64333..9da1de3 100644
--- a/src/net/tuschhcm/routercontrol/Preset.java
+++ b/src/net/tuschhcm/routercontrol/Preset.java
@@ -106,7 +106,7 @@ public class Preset {
throw new IllegalArgumentException("Output out of range.");
}
- return mInputs.get(output);
+ return mInputs.get(index);
}
/**
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 7cca3f3..17d9bd7 100644
--- a/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
+++ b/src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java
@@ -1,37 +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 {
- // TODO Auto-generated method stub
-
+ 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) {
- // TODO Auto-generated method stub
-
+ if (on) {
+ mOut.print("SBSYSMON");
+
+ } else {
+ mOut.print("SBSYSMOF");
+ }
}
@Override
public void setLockControls(boolean enabled) {
- // TODO Auto-generated method stub
-
- }
+ if (enabled) {
+ mOut.print("SBSYSMLK");
+ } else {
+ mOut.print("SBSYSMUK");
+ }
+ }
+
+ @Override
+ public void close() {
+ mOut.close();
+ mSerialPort.close();
+ }
}