Java clean ups -- use varargs where possible, remove AltosSerialReader
authorKeith Packard <keithp@keithp.com>
Tue, 27 Jul 2010 17:18:20 +0000 (10:18 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 27 Jul 2010 17:18:20 +0000 (10:18 -0700)
Add methods that format stuff using String.format for voice and serial
link, remove AltosSerialReader class and just embed that in the
AltosSerial class directly.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/altosui/AltosSerial.java
ao-tools/altosui/AltosUI.java
ao-tools/altosui/AltosVoice.java

index 073bfb783bff4d3ca7c87c5390af02058026850b..e84f5b63e4e21c7ca5cdd0cbb0cb90c863383ced 100644 (file)
@@ -37,7 +37,9 @@ import libaltosJNI.SWIGTYPE_p_altos_list;
  * line in a queue. Dealing with that queue is left up to other
  * threads.
  */
-class AltosSerialReader implements Runnable {
+
+public class AltosSerial implements Runnable {
+
        SWIGTYPE_p_altos_file altos;
        LinkedList<LinkedBlockingQueue<String>> monitors;
        LinkedBlockingQueue<String> reply_queue;
@@ -116,13 +118,27 @@ class AltosSerialReader implements Runnable {
                }
        }
 
+       public void putc(char c) {
+               libaltos.altos_putchar(altos, c);
+       }
+
+       public void print(String data) {
+               for (int i = 0; i < data.length(); i++)
+                       putc(data.charAt(i));
+       }
+
+       public void printf(String format, Object ... arguments) {
+               print(String.format(format, arguments));
+       }
+
        public void open(altos_device device) throws FileNotFoundException {
                close();
                altos = libaltos.altos_open(device);
                input_thread = new Thread(this);
                input_thread.start();
        }
-       public AltosSerialReader () {
+
+       public AltosSerial() {
                altos = null;
                input_thread = null;
                line = "";
@@ -130,36 +146,3 @@ class AltosSerialReader implements Runnable {
                reply_queue = new LinkedBlockingQueue<String> ();
        }
 }
-
-public class AltosSerial {
-       AltosSerialReader reader = null;
-
-       public void close() {
-               reader.close();
-       }
-
-       public void open(altos_device device) throws FileNotFoundException {
-               reader.open(device);
-       }
-
-       void init() {
-               reader = new AltosSerialReader();
-       }
-
-       public void add_monitor(LinkedBlockingQueue<String> q) {
-               reader.add_monitor(q);
-       }
-
-       public void remove_monitor(LinkedBlockingQueue<String> q) {
-               reader.remove_monitor(q);
-       }
-
-       public AltosSerial() {
-               init();
-       }
-
-       public AltosSerial(altos_device device) throws FileNotFoundException {
-               init();
-               open(device);
-       }
-}
index 33ed2c90b19d791725b947dd343c1aab763d36a8..43aae295978c5aa4838f0acb567f718a90b5201d 100644 (file)
@@ -221,16 +221,8 @@ public class AltosUI extends JFrame {
                flightInfoModel[col].addRow(name, value);
        }
 
-       public void info_add_row(int col, String name, String format, Object value) {
-               flightInfoModel[col].addRow(name, String.format(format, value));
-       }
-
-       public void info_add_row(int col, String name, String format, Object v1, Object v2) {
-               flightInfoModel[col].addRow(name, String.format(format, v1, v2));
-       }
-
-       public void info_add_row(int col, String name, String format, Object v1, Object v2, Object v3) {
-               flightInfoModel[col].addRow(name, String.format(format, v1, v2, v3));
+       public void info_add_row(int col, String name, String format, Object... parameters) {
+               flightInfoModel[col].addRow(name, String.format(format, parameters));
        }
 
        public void info_add_deg(int col, String name, double v, int pos, int neg) {
@@ -367,7 +359,7 @@ public class AltosUI extends JFrame {
 
                                        /* If the rocket isn't on the pad, then report height */
                                        if (state.state > AltosTelemetry.ao_flight_pad) {
-                                               voice.speak(String.format("%d meters", (int) (state.height + 0.5)));
+                                               voice.speak("%d meters", (int) (state.height + 0.5));
                                        }
 
                                        /* If the rocket is coming down, check to see if it has landed;
@@ -383,9 +375,9 @@ public class AltosUI extends JFrame {
                                                else
                                                        voice.speak("rocket may have crashed");
                                                if (state.gps != null)
-                                                       voice.speak(String.format("bearing %d degrees, range %d meters",
-                                                                                 (int) (state.from_pad.bearing + 0.5),
-                                                                                 (int) (state.from_pad.distance + 0.5)));
+                                                       voice.speak("bearing %d degrees, range %d meters",
+                                                                   (int) (state.from_pad.bearing + 0.5),
+                                                                   (int) (state.from_pad.distance + 0.5));
                                                ++reported_landing;
                                        }
                                }
@@ -403,12 +395,12 @@ public class AltosUI extends JFrame {
                        voice.speak(state.data.state);
                        switch (state.state) {
                        case AltosTelemetry.ao_flight_fast:
-                               voice.speak(String.format("max speed %d meters per second",
-                                                         (int) (state.max_speed + 0.5)));
+                               voice.speak("max speed %d meters per second",
+                                           (int) (state.max_speed + 0.5));
                                break;
                        case AltosTelemetry.ao_flight_drogue:
-                               voice.speak(String.format("max height %d meters",
-                                                         (int) (state.max_height + 0.5)));
+                               voice.speak("max height %d meters",
+                                           (int) (state.max_height + 0.5));
                                break;
                        }
                }
index e4ea99a2220d80a8abbe3a83a602486a7a45f236..c39bfb9b4694fb086df9278faad2008393663b26 100644 (file)
@@ -47,6 +47,10 @@ public class AltosVoice implements Runnable {
                }
        }
 
+       public void speak(String format, Object... parameters) {
+               speak(String.format(format, parameters));
+       }
+
        public AltosVoice () {
                voice_manager = VoiceManager.getInstance();
                voice = voice_manager.getVoice(voice_name);