Add transport parameter to createBond() function (2/4)

Change-Id: I8176b932da705f8d0a230abd56bc5faa00005eb6
diff --git a/btif/src/btif_dm.c b/btif/src/btif_dm.c
index 39ce458..d1d0644 100644
--- a/btif/src/btif_dm.c
+++ b/btif/src/btif_dm.c
@@ -127,6 +127,12 @@
 
 typedef struct
 {
+    bt_bdaddr_t  bdaddr;
+    UINT8        transport; /* 0=Unknown, 1=BR/EDR, 2=LE */
+} btif_dm_create_bond_cb_t;
+
+typedef struct
+{
     uint8_t  status;
     uint8_t  ctrl_state;
     uint64_t tx_time;
@@ -151,7 +157,7 @@
 static btif_dm_pairing_cb_t pairing_cb;
 static btif_dm_oob_cb_t     oob_cb;
 static void btif_dm_generic_evt(UINT16 event, char* p_param);
-static void btif_dm_cb_create_bond(bt_bdaddr_t *bd_addr);
+static void btif_dm_cb_create_bond(bt_bdaddr_t *bd_addr, tBTA_TRANSPORT transport);
 static void btif_dm_cb_hid_remote_name(tBTM_REMOTE_DEV_NAME *p_remote_name);
 static void btif_update_remote_properties(BD_ADDR bd_addr, BD_NAME bd_name,
                                           DEV_CLASS dev_class, tBT_DEVICE_TYPE dev_type);
@@ -514,7 +520,7 @@
 ** Returns          void
 **
 *******************************************************************************/
-static void btif_dm_cb_create_bond(bt_bdaddr_t *bd_addr)
+static void btif_dm_cb_create_bond(bt_bdaddr_t *bd_addr, tBTA_TRANSPORT transport)
 {
     BOOLEAN is_hid = check_cod(bd_addr, COD_HID_POINTING);
     bond_state_changed(BT_STATUS_SUCCESS, bd_addr, BT_BOND_STATE_BONDING);
@@ -545,7 +551,7 @@
     }
     else
     {
-        BTA_DmBond ((UINT8 *)bd_addr->address);
+        BTA_DmBondByTransport((UINT8 *)bd_addr->address, transport);
     }
     /*  Track  originator of bond creation  */
     pairing_cb.is_local_initiated = TRUE;
@@ -957,7 +963,7 @@
 
                     /* Create the Bond once again */
                     BTIF_TRACE_DEBUG("%s() auto pair failed. Reinitiate Bond", __FUNCTION__);
-                    btif_dm_cb_create_bond (&bd_addr);
+                    btif_dm_cb_create_bond (&bd_addr, BTA_TRANSPORT_UNKNOWN);
                     return;
                 }
                 else
@@ -1748,7 +1754,8 @@
 
         case BTIF_DM_CB_CREATE_BOND:
         {
-            btif_dm_cb_create_bond((bt_bdaddr_t *)p_param);
+            btif_dm_create_bond_cb_t *create_bond_cb = (btif_dm_create_bond_cb_t*)p_param;
+            btif_dm_cb_create_bond(&create_bond_cb->bdaddr, create_bond_cb->transport);
         }
         break;
 
@@ -2055,16 +2062,20 @@
 ** Returns          bt_status_t
 **
 *******************************************************************************/
-bt_status_t btif_dm_create_bond(const bt_bdaddr_t *bd_addr)
+bt_status_t btif_dm_create_bond(const bt_bdaddr_t *bd_addr, int transport)
 {
-    bdstr_t bdstr;
+    btif_dm_create_bond_cb_t create_bond_cb;
+    create_bond_cb.transport = transport;
+    bdcpy(create_bond_cb.bdaddr.address, bd_addr->address);
 
-    BTIF_TRACE_EVENT("%s: bd_addr=%s", __FUNCTION__, bd2str((bt_bdaddr_t *) bd_addr, &bdstr));
+    bdstr_t bdstr;
+    BTIF_TRACE_EVENT("%s: bd_addr=%s, transport=%d", __FUNCTION__,
+            bd2str((bt_bdaddr_t *) bd_addr, &bdstr), transport);
     if (pairing_cb.state != BT_BOND_STATE_NONE)
         return BT_STATUS_BUSY;
 
     btif_transfer_context(btif_dm_generic_evt, BTIF_DM_CB_CREATE_BOND,
-                          (char *)bd_addr, sizeof(bt_bdaddr_t), NULL);
+                          (char *)&create_bond_cb, sizeof(btif_dm_create_bond_cb_t), NULL);
 
     return BT_STATUS_SUCCESS;
 }
@@ -2436,7 +2447,7 @@
 {
     UNUSED (bd_addr);
     UNUSED (oob_data);
-    
+
     if(auth_req & BTA_AUTH_BONDS)
     {
         BTIF_TRACE_DEBUG("%s auth_req:%d", __FUNCTION__, auth_req);