diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-11-12 07:40:52 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-11-12 07:40:52 +0000 |
commit | b1118d760e5e1c59273c17c5a7d288cb35d6ef5c (patch) | |
tree | a886f17696ed4e897e7383349caa9b458adabfc8 | |
parent | 8f536397b69918d4fb09671d653808dcf80fa1a0 (diff) | |
parent | da9f087054073597737d7510296a2d51177a4ef3 (diff) | |
download | Bluetooth-b1118d760e5e1c59273c17c5a7d288cb35d6ef5c.tar.gz |
Merge "Implement address consolidate callback (2/2)"
-rw-r--r-- | jni/com_android_bluetooth_btservice_AdapterService.cpp | 58 | ||||
-rw-r--r-- | src/com/android/bluetooth/btservice/JniCallbacks.java | 4 | ||||
-rw-r--r-- | src/com/android/bluetooth/btservice/RemoteDevices.java | 13 |
3 files changed, 66 insertions, 9 deletions
diff --git a/jni/com_android_bluetooth_btservice_AdapterService.cpp b/jni/com_android_bluetooth_btservice_AdapterService.cpp index 40be39048..bbf46bb7d 100644 --- a/jni/com_android_bluetooth_btservice_AdapterService.cpp +++ b/jni/com_android_bluetooth_btservice_AdapterService.cpp @@ -67,6 +67,7 @@ static jmethodID method_deviceFoundCallback; static jmethodID method_pinRequestCallback; static jmethodID method_sspRequestCallback; static jmethodID method_bondStateChangeCallback; +static jmethodID method_addressConsolidateCallback; static jmethodID method_aclStateChangeCallback; static jmethodID method_discoveryStateChangeCallback; static jmethodID method_linkQualityReportCallback; @@ -302,6 +303,34 @@ static void bond_state_changed_callback(bt_status_t status, RawAddress* bd_addr, (jint)fail_reason); } +static void address_consolidate_callback(RawAddress* main_bd_addr, + RawAddress* secondary_bd_addr) { + CallbackEnv sCallbackEnv(__func__); + + ScopedLocalRef<jbyteArray> main_addr( + sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(RawAddress))); + if (!main_addr.get()) { + ALOGE("Address allocation failed in %s", __func__); + return; + } + sCallbackEnv->SetByteArrayRegion(main_addr.get(), 0, sizeof(RawAddress), + (jbyte*)main_bd_addr); + + ScopedLocalRef<jbyteArray> secondary_addr( + sCallbackEnv.get(), sCallbackEnv->NewByteArray(sizeof(RawAddress))); + if (!secondary_addr.get()) { + ALOGE("Address allocation failed in %s", __func__); + return; + } + + sCallbackEnv->SetByteArrayRegion(secondary_addr.get(), 0, sizeof(RawAddress), + (jbyte*)secondary_bd_addr); + + sCallbackEnv->CallVoidMethod(sJniCallbacksObj, + method_addressConsolidateCallback, + main_addr.get(), secondary_addr.get()); +} + static void acl_state_changed_callback(bt_status_t status, RawAddress* bd_addr, bt_acl_state_t state, int transport_link_type, @@ -629,15 +658,23 @@ static void energy_info_recv_callback(bt_activity_energy_info* p_energy_info, p_energy_info->idle_time, p_energy_info->energy_used, array.get()); } -static bt_callbacks_t sBluetoothCallbacks = { - sizeof(sBluetoothCallbacks), adapter_state_change_callback, - adapter_properties_callback, remote_device_properties_callback, - device_found_callback, discovery_state_changed_callback, - pin_request_callback, ssp_request_callback, - bond_state_changed_callback, acl_state_changed_callback, - callback_thread_event, dut_mode_recv_callback, - le_test_mode_recv_callback, energy_info_recv_callback, - link_quality_report_callback, generate_local_oob_data_callback}; +static bt_callbacks_t sBluetoothCallbacks = {sizeof(sBluetoothCallbacks), + adapter_state_change_callback, + adapter_properties_callback, + remote_device_properties_callback, + device_found_callback, + discovery_state_changed_callback, + pin_request_callback, + ssp_request_callback, + bond_state_changed_callback, + address_consolidate_callback, + acl_state_changed_callback, + callback_thread_event, + dut_mode_recv_callback, + le_test_mode_recv_callback, + energy_info_recv_callback, + link_quality_report_callback, + generate_local_oob_data_callback}; // The callback to call when the wake alarm fires. static alarm_cb sAlarmCallback; @@ -847,6 +884,9 @@ static void classInitNative(JNIEnv* env, jclass clazz) { method_bondStateChangeCallback = env->GetMethodID(jniCallbackClass, "bondStateChangeCallback", "(I[BII)V"); + method_addressConsolidateCallback = env->GetMethodID( + jniCallbackClass, "addressConsolidateCallback", "([B[B)V"); + method_aclStateChangeCallback = env->GetMethodID(jniCallbackClass, "aclStateChangeCallback", "(I[BIII)V"); diff --git a/src/com/android/bluetooth/btservice/JniCallbacks.java b/src/com/android/bluetooth/btservice/JniCallbacks.java index f00353ad9..03d926467 100644 --- a/src/com/android/bluetooth/btservice/JniCallbacks.java +++ b/src/com/android/bluetooth/btservice/JniCallbacks.java @@ -67,6 +67,10 @@ final class JniCallbacks { mBondStateMachine.bondStateChangeCallback(status, address, newState, hciReason); } + void addressConsolidateCallback(byte[] mainAddress, byte[] secondaryAddress) { + mRemoteDevices.addressConsolidateCallback(mainAddress, secondaryAddress); + } + void aclStateChangeCallback(int status, byte[] address, int newState, int transportLinkType, int hciReason) { mRemoteDevices.aclStateChangeCallback(status, address, newState, diff --git a/src/com/android/bluetooth/btservice/RemoteDevices.java b/src/com/android/bluetooth/btservice/RemoteDevices.java index 2f0a8d4fc..e6812ee77 100644 --- a/src/com/android/bluetooth/btservice/RemoteDevices.java +++ b/src/com/android/bluetooth/btservice/RemoteDevices.java @@ -667,6 +667,19 @@ final class RemoteDevices { } } + void addressConsolidateCallback(byte[] mainAddress, byte[] secondaryAddress) { + BluetoothDevice device = getDevice(mainAddress); + if (device == null) { + errorLog("addressConsolidateCallback: device is NULL, address=" + + Utils.getAddressStringFromByte(mainAddress) + ", secondaryAddress=" + + Utils.getAddressStringFromByte(secondaryAddress)); + return; + } + Log.d(TAG, "addressConsolidateCallback device: " + device + ", secondaryAddress:" + + Utils.getAddressStringFromByte(secondaryAddress)); + // TODO + } + void aclStateChangeCallback(int status, byte[] address, int newState, int transportLinkType, int hciReason) { BluetoothDevice device = getDevice(address); |