summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/btif/src/btif_gatt_client.cc5
-rw-r--r--system/include/hardware/bt_gatt_client.h6
-rw-r--r--system/service/hal/bluetooth_gatt_interface.cc16
-rw-r--r--system/service/hal/bluetooth_gatt_interface.h6
4 files changed, 21 insertions, 12 deletions
diff --git a/system/btif/src/btif_gatt_client.cc b/system/btif/src/btif_gatt_client.cc
index 548847434f..6423d5ec58 100644
--- a/system/btif/src/btif_gatt_client.cc
+++ b/system/btif/src/btif_gatt_client.cc
@@ -493,7 +493,8 @@ static bt_status_t btif_gattc_read_char_descr(int conn_id, uint16_t handle,
void write_char_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
uint16_t len, const uint8_t* value, void* data) {
- CLI_CBACK_IN_JNI(write_characteristic_cb, conn_id, status, handle);
+ CLI_CBACK_IN_JNI(write_characteristic_cb, conn_id, status, handle, len,
+ value);
}
static bt_status_t btif_gattc_write_char(int conn_id, uint16_t handle,
@@ -512,7 +513,7 @@ static bt_status_t btif_gattc_write_char(int conn_id, uint16_t handle,
void write_descr_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
uint16_t len, const uint8_t* value, void* data) {
- CLI_CBACK_IN_JNI(write_descriptor_cb, conn_id, status, handle);
+ CLI_CBACK_IN_JNI(write_descriptor_cb, conn_id, status, handle, len, value);
}
static bt_status_t btif_gattc_write_char_descr(int conn_id, uint16_t handle,
diff --git a/system/include/hardware/bt_gatt_client.h b/system/include/hardware/bt_gatt_client.h
index 1dc5e91e39..3b6d06dab5 100644
--- a/system/include/hardware/bt_gatt_client.h
+++ b/system/include/hardware/bt_gatt_client.h
@@ -130,7 +130,8 @@ typedef void (*read_characteristic_callback)(int conn_id, int status,
/** GATT write characteristic operation callback */
typedef void (*write_characteristic_callback)(int conn_id, int status,
- uint16_t handle);
+ uint16_t handle, uint16_t len,
+ const uint8_t* value);
/** GATT execute prepared write callback */
typedef void (*execute_write_callback)(int conn_id, int status);
@@ -141,7 +142,8 @@ typedef void (*read_descriptor_callback)(int conn_id, int status,
/** Callback invoked in response to write_descriptor */
typedef void (*write_descriptor_callback)(int conn_id, int status,
- uint16_t handle);
+ uint16_t handle, uint16_t len,
+ const uint8_t* value);
/** Callback triggered in response to read_remote_rssi */
typedef void (*read_remote_rssi_callback)(int client_if, const RawAddress& bda,
diff --git a/system/service/hal/bluetooth_gatt_interface.cc b/system/service/hal/bluetooth_gatt_interface.cc
index 6d02e91629..2131d7b8f3 100644
--- a/system/service/hal/bluetooth_gatt_interface.cc
+++ b/system/service/hal/bluetooth_gatt_interface.cc
@@ -165,24 +165,26 @@ void NotifyCallback(int conn_id, const btgatt_notify_params_t& p_data) {
FOR_EACH_CLIENT_OBSERVER(NotifyCallback(g_interface, conn_id, p_data));
}
-void WriteCharacteristicCallback(int conn_id, int status, uint16_t handle) {
+void WriteCharacteristicCallback(int conn_id, int status, uint16_t handle,
+ uint16_t len, const uint8_t* value) {
shared_lock<shared_mutex_impl> lock(g_instance_lock);
VERIFY_INTERFACE_OR_RETURN();
VLOG(2) << __func__ << " - conn_id: " << conn_id << " - status: " << status;
FOR_EACH_CLIENT_OBSERVER(WriteCharacteristicCallback(
- g_interface, conn_id, status, handle));
+ g_interface, conn_id, status, handle, len, value));
}
-void WriteDescriptorCallback(int conn_id, int status, uint16_t handle) {
+void WriteDescriptorCallback(int conn_id, int status, uint16_t handle,
+ uint16_t len, const uint8_t* value) {
shared_lock<shared_mutex_impl> lock(g_instance_lock);
VERIFY_INTERFACE_OR_RETURN();
VLOG(2) << __func__ << " - conn_id: " << conn_id << " - status: " << status;
FOR_EACH_CLIENT_OBSERVER(WriteDescriptorCallback(g_interface, conn_id, status,
- handle));
+ handle, len, value));
}
void MtuChangedCallback(int conn_id, int status, int mtu) {
@@ -610,13 +612,15 @@ void BluetoothGattInterface::ClientObserver::NotifyCallback(
void BluetoothGattInterface::ClientObserver::WriteCharacteristicCallback(
BluetoothGattInterface* /* gatt_iface */, int /* conn_id */,
- int /* status */, uint16_t /* handle */) {
+ int /* status */, uint16_t /* handle */, uint16_t /* len */,
+ const uint8_t* /* value */) {
// Do nothing
}
void BluetoothGattInterface::ClientObserver::WriteDescriptorCallback(
BluetoothGattInterface* /* gatt_iface */, int /* conn_id */,
- int /* status */, uint16_t /* handle */) {
+ int /* status */, uint16_t /* handle */, uint16_t /* len */,
+ const uint8_t* /* value */) {
// Do nothing
}
diff --git a/system/service/hal/bluetooth_gatt_interface.h b/system/service/hal/bluetooth_gatt_interface.h
index eabe464581..471dfc4d03 100644
--- a/system/service/hal/bluetooth_gatt_interface.h
+++ b/system/service/hal/bluetooth_gatt_interface.h
@@ -91,11 +91,13 @@ class BluetoothGattInterface {
virtual void WriteCharacteristicCallback(BluetoothGattInterface* gatt_iface,
int conn_id, int status,
- uint16_t handle);
+ uint16_t handle, uint16_t len,
+ const uint8_t* value);
virtual void WriteDescriptorCallback(BluetoothGattInterface* gatt_iface,
int conn_id, int status,
- uint16_t handle);
+ uint16_t handle, uint16_t len,
+ const uint8_t* value);
virtual void MtuChangedCallback(BluetoothGattInterface* gatt_iface,
int conn_id, int status, int mtu);