diff --git a/androidgcs/res/xml/preferences.xml b/androidgcs/res/xml/preferences.xml index 285e7b6d7..3a9103b49 100644 --- a/androidgcs/res/xml/preferences.xml +++ b/androidgcs/res/xml/preferences.xml @@ -11,5 +11,13 @@ android:summary="Enter a TCP/IP address here" android:defaultValue="192.168.0.1" android:title="IP address:" android:key="ip_address" /> + + diff --git a/androidgcs/src/org/openpilot/androidgcs/BluetoothUAVTalk.java b/androidgcs/src/org/openpilot/androidgcs/BluetoothUAVTalk.java index b240f3adc..c00db0bea 100644 --- a/androidgcs/src/org/openpilot/androidgcs/BluetoothUAVTalk.java +++ b/androidgcs/src/org/openpilot/androidgcs/BluetoothUAVTalk.java @@ -7,6 +7,7 @@ import java.util.UUID; import org.openpilot.uavtalk.UAVObjectManager; import org.openpilot.uavtalk.UAVTalk; +import android.annotation.TargetApi; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; @@ -14,16 +15,18 @@ import android.bluetooth.BluetoothSocket; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; import android.util.Log; -public class BluetoothUAVTalk { +@TargetApi(10) public class BluetoothUAVTalk { private final String TAG = "BluetoothUAVTalk"; public static int LOGLEVEL = 2; public static boolean WARN = LOGLEVEL > 1; public static boolean DEBUG = LOGLEVEL > 0; // Temporarily define fixed device name - public final static String DEVICE_NAME = "RN42-222D"; + private String device_name = "RN42-222D"; private final static UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); private BluetoothAdapter mBluetoothAdapter; @@ -32,8 +35,12 @@ public class BluetoothUAVTalk { private UAVTalk uavTalk; private boolean connected; - public BluetoothUAVTalk(Context caller, String deviceName) { - if (DEBUG) Log.d(TAG, "Trying to open UAVTalk with " + deviceName); + public BluetoothUAVTalk(Context caller) { + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(caller); + device_name = prefs.getString("bluetooth_mac",""); + + if (DEBUG) Log.d(TAG, "Trying to open UAVTalk with " + device_name); connected = false; device = null; @@ -93,7 +100,7 @@ public class BluetoothUAVTalk { // Add the name and address to an array adapter to show in a ListView //mArrayAdapter.add(device.getName() + "\n" + device.getAddress()); Log.d(TAG, "Paired device: " + device.getName()); - if(device.getName().compareTo(DEVICE_NAME) == 0) { + if(device.getName().compareTo(device_name) == 0) { this.device = device; return; } diff --git a/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java b/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java index 917dfb116..13e415c54 100644 --- a/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java +++ b/androidgcs/src/org/openpilot/androidgcs/OPTelemetryService.java @@ -277,7 +277,7 @@ public class OPTelemetryService extends Service { Looper.prepare(); - BluetoothUAVTalk bt = new BluetoothUAVTalk(OPTelemetryService.this, BluetoothUAVTalk.DEVICE_NAME); + BluetoothUAVTalk bt = new BluetoothUAVTalk(OPTelemetryService.this); for( int i = 0; i < 10; i++ ) { if (DEBUG) Log.d(TAG, "Attempting Bluetooth Connection"); diff --git a/androidgcs/src/org/openpilot/androidgcs/TcpUAVTalk.java b/androidgcs/src/org/openpilot/androidgcs/TcpUAVTalk.java index f5d40040b..1f647bd99 100644 --- a/androidgcs/src/org/openpilot/androidgcs/TcpUAVTalk.java +++ b/androidgcs/src/org/openpilot/androidgcs/TcpUAVTalk.java @@ -20,7 +20,7 @@ public class TcpUAVTalk { // Temporarily define fixed device name private String ip_address = "1"; - public final static int PORT = 9001; + private int port = 9001; private UAVTalk uavTalk; private boolean connected; @@ -28,8 +28,12 @@ public class TcpUAVTalk { public TcpUAVTalk(Context caller) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(caller); ip_address = prefs.getString("ip_address","127.0.0.1"); + try { + port = Integer.decode(prefs.getString("port", "")); + } catch (NumberFormatException e) { + } - if (DEBUG) Log.d(TAG, "Trying to open UAVTalk with " + ip_address); + if (DEBUG) Log.d(TAG, "Trying to open UAVTalk with " + ip_address); connected = false; } @@ -52,7 +56,7 @@ public class TcpUAVTalk { private boolean openTelemetryTcp(UAVObjectManager objMngr) { - Log.d(TAG, "Opening connection to " + ip_address + " at address " + PORT); + Log.d(TAG, "Opening connection to " + ip_address + " at address " + port); InetAddress serverAddr = null; try { @@ -65,7 +69,7 @@ public class TcpUAVTalk { Socket socket = null; try { - socket = new Socket(serverAddr,PORT); + socket = new Socket(serverAddr,port); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace();