altosui: Include device name in Table view
[fw/altos] / altosui / AltosInfoTable.java
index c14009767447debd51491dfe1f6a1d449b4253ef..feafed21f32a852e0ecf3d8cec954fe65a97ed21 100644 (file)
 package altosui;
 
 import java.awt.*;
-import java.awt.event.*;
 import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
 import javax.swing.table.*;
-import java.io.*;
-import java.util.*;
-import java.text.*;
-import java.util.prefs.*;
-import java.util.concurrent.LinkedBlockingQueue;
-import org.altusmetrum.AltosLib.*;
+import org.altusmetrum.altoslib_2.*;
 
 public class AltosInfoTable extends JTable {
        private AltosFlightInfoTableModel model;
@@ -100,7 +93,7 @@ public class AltosInfoTable extends JTable {
                double  deg = Math.floor(v);
                double  min = (v - deg) * 60;
 
-               info_add_row(col, name, String.format("%3.0f°%08.5f'", deg, min));
+               info_add_row(col, name, String.format("%c %3.0f°%08.5f'", c, deg, min));
        }
 
        void info_finish() {
@@ -111,98 +104,126 @@ public class AltosInfoTable extends JTable {
                model.clear();
        }
 
-       public void show(AltosState state, int crc_errors) {
-               if (state == null)
-                       return;
+       public void show(AltosState state, AltosListenerState listener_state) {
                info_reset();
-               info_add_row(0, "Altitude", "%6.0f    m", state.altitude);
-               info_add_row(0, "Pad altitude", "%6.0f    m", state.ground_altitude);
-               info_add_row(0, "Height", "%6.0f    m", state.height);
-               info_add_row(0, "Max height", "%6.0f    m", state.max_height);
-               info_add_row(0, "Acceleration", "%8.1f  m/s²", state.acceleration);
-               info_add_row(0, "Max acceleration", "%8.1f  m/s²", state.max_acceleration);
-               info_add_row(0, "Speed", "%8.1f  m/s", state.ascent ? state.speed : state.baro_speed);
-               info_add_row(0, "Max Speed", "%8.1f  m/s", state.max_speed);
-               info_add_row(0, "Temperature", "%9.2f °C", state.temperature);
-               info_add_row(0, "Battery", "%9.2f V", state.battery);
-               if (state.drogue_sense != AltosRecord.MISSING)
-                       info_add_row(0, "Drogue", "%9.2f V", state.drogue_sense);
-               if (state.main_sense != AltosRecord.MISSING)
-                       info_add_row(0, "Main", "%9.2f V", state.main_sense);
-               info_add_row(0, "CRC Errors", "%6d", crc_errors);
-
-               if (state.gps == null || !state.gps.connected) {
-                       info_add_row(1, "GPS", "not available");
-               } else {
-                       if (state.gps_ready)
-                               info_add_row(1, "GPS state", "%s", "ready");
-                       else
-                               info_add_row(1, "GPS state", "wait (%d)",
-                                            state.gps_waiting);
-                       if (state.data.gps.locked)
-                               info_add_row(1, "GPS", "   locked");
-                       else if (state.data.gps.connected)
-                               info_add_row(1, "GPS", " unlocked");
-                       else
-                               info_add_row(1, "GPS", "  missing");
-                       info_add_row(1, "Satellites", "%6d", state.data.gps.nsat);
-                       info_add_deg(1, "Latitude", state.gps.lat, 'N', 'S');
-                       info_add_deg(1, "Longitude", state.gps.lon, 'E', 'W');
-                       info_add_row(1, "GPS altitude", "%6d", state.gps.alt);
-                       info_add_row(1, "GPS height", "%6.0f", state.gps_height);
-
-                       /* The SkyTraq GPS doesn't report these values */
-                       if (false) {
-                               info_add_row(1, "GPS ground speed", "%8.1f m/s %3d°",
-                                            state.gps.ground_speed,
-                                            state.gps.course);
-                               info_add_row(1, "GPS climb rate", "%8.1f m/s",
-                                            state.gps.climb_rate);
-                               info_add_row(1, "GPS error", "%6d m(h)%3d m(v)",
-                                            state.gps.h_error, state.gps.v_error);
-                       }
-                       info_add_row(1, "GPS hdop", "%8.1f", state.gps.hdop);
-
-                       if (state.npad > 0) {
-                               if (state.from_pad != null) {
-                                       info_add_row(1, "Distance from pad", "%6d m",
-                                                    (int) (state.from_pad.distance + 0.5));
-                                       info_add_row(1, "Direction from pad", "%6d°",
-                                                    (int) (state.from_pad.bearing + 0.5));
-                                       info_add_row(1, "Elevation from pad", "%6d°",
-                                                    (int) (state.elevation + 0.5));
-                                       info_add_row(1, "Range from pad", "%6d m",
-                                                    (int) (state.range + 0.5));
-                               } else {
-                                       info_add_row(1, "Distance from pad", "unknown");
-                                       info_add_row(1, "Direction from pad", "unknown");
-                                       info_add_row(1, "Elevation from pad", "unknown");
-                                       info_add_row(1, "Range from pad", "unknown");
+               if (state != null) {
+                       if (state.device_type != AltosLib.MISSING)
+                               info_add_row(0, "Device", "%s", AltosLib.product_name(state.device_type));
+                       if (state.altitude() != AltosLib.MISSING)
+                               info_add_row(0, "Altitude", "%6.0f    m", state.altitude());
+                       if (state.ground_altitude() != AltosLib.MISSING)
+                               info_add_row(0, "Pad altitude", "%6.0f    m", state.ground_altitude());
+                       if (state.height() != AltosLib.MISSING)
+                               info_add_row(0, "Height", "%6.0f    m", state.height());
+                       if (state.max_height() != AltosLib.MISSING)
+                               info_add_row(0, "Max height", "%6.0f    m", state.max_height());
+                       if (state.acceleration() != AltosLib.MISSING)
+                               info_add_row(0, "Acceleration", "%8.1f  m/s²", state.acceleration());
+                       if (state.max_acceleration() != AltosLib.MISSING)
+                               info_add_row(0, "Max acceleration", "%8.1f  m/s²", state.max_acceleration());
+                       if (state.speed() != AltosLib.MISSING)
+                               info_add_row(0, "Speed", "%8.1f  m/s", state.speed());
+                       if (state.max_speed() != AltosLib.MISSING)
+                               info_add_row(0, "Max Speed", "%8.1f  m/s", state.max_speed());
+                       if (state.temperature != AltosLib.MISSING)
+                               info_add_row(0, "Temperature", "%9.2f °C", state.temperature);
+                       if (state.battery_voltage != AltosLib.MISSING)
+                               info_add_row(0, "Battery", "%9.2f V", state.battery_voltage);
+                       if (state.apogee_voltage != AltosLib.MISSING)
+                               info_add_row(0, "Drogue", "%9.2f V", state.apogee_voltage);
+                       if (state.main_voltage != AltosLib.MISSING)
+                               info_add_row(0, "Main", "%9.2f V", state.main_voltage);
+               }
+               if (listener_state != null) {
+                       info_add_row(0, "CRC Errors", "%6d", listener_state.crc_errors);
+
+                       if (listener_state.battery != AltosLib.MISSING)
+                               info_add_row(0, "Receiver Battery", "%9.2f", listener_state.battery);
+               }
+
+               if (state != null) {
+                       if (state.gps == null || !state.gps.connected) {
+                               info_add_row(1, "GPS", "not available");
+                       } else {
+                               if (state.gps_ready)
+                                       info_add_row(1, "GPS state", "%s", "ready");
+                               else
+                                       info_add_row(1, "GPS state", "wait (%d)",
+                                                    state.gps_waiting);
+                               if (state.gps.locked)
+                                       info_add_row(1, "GPS", "   locked");
+                               else if (state.gps.connected)
+                                       info_add_row(1, "GPS", " unlocked");
+                               else
+                                       info_add_row(1, "GPS", "  missing");
+                               info_add_row(1, "Satellites", "%6d", state.gps.nsat);
+                               if (state.gps.lat != AltosLib.MISSING)
+                                       info_add_deg(1, "Latitude", state.gps.lat, 'N', 'S');
+                               if (state.gps.lon != AltosLib.MISSING)
+                                       info_add_deg(1, "Longitude", state.gps.lon, 'E', 'W');
+                               if (state.gps.alt != AltosLib.MISSING)
+                                       info_add_row(1, "GPS altitude", "%8.1f", state.gps.alt);
+                               if (state.gps_height != AltosLib.MISSING)
+                                       info_add_row(1, "GPS height", "%8.1f", state.gps_height);
+
+                               /* The SkyTraq GPS doesn't report these values */
+                               /*
+                                 if (false) {
+                                 info_add_row(1, "GPS ground speed", "%8.1f m/s %3d°",
+                                 state.gps.ground_speed,
+                                 state.gps.course);
+                                 info_add_row(1, "GPS climb rate", "%8.1f m/s",
+                                 state.gps.climb_rate);
+                                 info_add_row(1, "GPS error", "%6d m(h)%3d m(v)",
+                                 state.gps.h_error, state.gps.v_error);
+                                 }
+                               */
+
+                               info_add_row(1, "GPS hdop", "%8.1f", state.gps.hdop);
+
+                               if (state.npad > 0) {
+                                       if (state.from_pad != null) {
+                                               info_add_row(1, "Distance from pad", "%6d m",
+                                                            (int) (state.from_pad.distance + 0.5));
+                                               info_add_row(1, "Direction from pad", "%6d°",
+                                                            (int) (state.from_pad.bearing + 0.5));
+                                               info_add_row(1, "Elevation from pad", "%6d°",
+                                                            (int) (state.elevation + 0.5));
+                                               info_add_row(1, "Range from pad", "%6d m",
+                                                            (int) (state.range + 0.5));
+                                       } else {
+                                               info_add_row(1, "Distance from pad", "unknown");
+                                               info_add_row(1, "Direction from pad", "unknown");
+                                               info_add_row(1, "Elevation from pad", "unknown");
+                                               info_add_row(1, "Range from pad", "unknown");
+                                       }
+                                       info_add_deg(1, "Pad latitude", state.pad_lat, 'N', 'S');
+                                       info_add_deg(1, "Pad longitude", state.pad_lon, 'E', 'W');
+                                       info_add_row(1, "Pad GPS alt", "%6.0f m", state.pad_alt);
                                }
-                               info_add_deg(1, "Pad latitude", state.pad_lat, 'N', 'S');
-                               info_add_deg(1, "Pad longitude", state.pad_lon, 'E', 'W');
-                               info_add_row(1, "Pad GPS alt", "%6.0f m", state.pad_alt);
-                       }
-                       info_add_row(1, "GPS date", "%04d-%02d-%02d",
-                                      state.gps.year,
-                                      state.gps.month,
-                                      state.gps.day);
-                       info_add_row(1, "GPS time", "  %02d:%02d:%02d",
-                                      state.gps.hour,
-                                      state.gps.minute,
-                                      state.gps.second);
-                       int     nsat_vis = 0;
-                       int     c;
-
-                       if (state.gps.cc_gps_sat == null)
-                               info_add_row(2, "Satellites Visible", "%4d", 0);
-                       else {
-                               info_add_row(2, "Satellites Visible", "%4d", state.gps.cc_gps_sat.length);
-                               for (c = 0; c < state.gps.cc_gps_sat.length; c++) {
-                                       info_add_row(2, "Satellite id,C/N0",
-                                                    "%4d, %4d",
-                                                    state.gps.cc_gps_sat[c].svid,
-                                                    state.gps.cc_gps_sat[c].c_n0);
+                               if (state.gps.year != AltosLib.MISSING) 
+                                       info_add_row(1, "GPS date", "%04d-%02d-%02d",
+                                                    state.gps.year,
+                                                    state.gps.month,
+                                                    state.gps.day);
+                               if (state.gps.hour != AltosLib.MISSING)
+                                       info_add_row(1, "GPS time", "  %02d:%02d:%02d",
+                                                    state.gps.hour,
+                                                    state.gps.minute,
+                                                    state.gps.second);
+                               //int   nsat_vis = 0;
+                               int     c;
+
+                               if (state.gps.cc_gps_sat == null)
+                                       info_add_row(2, "Satellites Visible", "%4d", 0);
+                               else {
+                                       info_add_row(2, "Satellites Visible", "%4d", state.gps.cc_gps_sat.length);
+                                       for (c = 0; c < state.gps.cc_gps_sat.length; c++) {
+                                               info_add_row(2, "Satellite id,C/N0",
+                                                            "%4d, %4d",
+                                                            state.gps.cc_gps_sat[c].svid,
+                                                            state.gps.cc_gps_sat[c].c_n0);
+                                       }
                                }
                        }
                }