X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FTelemetryService.java;h=58bf8804513dbf787b0f3514fa3746099b7fa880;hp=80694ea74357385264f19c5f5cd0968a25d69b8c;hb=06908e377b7b932bfe3f6dfc840a0a13340f32ce;hpb=c46c2c5767c6e909fa58587e6c864a4fbaa9fa20 diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 80694ea7..58bf8804 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -45,7 +45,6 @@ import android.location.Criteria; import org.altusmetrum.altoslib_7.*; - public class TelemetryService extends Service implements LocationListener { static final int MSG_REGISTER_CLIENT = 1; @@ -305,6 +304,8 @@ public class TelemetryService extends Service implements LocationListener { if (altos_link != null) altos_link.closing(); + stop_receiver_voltage_timer(); + if (telemetry_reader != null) { AltosDebug.debug("disconnect(): stopping TelemetryReader"); telemetry_reader.interrupt(); @@ -367,6 +368,35 @@ public class TelemetryService extends Service implements LocationListener { send_to_clients(); } + // Timer for receiver battery voltage monitoring + Timer receiver_voltage_timer; + + private void update_receiver_voltage() { + if (altos_link != null) { + try { + double voltage = altos_link.monitor_battery(); + AltosDebug.debug("update receiver voltage %g\n", voltage); + telemetry_state.receiver_battery = voltage; + } catch (InterruptedException ie) { + } + } + } + + private void stop_receiver_voltage_timer() { + if (receiver_voltage_timer != null) { + receiver_voltage_timer.cancel(); + receiver_voltage_timer.purge(); + receiver_voltage_timer = null; + } + } + + private void start_receiver_voltage_timer() { + if (receiver_voltage_timer == null && altos_link.has_monitor_battery()) { + receiver_voltage_timer = new Timer(); + receiver_voltage_timer.scheduleAtFixedRate(new TimerTask() { public void run() {update_receiver_voltage();}}, 1000L, 10000L); + } + } + private void connected() throws InterruptedException { AltosDebug.debug("connected top"); AltosDebug.check_ui("connected\n"); @@ -401,6 +431,8 @@ public class TelemetryService extends Service implements LocationListener { telemetry_logger = new TelemetryLogger(this, altos_link); + start_receiver_voltage_timer(); + AltosDebug.debug("Notify UI of connection"); send_to_clients(); @@ -409,6 +441,12 @@ public class TelemetryService extends Service implements LocationListener { @Override public void onCreate() { + + AltosDebug.init(this); + + // Initialise preferences + AltosDroidPreferences.init(this); + // Get local Bluetooth adapter bluetooth_adapter = BluetoothAdapter.getDefaultAdapter(); @@ -417,9 +455,6 @@ public class TelemetryService extends Service implements LocationListener { Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show(); } - // Initialise preferences - AltosDroidPreferences.init(this); - telemetry_state = new TelemetryState(); // Create a reference to the NotificationManager so that we can update our notifcation text later