Fix invalid BDA parameter passing for connection parameter updates

The BD_ADDR type is not a struct, just an array of bytes. Therefore,
Bind does not know how to store it for later execution, and just stores
the pointer to the first element, which is not valid at time of
execution.

Instead use bt_bdaddr_t, which is a struct. Bind will copy it's content
properly.

Change-Id: I4875aae4d7cbb809821d91a13554b8fdf310a7fe
diff --git a/btif/src/btif_gatt_client.cc b/btif/src/btif_gatt_client.cc
index 5196fd7..92fa3e2 100644
--- a/btif/src/btif_gatt_client.cc
+++ b/btif/src/btif_gatt_client.cc
@@ -949,14 +949,14 @@
       Bind(base::IgnoreResult(&BTA_GATTC_ConfigureMTU), conn_id, mtu));
 }
 
-void btif_gattc_conn_parameter_update_impl(const BD_ADDR addr, int min_interval,
+void btif_gattc_conn_parameter_update_impl(bt_bdaddr_t addr, int min_interval,
                                            int max_interval, int latency,
                                            int timeout) {
-  if (BTA_DmGetConnectionState(const_cast<UINT8 *>(addr)))
-    BTA_DmBleUpdateConnectionParams(const_cast<UINT8 *>(addr), min_interval,
+  if (BTA_DmGetConnectionState(addr.address))
+    BTA_DmBleUpdateConnectionParams(addr.address, min_interval,
                                     max_interval, latency, timeout);
   else
-    BTA_DmSetBlePrefConnParams(const_cast<UINT8 *>(addr), min_interval,
+    BTA_DmSetBlePrefConnParams(addr.address, min_interval,
                                max_interval, latency, timeout);
 }
 
@@ -966,7 +966,7 @@
   CHECK_BTGATT_INIT();
   return do_in_jni_thread(
       Bind(base::IgnoreResult(&btif_gattc_conn_parameter_update_impl),
-           bd_addr->address, min_interval, max_interval, latency, timeout));
+           *bd_addr, min_interval, max_interval, latency, timeout));
 }
 
 void btif_gattc_scan_filter_param_setup_impl(