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

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

Merge "Use ACL handle to find element to deal with packet"

parents e2516d6d fc61190e
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -117,8 +117,9 @@ void RoundRobinScheduler::start_round_robin() {
        le_acl_packet_credits_ == 0 && acl_queue_handler->second.connection_type_ == ConnectionType::LE;
    if (!acl_queue_handler->second.dequeue_is_registered_ && !classic_buffer_full && !le_buffer_full) {
      acl_queue_handler->second.dequeue_is_registered_ = true;
      uint16_t acl_handle = acl_queue_handler->first;
      acl_queue_handler->second.queue_->GetDownEnd()->RegisterDequeue(
          handler_, common::Bind(&RoundRobinScheduler::buffer_packet, common::Unretained(this), acl_queue_handler));
          handler_, common::Bind(&RoundRobinScheduler::buffer_packet, common::Unretained(this), acl_handle));
    }
    acl_queue_handler = std::next(acl_queue_handler);
    if (acl_queue_handler == acl_queue_handlers_.end()) {
@@ -129,8 +130,14 @@ void RoundRobinScheduler::start_round_robin() {
  starting_point_ = std::next(starting_point_);
}

void RoundRobinScheduler::buffer_packet(std::map<uint16_t, acl_queue_handler>::iterator acl_queue_handler) {
void RoundRobinScheduler::buffer_packet(uint16_t acl_handle) {
  BroadcastFlag broadcast_flag = BroadcastFlag::POINT_TO_POINT;
  auto acl_queue_handler = acl_queue_handlers_.find(acl_handle);
  if( acl_queue_handler == acl_queue_handlers_.end()) {
    LOG_ERROR("Ignore since ACL connection vanished with handle: 0x%X", acl_handle);
    return;
  }

  // Wrap packet and enqueue it
  uint16_t handle = acl_queue_handler->first;
  auto packet = acl_queue_handler->second.queue_->GetDownEnd()->TryDequeue();
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ class RoundRobinScheduler {

 private:
  void start_round_robin();
  void buffer_packet(std::map<uint16_t, acl_queue_handler>::iterator acl_queue_handler);
  void buffer_packet(uint16_t acl_handle);
  void unregister_all_connections();
  void send_next_fragment();
  std::unique_ptr<AclBuilder> handle_enqueue_next_fragment();