summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-11-12 07:40:52 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-11-12 07:40:52 +0000
commitb1118d760e5e1c59273c17c5a7d288cb35d6ef5c (patch)
treea886f17696ed4e897e7383349caa9b458adabfc8
parent8f536397b69918d4fb09671d653808dcf80fa1a0 (diff)
parentda9f087054073597737d7510296a2d51177a4ef3 (diff)
downloadBluetooth-b1118d760e5e1c59273c17c5a7d288cb35d6ef5c.tar.gz
Merge "Implement address consolidate callback (2/2)"
-rw-r--r--jni/com_android_bluetooth_btservice_AdapterService.cpp58
-rw-r--r--src/com/android/bluetooth/btservice/JniCallbacks.java4
-rw-r--r--src/com/android/bluetooth/btservice/RemoteDevices.java13
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);