summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorzzy <zhenye@broadcom.com>2012-11-29 14:33:14 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2012-11-29 14:33:14 -0800
commit0a3b9017ed42e342afad0ce140e5d9e4acbfe947 (patch)
treebb0f0f90d57369fbe78ddc08723b17fd3f4da527 /core/java/android/bluetooth
parent0feedf9982e60915f11f52dc0504d827800d6601 (diff)
parentde95a276e7caf3b9918c21a4f43f91c7c25b3a6b (diff)
downloadframeworks_base-0a3b9017ed42e342afad0ce140e5d9e4acbfe947.zip
frameworks_base-0a3b9017ed42e342afad0ce140e5d9e4acbfe947.tar.gz
frameworks_base-0a3b9017ed42e342afad0ce140e5d9e4acbfe947.tar.bz2
am de95a276: am 3fe63ce4: am 652678af: timeout support for accept() and added check for signal size
* commit 'de95a276e7caf3b9918c21a4f43f91c7c25b3a6b': timeout support for accept() and added check for signal size
Diffstat (limited to 'core/java/android/bluetooth')
-rw-r--r--core/java/android/bluetooth/BluetoothSocket.java16
1 files changed, 9 insertions, 7 deletions
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index 26bde19..d7a214d 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -300,7 +300,6 @@ public final class BluetoothSocket implements Closeable {
if (mDevice == null) throw new IOException("Connect is called on null device");
try {
- // TODO(BT) derive flag from auth and encrypt
if (mSocketState == SocketState.CLOSED) throw new IOException("socket closed");
IBluetooth bluetoothProxy = BluetoothAdapter.getDefaultAdapter().getBluetoothService(null);
if (bluetoothProxy == null) throw new IOException("Bluetooth is off");
@@ -349,7 +348,6 @@ public final class BluetoothSocket implements Closeable {
mUuid, mPort, getSecurityFlags());
} catch (RemoteException e) {
Log.e(TAG, Log.getStackTraceString(new Throwable()));
- // TODO(BT) right error code?
return -1;
}
@@ -388,8 +386,13 @@ public final class BluetoothSocket implements Closeable {
/*package*/ BluetoothSocket accept(int timeout) throws IOException {
BluetoothSocket acceptedSocket;
if (mSocketState != SocketState.LISTENING) throw new IOException("bt socket is not in listen state");
- // TODO(BT) wait on an incoming connection
+ if(timeout > 0) {
+ Log.d(TAG, "accept() set timeout (ms):" + timeout);
+ mSocket.setSoTimeout(timeout);
+ }
String RemoteAddr = waitSocketSignal(mSocketIS);
+ if(timeout > 0)
+ mSocket.setSoTimeout(0);
synchronized(this)
{
if (mSocketState != SocketState.LISTENING)
@@ -397,8 +400,6 @@ public final class BluetoothSocket implements Closeable {
acceptedSocket = acceptSocket(RemoteAddr);
//quick drop the reference of the file handle
}
- // TODO(BT) rfcomm socket only supports one connection, return this?
- // return this;
return acceptedSocket;
}
@@ -451,7 +452,6 @@ public final class BluetoothSocket implements Closeable {
mPfd.detachFd();
}
}
- // TODO(BT) unbind proxy,
}
/*package */ void removeChannel() {
@@ -471,6 +471,8 @@ public final class BluetoothSocket implements Closeable {
ByteBuffer bb = ByteBuffer.wrap(sig);
bb.order(ByteOrder.nativeOrder());
int size = bb.getShort();
+ if(size != SOCK_SIGNAL_SIZE)
+ throw new IOException("Connection failure, wrong signal size: " + size);
byte [] addr = new byte[6];
bb.get(addr);
int channel = bb.getInt();
@@ -487,7 +489,7 @@ public final class BluetoothSocket implements Closeable {
while(left > 0) {
int ret = is.read(b, b.length - left, left);
if(ret <= 0)
- throw new IOException("read failed, socket might closed, read ret: " + ret);
+ throw new IOException("read failed, socket might closed or timeout, read ret: " + ret);
left -= ret;
if(left != 0)
Log.w(TAG, "readAll() looping, read partial size: " + (b.length - left) +