Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0e7acec authored by Chris Manton's avatar Chris Manton
Browse files

bta::jv Given a socket type return the associated transport

Bug: 333147285
Test: m .
Flag: EXEMPT, Mechanical Refactor
Change-Id: I03ed2cae611e1beb50b55b0eefe6012afaba5011
parent 361274f0
Loading
Loading
Loading
Loading
+36 −2
Original line number Diff line number Diff line
@@ -1060,10 +1060,27 @@ void bta_jv_l2cap_connect(tBTA_JV_CONN_TYPE type, tBTA_SEC sec_mask,
    if ((type != BTA_JV_CONN_TYPE_L2CAP) ||
        (bta_jv_check_psm(remote_psm))) /* allowed */
    {
      // Given a client socket type
      // return the associated transport
      const tBT_TRANSPORT transport =
          [](tBTA_JV_CONN_TYPE type) -> tBT_TRANSPORT {
        switch (type) {
          case BTA_JV_CONN_TYPE_L2CAP:
            return BT_TRANSPORT_BR_EDR;
          case BTA_JV_CONN_TYPE_L2CAP_LE:
            return BT_TRANSPORT_LE;
          case BTA_JV_CONN_TYPE_RFCOMM:
          default:
            break;
        }
        log::warn("Unexpected socket type:{}", type);
        return BT_TRANSPORT_AUTO;
      }(type);

      uint16_t max_mps = 0xffff;  // Let GAP_ConnOpen set the max_mps.
      handle = GAP_ConnOpen("", sec_id, 0, &peer_bd_addr, remote_psm, max_mps,
                            &cfg, ertm_info.get(), sec_mask,
                            bta_jv_l2cap_client_cback, type);
                            bta_jv_l2cap_client_cback, transport);
      if (handle != GAP_INVALID_HANDLE) {
        evt_data.status = tBTA_JV_STATUS::SUCCESS;
      }
@@ -1205,11 +1222,28 @@ void bta_jv_l2cap_start_server(tBTA_JV_CONN_TYPE type, tBTA_SEC sec_mask,
  uint8_t sec_id = bta_jv_alloc_sec_id();
  uint16_t max_mps = 0xffff;  // Let GAP_ConnOpen set the max_mps.
  /* PSM checking is not required for LE COC */

  // Given a server socket type
  // return the associated transport
  const tBT_TRANSPORT transport = [](tBTA_JV_CONN_TYPE type) -> tBT_TRANSPORT {
    switch (type) {
      case BTA_JV_CONN_TYPE_L2CAP:
        return BT_TRANSPORT_BR_EDR;
      case BTA_JV_CONN_TYPE_L2CAP_LE:
        return BT_TRANSPORT_LE;
      case BTA_JV_CONN_TYPE_RFCOMM:
      default:
        break;
    }
    log::warn("Unexpected socket type:{}", type);
    return BT_TRANSPORT_AUTO;
  }(type);

  if (0 == sec_id ||
      ((type == BTA_JV_CONN_TYPE_L2CAP) && (!bta_jv_check_psm(local_psm))) ||
      (handle = GAP_ConnOpen("JV L2CAP", sec_id, 1, nullptr, local_psm, max_mps,
                             &cfg, ertm_info.get(), sec_mask,
                             bta_jv_l2cap_server_cback, type)) ==
                             bta_jv_l2cap_server_cback, transport)) ==
          GAP_INVALID_HANDLE) {
    bta_jv_free_sec_id(&sec_id);
    evt_data.status = tBTA_JV_STATUS::FAILURE;