| Index: device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java
|
| diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java
|
| index e87b57bd609739a5d0516a94709c0ff8764b88e7..ac7489d07d66907562386412aa3900732208a702 100644
|
| --- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java
|
| +++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/ChromeBluetoothRemoteGattDescriptor.java
|
| @@ -18,19 +18,14 @@ import org.chromium.base.annotations.JNINamespace;
|
| final class ChromeBluetoothRemoteGattDescriptor {
|
| private static final String TAG = "Bluetooth";
|
|
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // private long mNativeBluetoothRemoteGattDescriptorAndroid;
|
| + private long mNativeBluetoothRemoteGattDescriptorAndroid;
|
| final Wrappers.BluetoothGattDescriptorWrapper mDescriptor;
|
| final ChromeBluetoothDevice mChromeDevice;
|
|
|
| - private ChromeBluetoothRemoteGattDescriptor(
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // long nativeBluetoothRemoteGattDescriptorAndroid,
|
| + private ChromeBluetoothRemoteGattDescriptor(long nativeBluetoothRemoteGattDescriptorAndroid,
|
| Wrappers.BluetoothGattDescriptorWrapper descriptorWrapper,
|
| ChromeBluetoothDevice chromeDevice) {
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // mNativeBluetoothRemoteGattDescriptorAndroid =
|
| - // nativeBluetoothRemoteGattDescriptorAndroid;
|
| + mNativeBluetoothRemoteGattDescriptorAndroid = nativeBluetoothRemoteGattDescriptorAndroid;
|
| mDescriptor = descriptorWrapper;
|
| mChromeDevice = chromeDevice;
|
|
|
| @@ -45,11 +40,27 @@ final class ChromeBluetoothRemoteGattDescriptor {
|
| @CalledByNative
|
| private void onBluetoothRemoteGattDescriptorAndroidDestruction() {
|
| Log.v(TAG, "ChromeBluetoothRemoteGattDescriptor Destroyed.");
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // mNativeBluetoothRemoteGattDescriptorAndroid = 0;
|
| + mNativeBluetoothRemoteGattDescriptorAndroid = 0;
|
| mChromeDevice.mWrapperToChromeDescriptorsMap.remove(mDescriptor);
|
| }
|
|
|
| + void onDescriptorRead(int status) {
|
| + Log.i(TAG, "onDescriptorRead status:%d==%s", status,
|
| + status == android.bluetooth.BluetoothGatt.GATT_SUCCESS ? "OK" : "Error");
|
| + if (mNativeBluetoothRemoteGattDescriptorAndroid != 0) {
|
| + nativeOnRead(
|
| + mNativeBluetoothRemoteGattDescriptorAndroid, status, mDescriptor.getValue());
|
| + }
|
| + }
|
| +
|
| + void onDescriptorWrite(int status) {
|
| + Log.i(TAG, "onDescriptorWrite status:%d==%s", status,
|
| + status == android.bluetooth.BluetoothGatt.GATT_SUCCESS ? "OK" : "Error");
|
| + if (mNativeBluetoothRemoteGattDescriptorAndroid != 0) {
|
| + nativeOnWrite(mNativeBluetoothRemoteGattDescriptorAndroid, status);
|
| + }
|
| + }
|
| +
|
| // ---------------------------------------------------------------------------------------------
|
| // BluetoothRemoteGattDescriptorAndroid methods implemented in java:
|
|
|
| @@ -57,12 +68,9 @@ final class ChromeBluetoothRemoteGattDescriptor {
|
| // TODO(http://crbug.com/505554): Replace 'Object' with specific type when JNI fixed.
|
| @CalledByNative
|
| private static ChromeBluetoothRemoteGattDescriptor create(
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // long nativeBluetoothRemoteGattDescriptorAndroid,
|
| - Object bluetoothGattDescriptorWrapper, ChromeBluetoothDevice chromeDevice) {
|
| - return new ChromeBluetoothRemoteGattDescriptor(
|
| - // TODO(scheib): Will need c++ pointer eventually:
|
| - // nativeBluetoothRemoteGattDescriptorAndroid,
|
| + long nativeBluetoothRemoteGattDescriptorAndroid, Object bluetoothGattDescriptorWrapper,
|
| + ChromeBluetoothDevice chromeDevice) {
|
| + return new ChromeBluetoothRemoteGattDescriptor(nativeBluetoothRemoteGattDescriptorAndroid,
|
| (Wrappers.BluetoothGattDescriptorWrapper) bluetoothGattDescriptorWrapper,
|
| chromeDevice);
|
| }
|
| @@ -72,4 +80,38 @@ final class ChromeBluetoothRemoteGattDescriptor {
|
| private String getUUID() {
|
| return mDescriptor.getUuid().toString();
|
| }
|
| +
|
| + // Implements BluetoothRemoteGattDescriptorAndroid::ReadRemoteDescriptor.
|
| + @CalledByNative
|
| + private boolean readRemoteDescriptor() {
|
| + if (!mChromeDevice.mBluetoothGatt.readDescriptor(mDescriptor)) {
|
| + Log.i(TAG, "readRemoteDescriptor readDescriptor failed.");
|
| + return false;
|
| + }
|
| + return true;
|
| + }
|
| +
|
| + // Implements BluetoothRemoteGattDescriptorAndroid::WriteRemoteDescriptor.
|
| + @CalledByNative
|
| + private boolean writeRemoteDescriptor(byte[] value) {
|
| + if (!mDescriptor.setValue(value)) {
|
| + Log.i(TAG, "writeRemoteDescriptor setValue failed.");
|
| + return false;
|
| + }
|
| + if (!mChromeDevice.mBluetoothGatt.writeDescriptor(mDescriptor)) {
|
| + Log.i(TAG, "writeRemoteDescriptor writeDescriptor failed.");
|
| + return false;
|
| + }
|
| + return true;
|
| + }
|
| +
|
| + // ---------------------------------------------------------------------------------------------
|
| + // BluetoothAdapterDevice C++ methods declared for access from java:
|
| +
|
| + // Binds to BluetoothRemoteGattDescriptorAndroid::OnRead.
|
| + native void nativeOnRead(
|
| + long nativeBluetoothRemoteGattDescriptorAndroid, int status, byte[] value);
|
| +
|
| + // Binds to BluetoothRemoteGattDescriptorAndroid::OnWrite.
|
| + native void nativeOnWrite(long nativeBluetoothRemoteGattDescriptorAndroid, int status);
|
| }
|
|
|