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

Commit 4e035983 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6099757 from 1a66340e to rvc-release

Change-Id: Ifdde10ad79c54add90d1534714e774dee17c4dad
parents 32566621 1a66340e
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -922,6 +922,7 @@ void bta_av_cleanup(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
  p_scb->cur_psc_mask = 0;
  p_scb->wait = 0;
  p_scb->num_disc_snks = 0;
  p_scb->coll_mask = 0;
  alarm_cancel(p_scb->avrc_ct_timer);

  /* TODO(eisenbach): RE-IMPLEMENT USING VSC OR HAL EXTENSION
@@ -1061,18 +1062,21 @@ void bta_av_disconnect_req(tBTA_AV_SCB* p_scb,
                           UNUSED_ATTR tBTA_AV_DATA* p_data) {
  tBTA_AV_RCB* p_rcb;

  APPL_TRACE_WARNING("%s: conn_lcb: 0x%x peer_addr: %s", __func__,
                     bta_av_cb.conn_lcb,
                     p_scb->PeerAddress().ToString().c_str());
  APPL_TRACE_API("%s: conn_lcb: 0x%x peer_addr: %s", __func__,
                 bta_av_cb.conn_lcb, p_scb->PeerAddress().ToString().c_str());

  alarm_cancel(bta_av_cb.link_signalling_timer);
  alarm_cancel(p_scb->avrc_ct_timer);

  if (bta_av_cb.conn_lcb) {
  // conn_lcb is the index bitmask of all used LCBs, and since LCB and SCB use
  // the same index, it should be safe to use SCB index here.
  if ((bta_av_cb.conn_lcb & (1 << p_scb->hdi)) != 0) {
    p_rcb = bta_av_get_rcb_by_shdl((uint8_t)(p_scb->hdi + 1));
    if (p_rcb) bta_av_del_rc(p_rcb);
    AVDT_DisconnectReq(p_scb->PeerAddress(), &bta_av_proc_stream_evt);
  } else {
    APPL_TRACE_WARNING("%s: conn_lcb=0x%x bta_handle=0x%x (hdi=%u) no link",
                       __func__, bta_av_cb.conn_lcb, p_scb->hndl, p_scb->hdi);
    bta_av_ssm_execute(p_scb, BTA_AV_AVDT_DISCONNECT_EVT, NULL);
  }
}
@@ -1398,15 +1402,16 @@ void bta_av_do_close(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
 *
 ******************************************************************************/
void bta_av_connect_req(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
  APPL_TRACE_DEBUG("%s: peer %s coll_mask:0x%x", __func__,
  APPL_TRACE_DEBUG("%s: peer %s coll_mask=0x%02x", __func__,
                   p_scb->PeerAddress().ToString().c_str(), p_scb->coll_mask);
  p_scb->sdp_discovery_started = false;
  if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
    /* SNK initiated L2C connection while SRC was doing SDP.    */
    /* Wait until timeout to check if SNK starts signalling.    */
    APPL_TRACE_EVENT("%s: coll_mask = 0x%2X", __func__, p_scb->coll_mask);
    APPL_TRACE_WARNING("%s: coll_mask=0x%02x incoming timer is up", __func__,
                       p_scb->coll_mask);
    p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
    APPL_TRACE_EVENT("%s: updated coll_mask = 0x%2X", __func__,
    APPL_TRACE_EVENT("%s: updated coll_mask=0x%02x", __func__,
                     p_scb->coll_mask);
    return;
  }
@@ -2690,9 +2695,13 @@ void bta_av_rcfg_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
  } else {
    /* open failed. try again */
    p_scb->num_recfg++;
    if (bta_av_cb.conn_lcb) {
    // conn_lcb is the index bitmask of all used LCBs, and since LCB and SCB use
    // the same index, it should be safe to use SCB index here.
    if ((bta_av_cb.conn_lcb & (1 << p_scb->hdi)) != 0) {
      AVDT_DisconnectReq(p_scb->PeerAddress(), &bta_av_proc_stream_evt);
    } else {
      APPL_TRACE_WARNING("%s: conn_lcb=0x%x bta_handle=0x%x (hdi=%u) no link",
                         __func__, bta_av_cb.conn_lcb, p_scb->hndl, p_scb->hdi);
      bta_av_connect_req(p_scb, NULL);
    }
  }
@@ -3057,7 +3066,7 @@ void bta_av_open_rc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
void bta_av_open_at_inc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
  memcpy(&(p_scb->open_api), &(p_data->api_open), sizeof(tBTA_AV_API_OPEN));

  APPL_TRACE_DEBUG("%s: peer %s coll_mask:0x%x", __func__,
  APPL_TRACE_DEBUG("%s: peer %s coll_mask=0x%02x", __func__,
                   p_scb->PeerAddress().ToString().c_str(), p_scb->coll_mask);

  if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
+4 −3
Original line number Diff line number Diff line
@@ -1474,7 +1474,7 @@ void bta_av_sig_chg(tBTA_AV_DATA* p_data) {
#endif
  else {
    /* disconnected. */
    APPL_TRACE_DEBUG("%s: bta_av_cb.conn_lcb is %d", __func__,
    APPL_TRACE_DEBUG("%s: bta_av_cb.conn_lcb=0x%x", __func__,
                     bta_av_cb.conn_lcb);

    p_lcb = bta_av_find_lcb(p_data->str_msg.bd_addr, BTA_AV_LCB_FREE);
@@ -1500,7 +1500,8 @@ void bta_av_sig_chg(tBTA_AV_DATA* p_data) {
      }
    }
  }
  APPL_TRACE_DEBUG("%s: sig_chg conn_lcb: 0x%x", __func__, p_cb->conn_lcb);
  APPL_TRACE_DEBUG("%s: bta_av_cb.conn_lcb=0x%x after sig_chg", __func__,
                   p_cb->conn_lcb);
}

/*******************************************************************************
@@ -1567,7 +1568,7 @@ static void bta_av_accept_signalling_timer_cback(void* data) {
    p_scb = p_cb->p_scb[inx];
  }
  if (p_scb) {
    APPL_TRACE_DEBUG("%s: coll_mask = 0x%02X", __func__, p_scb->coll_mask);
    APPL_TRACE_DEBUG("%s: coll_mask=0x%02x", __func__, p_scb->coll_mask);

    if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
      p_scb->coll_mask &= ~BTA_AV_COLL_INC_TMR;
+6 −0
Original line number Diff line number Diff line
@@ -107,6 +107,11 @@ message ConfigurationRequest {
  bool fcs = 5;
}

enum ConfigurationResult {
  SUCCESS = 0;
  NOT_SUCCESS = 1;
}

message SendConfigurationRequestResult {}

message ConfigurationResponse {
@@ -115,6 +120,7 @@ message ConfigurationResponse {
  uint32 mtu = 3;
  ChannelRetransmissionFlowControlConfig retransmission_config = 4;
  bool fcs = 5;
  ConfigurationResult result = 6;
}

message SendConfigurationResponseResult {}
+11 −0
Original line number Diff line number Diff line
@@ -376,6 +376,17 @@ class L2capClassicModuleCertService : public L2capClassicModuleCert::Service {
        FetchL2capLogResponse response;
        response.mutable_configuration_response()->set_signal_id(control_view.GetIdentifier());
        response.mutable_configuration_response()->set_scid(view.GetSourceCid());
        if (view.GetResult() == ConfigurationResponseResult::SUCCESS) {
          response.mutable_configuration_response()->set_result(ConfigurationResult::SUCCESS);
        } else {
          response.mutable_configuration_response()->set_result(ConfigurationResult::NOT_SUCCESS);
        }
        for (auto& option : view.GetConfig()) {
          if (option->type_ == ConfigurationOptionType::RETRANSMISSION_AND_FLOW_CONTROL) {
            response.mutable_configuration_response()->mutable_retransmission_config()->set_mode(
                ChannelRetransmissionFlowControlMode::ERTM);
          }
        }
        LogEvent(response);
        break;
      }
+29 −0
Original line number Diff line number Diff line
@@ -651,3 +651,32 @@ class SimpleL2capTest(GdBaseTestClass):
            l2cap_event_asserts.assert_event_occurs(
                lambda log: log.HasField("data_packet") and log.data_packet.channel == scid and log.data_packet.payload == b'\x01\x0a'
            )

    def test_respond_configuration_request_ertm(self):
        """
        L2CAP/CMC/BV-02-C [Lower Tester Initiated Configuration of Enhanced
        Retransmission Mode]
        """
        with EventCallbackStream(
                self.cert_device.l2cap.FetchL2capLog(
                    empty_pb2.Empty())) as l2cap_log_stream:
            l2cap_event_asserts = EventAsserts(l2cap_log_stream)
            self._register_callbacks(l2cap_log_stream)
            self._setup_link(l2cap_event_asserts)

            psm = 1
            scid = 0x0101
            self.retransmission_mode = l2cap_facade_pb2.RetransmissionFlowControlMode.ERTM
            self.device_under_test.l2cap.SetDynamicChannel(
                l2cap_facade_pb2.SetEnableDynamicChannelRequest(
                    psm=psm, retransmission_mode=self.retransmission_mode))
            self.cert_device.l2cap.SendConnectionRequest(
                l2cap_cert_pb2.ConnectionRequest(scid=scid, psm=psm))

            l2cap_event_asserts.assert_event_occurs(
                lambda log: is_configuration_request(log) and \
                    log.configuration_response.scid == scid and\
                    log.configuration_response.result == log.l2cap_cert_pb2.ConfigurationResult.SUCCESS and \
                    log.HasField("retransmission_config") and \
                    log.configuration_response.retransmission_config.mode
                        == l2cap_cert_pb2.ChannelRetransmissionFlowControlMode.ERTM)
Loading