diff options
| -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 | 14 | ||||
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 10 | 
4 files changed, 25 insertions, 3 deletions
| diff --git a/altosdroid/res/menu/option_menu.xml b/altosdroid/res/menu/option_menu.xml index 3bd5a54e..f005e881 100644 --- a/altosdroid/res/menu/option_menu.xml +++ b/altosdroid/res/menu/option_menu.xml @@ -17,6 +17,9 @@      <item android:id="@+id/connect_scan"            android:icon="@android:drawable/ic_menu_search"            android:title="@string/connect_device" /> +    <item android:id="@+id/disconnect" +	  android:icon="@android:drawable/ic_notification_clear_all" +	  android:title="@string/disconnect_device" />      <item android:id="@+id/quit"            android:icon="@android:drawable/ic_menu_close_clear_cancel"            android:title="@string/quit" /> diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml index 0cc99349..8a5b29b4 100644 --- a/altosdroid/res/values/strings.xml +++ b/altosdroid/res/values/strings.xml @@ -27,6 +27,7 @@  	<!-- Options Menu -->  	<string name="connect_device">Connect a device</string> +	<string name="disconnect_device">Disconnect device</string>  	<string name="quit">Quit</string>  	<string name="select_freq">Select radio frequency</string>  	<string name="select_rate">Select data rate</string> diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index 10e735c8..273688d8 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -553,6 +553,13 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {  		}  	} +	private void disconnectDevice() { +		try { +			mService.send(Message.obtain(null, TelemetryService.MSG_DISCONNECT, null)); +		} catch (RemoteException e) { +		} +	} +  	@Override  	public boolean onCreateOptionsMenu(Menu menu) {  		MenuInflater inflater = getMenuInflater(); @@ -610,9 +617,14 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener {  			serverIntent = new Intent(this, DeviceListActivity.class);  			startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);  			return true; +		case R.id.disconnect: +			/* Disconnect the bluetooth device +			 */ +			disconnectDevice(); +			return true;  		case R.id.quit:  			Log.d(TAG, "R.id.quit"); -			stopService(new Intent(AltosDroid.this, TelemetryService.class)); +			disconnectDevice();  			finish();  			return true;  		case R.id.select_freq: diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 5e34d610..5f138972 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -63,6 +63,7 @@ public class TelemetryService extends Service implements LocationListener {  	static final int MSG_SETFREQUENCY      = 8;  	static final int MSG_CRC_ERROR	       = 9;  	static final int MSG_SETBAUD	       = 10; +	static final int MSG_DISCONNECT	       = 11;  	// Unique Identification Number for the Notification.  	// We use it on Notification start, and to cancel it. @@ -110,6 +111,11 @@ public class TelemetryService extends Service implements LocationListener {  				AltosDroidPreferences.set_active_device(address);  				s.start_altos_bluetooth(address);  				break; +			case MSG_DISCONNECT: +				if (D) Log.d(TAG, "Disconnect command received"); +				s.address = null; +				s.stop_altos_bluetooth(true); +				break;  			case MSG_SETFREQUENCY:  				if (D) Log.d(TAG, "MSG_SETFREQUENCY");  				s.telemetry_state.frequency = (Double) msg.obj; @@ -144,7 +150,7 @@ public class TelemetryService extends Service implements LocationListener {  				}  				break;  			case MSG_CONNECT_FAILED: -				if (s.address != null && !s.clients.isEmpty()) { +				if (s.address != null) {  					if (D) Log.d(TAG, "Connection failed... retrying");  					s.start_altos_bluetooth(s.address);  				} else { @@ -153,7 +159,7 @@ public class TelemetryService extends Service implements LocationListener {  				break;  			case MSG_DISCONNECTED:  				Log.d(TAG, "MSG_DISCONNECTED"); -				if (s.address != null && !s.clients.isEmpty()) { +				if (s.address != null) {  					if (D) Log.d(TAG, "Connection lost... retrying");  					s.start_altos_bluetooth(s.address);  				} else { | 
