/** * */ package org.squidy.nodes; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType; import org.squidy.manager.controls.ComboBox; import org.squidy.manager.controls.ComboBoxControl.ComboBoxItemWrapper; import org.squidy.manager.data.Processor; import org.squidy.manager.data.Property; import org.squidy.manager.data.Processor.Status; import org.squidy.manager.data.domainprovider.DomainProvider; import org.squidy.manager.model.AbstractNode; import org.squidy.nodes.pjlink.Projector; import org.squidy.nodes.pjlink.Projector.InputState; import org.squidy.nodes.pjlink.Projector.PowerState; /** * <code>PjLink</code>. * * <pre> * Date: March 11, 2010 * Time: 4:54:02 PM * </pre> * * @author Roman Rädle, <a * href="mailto:Roman.Raedle@uni-konstanz.de">Roman. * Raedle@uni-konstanz.de</a>, University of Konstanz * @version $Id: PjLink.java 772 2011-09-16 15:39:44Z raedle $ * @since 1.1.0 */ @XmlType(name = "PjLink") @Processor( name = "PjLink", types = { Processor.Type.INPUT, Processor.Type.OUTPUT }, tags = { "" }, status = Status.UNSTABLE ) public class PjLink extends AbstractNode { // ################################################################################ // BEGIN OF ADJUSTABLES // ################################################################################ @XmlAttribute(name = "input") @Property(name = "Input") @ComboBox(domainProvider = InputDomainProvider.class) private InputState input = InputState.UNDEFINED; /** * @return */ public InputState getInput() { return input; } /** * @param input */ public void setInput(InputState input) { this.input = input; sendInput(input); } public static class InputDomainProvider implements DomainProvider { public Object[] getValues() { ComboBoxItemWrapper[] values = new ComboBoxItemWrapper[5]; values[0] = new ComboBoxItemWrapper(InputState.RGB1, "RGB1"); values[1] = new ComboBoxItemWrapper(InputState.RGB2, "RGB2"); values[2] = new ComboBoxItemWrapper(InputState.DVI_D, "DVI-D"); values[3] = new ComboBoxItemWrapper(InputState.VIDEO, "VIDEO"); values[4] = new ComboBoxItemWrapper(InputState.SVIDEO, "SVIDEO"); return values; } } // ################################################################################ // END OF ADJUSTABLES // ################################################################################ @Override public void onStart() { super.onStart(); setPower(PowerState.ON); } @Override public void onStop() { super.onStop(); setPower(PowerState.OFF); } private void setPower(PowerState power) { Socket pjLinkSocket; try { System.out.println("Opening connection"); pjLinkSocket = new Socket("192.168.1.2", 4352); DataOutputStream ostream = new DataOutputStream(pjLinkSocket .getOutputStream()); BufferedReader istream = new BufferedReader(new InputStreamReader( pjLinkSocket.getInputStream())); System.out.println(istream.readLine()); if (power == PowerState.UNDEFINED) { ostream.writeBytes("%1POWR ?\r"); System.out.println(istream.readLine()); } else if (power == PowerState.ON) { ostream.writeBytes("%1POWR 1\r"); } else if (power == PowerState.OFF) { ostream.writeBytes("%1POWR 0\r"); } ostream.close(); istream.close(); pjLinkSocket.close(); System.out.println("DONE"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void sendInput(InputState input) { Socket pjLinkSocket; try { System.out.println("Opening connection"); pjLinkSocket = new Socket("192.168.1.2", 4352); DataOutputStream ostream = new DataOutputStream(pjLinkSocket .getOutputStream()); BufferedReader istream = new BufferedReader(new InputStreamReader( pjLinkSocket.getInputStream())); System.out.println(istream.readLine()); if (input == InputState.UNDEFINED) { ostream.writeBytes("%1INPT ?\r"); System.out.println(istream.readLine()); } else if (input == InputState.RGB1) { ostream.writeBytes("%1INPT 11\r"); } else if (input == InputState.RGB2) { ostream.writeBytes("%1INPT 12\r"); } else if (input == InputState.VIDEO) { ostream.writeBytes("%1INPT 21\r"); } else if (input == InputState.SVIDEO) { ostream.writeBytes("%1INPT 22\r"); } else if (input == InputState.DVI_D) { ostream.writeBytes("%1INPT 31\r"); } ostream.close(); istream.close(); pjLinkSocket.close(); System.out.println("DONE"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Projector projector = new Projector(); for (String s : args) { // Turn power on if (s.equals("on") && projector.getPower() == PowerState.UNDEFINED) { projector.setPower(PowerState.ON); System.out.println("Turning Power On"); } // Turn power off if (s.equals("off") && !PowerState.OFF.equals(projector.getPower())) { projector.setPower(PowerState.OFF); System.out.println("Turning Power Off"); } // Switch Input to: rgb1 if (s.equals("rgb1") && !InputState.RGB1.equals(projector.getInput())) { projector.setInput(InputState.RGB1); System.out.println("Switching Input to RGB1"); } // Switch Input to: rgb2 if (s.equals("rgb2") && !InputState.RGB2.equals(projector.getInput())) { projector.setInput(InputState.RGB2); System.out.println("Switching Input to RGB2"); } // Switch Input to: video if (s.equals("video") && !InputState.VIDEO.equals(projector.getInput())) { projector.setInput(InputState.VIDEO); System.out.println("Switching Input to VIDEO"); } // Switch Input to: svideo if (s.equals("svideo") && !InputState.SVIDEO.equals(projector.getInput())) { projector.setInput(InputState.SVIDEO); System.out.println("Switching Input to S-VIDEO"); } // Switch Input to: dvi if (s.equals("dvi-d") && !InputState.DVI_D.equals(projector.getInput())) { projector.setInput(InputState.DVI_D); System.out.println("Switching Input to DVI-D"); } } Socket pjLinkSocket; try { System.out.println("Opening connection"); pjLinkSocket = new Socket("192.168.1.2", 4352); DataOutputStream ostream = new DataOutputStream(pjLinkSocket .getOutputStream()); BufferedReader istream = new BufferedReader(new InputStreamReader( pjLinkSocket.getInputStream())); System.out.println(istream.readLine()); if (projector.getInput() == InputState.UNDEFINED && projector.getPower() == PowerState.UNDEFINED) { System.out.println("\n\nSyntax:\n"); System.out .println("\tTurn on/off projector: java pjLink.PjLinkCom on|off"); System.out .println("\tSwitch input on projector: java pjLink.PjLinkCom rgb1|rgb2|video|svideo|dvi-d"); System.out .println("\n\tExample: java pjLink.PjLinkCom on rgb2"); } if (projector.getInput() == InputState.UNDEFINED) { ostream.writeBytes("%1INPT ?\r"); System.out.println(istream.readLine()); } else if (projector.getInput() == InputState.RGB1) { ostream.writeBytes("%1INPT 11\r"); } else if (projector.getInput() == InputState.RGB2) { ostream.writeBytes("%1INPT 12\r"); } else if (projector.getInput() == InputState.VIDEO) { ostream.writeBytes("%1INPT 21\r"); } else if (projector.getInput() == InputState.SVIDEO) { ostream.writeBytes("%1INPT 22\r"); } else if (projector.getInput() == InputState.DVI_D) { ostream.writeBytes("%1INPT 31\r"); } if (projector.getPower() == PowerState.UNDEFINED) { ostream.writeBytes("%1POWR ?\r"); System.out.println(istream.readLine()); } else if (projector.getPower() == PowerState.ON) { ostream.writeBytes("%1POWR 1\r"); } else if (projector.getPower() == PowerState.OFF) { ostream.writeBytes("%1POWR 0\r"); } ostream.close(); istream.close(); pjLinkSocket.close(); System.out.println("DONE"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }