altosui: add reboot button to telemetrum configuration UI
authorKeith Packard <keithp@keithp.com>
Mon, 15 Nov 2010 15:14:51 +0000 (23:14 +0800)
committerKeith Packard <keithp@keithp.com>
Mon, 15 Nov 2010 15:16:08 +0000 (23:16 +0800)
This lets you reconfigure and reboot telemetrum, including over the
radio link.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/altosui/AltosConfig.java
ao-tools/altosui/AltosConfigUI.java

index 09e204a9de3e9f7e7077937548d19c886f2db0f7..a0fdb6236cfc3491cfb45abf7eb2d8dba4ab2360 100644 (file)
@@ -198,12 +198,26 @@ public class AltosConfig implements Runnable, ActionListener {
 
        public void actionPerformed(ActionEvent e) {
                String  cmd = e.getActionCommand();
-               if (cmd.equals("save")) {
+               if (cmd.equals("Save")) {
                        save_data();
                        set_ui();
-               } else if (cmd.equals("reset")) {
+               } else if (cmd.equals("Reset")) {
                        set_ui();
-               } else if (cmd.equals("close")) {
+               } else if (cmd.equals("Reboot")) {
+                       if (serial_line != null) {
+                               try {
+                                       start_serial();
+                                       serial_line.printf("r eboot\n");
+                               } catch (InterruptedException ie) {
+                               } finally {
+                                       try {
+                                               stop_serial();
+                                       } catch (InterruptedException ie) {
+                                       }
+                               }
+                               serial_line.close();
+                       }
+               } else if (cmd.equals("Close")) {
                        if (serial_line != null)
                                serial_line.close();
                }
index 9e3856b04f1555a425808dec51dfa6d2d8a7a7d3..e04933eb87bc5c2ebb6317bb18cfd8b40014222f 100644 (file)
@@ -61,6 +61,7 @@ public class AltosConfigUI
 
        JButton         save;
        JButton         reset;
+       JButton         reboot;
        JButton         close;
 
        ActionListener  listener;
@@ -92,7 +93,7 @@ public class AltosConfigUI
                public void windowClosing(WindowEvent e) {
                        ui.actionPerformed(new ActionEvent(e.getSource(),
                                                           ActionEvent.ACTION_PERFORMED,
-                                                          "close"));
+                                                          "Close"));
                }
        }
 
@@ -112,7 +113,7 @@ public class AltosConfigUI
                /* Product */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 0;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -120,8 +121,8 @@ public class AltosConfigUI
                pane.add(product_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 0;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 0;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -132,7 +133,7 @@ public class AltosConfigUI
                /* Version */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 1;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -141,8 +142,8 @@ public class AltosConfigUI
                pane.add(version_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 1;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 1;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -154,7 +155,7 @@ public class AltosConfigUI
                /* Serial */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 2;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -163,8 +164,8 @@ public class AltosConfigUI
                pane.add(serial_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 2;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 2;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -176,7 +177,7 @@ public class AltosConfigUI
                /* Main deploy */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 3;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -185,8 +186,8 @@ public class AltosConfigUI
                pane.add(main_deploy_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 3;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -200,7 +201,7 @@ public class AltosConfigUI
                /* Apogee delay */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 4;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -209,8 +210,8 @@ public class AltosConfigUI
                pane.add(apogee_delay_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 4;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 4;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -224,7 +225,7 @@ public class AltosConfigUI
                /* Radio channel */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 5;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -233,8 +234,8 @@ public class AltosConfigUI
                pane.add(radio_channel_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 5;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 5;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -248,7 +249,7 @@ public class AltosConfigUI
                /* Radio Calibration */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 6;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -257,8 +258,8 @@ public class AltosConfigUI
                pane.add(radio_calibration_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 6;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 6;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -271,7 +272,7 @@ public class AltosConfigUI
                /* Callsign */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 7;
-               c.gridwidth = 3;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
@@ -280,8 +281,8 @@ public class AltosConfigUI
                pane.add(callsign_label, c);
 
                c = new GridBagConstraints();
-               c.gridx = 3; c.gridy = 7;
-               c.gridwidth = 3;
+               c.gridx = 4; c.gridy = 7;
+               c.gridwidth = 4;
                c.fill = GridBagConstraints.HORIZONTAL;
                c.weightx = 1;
                c.anchor = GridBagConstraints.LINE_START;
@@ -294,36 +295,47 @@ public class AltosConfigUI
                /* Buttons */
                c = new GridBagConstraints();
                c.gridx = 0; c.gridy = 8;
-               c.gridwidth = 6;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = il;
                save = new JButton("Save");
                pane.add(save, c);
                save.addActionListener(this);
-               save.setActionCommand("save");
+               save.setActionCommand("Save");
 
                c = new GridBagConstraints();
-               c.gridx = 0; c.gridy = 8;
-               c.gridwidth = 6;
+               c.gridx = 2; c.gridy = 8;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.CENTER;
                c.insets = il;
                reset = new JButton("Reset");
                pane.add(reset, c);
                reset.addActionListener(this);
-               reset.setActionCommand("reset");
+               reset.setActionCommand("Reset");
 
                c = new GridBagConstraints();
-               c.gridx = 0; c.gridy = 8;
-               c.gridwidth = 6;
+               c.gridx = 4; c.gridy = 8;
+               c.gridwidth = 2;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.CENTER;
+               c.insets = il;
+               reboot = new JButton("Reboot");
+               pane.add(reboot, c);
+               reboot.addActionListener(this);
+               reboot.setActionCommand("Reboot");
+
+               c = new GridBagConstraints();
+               c.gridx = 6; c.gridy = 8;
+               c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.LINE_END;
                c.insets = il;
                close = new JButton("Close");
                pane.add(close, c);
                close.addActionListener(this);
-               close.setActionCommand("close");
+               close.setActionCommand("Close");
 
                addWindowListener(new ConfigListener(this));
        }
@@ -336,12 +348,12 @@ public class AltosConfigUI
        }
 
        /* If any values have been changed, confirm before closing */
-       public boolean check_dirty() {
+       public boolean check_dirty(String operation) {
                if (dirty) {
-                       Object[] options = { "Close anyway", "Keep editing" };
+                       Object[] options = { String.format("%s anyway", operation), "Keep editing" };
                        int i;
                        i = JOptionPane.showOptionDialog(this,
-                                                        "Configuration modified, close anyway?",
+                                                        String.format("Configuration modified. %s anyway?", operation),
                                                         "Configuration Modified",
                                                         JOptionPane.DEFAULT_OPTION,
                                                         JOptionPane.WARNING_MESSAGE,
@@ -356,11 +368,11 @@ public class AltosConfigUI
        public void actionPerformed(ActionEvent e) {
                String  cmd = e.getActionCommand();
 
-               if (cmd.equals("close"))
-                       if (!check_dirty())
+               if (cmd.equals("Close") || cmd.equals("Reboot"))
+                       if (!check_dirty(cmd))
                                return;
                listener.actionPerformed(e);
-               if (cmd.equals("close")) {
+               if (cmd.equals("Close") || cmd.equals("Reboot")) {
                        setVisible(false);
                        dispose();
                }