altosdroid: initial implementation of telemetry logging.
[fw/altos] / altosui / AltosFlightStatus.java
index 59c9e9dbbfbae1f56bf39f940b33f25bec865ed6..b97c8dc61e004024c9e38868805529a0a30595cc 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.*;
 
 public class AltosFlightStatus extends JComponent implements AltosFlightDisplay {
        GridBagLayout   layout;
@@ -40,6 +33,12 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                void reset() {
                        value.setText("");
                }
+
+               void set_font() {
+                       label.setFont(Altos.status_font);
+                       value.setFont(Altos.status_font);
+               }
+
                public FlightValue (GridBagLayout layout, int x, String text) {
                        GridBagConstraints      c = new GridBagConstraints();
                        c.insets = new Insets(5, 5, 5, 5);
@@ -113,18 +112,40 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                        value.setText(String.format("%d", state.data.rssi));
                }
                public RSSI (GridBagLayout layout, int x) {
-                       super (layout, x, "RSSI (dBm)");
+                       super (layout, x, "RSSI");
                }
        }
 
        RSSI rssi;
 
+       class LastPacket extends FlightValue {
+               void show(AltosState state, int crc_errors) {
+                       long secs = (System.currentTimeMillis() - state.report_time + 500) / 1000;
+                       value.setText(String.format("%d", secs));
+               }
+               public LastPacket(GridBagLayout layout, int x) {
+                       super (layout, x, "Age");
+               }
+       }
+
+       LastPacket last_packet;
+
        public void reset () {
                call.reset();
                serial.reset();
                flight.reset();
                flight_state.reset();
                rssi.reset();
+               last_packet.reset();
+       }
+
+       public void set_font () {
+               call.set_font();
+               serial.set_font();
+               flight.set_font();
+               flight_state.set_font();
+               rssi.set_font();
+               last_packet.set_font();
        }
 
        public void show (AltosState state, int crc_errors) {
@@ -133,6 +154,7 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                flight.show(state, crc_errors);
                flight_state.show(state, crc_errors);
                rssi.show(state, crc_errors);
+               last_packet.show(state, crc_errors);
        }
 
        public int height() {
@@ -150,5 +172,6 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                flight = new Flight(layout, 2);
                flight_state = new FlightState(layout, 3);
                rssi = new RSSI(layout, 4);
+               last_packet = new LastPacket(layout, 5);
        }
 }