service: implement HAL callback for response confirmation
Change-Id: Iec1c33574cef49053cf1f8eb3835b20047cb96eb
diff --git a/service/hal/bluetooth_gatt_interface.cpp b/service/hal/bluetooth_gatt_interface.cpp
index 719d7a5..87f9472 100644
--- a/service/hal/bluetooth_gatt_interface.cpp
+++ b/service/hal/bluetooth_gatt_interface.cpp
@@ -331,6 +331,15 @@
g_interface, conn_id, trans_id, *bda, exec_write));
}
+void ResponseConfirmationCallback(int status, int handle) {
+ shared_lock<shared_timed_mutex> lock(g_instance_lock);
+ VLOG(2) << __func__ << " - status: " << status << " handle: " << handle;
+ VERIFY_INTERFACE_OR_RETURN();
+
+ FOR_EACH_SERVER_OBSERVER(ResponseConfirmationCallback(
+ g_interface, status, handle));
+}
+
void IndicationSentCallback(int conn_id, int status) {
shared_lock<shared_timed_mutex> lock(g_instance_lock);
VLOG(2) << __func__ << " - conn_id: " << conn_id << " status: " << status;
@@ -391,7 +400,7 @@
RequestReadCallback,
RequestWriteCallback,
RequestExecWriteCallback,
- nullptr, // response_confirmation_cb
+ ResponseConfirmationCallback,
IndicationSentCallback,
nullptr, // congestion_cb
nullptr, // mtu_changed_cb
@@ -693,6 +702,13 @@
// Do nothing.
}
+void BluetoothGattInterface::ServerObserver::ResponseConfirmationCallback(
+ BluetoothGattInterface* /* gatt_iface */,
+ int /* status */,
+ int /* handle */) {
+ // Do nothing
+}
+
void BluetoothGattInterface::ServerObserver::IndicationSentCallback(
BluetoothGattInterface* /* gatt_iface */,
int /* conn_id */,
diff --git a/service/hal/bluetooth_gatt_interface.h b/service/hal/bluetooth_gatt_interface.h
index 99c6f6c..f8bdfdc 100644
--- a/service/hal/bluetooth_gatt_interface.h
+++ b/service/hal/bluetooth_gatt_interface.h
@@ -177,6 +177,11 @@
int conn_id, int trans_id,
const bt_bdaddr_t& bda, int exec_write);
+ virtual void ResponseConfirmationCallback(
+ BluetoothGattInterface* gatt_iface,
+ int status,
+ int handle);
+
virtual void IndicationSentCallback(
BluetoothGattInterface* gatt_iface, int conn_id, int status);