From c89a34d1eb25155405b0036baeadc7bbfeade1c2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 27 Sep 2010 17:11:48 -0700 Subject: altosui: Create iterables for log file scanning. Split out display threads Convert from log file reading paradigm to using iterators which is more idiomatic for java. Split more code out of AltosUI.java, including the display update threads for telemetry monitoring and logfile replay.x Signed-off-by: Keith Packard --- ao-tools/altosui/AltosCSV.java | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) (limited to 'ao-tools/altosui/AltosCSV.java') diff --git a/ao-tools/altosui/AltosCSV.java b/ao-tools/altosui/AltosCSV.java index f7b3c03c..7f14adad 100644 --- a/ao-tools/altosui/AltosCSV.java +++ b/ao-tools/altosui/AltosCSV.java @@ -207,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 { -- cgit v1.2.3 From fe7eba2e4af36cf29d8dc2378ac6985be04f68c6 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 27 Sep 2010 18:51:05 -0700 Subject: altosui: .CSV output: add link quality, gps hdop and sat C/N0 numbers This makes the CSV files contain all of the available information. Signed-off-by: Keith Packard --- ao-tools/altosui/AltosCSV.java | 46 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'ao-tools/altosui/AltosCSV.java') diff --git a/ao-tools/altosui/AltosCSV.java b/ao-tools/altosui/AltosCSV.java index 7f14adad..c01d55a8 100644 --- a/ao-tools/altosui/AltosCSV.java +++ b/ao-tools/altosui/AltosCSV.java @@ -45,6 +45,7 @@ public class AltosCSV { * callsign * time (seconds since boost) * rssi + * link quality * * Flight status * state @@ -79,21 +80,22 @@ public class AltosCSV { * from_pad_azimuth (deg true) * from_pad_range (m) * from_pad_elevation (deg from horizon) + * hdop * * GPS Sat data - * hdop * C/N0 data for all 32 valid SDIDs */ void write_general_header() { - out.printf("version,serial,flight,call,time,rssi"); + out.printf("version,serial,flight,call,time,rssi,lqi"); } void write_general(AltosRecord record) { - out.printf("%s,%d,%d,%s,%8.2f,%4d", + out.printf("%s, %d, %d, %s, %8.2f, %4d, %3d", record.version, record.serial, record.flight, record.callsign, (double) record.time, - record.rssi); + record.rssi, + record.status & 0x7f); } void write_flight_header() { @@ -123,7 +125,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_range,pad_az,pad_el"); + out.printf("connected,locked,nsat,latitude,longitude,altitude,year,month,day,hour,minute,second,pad_dist,pad_range,pad_az,pad_el,hdop"); } void write_gps(AltosRecord record) { @@ -135,7 +137,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,%9.0f,%4.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,%6.1f", gps.connected?1:0, gps.locked?1:0, gps.nsat, @@ -151,7 +153,33 @@ public class AltosCSV { from_pad.distance, state.range, from_pad.bearing, - state.elevation); + state.elevation, + gps.hdop); + } + + void write_gps_sat_header() { + for(int i = 1; i <= 32; i++) { + out.printf("sat%02d", i); + if (i != 32) + out.printf(","); + } + } + + void write_gps_sat(AltosRecord record) { + AltosGPS gps = record.gps; + for(int i = 1; i <= 32; i++) { + int c_n0 = 0; + if (gps != null && gps.cc_gps_sat != null) { + for(int j = 0; j < gps.cc_gps_sat.length; j++) + if (gps.cc_gps_sat[j].svid == i) { + c_n0 = gps.cc_gps_sat[j].c_n0; + break; + } + } + out.printf ("%3d", c_n0); + if (i != 32) + out.printf(","); + } } void write_header() { @@ -159,6 +187,7 @@ public class AltosCSV { out.printf(","); write_flight_header(); out.printf(","); write_basic_header(); out.printf(","); write_gps_header(); + out.printf(","); write_gps_sat_header(); out.printf ("\n"); } @@ -167,7 +196,8 @@ public class AltosCSV { write_general(record); out.printf(","); write_flight(record); out.printf(","); write_basic(record); out.printf(","); - write_gps(record); + write_gps(record); out.printf(","); + write_gps_sat(record); out.printf ("\n"); } -- cgit v1.2.3