From: Keith Packard Date: Sat, 1 Sep 2012 03:24:16 +0000 (-0500) Subject: Merge remote-tracking branch 'mjb/freq_menu' X-Git-Tag: 1.1~37 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=ec9e1186dce079a2f2b7be8050216ddb1bc1af66;hp=503eabd0e351ecdffda1416b7d00f8ef1d6913c9 Merge remote-tracking branch 'mjb/freq_menu' --- 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 @@ + 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 @@ Connect a device + Select radio frequency scanning for devices… 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 + * Copyright © 2012 Mike Beattie * * 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 { 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) {