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

Commit 2b505837 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "L2cap shim: Invoke client callbaks in main thread"

parents e4e78f10 a1c81c73
Loading
Loading
Loading
Loading
+29 −10
Original line number Diff line number Diff line
@@ -267,8 +267,11 @@ void bluetooth::shim::legacy::L2cap::OnLocalInitiatedConnectionCreated(
      LOG_WARN("Failed intitiating connection remote:%s psm:%hd cid:%hd",
               string_address.c_str(), psm, cid);
    }
    Classic().Callbacks(psm)->pL2CA_ConnectCfm_Cb(
        cid, connected ? (kConnectionSuccess) : (kConnectionFail));
    do_in_main_thread(
        FROM_HERE,
        base::Bind(classic_.Callbacks(psm)->pL2CA_ConnectCfm_Cb, cid,
                   connected ? (kConnectionSuccess) : (kConnectionFail)));

  } else {
    LOG_DEBUG("Connection Closed before presentation to upper layer");
    if (connected) {
@@ -295,8 +298,10 @@ void bluetooth::shim::legacy::L2cap::OnRemoteInitiatedConnectionCreated(
  cid_to_psm_map_[cid] = psm;
  cid_to_remote_cid_map_[cid] = remote_cid;
  SetDownstreamCallbacks(cid);
  Classic().Callbacks(psm)->pL2CA_ConnectInd_Cb(raw_address, cid, psm,
                                                kUnusedId);
  do_in_main_thread(
      FROM_HERE,
      base::Bind(classic_.Callbacks(CidToPsm(cid))->pL2CA_ConnectInd_Cb,
                 raw_address, cid, psm, kUnusedId));
}

bool bluetooth::shim::legacy::L2cap::Write(uint16_t cid, BT_HDR* bt_hdr) {
@@ -334,11 +339,18 @@ void bluetooth::shim::legacy::L2cap::SetDownstreamCallbacks(uint16_t cid) {
        }
        if (cid_closing_set_.count(cid) == 1) {
          cid_closing_set_.erase(cid);
          classic_.Callbacks(CidToPsm(cid))
              ->pL2CA_DisconnectCfm_Cb(cid, kUnusedResult);
          do_in_main_thread(
              FROM_HERE,
              base::Bind(
                  classic_.Callbacks(CidToPsm(cid))->pL2CA_DisconnectCfm_Cb,
                  cid, kUnusedResult));

        } else {
          classic_.Callbacks(CidToPsm(cid))
              ->pL2CA_DisconnectInd_Cb(cid, kDisconnectResponseRequired);
          do_in_main_thread(
              FROM_HERE,
              base::Bind(
                  classic_.Callbacks(CidToPsm(cid))->pL2CA_DisconnectInd_Cb,
                  cid, kDisconnectResponseRequired));
        }
        cid_to_psm_map_.erase(cid);
        cid_to_remote_cid_map_.erase(cid);
@@ -373,8 +385,15 @@ bool bluetooth::shim::legacy::L2cap::ConfigRequest(
        .ext_flow_spec_present = false,
        .flags = 0,
    };
    classic_.Callbacks(CidToPsm(cid))->pL2CA_ConfigCfm_Cb(cid, &cfg_info);
    classic_.Callbacks(CidToPsm(cid))->pL2CA_ConfigInd_Cb(cid, &cfg_info);
    LOG(INFO) << __func__ << "Rcvd config request";
    do_in_main_thread(
        FROM_HERE,
        base::Bind(classic_.Callbacks(CidToPsm(cid))->pL2CA_ConfigInd_Cb, cid,
                   base::Unretained(&cfg_info)));
    do_in_main_thread(
        FROM_HERE,
        base::Bind(classic_.Callbacks(CidToPsm(cid))->pL2CA_ConfigCfm_Cb, cid,
                   base::Unretained(&cfg_info)));
  });
  return true;
}