blob: 99d1907d978173e9c865df25590f89f7f8d98786 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
package net.tuschhcm.routercontrol;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import gnu.io.CommPortIdentifier;
import net.tuschhcm.routercontrol.router.Router;
import net.tuschhcm.routercontrol.router.ShinyBow5544Router;
import net.tuschhcm.routercontrol.ui.ConsoleUI;
import net.tuschhcm.routercontrol.ui.UserInterface;
import net.tuschhcm.routercontrol.ui.UserInterface.Action;
public class SwitcherApp {
/**
* The router I control.
*/
private final Router mRouter;
/**
* My user interface.
*/
private final UserInterface mUI;
/**
* My list of presets.
*/
private final Map<Integer, Preset> mPresets;
/**
* Create a switcher app.
* @param portName the port name for the router.
*/
public SwitcherApp(final String portName) {
mUI = new ConsoleUI();
mRouter = new ShinyBow5544Router(portName);
mPresets = new HashMap<Integer, Preset>();
// Setup UI actions
mUI.setPresetSelectionAction(new Action() {
public void onAction() {
handlePresetSelected();
}
});
mUI.setToggleControlLockAction(new Action() {
public void onAction() {
handleLockToggled();
}
});
}
/**
* Start the application.
*/
public void run() {
// TODO: Load the presets
// TODO: Send the presets to the UI
mUI.run();
}
/**
* Handles a preset selection.
*/
private void handlePresetSelected() {
int selectedPreset = mUI.getSelectedPreset();
// TODO: What to do when the preset is selected
}
/**
* Locks or unlocks the physical router controls.
*/
private void handleLockToggled() {
mRouter.setLockControls(mUI.getControlLockStatus());
}
/**
* Entry-point for the application.
* @param args Command line arguments
*/
public static void main(String[] args) {
// Parse command line arguments
if (args.length != 1) {
System.err.println("You must pass one these arguments:");
System.err.println("\t[commport] The name of the serial port to use.");
System.err.println("\t--list-ports List the available serial ports.");
return;
}
if (args[0].equals("--list-ports")) {
listCommPorts();
return;
}
String comPort = args[0];
SwitcherApp app = new SwitcherApp(comPort);
app.run();
}
private static void listCommPorts() {
Enumeration ports = CommPortIdentifier.getPortIdentifiers();
if (ports.hasMoreElements()) {
System.out.println("These ports are available on your system: ");
while (ports.hasMoreElements()) {
CommPortIdentifier port = (CommPortIdentifier) ports.nextElement();
if (port.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println(port.getName());
}
}
} else {
System.out.println("There are no serial ports on your system.");
}
}
}
|