altosui: Create iterables for log file scanning. Split out display threads
[fw/altos] / ao-tools / altosui / AltosCSV.java
index db50e7a2e7c4a5339e7e303e70db1244b8a158b9..7f14adaddc59b1b86a65ecd9932905644fbf8938 100644 (file)
@@ -76,7 +76,9 @@ public class AltosCSV {
         *      minute (0-59)
         *      second (0-59)
         *      from_pad_dist (m)
-        *      from_pad_dir (deg true)
+        *      from_pad_azimuth (deg true)
+        *      from_pad_range (m)
+        *      from_pad_elevation (deg from horizon)
         *
         * GPS Sat data
         *      hdop
@@ -84,7 +86,7 @@ public class AltosCSV {
         */
 
        void write_general_header() {
-               out.printf("version serial flight call time rssi");
+               out.printf("version,serial,flight,call,time,rssi");
        }
 
        void write_general(AltosRecord record) {
@@ -95,7 +97,7 @@ public class AltosCSV {
        }
 
        void write_flight_header() {
-               out.printf("state state_name");
+               out.printf("state,state_name");
        }
 
        void write_flight(AltosRecord record) {
@@ -103,15 +105,15 @@ public class AltosCSV {
        }
 
        void write_basic_header() {
-               out.printf("acceleration pressure altitude height accel_speed baro_speed temperature battery_voltage drogue_voltage main_voltage");
+               out.printf("acceleration,pressure,altitude,height,accel_speed,baro_speed,temperature,battery_voltage,drogue_voltage,main_voltage");
        }
 
        void write_basic(AltosRecord record) {
                out.printf("%8.2f,%10.2f,%8.2f,%8.2f,%8.2f,%8.2f,%5.1f,%5.2f,%5.2f,%5.2f",
                           record.acceleration(),
-                          record.pressure(),
-                          record.altitude(),
-                          record.height(),
+                          record.raw_pressure(),
+                          record.raw_altitude(),
+                          record.raw_height(),
                           record.accel_speed(),
                           state.baro_speed,
                           record.temperature(),
@@ -121,7 +123,7 @@ public class AltosCSV {
        }
 
        void write_gps_header() {
-               out.printf("connected locked nsat latitude longitude altitude year month day hour minute second pad_dist pad_dir");
+               out.printf("connected,locked,nsat,latitude,longitude,altitude,year,month,day,hour,minute,second,pad_dist,pad_range,pad_az,pad_el");
        }
 
        void write_gps(AltosRecord record) {
@@ -133,7 +135,7 @@ public class AltosCSV {
                if (from_pad == null)
                        from_pad = new AltosGreatCircle();
 
-               out.printf("%2d,%2d,%3d,%12.7f,%12.7f,%6d,%5d,%3d,%3d,%3d,%3d,%3d,%9.0f,%4.0f",
+               out.printf("%2d,%2d,%3d,%12.7f,%12.7f,%6d,%5d,%3d,%3d,%3d,%3d,%3d,%9.0f,%9.0f,%4.0f,%4.0f",
                           gps.connected?1:0,
                           gps.locked?1:0,
                           gps.nsat,
@@ -147,14 +149,16 @@ public class AltosCSV {
                           gps.minute,
                           gps.second,
                           from_pad.distance,
-                          from_pad.bearing);
+                          state.range,
+                          from_pad.bearing,
+                          state.elevation);
        }
 
        void write_header() {
-               out.printf("# "); write_general_header();
-               out.printf(" "); write_flight_header();
-               out.printf(" "); write_basic_header();
-               out.printf(" "); write_gps_header();
+               out.printf("#"); write_general_header();
+               out.printf(","); write_flight_header();
+               out.printf(","); write_basic_header();
+               out.printf(","); write_gps_header();
                out.printf ("\n");
        }
 
@@ -203,22 +207,10 @@ public class AltosCSV {
                out.close();
        }
 
-       public void write(AltosReader reader) {
-               AltosRecord     record;
-
-               reader.write_comments(out());
-               try {
-                       for (;;) {
-                               record = reader.read();
-                               if (record == null)
-                                       break;
-                               write(record);
-                       }
-               } catch (IOException ie) {
-                       System.out.printf("IOException\n");
-               } catch (ParseException pe) {
-                       System.out.printf("ParseException %s\n", pe.getMessage());
-               }
+       public void write(AltosRecordIterable iterable) {
+               iterable.write_comments(out());
+               for (AltosRecord r : iterable)
+                       write(r);
        }
 
        public AltosCSV(File in_name) throws FileNotFoundException {