diff options
| author | Jesse Morgan <jesse@jesterpm.net> | 2012-10-20 00:52:04 -0700 | 
|---|---|---|
| committer | Jesse Morgan <jesse@jesterpm.net> | 2012-10-20 00:52:04 -0700 | 
| commit | 90e64525b631deb233bf661cc1190e371ec9342c (patch) | |
| tree | 7b8820e0949d3d98d45337b0b87cd6a131b18dfe /src | |
| parent | 9db8fc54ca93ba0033c65b8ca27796b76f55fd16 (diff) | |
Added real router commands.
Diffstat (limited to 'src')
| -rw-r--r-- | src/net/tuschhcm/routercontrol/SwitcherApp.java | 3 | ||||
| -rw-r--r-- | src/net/tuschhcm/routercontrol/router/Router.java | 5 | ||||
| -rw-r--r-- | src/net/tuschhcm/routercontrol/router/ShinyBow5544Router.java | 55 | 
3 files changed, 58 insertions, 5 deletions
| 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();
 +    }
  }
 | 
