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 | |
| 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>
| -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);  			}  | 
