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);