TWSP-HFP: set initial twsp role based on odd or even BD_ADDR

For first connected earbud, while RFCOMM opened, set initial
earbud twsp role to be LEFT if BD_ADDR is odd, or else set
to be RIGHT.

Change-Id: I777634498553b41ff0e44e6e5dd7ff4a751cba3b
CRs-Fixed: 2399533
diff --git a/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_dev.cc b/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_dev.cc
index fde7388..11642e3 100644
--- a/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_dev.cc
+++ b/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_dev.cc
@@ -63,6 +63,18 @@
    return NULL;
 }
 
+bool twsp_is_odd_eb_addr(tBTA_AG_SCB* p_scb) {
+    bool ret;
+    if ((p_scb->peer_addr.address[5] & 0x01) == 0) {
+        ret = false;
+    } else {
+        ret = true;
+    }
+    APPL_TRACE_DEBUG("%s: eb addr: %s, ret: %d", __func__,
+            p_scb->peer_addr.ToString().c_str(), ret);
+    return ret;
+}
+
 void reset_twsp_device(int  eb_idx) {
     if (eb_idx < PRIMARY_EB_IDX || eb_idx > SECONDARY_EB_IDX) {
         APPL_TRACE_WARNING("%s: Invalid eb_idx: %d\n", __func__, eb_idx);
@@ -102,11 +114,15 @@
             twsp_devices[i].state = TWSPLUS_EB_STATE_UNKNOWN;
 
             int other_idx = (i == PRIMARY_EB_IDX) ? SECONDARY_EB_IDX : PRIMARY_EB_IDX;
-            if (twsp_devices[other_idx].p_scb != NULL &&
-                    twsp_devices[other_idx].role == TWSPLUS_EB_ROLE_LEFT) {
-                twsp_devices[i].role = TWSPLUS_EB_ROLE_RIGHT;
+            if (twsp_devices[other_idx].p_scb != NULL) {
+                twsp_devices[i].role =
+                    (twsp_devices[other_idx].role == TWSPLUS_EB_ROLE_LEFT) ?
+                    TWSPLUS_EB_ROLE_RIGHT : TWSPLUS_EB_ROLE_LEFT;
+
             } else {
-                twsp_devices[i].role = TWSPLUS_EB_ROLE_LEFT;
+                twsp_devices[i].role =
+                    (twsp_is_odd_eb_addr(p_scb) == true) ?
+                    TWSPLUS_EB_ROLE_LEFT : TWSPLUS_EB_ROLE_RIGHT;
             }
 
             APPL_TRACE_WARNING("%s: idx: %d, role: %d", __func__, i, twsp_devices[i].role);
diff --git a/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_sco.cc b/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_sco.cc
index 614c80d..21c4023 100644
--- a/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_sco.cc
+++ b/system_bt_ext/bta/tws_plus/ag/bta_ag_twsp_sco.cc
@@ -703,7 +703,8 @@
    uint8_t *p_param = param;
    std::string leb, reb;
 
-   APPL_TRACE_DEBUG("%s: left_addr: %x, right_addr: %x, selected_mic: %d", __func__, left_eb_addr, rght_eb_addr, selected_mic);
+   APPL_TRACE_DEBUG("%s: left_addr: %s, right_addr: %s, selected_mic: %d", __func__,
+           left_eb_addr.ToString().c_str(), rght_eb_addr.ToString().c_str(), selected_mic);
 
    *p_param++ = VS_QHCI_TWS_ESCO_SETUP_SUBOPCODE;