diff options
-rw-r--r-- | system/btif/src/btif_gatt_client.cc | 5 | ||||
-rw-r--r-- | system/include/hardware/bt_gatt_client.h | 6 | ||||
-rw-r--r-- | system/service/hal/bluetooth_gatt_interface.cc | 16 | ||||
-rw-r--r-- | system/service/hal/bluetooth_gatt_interface.h | 6 |
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); |