Merge "Bluetooth: Expose L2CAP API to support OPP 1.2"
This commit is contained in:
@@ -1858,6 +1858,35 @@ public final class BluetoothAdapter {
|
||||
return listenUsingL2capOn(port, false, false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Construct an insecure L2CAP server socket.
|
||||
* Call #accept to retrieve connections to this socket.
|
||||
* <p>To auto assign a port without creating a SDP record use
|
||||
* {@link SOCKET_CHANNEL_AUTO_STATIC_NO_SDP} as port number.
|
||||
* @param port the PSM to listen on
|
||||
* @return An L2CAP BluetoothServerSocket
|
||||
* @throws IOException On error, for example Bluetooth not available, or
|
||||
* insufficient permissions.
|
||||
* @hide
|
||||
*/
|
||||
public BluetoothServerSocket listenUsingInsecureL2capOn(int port) throws IOException {
|
||||
BluetoothServerSocket socket = new BluetoothServerSocket(
|
||||
BluetoothSocket.TYPE_L2CAP, false, false, port, false, false);
|
||||
int errno = socket.mSocket.bindListen();
|
||||
if(port == SOCKET_CHANNEL_AUTO_STATIC_NO_SDP) {
|
||||
socket.setChannel(socket.mSocket.getPort());
|
||||
}
|
||||
if (errno != 0) {
|
||||
//TODO(BT): Throw the same exception error code
|
||||
// that the previous code was using.
|
||||
//socket.mSocket.throwErrnoNative(errno);
|
||||
throw new IOException("Error: " + errno);
|
||||
}
|
||||
return socket;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the local Out of Band Pairing Data
|
||||
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
|
||||
|
||||
@@ -1411,6 +1411,27 @@ public final class BluetoothDevice implements Parcelable {
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an L2cap {@link BluetoothSocket} ready to start an insecure
|
||||
* outgoing connection to this remote device on given channel.
|
||||
* <p>The remote device will be not authenticated and communication on this
|
||||
* socket will not be encrypted.
|
||||
* <p>Use {@link BluetoothSocket#connect} to initiate the outgoing
|
||||
* connection.
|
||||
* <p>Valid L2CAP PSM channels are in range 1 to 2^16.
|
||||
* <p>Requires {@link android.Manifest.permission#BLUETOOTH}
|
||||
*
|
||||
* @param channel L2cap PSM/channel to connect to
|
||||
* @return a RFCOMM BluetoothServerSocket ready for an outgoing connection
|
||||
* @throws IOException on error, for example Bluetooth not available, or
|
||||
* insufficient permissions
|
||||
* @hide
|
||||
*/
|
||||
public BluetoothSocket createInsecureL2capSocket(int channel) throws IOException {
|
||||
return new BluetoothSocket(BluetoothSocket.TYPE_L2CAP, -1, false, false, this, channel,
|
||||
null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an RFCOMM {@link BluetoothSocket} ready to start a secure
|
||||
* outgoing connection to this remote device using SDP lookup of uuid.
|
||||
|
||||
Reference in New Issue
Block a user