diff options
| author | Bdale Garbee <bdale@gag.com> | 2015-02-07 22:39:54 -0700 |
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2015-02-07 22:39:54 -0700 |
| commit | f766a457323268857b3f2dfc7f42427437b71cb7 (patch) | |
| tree | 8afc8a661d682fc34b16fc0b1b44f2844d34f336 /altosdroid | |
| parent | db51224af01731e7323f6f696a7397d64eb80b92 (diff) | |
| parent | e2cefd8593d269ce603aaf33f4a53a5c2dcb3350 (diff) | |
Merge branch 'branch-1.6' into debian
Conflicts:
ChangeLog
altoslib/AltosTelemetryReader.java
configure.ac
Diffstat (limited to 'altosdroid')
19 files changed, 90 insertions, 78 deletions
diff --git a/altosdroid/AndroidManifest.xml b/altosdroid/AndroidManifest.xml index 02507bb9..19e5a6dc 100644 --- a/altosdroid/AndroidManifest.xml +++ b/altosdroid/AndroidManifest.xml @@ -17,8 +17,8 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.altusmetrum.AltosDroid" - android:versionCode="5" - android:versionName="1.3"> + android:versionCode="6" + android:versionName="1.5"> <uses-sdk android:targetSdkVersion="10" android:minSdkVersion="10"/> <!-- Google Maps --> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> diff --git a/altosdroid/Makefile.am b/altosdroid/Makefile.am index d5784483..361de13c 100644 --- a/altosdroid/Makefile.am +++ b/altosdroid/Makefile.am @@ -1,5 +1,8 @@ if ANDROID -all_target=bin/AltosDroid-debug.apk bin/AltosDroid-release-unsigned.apk +all_target=bin/AltosDroid-debug.apk +if ANDROID_RELEASE +all_target+=bin/AltosDroid-release.apk +endif else all_target= endif @@ -76,7 +79,8 @@ bin/AltosDroid-release-unsigned.apk: $(SRC) $(ALTOSLIB) $(SUPPORT_V4) $(GOOGLE_P bin/AltosDroid-release.apk: bin/AltosDroid-release-unsigned.apk jarsigner -sigalg SHA1withDSA -digestalg SHA1 \ - -keystore release.keystore \ + -keystore ~/altusmetrumllc/google-play-release.keystore \ + -storepass:file ~/altusmetrumllc/google-play-passphrase \ -signedjar bin/AltosDroid-release-signed.apk \ bin/AltosDroid-release-unsigned.apk AltosDroid $(ZIPALIGN) -f 4 \ diff --git a/altosdroid/Notebook b/altosdroid/Notebook index 5a4df032..6a246df7 100644 --- a/altosdroid/Notebook +++ b/altosdroid/Notebook @@ -6,10 +6,6 @@ Desired AltosDroid feature list *) Channel scanning. Provide the ability to search for telemetry signals like AltosUI does. - *) Highlight current frequency in the frequency list. - - Placed current frequency in title bar - *) Random frequency selection. Provide some mechanism to input arbitrary radio frequencies. Could be like AltosUI which allows you to edit the list of frequencies and assign names to them, @@ -23,6 +19,20 @@ Desired AltosDroid feature list *) Select satellite imaging mode + *) TeleBT battery voltage + + *) Deal with long bluetooth list. Currently, a list longer than + the screen makes it impossible to use entries off the bottom. + + *) Pickle/unpickle state instead of reloading entire history from + file. Current restart time is lengthy. + +Completed features + + *) Highlight current frequency in the frequency list. + + Placed current frequency in title bar + *) Remember most-recently-used TBT and frequency, perhaps auto-connect at startup. @@ -37,4 +47,3 @@ Desired AltosDroid feature list Done - *) TeleBT battery voltage diff --git a/altosdroid/release-note-1.5 b/altosdroid/release-note-1.5 new file mode 100644 index 00000000..98f88d98 --- /dev/null +++ b/altosdroid/release-note-1.5 @@ -0,0 +1,7 @@ +Version 1.5 + + * TeleGPS support + * Reloads previous flight data at startup + * Fixes crash when touching map + * Reconnect to TeleBT at startup + * Remember radio settings diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java index 51ef5e94..3740f55d 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java @@ -31,7 +31,7 @@ import android.os.Handler; //import android.os.Message; import android.util.Log; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class AltosBluetooth extends AltosLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index f6cceac9..53963f25 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -52,7 +52,7 @@ import android.widget.Toast; import android.app.AlertDialog; import android.location.Location; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class AltosDroid extends FragmentActivity implements AltosUnitsListener { // Debugging @@ -337,7 +337,10 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { } if (saved_state == null || state.flight != saved_state.flight) { Log.d(TAG, "update flight"); - mFlightView.setText(String.format("%d", state.flight)); + if (state.flight == AltosLib.MISSING) + mFlightView.setText(""); + else + mFlightView.setText(String.format("%d", state.flight)); } if (saved_state == null || state.state != saved_state.state) { Log.d(TAG, "update state"); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java index 9cef1319..7ab70147 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; import android.content.Context; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class AltosDroidPreferences extends AltosPreferences { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java index be41ae7c..bc5300fd 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java @@ -22,8 +22,9 @@ import java.util.Map; import android.content.Context; import android.content.SharedPreferences; import android.os.Environment; +import android.util.*; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class AltosDroidPreferencesBackend implements AltosPreferencesBackend { public final static String NAME = "org.altusmetrum.AltosDroid"; @@ -71,6 +72,16 @@ public class AltosDroidPreferencesBackend implements AltosPreferencesBackend { return prefs.getString(key, def); } + public byte[] getBytes(String key, byte[] def) { + String save = prefs.getString(key, null); + + if (save == null) + return def; + + byte[] bytes = Base64.decode(save, Base64.DEFAULT); + return bytes; + } + public void putBoolean(String key, boolean value) { editor.putBoolean(key, value); } @@ -87,6 +98,11 @@ public class AltosDroidPreferencesBackend implements AltosPreferencesBackend { editor.putString(key, value); } + public void putBytes(String key, byte[] bytes) { + String save = Base64.encodeToString(bytes, Base64.DEFAULT); + editor.putString(key, save); + } + public void remove(String key) { editor.remove(key); } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 8e625da6..cbb20045 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.location.Location; import android.app.Activity; import android.graphics.Color; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java index 969992d3..2d32dc07 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java @@ -21,7 +21,7 @@ package org.altusmetrum.AltosDroid; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class AltosVoice { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java index fa4e3c8b..23de9622 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.app.Activity; import android.os.Bundle; @@ -101,7 +101,7 @@ public class TabAscent extends AltosDroidTab { if (state.gps != null) { mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); - mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); + mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); } else { mLatitudeView.setText(""); mLongitudeView.setText(""); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java index 28068666..4ec6f409 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.app.Activity; import android.os.Bundle; @@ -110,7 +110,7 @@ public class TabDescent extends AltosDroidTab { } if (state.gps != null) { mLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); - mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); + mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); } mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage)); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java index b257b936..4c69d869 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.app.Activity; import android.os.Bundle; @@ -82,12 +82,12 @@ public class TabLanded extends AltosDroidTab { } if (state != null && state.gps != null) { mTargetLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); - mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); + mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); } if (receiver != null) { mReceiverLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); - mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "W", "E")); + mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); } if (state != null) { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index ab338ac2..871b94a1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -19,7 +19,7 @@ package org.altusmetrum.AltosDroid; import java.util.Arrays; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; @@ -179,7 +179,7 @@ public class TabMap extends AltosDroidTab { } if (state.gps != null) { mTargetLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); - mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E")); + mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); if (state.gps.locked && state.gps.nsat >= 4) center (state.gps.lat, state.gps.lon, 10); } @@ -193,9 +193,12 @@ public class TabMap extends AltosDroidTab { else accuracy = 1000; mReceiverLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); - mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "W", "E")); + mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); center (receiver.getLatitude(), receiver.getLongitude(), accuracy); } } + + public TabMap() { + } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index 32df71d7..0ac78219 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.app.Activity; import android.os.Bundle; @@ -163,7 +163,7 @@ public class TabPad extends AltosDroidTab { if (receiver.hasAltitude()) altitude = receiver.getAltitude(); mPadLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); - mPadLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "W", "E")); + mPadLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); set_value(mPadAltitudeView, AltosConvert.height, 6, altitude); } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java index 49bcfb88..9764ab72 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java @@ -1,6 +1,6 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java index 971c3e80..4e4408d5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java @@ -25,7 +25,7 @@ import java.util.concurrent.*; import android.util.Log; import android.os.Handler; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class TelemetryReader extends Thread { @@ -40,8 +40,6 @@ public class TelemetryReader extends Thread { AltosLink link; AltosState state = null; - AltosFlightReader stacked; - LinkedBlockingQueue<AltosLine> telemQueue; public AltosState read() throws ParseException, AltosCRCException, InterruptedException, IOException { @@ -59,10 +57,6 @@ public class TelemetryReader extends Thread { public void close() { state = null; - if (stacked != null) { - stacked.close(false); - stacked = null; - } link.remove_monitor(telemQueue); link = null; telemQueue.clear(); @@ -73,25 +67,6 @@ public class TelemetryReader extends Thread { AltosState state = null; try { - if (D) Log.d(TAG, "starting reader"); - while (stacked != null) { - AltosState stacked_state = null; - try { - stacked_state = stacked.read(); - } catch (ParseException pe) { - continue; - } catch (AltosCRCException ce) { - continue; - } - if (stacked_state != null) - state = stacked_state; - else - stacked = null; - } - if (state != null) { - if (D) Log.d(TAG, "Send initial state"); - handler.obtainMessage(TelemetryService.MSG_TELEMETRY, state).sendToTarget(); - } if (D) Log.d(TAG, "starting loop"); while (telemQueue != null) { try { @@ -111,34 +86,16 @@ public class TelemetryReader extends Thread { } } - public TelemetryReader (AltosLink in_link, Handler in_handler, AltosFlightReader in_stacked) { + public TelemetryReader (AltosLink in_link, Handler in_handler, AltosState in_state) { if (D) Log.d(TAG, "connected TelemetryReader create started"); link = in_link; handler = in_handler; - stacked = in_stacked; - state = null; + state = in_state; telemQueue = new LinkedBlockingQueue<AltosLine>(); link.add_monitor(telemQueue); link.set_telemetry(AltosLib.ao_telemetry_standard); if (D) Log.d(TAG, "connected TelemetryReader created"); } - - private static AltosFlightReader existing_data(AltosLink link) { - if (link == null) - return null; - - File file = AltosPreferences.logfile(link.serial); - if (file != null) { - AltosStateIterable iterable = AltosStateIterable.iterable(file); - if (iterable != null) - return new AltosReplayReader(iterable.iterator(), file, false); - } - return null; - } - - public TelemetryReader(AltosLink link, Handler handler) { - this(link, handler, existing_data(link)); - } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 30d94409..d4ac66aa 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -45,7 +45,7 @@ import android.location.LocationManager; import android.location.LocationListener; import android.location.Criteria; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; public class TelemetryService extends Service implements LocationListener { @@ -139,6 +139,10 @@ public class TelemetryService extends Service implements LocationListener { case MSG_TELEMETRY: // forward telemetry messages s.telemetry_state.state = (AltosState) msg.obj; + if (s.telemetry_state.state != null) { + if (D) Log.d(TAG, "Save state"); + AltosPreferences.set_state(0, s.telemetry_state.state, null); + } if (D) Log.d(TAG, "MSG_TELEMETRY"); s.sendMessageToClients(); break; @@ -179,6 +183,8 @@ public class TelemetryService extends Service implements LocationListener { private Message message() { if (telemetry_state == null) Log.d(TAG, "telemetry_state null!"); + if (telemetry_state.state == null) + Log.d(TAG, "telemetry_state.state null!"); return Message.obtain(null, AltosDroid.MSG_STATE, telemetry_state); } @@ -262,7 +268,7 @@ public class TelemetryService extends Service implements LocationListener { if (D) Log.d(TAG, "connected bluetooth configured"); telemetry_state.connect = TelemetryState.CONNECT_CONNECTED; - mTelemetryReader = new TelemetryReader(mAltosBluetooth, mHandler); + mTelemetryReader = new TelemetryReader(mAltosBluetooth, mHandler, telemetry_state.state); mTelemetryReader.start(); if (D) Log.d(TAG, "connected TelemetryReader started"); @@ -306,6 +312,13 @@ public class TelemetryService extends Service implements LocationListener { telemetry_state.connect = TelemetryState.CONNECT_READY; + AltosSavedState saved_state = AltosPreferences.state(0); + + if (saved_state != null) { + if (D) Log.d(TAG, String.format("recovered old state flight %d\n", saved_state.state.flight)); + telemetry_state.state = saved_state.state; + } + // Start our timer - first event in 10 seconds, then every 10 seconds after that. timer.scheduleAtFixedRate(new TimerTask(){ public void run() {onTimerTick();}}, 10000L, 10000L); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java index d3341739..862847d2 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altoslib_6.*; import android.location.Location; public class TelemetryState { |
