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

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

Merge changes I238c23f5,I7c7b8045

* changes:
  Extend l2cap functionality for CoC
  Swap cid parameters
parents b1e65d65 320c782e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -115,6 +115,15 @@ std::shared_ptr<DynamicChannelImpl> DynamicChannelAllocator::FindChannelByCid(Ci
  return channels_.find(cid)->second;
}

std::shared_ptr<DynamicChannelImpl> DynamicChannelAllocator::FindChannelByRemoteCid(Cid remote_cid) {
  for (auto& channel : channels_) {
    if (channel.second->GetRemoteCid() == remote_cid) {
      return channel.second;
    }
  }
  return nullptr;
}

size_t DynamicChannelAllocator::NumberOfChannels() const {
  return channels_.size();
}
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ class DynamicChannelAllocator {
  bool IsPsmUsed(Psm psm) const;

  std::shared_ptr<DynamicChannelImpl> FindChannelByCid(Cid cid);
  std::shared_ptr<DynamicChannelImpl> FindChannelByRemoteCid(Cid cid);

  // Returns number of open, but not reserved channels
  size_t NumberOfChannels() const;
+16 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ void ClassicSignallingManager::OnConnectionRequest(SignalId signal_id, Psm psm,
  dynamic_service_manager_->GetService(psm)->NotifyChannelCreation(std::move(channel));
}

void ClassicSignallingManager::OnConnectionResponse(SignalId signal_id, Cid cid, Cid remote_cid,
void ClassicSignallingManager::OnConnectionResponse(SignalId signal_id, Cid remote_cid, Cid cid,
                                                    ConnectionResponseResult result, ConnectionResponseStatus status) {
  if (pending_commands_.empty()) {
    LOG_WARN("Unexpected response: no pending request");
@@ -207,6 +207,15 @@ void ClassicSignallingManager::OnConfigurationResponse(SignalId signal_id, Cid c

  auto last_sent_command = std::move(pending_commands_.front());
  pending_commands_.pop();

  auto channel = channel_allocator_->FindChannelByRemoteCid(cid);
  if (channel == nullptr) {
    LOG_WARN("Configuration request for an unknown channel");
    return;
  }
  // TODO(cmanton) verify configuration parameters are satisfied
  // TODO(cmanton) Indicate channel is open if config params are agreed upon
  handle_send_next_command();
}

void ClassicSignallingManager::OnDisconnectionRequest(SignalId signal_id, Cid cid, Cid remote_cid) {
@@ -220,6 +229,7 @@ void ClassicSignallingManager::OnDisconnectionRequest(SignalId signal_id, Cid ci
  enqueue_buffer_->Enqueue(std::move(builder), handler_);
  channel->OnClosed(hci::ErrorCode::SUCCESS);
  link_->FreeDynamicChannel(cid);
  handle_send_next_command();
}

void ClassicSignallingManager::OnDisconnectionResponse(SignalId signal_id, Cid cid, Cid remote_cid) {
@@ -243,6 +253,7 @@ void ClassicSignallingManager::OnDisconnectionResponse(SignalId signal_id, Cid c

  channel->OnClosed(hci::ErrorCode::SUCCESS);
  link_->FreeDynamicChannel(cid);
  handle_send_next_command();
}

void ClassicSignallingManager::OnEchoRequest(SignalId signal_id, const PacketView<kLittleEndian>& packet) {
@@ -251,6 +262,7 @@ void ClassicSignallingManager::OnEchoRequest(SignalId signal_id, const PacketVie
  raw_builder->AddOctets(packet_vector);
  auto builder = EchoResponseBuilder::Create(signal_id.Value(), std::move(raw_builder));
  enqueue_buffer_->Enqueue(std::move(builder), handler_);
  handle_send_next_command();
}

void ClassicSignallingManager::OnEchoResponse(SignalId signal_id, const PacketView<kLittleEndian>& packet) {
@@ -265,6 +277,7 @@ void ClassicSignallingManager::OnEchoResponse(SignalId signal_id, const PacketVi
    return;
  }
  LOG_INFO("Echo response received");
  handle_send_next_command();
}

void ClassicSignallingManager::OnInformationRequest(SignalId signal_id, InformationRequestInfoType type) {
@@ -289,6 +302,7 @@ void ClassicSignallingManager::OnInformationRequest(SignalId signal_id, Informat
      return;
    }
  }
  handle_send_next_command();
}

void ClassicSignallingManager::OnInformationResponse(SignalId signal_id, const InformationResponseView& view) {
@@ -306,6 +320,7 @@ void ClassicSignallingManager::OnInformationResponse(SignalId signal_id, const I
  if (view.GetResult() != InformationRequestResult::SUCCESS) {
    return;
  }
  handle_send_next_command();
}

void ClassicSignallingManager::on_incoming_packet() {
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ class ClassicSignallingManager {

  void OnConnectionRequest(SignalId signal_id, Psm psm, Cid remote_cid);

  void OnConnectionResponse(SignalId signal_id, Cid cid, Cid remote_cid, ConnectionResponseResult result,
  void OnConnectionResponse(SignalId signal_id, Cid remote_cid, Cid cid, ConnectionResponseResult result,
                            ConnectionResponseStatus status);

  void OnDisconnectionRequest(SignalId signal_id, Cid cid, Cid remote_cid);