summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Clark <tjclark@wpi.edu>2014-10-24 11:18:06 -0400
committerThomas Clark <tjclark@wpi.edu>2014-10-24 15:25:27 -0400
commit6883a6b4f18bd258cda547524aaae0c8b79f0161 (patch)
tree01065f514d76dc1e2ebcc9a9b69d3fda18725e93
parent7b67fb6f1d845fb765877a7ac5c92012ffc7353e (diff)
Use mDNS
Use mDNS to connect to the robot controller by default, removing the need to specify an IP. mDNS can be disabled in the dashboard preferences for use with the cRIO. Change-Id: I6b46487ce9ddea54ca4ab249d13186402aa61c91
-rw-r--r--smartdashboard/src/edu/wpi/first/smartdashboard/ArgParser.java53
-rw-r--r--smartdashboard/src/edu/wpi/first/smartdashboard/gui/DashboardPrefs.java3
-rw-r--r--smartdashboard/src/edu/wpi/first/smartdashboard/main.java55
-rw-r--r--smartdashboard/src/edu/wpi/first/smartdashboard/robot/Robot.java32
4 files changed, 48 insertions, 95 deletions
diff --git a/smartdashboard/src/edu/wpi/first/smartdashboard/ArgParser.java b/smartdashboard/src/edu/wpi/first/smartdashboard/ArgParser.java
deleted file mode 100644
index c3f2438..0000000
--- a/smartdashboard/src/edu/wpi/first/smartdashboard/ArgParser.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package edu.wpi.first.smartdashboard;
-
-import java.util.*;
-
-public class ArgParser {
- private Map<String, String> argValues = new HashMap<String, String>();
- private Set<String> flags = new HashSet<String>();
- private final boolean ignoreLeadingDash;
- private final boolean ignoreCase;
- private String getProcessedName(String name){
- if(ignoreLeadingDash && name.startsWith("-"))
- name = name.substring(1);
- if(ignoreCase)
- name = name.toLowerCase();
- return name;
- }
- public ArgParser(String[] args, boolean ignoreLeadingDash, boolean ignoreCase, String[] valueArgs) {
- this.ignoreLeadingDash = ignoreLeadingDash;
- this.ignoreCase = ignoreCase;
-
- if(ignoreLeadingDash){
- for(int i = 0; i<valueArgs.length; ++i)
- valueArgs[i] = getProcessedName(valueArgs[i]);
- }
-
- argLoop: for (int i = 0; i < args.length; i++) {
- String arg = getProcessedName(args[i]);
-
- for (String possibleValueArg : valueArgs) {
- if (possibleValueArg.equals(arg)) {
- if (i < args.length - 1) {
- argValues.put(arg, args[i + 1]);
- ++i;
- } else
- argValues.put(arg, "");
- continue argLoop;
- }
- }
- flags.add(arg);
- }
- }
-
- public boolean hasFlag(String name){
- return flags.contains(getProcessedName(name));
- }
-
- public boolean hasValue(String name){
- return argValues.get(getProcessedName(name))!=null;
- }
- public String getValue(String name){
- return argValues.get(getProcessedName(name));
- }
-}
diff --git a/smartdashboard/src/edu/wpi/first/smartdashboard/gui/DashboardPrefs.java b/smartdashboard/src/edu/wpi/first/smartdashboard/gui/DashboardPrefs.java
index 79d0d30..c7ed59a 100644
--- a/smartdashboard/src/edu/wpi/first/smartdashboard/gui/DashboardPrefs.java
+++ b/smartdashboard/src/edu/wpi/first/smartdashboard/gui/DashboardPrefs.java
@@ -25,6 +25,7 @@ public class DashboardPrefs implements PropertyHolder {
private Map<String, Property> properties = new LinkedHashMap<String, Property>();
public final IntegerProperty team = new IntegerProperty(this, "Team Number", 0);
+ public final BooleanProperty usemDNS = new BooleanProperty(this, "Use mDNS (supported on roboRIO)", true);
public final BooleanProperty hideMenu = new BooleanProperty(this, "Hide Menu", false);
public final BooleanProperty autoShowWidgets = new BooleanProperty(this, "Automatically Show Widgets", true);
public final IntegerListProperty grid_widths = new IntegerListProperty(this, "Grid Cell Width(s)", new int[] { 16 });
@@ -104,6 +105,8 @@ public class DashboardPrefs implements PropertyHolder {
} else if (property == team) {
Robot.setTeam(team.getValue());
frame.setTitle("SmartDashboard - " + team.getValue());
+ } else if (property == usemDNS) {
+ Robot.setUseMDNS(usemDNS.getValue());
} else if (property == hideMenu) {
frame.setShouldHideMenu(hideMenu.getValue());
} else if (property == logToCSV) {
diff --git a/smartdashboard/src/edu/wpi/first/smartdashboard/main.java b/smartdashboard/src/edu/wpi/first/smartdashboard/main.java
index 1bf0b8e..38582ff 100644
--- a/smartdashboard/src/edu/wpi/first/smartdashboard/main.java
+++ b/smartdashboard/src/edu/wpi/first/smartdashboard/main.java
@@ -63,15 +63,6 @@ public class main {
// Search the filesystem for extensions (49%)
FileSniffer.findExtensions(monitor, 0, 490);
-
-
- ArgParser argParser = new ArgParser(args, true, true, new String[] { "ip" });
- inCompetition = argParser.hasFlag("competition");
-
-
-
-
-
// Initialize GUI
try {
SwingUtilities.invokeAndWait(new Runnable() {
@@ -82,38 +73,24 @@ public class main {
ex.printStackTrace();
System.exit(2);
}
-
-
-
-
+
IntegerProperty teamProp = frame.getPrefs().team;
- if (argParser.hasValue("ip")) {
- monitor.setProgress(650);
- monitor.setNote("Connecting to robot at: "+argParser.getValue("ip"));
- Robot.setHost(argParser.getValue("ip"));
- }
- else{
- monitor.setProgress(600);
- monitor.setNote("Getting Team Number");
- int teamNumber = teamProp.getValue();
- teamNumberLoop: while (teamNumber <= 0) {
- try{
- String input = JOptionPane.showInputDialog("Input Team Number");
- if(input==null){
- teamNumber = 0;
- break teamNumberLoop;
- }
- teamNumber = Integer.parseInt(input);
- } catch(Exception e){}
- }
- monitor.setProgress(650);
- monitor.setNote("Connecting to robot of team: "+teamNumber);
- teamProp.setValue(teamNumber);
+ monitor.setProgress(600);
+ monitor.setNote("Getting Team Number");
+ int teamNumber = teamProp.getValue();
+ teamNumberLoop: while (teamNumber <= 0) {
+ try{
+ String input = JOptionPane.showInputDialog("Input Team Number");
+ if(input==null){
+ teamNumber = 0;
+ break teamNumberLoop;
+ }
+ teamNumber = Integer.parseInt(input);
+ } catch(Exception e){}
}
-
-
-
-
+ monitor.setProgress(650);
+ monitor.setNote("Connecting to robot of team: "+teamNumber);
+ teamProp.setValue(teamNumber);
try {
SwingUtilities.invokeAndWait(new Runnable() {
diff --git a/smartdashboard/src/edu/wpi/first/smartdashboard/robot/Robot.java b/smartdashboard/src/edu/wpi/first/smartdashboard/robot/Robot.java
index 8db77a2..aa6173f 100644
--- a/smartdashboard/src/edu/wpi/first/smartdashboard/robot/Robot.java
+++ b/smartdashboard/src/edu/wpi/first/smartdashboard/robot/Robot.java
@@ -17,10 +17,11 @@ public class Robot {
public static final String TABLE_NAME = "SmartDashboard";
public static final String LIVE_WINDOW_NAME = "LiveWindow";
public static final String PREFERENCES_NAME = "Preferences";
-
private static volatile String _host = null;
private static volatile int _port = NetworkTable.DEFAULT_PORT;
+ private static int _team;
+ private static boolean _usemDNS = true;
private static final IOStreamFactory configurableFactory = new IOStreamFactory() {
@Override
public IOStream createStream() throws IOException {
@@ -36,13 +37,38 @@ public class Robot {
}
public static void setTeam(int team) {
- setHost("10." + (team / 100) + "." + (team % 100) + ".2");
+ _team = team;
+ setHost();
+ }
+
+ /**
+ * Switch between using MDNS and a static IP to resolve the robot's
+ * hostname (mDNS is only supported on the roboRIO)
+ * @param useMDNS
+ */
+ public static void setUseMDNS(boolean usemDNS) {
+ _usemDNS = usemDNS;
+ setHost();
}
- public static void setHost(String host){
+
+ public static void setHost(){
+ String host;
+
+ if(_usemDNS) {
+ host = "roboRIO-" + _team + ".local";
+ } else {
+ host = "10." + (_team / 100) + "." + (_team % 100) + ".2";
+ }
+
_host = host;
System.out.println("Host: "+host);
client.close();
}
+
+ public static String getHost() {
+ return _host;
+ }
+
public static void setPort(int port){
_port = port;
client.close();