altosui: Add preference for serial debugging.
authorKeith Packard <keithp@keithp.com>
Sat, 15 Jan 2011 00:47:36 +0000 (16:47 -0800)
committerKeith Packard <keithp@keithp.com>
Sat, 15 Jan 2011 00:48:29 +0000 (16:48 -0800)
This dumps serial input/output to stdout.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/AltosConfigureUI.java
altosui/AltosPreferences.java
altosui/AltosSerial.java

index 153c59fdedc719818f7fa605b8a2f825c30ac410..ab3d950e0edba960c98b80563074451f0b6e151e 100644 (file)
@@ -47,6 +47,8 @@ public class AltosConfigureUI
        JLabel          callsign_label;
        JTextField      callsign_value;
 
+       JRadioButton    serial_debug;
+
        /* DocumentListener interface methods */
        public void changedUpdate(DocumentEvent e) {
                AltosPreferences.set_callsign(callsign_value.getText());
@@ -166,6 +168,30 @@ public class AltosConfigureUI
                c.anchor = GridBagConstraints.WEST;
                pane.add(callsign_value, c);
 
+               /* Serial debug setting */
+               c.gridx = 0;
+               c.gridy = 4;
+               c.gridwidth = 1;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(new JLabel("Serial Debug"), c);
+
+               serial_debug = new JRadioButton("Enable", AltosPreferences.serial_debug());
+               serial_debug.addActionListener(new ActionListener() {
+                               public void actionPerformed(ActionEvent e) {
+                                       JRadioButton item = (JRadioButton) e.getSource();
+                                       boolean enabled = item.isSelected();
+                                       AltosPreferences.set_serial_debug(enabled);
+                               }
+                       });
+
+               c.gridx = 1;
+               c.gridy = 4;
+               c.gridwidth = 3;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(serial_debug, c);
+
                /* And a close button at the bottom */
                close = new JButton("Close");
                close.addActionListener(new ActionListener() {
@@ -174,7 +200,7 @@ public class AltosConfigureUI
                                }
                        });
                c.gridx = 0;
-               c.gridy = 4;
+               c.gridy = 5;
                c.gridwidth = 3;
                c.fill = GridBagConstraints.NONE;
                c.anchor = GridBagConstraints.CENTER;
index c6ae6cbd176d39cdae30b075f77fc2812f065df4..d4df4e163efecaf18462fc0f49fce012564f138a 100644 (file)
@@ -43,6 +43,9 @@ class AltosPreferences {
        /* firmware directory preference name */
        final static String firmwaredirPreference = "FIRMWARE";
 
+       /* serial debug preference name */
+       final static String serialDebugPreference = "SERIAL-DEBUG";
+
        /* Default logdir is ~/TeleMetrum */
        final static String logdirName = "TeleMetrum";
 
@@ -67,6 +70,9 @@ class AltosPreferences {
        /* Firmware directory */
        static File firmwaredir;
 
+       /* Serial debug */
+       static boolean serial_debug;
+
        public static void init(Component ui) {
                preferences = Preferences.userRoot().node("/org/altusmetrum/altosui");
 
@@ -97,6 +103,9 @@ class AltosPreferences {
                        firmwaredir = new File(firmwaredir_string);
                else
                        firmwaredir = null;
+
+               serial_debug = preferences.getBoolean(serialDebugPreference, false);
+               AltosSerial.set_debug(serial_debug);
        }
 
        static void flush_preferences() {
@@ -215,4 +224,17 @@ class AltosPreferences {
        public static File firmwaredir() {
                return firmwaredir;
        }
+
+       public static void set_serial_debug(boolean new_serial_debug) {
+               serial_debug = new_serial_debug;
+               AltosSerial.set_debug(serial_debug);
+               synchronized (preferences) {
+                       preferences.putBoolean(serialDebugPreference, serial_debug);
+                       flush_preferences();
+               }
+       }
+
+       public static boolean serial_debug() {
+               return serial_debug;
+       }
 }
index 78da5d1f196f5fe4243e37d4ceaac5361a74786c..3ad16b2b955e0d0d7deccb4573d40ff980883d14 100644 (file)
@@ -47,6 +47,11 @@ public class AltosSerial implements Runnable {
        byte[] line_bytes;
        int line_count;
        boolean monitor_mode;
+       static boolean debug;
+
+       static void set_debug(boolean new_debug) {
+               debug = new_debug;
+       }
 
        public void run () {
                int c;
@@ -84,7 +89,8 @@ public class AltosSerial implements Runnable {
                                                                        q.put(new AltosLine (line));
                                                                }
                                                        } else {
-//                                                             System.out.printf("GOT: %s\n", line);
+                                                               if (debug)
+                                                                       System.out.printf("\t\t\t\t\t%s\n", line);
                                                                reply_queue.put(new AltosLine (line));
                                                        }
                                                        line_count = 0;
@@ -176,13 +182,14 @@ public class AltosSerial implements Runnable {
                }
        }
 
-       public void putc(char c) {
+       private void putc(char c) {
                if (altos != null)
                        libaltos.altos_putchar(altos, c);
        }
 
        public void print(String data) {
-//             System.out.printf("\"%s\" ", data);
+               if (debug)
+                       System.out.printf("%s", data);
                for (int i = 0; i < data.length(); i++)
                        putc(data.charAt(i));
        }