summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Beattie <mike@ethernal.org>2013-03-07 21:37:22 +1300
committerMike Beattie <mike@ethernal.org>2013-03-07 21:37:22 +1300
commitecfc568574ababd23b2c4dc1323cb7265c097933 (patch)
tree0671fa3cc9ce5b7237c14d0e66e061ebb4a9d7be
parent86b742743b26693cf8e56034d4ea68ff277931c1 (diff)
altosdroid: implement Age field updating
Signed-off-by: Mike Beattie <mike@ethernal.org>
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
index 8ddba9bd..2f98b64b 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
@@ -19,6 +19,8 @@ package org.altusmetrum.AltosDroid;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.Timer;
+import java.util.TimerTask;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
@@ -56,6 +58,7 @@ public class AltosDroid extends FragmentActivity {
// Message types received by our Handler
public static final int MSG_STATE_CHANGE = 1;
public static final int MSG_TELEMETRY = 2;
+ public static final int MSG_UPDATE_AGE = 3;
// Intent request codes
private static final int REQUEST_CONNECT_DEVICE = 1;
@@ -81,6 +84,10 @@ public class AltosDroid extends FragmentActivity {
TabsAdapter mTabsAdapter;
ArrayList<AltosDroidTab> mTabs = new ArrayList<AltosDroidTab>();
+ // Timer and Saved flight state for Age calculation
+ private Timer timer = new Timer();
+ AltosState saved_state;
+
// Service
private boolean mIsBound = false;
private Messenger mService = null;
@@ -130,6 +137,11 @@ public class AltosDroid extends FragmentActivity {
case MSG_TELEMETRY:
ad.update_ui((AltosState) msg.obj);
break;
+ case MSG_UPDATE_AGE:
+ if (ad.saved_state != null) {
+ ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.report_time + 500) / 1000));
+ }
+ break;
}
}
};
@@ -185,6 +197,8 @@ public class AltosDroid extends FragmentActivity {
}
void update_ui(AltosState state) {
+ saved_state = state;
+
mCallsignView.setText(state.data.callsign);
mSerialView.setText(String.format("%d", state.data.serial));
mFlightView.setText(String.format("%d", state.data.flight));
@@ -197,6 +211,13 @@ public class AltosDroid extends FragmentActivity {
mAltosVoice.tell(state);
}
+ private void onTimerTick() {
+ try {
+ mMessenger.send(Message.obtain(null, MSG_UPDATE_AGE));
+ } catch (RemoteException e) {
+ }
+ }
+
static String pos(double p, String pos, String neg) {
String h = pos;
if (p < 0) {
@@ -265,6 +286,8 @@ public class AltosDroid extends FragmentActivity {
mStateView = (TextView) findViewById(R.id.state_value);
mAgeView = (TextView) findViewById(R.id.age_value);
+ timer.scheduleAtFixedRate(new TimerTask(){ public void run() {onTimerTick();}}, 1000L, 100L);
+
mAltosVoice = new AltosVoice(this);
}