diff options
author | Keith Packard <keithp@keithp.com> | 2014-08-17 20:46:48 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-08-17 20:46:48 -0700 |
commit | b1f1844aa514893228080704da3b3ccf855bda1e (patch) | |
tree | 4df3ecde077bb2d23afe78f23210e81699d6c416 /altosdroid | |
parent | e935ebe55705cb0506aac0859583d54fd8e5ca46 (diff) |
altosdroid: Add telemetry rate support
Provides a menu to select the receiver telemetry bit rate
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosdroid')
-rw-r--r-- | altosdroid/res/menu/option_menu.xml | 3 | ||||
-rw-r--r-- | altosdroid/res/values/strings.xml | 1 | ||||
-rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java | 57 | ||||
-rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 6 |
4 files changed, 62 insertions, 5 deletions
diff --git a/altosdroid/res/menu/option_menu.xml b/altosdroid/res/menu/option_menu.xml index d7ba8305..ee9d475f 100644 --- a/altosdroid/res/menu/option_menu.xml +++ b/altosdroid/res/menu/option_menu.xml @@ -20,4 +20,7 @@ <item android:id="@+id/select_freq" android:icon="@android:drawable/ic_menu_preferences" android:title="@string/select_freq" /> + <item android:id="@+id/select_rate" + android:icon="@android:drawable/ic_menu_preferences" + android:title="@string/select_rate" /> </menu> diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml index 90da617b..ce335b76 100644 --- a/altosdroid/res/values/strings.xml +++ b/altosdroid/res/values/strings.xml @@ -28,6 +28,7 @@ <!-- Options Menu --> <string name="connect_device">Connect a device</string> <string name="select_freq">Select radio frequency</string> + <string name="select_rate">Select data rate</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 1b49ba95..563ccd5a 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -476,6 +476,33 @@ public class AltosDroid extends FragmentActivity { } } + void setBaud(int baud) { + try { + mService.send(Message.obtain(null, TelemetryService.MSG_SETBAUD, baud)); + } catch (RemoteException e) { + } + } + + void setBaud(String baud) { + try { + int value = Integer.parseInt(baud); + int rate = AltosLib.ao_telemetry_rate_38400; + switch (value) { + case 2400: + rate = AltosLib.ao_telemetry_rate_2400; + break; + case 9600: + rate = AltosLib.ao_telemetry_rate_9600; + break; + case 38400: + rate = AltosLib.ao_telemetry_rate_38400; + break; + } + setBaud(rate); + } catch (NumberFormatException e) { + } + } + @Override public boolean onOptionsItemSelected(MenuItem item) { Intent serverIntent = null; @@ -501,16 +528,36 @@ public class AltosDroid extends FragmentActivity { "Channel 9 (435.450MHz)" }; - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle("Pick a frequency"); - builder.setItems(frequencies, + AlertDialog.Builder builder_freq = new AlertDialog.Builder(this); + builder_freq.setTitle("Pick a frequency"); + builder_freq.setItems(frequencies, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { setFrequency(frequencies[item]); } }); - AlertDialog alert = builder.create(); - alert.show(); + AlertDialog alert_freq = builder_freq.create(); + alert_freq.show(); + return true; + case R.id.select_rate: + // Set the TBT baud rate + + final String[] rates = { + "38400", + "9600", + "2400", + }; + + AlertDialog.Builder builder_rate = new AlertDialog.Builder(this); + builder_rate.setTitle("Pick a baud rate"); + builder_rate.setItems(rates, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int item) { + setBaud(rates[item]); + } + }); + AlertDialog alert_rate = builder_rate.create(); + alert_rate.show(); return true; } return false; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index f06ed213..4ec353e3 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -61,6 +61,7 @@ public class TelemetryService extends Service implements LocationListener { static final int MSG_TELEMETRY = 7; static final int MSG_SETFREQUENCY = 8; static final int MSG_CRC_ERROR = 9; + static final int MSG_SETBAUD = 10; public static final int STATE_NONE = 0; public static final int STATE_READY = 1; @@ -162,6 +163,11 @@ public class TelemetryService extends Service implements LocationListener { } } break; + case MSG_SETBAUD: + if (s.state == STATE_CONNECTED) { + s.mAltosBluetooth.set_telemetry_rate((Integer) msg.obj); + } + break; default: super.handleMessage(msg); } |