summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-08-31 22:24:16 -0500
committerKeith Packard <keithp@keithp.com>2012-08-31 22:24:16 -0500
commitec9e1186dce079a2f2b7be8050216ddb1bc1af66 (patch)
tree6acc69e291036165562bb8f7f96c25545bec39fb
parent503eabd0e351ecdffda1416b7d00f8ef1d6913c9 (diff)
parent6d31f8d15ef4bf75ae039dd7b1a6a615d00eb215 (diff)
Merge remote-tracking branch 'mjb/freq_menu'
-rw-r--r--altosdroid/res/menu/option_menu.xml3
-rw-r--r--altosdroid/res/values/strings.xml1
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java53
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java10
-rw-r--r--altoslib/AltosConfigData.java1
-rw-r--r--ao-tools/ao-send-telem/ao-send-telem.c2
6 files changed, 64 insertions, 6 deletions
diff --git a/altosdroid/res/menu/option_menu.xml b/altosdroid/res/menu/option_menu.xml
index 6946e298..d7ba8305 100644
--- a/altosdroid/res/menu/option_menu.xml
+++ b/altosdroid/res/menu/option_menu.xml
@@ -17,4 +17,7 @@
<item android:id="@+id/connect_scan"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/connect_device" />
+ <item android:id="@+id/select_freq"
+ android:icon="@android:drawable/ic_menu_preferences"
+ android:title="@string/select_freq" />
</menu>
diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml
index f8038406..1b28284a 100644
--- a/altosdroid/res/values/strings.xml
+++ b/altosdroid/res/values/strings.xml
@@ -25,6 +25,7 @@
<!-- Options Menu -->
<string name="connect_device">Connect a device</string>
+ <string name="select_freq">Select radio frequency</string>
<!-- DeviceListActivity -->
<string name="scanning">scanning for devices…</string>
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
index 20904d2b..00689684 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2012 Mike Beattie <mike@ethernal.org>
+ * Copyright © 2012 Mike Beattie <mike@ethernal.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.Context;
import android.content.ComponentName;
import android.content.ServiceConnection;
+import android.content.DialogInterface;
import android.os.IBinder;
import android.os.Bundle;
import android.os.Handler;
@@ -40,6 +41,7 @@ import android.view.MenuItem;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
+import android.app.AlertDialog;
import org.altusmetrum.AltosLib.*;
@@ -188,12 +190,12 @@ public class AltosDroid extends Activity {
if (!state.ascent)
speed = state.baro_speed;
mSpeedView.setText(String.format("%6.0f m/s", speed));
- mAccelView.setText(String.format("%6.0f m/s˛", state.acceleration));
+ mAccelView.setText(String.format("%6.0f m/s²", state.acceleration));
mRangeView.setText(String.format("%6.0f m", state.range));
mHeightView.setText(String.format("%6.0f m", state.height));
- mElevationView.setText(String.format("%3.0f°", state.elevation));
+ mElevationView.setText(String.format("%3.0f°", state.elevation));
if (state.from_pad != null)
- mBearingView.setText(String.format("%3.0f°", state.from_pad.bearing));
+ mBearingView.setText(String.format("%3.0f°", state.from_pad.bearing));
mLatitudeView.setText(pos(state.gps.lat, "N", "S"));
mLongitudeView.setText(pos(state.gps.lon, "W", "E"));
@@ -208,7 +210,7 @@ public class AltosDroid extends Activity {
}
int deg = (int) Math.floor(p);
double min = (p - Math.floor(p)) * 60.0;
- return String.format("%d° %9.6f\" %s", deg, min, h);
+ return String.format("%d° %9.6f\" %s", deg, min, h);
}
@Override
@@ -352,6 +354,20 @@ public class AltosDroid extends Activity {
return true;
}
+ void setFrequency(double freq) {
+ try {
+ mService.send(Message.obtain(null, TelemetryService.MSG_SETFREQUENCY, freq));
+ } catch (RemoteException e) {
+ }
+ }
+
+ void setFrequency(String freq) {
+ try {
+ setFrequency (Double.parseDouble(freq.substring(11, 17)));
+ } catch (NumberFormatException e) {
+ }
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent serverIntent = null;
@@ -361,6 +377,33 @@ public class AltosDroid extends Activity {
serverIntent = new Intent(this, DeviceListActivity.class);
startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
return true;
+ case R.id.select_freq:
+ // Set the TBT radio frequency
+
+ final String[] frequencies = {
+ "Channel 0 (434.550MHz)",
+ "Channel 1 (434.650MHz)",
+ "Channel 2 (434.750MHz)",
+ "Channel 3 (434.850MHz)",
+ "Channel 4 (434.950MHz)",
+ "Channel 5 (435.050MHz)",
+ "Channel 6 (435.150MHz)",
+ "Channel 7 (435.250MHz)",
+ "Channel 8 (435.350MHz)",
+ "Channel 9 (435.450MHz)"
+ };
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("Pick a frequency");
+ builder.setItems(frequencies,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int item) {
+ setFrequency(frequencies[item]);
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+ return true;
}
return false;
}
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
index ffe96946..6a1f1c5a 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
@@ -52,6 +52,7 @@ public class TelemetryService extends Service {
static final int MSG_CONNECT_FAILED = 5;
static final int MSG_DISCONNECTED = 6;
static final int MSG_TELEMETRY = 7;
+ static final int MSG_SETFREQUENCY = 8;
public static final int STATE_NONE = 0;
public static final int STATE_READY = 1;
@@ -126,6 +127,15 @@ public class TelemetryService extends Service {
case MSG_TELEMETRY:
s.sendMessageToClients(Message.obtain(null, AltosDroid.MSG_TELEMETRY, msg.obj));
break;
+ case MSG_SETFREQUENCY:
+ if (s.state == STATE_CONNECTED) {
+ try {
+ s.mAltosBluetooth.set_radio_frequency((Double) msg.obj);
+ } catch (InterruptedException e) {
+ } catch (TimeoutException e) {
+ }
+ }
+ break;
default:
super.handleMessage(msg);
}
diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java
index ecc2d0aa..c143036c 100644
--- a/altoslib/AltosConfigData.java
+++ b/altoslib/AltosConfigData.java
@@ -170,6 +170,7 @@ public class AltosConfigData implements Iterable<String> {
try { callsign = get_string(line, "Callsign:"); } catch (Exception e) {}
try { version = get_string(line,"software-version"); } catch (Exception e) {}
try { product = get_string(line,"product"); } catch (Exception e) {}
+ try { manufacturer = get_string(line,"manufacturer"); } catch (Exception e) {}
try { get_int(line, "flight"); stored_flight++; } catch (Exception e) {}
try { storage_size = get_int(line, "Storage size:"); } catch (Exception e) {}
diff --git a/ao-tools/ao-send-telem/ao-send-telem.c b/ao-tools/ao-send-telem/ao-send-telem.c
index c6cc51a1..db061377 100644
--- a/ao-tools/ao-send-telem/ao-send-telem.c
+++ b/ao-tools/ao-send-telem/ao-send-telem.c
@@ -199,7 +199,7 @@ main (int argc, char **argv)
exit (1);
cc_usb_printf(cc, "m 0\n");
- cc_usb_printf(cc, "F %d\n", freq);
+ cc_usb_printf(cc, "c F %d\n", freq);
for (i = optind; i < argc; i++) {
file = fopen(argv[i], "r");
if (!file) {