Chromium Code Reviews| 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..2d679a4ad1653798b166db0ddd02e0ad984ae748 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,35 @@ 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; |
| + } |
| + |
|
scheib
2016/02/26 04:27:01
Add a comment section divider:
// ----------------
tommyt
2016/03/01 14:45:14
Done.
|
| + // Binds to BluetoothRemoteGattDescriptorAndroid::OnRead. |
| + native void nativeOnRead( |
| + long nativeBluetoothRemoteGattDescriptorAndroid, int status, byte[] value); |
| + |
| + // Binds to BluetoothRemoteGattDescriptorAndroid::OnWrite. |
| + native void nativeOnWrite(long nativeBluetoothRemoteGattDescriptorAndroid, int status); |
| } |