}
class AltosGPSQuery extends AltosGPS {
- public AltosGPSQuery (AltosSerial serial) throws TimeoutException, InterruptedException {
+ public AltosGPSQuery (AltosSerial serial, AltosConfigData config_data)
+ throws TimeoutException, InterruptedException {
+ boolean says_done = config_data.compare_version("1.0") >= 0;
serial.printf("g\n");
for (;;) {
String line = serial.get_reply_no_dialog(5000);
int status = Integer.decode(bits[1]);
connected = (status & Altos.AO_GPS_RUNNING) != 0;
locked = (status & Altos.AO_GPS_VALID) != 0;
+ if (!says_done)
+ break;
continue;
}
if (line.startsWith("Sats:")) {
serial.flush_input();
config_data = new AltosConfigData(serial);
adc = new AltosADC(serial);
- gps = new AltosGPSQuery(serial);
+ gps = new AltosGPSQuery(serial, config_data);
} finally {
if (remote)
serial.stop_remote();
record.version = 0;
record.callsign = config_data.callsign;
record.serial = config_data.serial;
- record.flight = 0;
+ record.flight = config_data.log_available() > 0 ? 255 : 0;
record.rssi = 0;
record.status = 0;
record.state = Altos.ao_flight_idle;
update_state();
post_state();
} catch (TimeoutException te) {
+ if (AltosSerial.debug)
+ System.out.printf ("monitor idle data timeout\n");
}
Thread.sleep(1000);
}
}
}
-public class AltosIdleMonitorUI extends JFrame implements AltosFlightDisplay {
+public class AltosIdleMonitorUI extends AltosFrame implements AltosFlightDisplay, AltosFontListener {
AltosDevice device;
JTabbedPane pane;
AltosPad pad;
flightInfo.clear();
}
+ public void set_font() {
+ pad.set_font();
+ flightInfo.set_font();
+ }
+
+ public void font_size_changed(int font_size) {
+ set_font();
+ }
+
+ AltosFlightStatusUpdate status_update;
+
public void show(AltosState state, int crc_errors) {
+ status_update.saved_state = state;
try {
pad.show(state, crc_errors);
flightStatus.show(state, crc_errors);
bag.add(pane, c);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+
+ AltosPreferences.register_font_listener(this);
+
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
disconnect();
setVisible(false);
dispose();
+ AltosPreferences.unregister_font_listener(AltosIdleMonitorUI.this);
}
});
thread = new AltosIdleMonitor(this, device, remote);
+ status_update = new AltosFlightStatusUpdate(flightStatus);
+
+ new javax.swing.Timer(100, status_update).start();
+
thread.start();
}
}