summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-08-17 20:46:48 -0700
committerKeith Packard <keithp@keithp.com>2014-08-17 20:46:48 -0700
commitb1f1844aa514893228080704da3b3ccf855bda1e (patch)
tree4df3ecde077bb2d23afe78f23210e81699d6c416
parente935ebe55705cb0506aac0859583d54fd8e5ca46 (diff)
altosdroid: Add telemetry rate support
Provides a menu to select the receiver telemetry bit rate Signed-off-by: Keith Packard <keithp@keithp.com>
-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.java57
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java6
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);
}