summaryrefslogtreecommitdiff
path: root/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-06-21 09:37:05 -0700
committerKeith Packard <keithp@keithp.com>2015-06-22 21:04:43 -0700
commit9af72a2e629779833ff1787bbfc2ddc8b9d88bba (patch)
tree32c475d55a17dc6c02b29edd1e21d3f352489522 /altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
parent4fbe9d5a1f56178a737ede6b31e8d01a02a7543f (diff)
altosdroid: Show receiver battery voltage in the 'pad' view
Helpful to determine when the receiver battery is getting low Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java')
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java34
1 files changed, 33 insertions, 1 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
index 80694ea7..52363430 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();