X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fapp%2Fsrc%2Fmain%2Fjava%2Forg%2Faltusmetrum%2FAltosDroid%2FTelemetryService.java;h=31616c825371d5e4f2f411343edf4c2464b622b0;hb=528fdc4e03466430c8d81fc78c90d3c9e8465ca7;hp=d4f72b3f7421851d8d4051b4f6a15d590d360af9;hpb=273bae40dfabc3249acd4427d92abb2ed9fefa6c;p=fw%2Faltos diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TelemetryService.java index d4f72b3f..31616c82 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/TelemetryService.java @@ -33,7 +33,7 @@ import android.os.*; import android.widget.Toast; import androidx.core.app.NotificationCompat; -import org.altusmetrum.altoslib_13.*; +import org.altusmetrum.altoslib_14.*; public class TelemetryService extends Service implements AltosIdleMonitorListener { @@ -133,7 +133,9 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene case MSG_SETFREQUENCY: AltosDebug.debug("MSG_SETFREQUENCY"); s.telemetry_state.frequency = (Double) msg.obj; - if (s.telemetry_state.connect == TelemetryState.CONNECT_CONNECTED) { + if (s.idle_monitor != null) { + s.idle_monitor.set_frequency(s.telemetry_state.frequency); + } else if (s.telemetry_state.connect == TelemetryState.CONNECT_CONNECTED) { try { s.altos_link.set_radio_frequency(s.telemetry_state.frequency); s.altos_link.save_frequency(); @@ -251,12 +253,11 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene private void telemetry(AltosTelemetry telem) { AltosState state; - if (telemetry_state.states.containsKey(telem.serial())) - state = telemetry_state.states.get(telem.serial()); - else + state = telemetry_state.get(telem.serial()); + if (state == null) state = new AltosState(new AltosCalData()); telem.provide_data(state); - telemetry_state.states.put(telem.serial(), state); + telemetry_state.put(telem.serial(), state); telemetry_state.quiet = false; if (state != null) { AltosPreferences.set_state(state,telem.serial()); @@ -269,8 +270,6 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene private Message message() { if (telemetry_state == null) AltosDebug.debug("telemetry_state null!"); - if (telemetry_state.states == null) - AltosDebug.debug("telemetry_state.states null!"); return Message.obtain(null, AltosDroid.MSG_STATE, telemetry_state); } @@ -411,7 +410,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene } private void delete_serial(int serial) { - telemetry_state.states.remove((Integer) serial); + telemetry_state.remove(serial); AltosPreferences.remove_state(serial); send_to_clients(); } @@ -438,6 +437,8 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene telemetry_stop(); idle_monitor = new AltosIdleMonitor(this, altos_link, true, false); idle_monitor.set_callsign(AltosPreferences.callsign()); + idle_monitor.set_frequency(telemetry_state.frequency); + telemetry_state.idle_mode = true; idle_monitor.start(); send_idle_mode_to_clients(); } @@ -450,6 +451,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene } catch (InterruptedException ie) { } idle_monitor = null; + telemetry_state.idle_mode = false; telemetry_start(); send_idle_mode_to_clients(); } @@ -615,9 +617,6 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene for (int serial : serials) { AltosState saved_state = AltosPreferences.state(serial); if (saved_state != null) { - if (telemetry_state.latest_serial == 0) - telemetry_state.latest_serial = serial; - AltosDebug.debug("recovered old state serial %d flight %d", serial, saved_state.cal_data().flight); @@ -625,7 +624,7 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene AltosDebug.debug("\tposition %f,%f", saved_state.gps.lat, saved_state.gps.lon); - telemetry_state.states.put(serial, saved_state); + telemetry_state.put(serial, saved_state); } else { AltosDebug.debug("Failed to recover state for %d", serial); AltosPreferences.remove_state(serial); @@ -710,7 +709,9 @@ public class TelemetryService extends Service implements AltosIdleMonitorListene /* AltosIdleMonitorListener */ public void update(AltosState state, AltosListenerState listener_state) { - telemetry_state.states.put(state.cal_data().serial, state); + if (state != null) + AltosDebug.debug("update call %s freq %7.3f", state.cal_data().callsign, state.frequency); + telemetry_state.put(state.cal_data().serial, state); telemetry_state.receiver_battery = listener_state.battery; send_to_clients(); }