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

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

Merge "Rootcanal: Enable BLE link layer."

parents 776e330c f1ebb3b9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ DEFINE_string(default_commands_file, "",
constexpr uint16_t kTestPort = 6401;
constexpr uint16_t kHciServerPort = 6402;
constexpr uint16_t kLinkServerPort = 6403;
constexpr uint16_t kLinkBleServerPort = 6404;

extern "C" const char* __asan_default_options() {
  return "detect_container_overflow=0";
@@ -90,6 +91,7 @@ int main(int argc, char** argv) {
  uint16_t test_port = kTestPort;
  uint16_t hci_server_port = kHciServerPort;
  uint16_t link_server_port = kLinkServerPort;
  uint16_t link_ble_server_port = kLinkBleServerPort;

  for (int arg = 0; arg < argc; arg++) {
    int port = atoi(argv[arg]);
@@ -109,6 +111,9 @@ int main(int argc, char** argv) {
        case 3:
          link_server_port = port;
          break;
        case 4:
          link_ble_server_port = port;
          break;
        default:
          LOG_WARN("Ignored option %s", argv[arg]);
      }
@@ -119,6 +124,7 @@ int main(int argc, char** argv) {
      std::make_shared<PosixAsyncSocketServer>(test_port, &am),
      std::make_shared<PosixAsyncSocketServer>(hci_server_port, &am),
      std::make_shared<PosixAsyncSocketServer>(link_server_port, &am),
      std::make_shared<PosixAsyncSocketServer>(link_ble_server_port, &am),
      std::make_shared<PosixAsyncSocketConnector>(&am),
      FLAGS_controller_properties_file, FLAGS_default_commands_file);
  std::promise<void> barrier;
+22 −8
Original line number Diff line number Diff line
@@ -55,11 +55,8 @@ void TestEnvironment::initialize(std::promise<void> barrier) {
    test_model_.IncomingHciConnection(socket, controller_properties_file_);
    srv->StartListening();
  });
  SetUpLinkLayerServer([this](std::shared_ptr<AsyncDataChannel> socket,
                              AsyncDataChannelServer* srv) {
    test_model_.IncomingLinkLayerConnection(socket);
    srv->StartListening();
  });
  SetUpLinkLayerServer();
  SetUpLinkBleLayerServer();

  LOG_INFO("%s: Finished", __func__);
}
@@ -80,9 +77,26 @@ void TestEnvironment::SetUpHciServer(ConnectCallback connection_callback) {
  }
}

void TestEnvironment::SetUpLinkLayerServer(
    ConnectCallback connection_callback) {
  remote_link_layer_transport_.SetUp(link_socket_server_, connection_callback);
void TestEnvironment::SetUpLinkBleLayerServer() {
  remote_link_layer_transport_.SetUp(
      link_ble_socket_server_, [this](std::shared_ptr<AsyncDataChannel> socket,
                                      AsyncDataChannelServer* srv) {
        test_model_.IncomingLinkBleLayerConnection(socket);
        srv->StartListening();
      });

  test_channel_.RegisterSendResponse([](const std::string& response) {
    LOG_INFO("No LinkLayer Response channel: %s", response.c_str());
  });
}

void TestEnvironment::SetUpLinkLayerServer() {
  remote_link_layer_transport_.SetUp(
      link_socket_server_, [this](std::shared_ptr<AsyncDataChannel> socket,
                                  AsyncDataChannelServer* srv) {
        test_model_.IncomingLinkLayerConnection(socket);
        srv->StartListening();
      });

  test_channel_.RegisterSendResponse([](const std::string& response) {
    LOG_INFO("No LinkLayer Response channel: %s", response.c_str());
+6 −1
Original line number Diff line number Diff line
@@ -48,12 +48,14 @@ class TestEnvironment {
  TestEnvironment(std::shared_ptr<AsyncDataChannelServer> test_port,
                  std::shared_ptr<AsyncDataChannelServer> hci_server_port,
                  std::shared_ptr<AsyncDataChannelServer> link_server_port,
                  std::shared_ptr<AsyncDataChannelServer> link_ble_server_port,
                  std::shared_ptr<AsyncDataChannelConnector> connector,
                  const std::string& controller_properties_file = "",
                  const std::string& default_commands_file = "")
      : test_socket_server_(test_port),
        hci_socket_server_(hci_server_port),
        link_socket_server_(link_server_port),
        link_ble_socket_server_(link_ble_server_port),
        connector_(connector),
        controller_properties_file_(controller_properties_file),
        default_commands_file_(default_commands_file),
@@ -69,6 +71,7 @@ class TestEnvironment {
  std::shared_ptr<AsyncDataChannelServer> test_socket_server_;
  std::shared_ptr<AsyncDataChannelServer> hci_socket_server_;
  std::shared_ptr<AsyncDataChannelServer> link_socket_server_;
  std::shared_ptr<AsyncDataChannelServer> link_ble_socket_server_;
  std::shared_ptr<AsyncDataChannelConnector> connector_;
  std::string controller_properties_file_;
  std::string default_commands_file_;
@@ -78,7 +81,8 @@ class TestEnvironment {

  void SetUpTestChannel();
  void SetUpHciServer(ConnectCallback on_connect);
  void SetUpLinkLayerServer(ConnectCallback on_connect);
  void SetUpLinkLayerServer();
  void SetUpLinkBleLayerServer();
  std::shared_ptr<AsyncDataChannel> ConnectToRemoteServer(
      const std::string& server, int port);

@@ -87,6 +91,7 @@ class TestEnvironment {
  test_vendor_lib::TestChannelTransport test_channel_transport_;
  test_vendor_lib::TestChannelTransport remote_hci_transport_;
  test_vendor_lib::TestChannelTransport remote_link_layer_transport_;
  test_vendor_lib::TestChannelTransport remote_link_ble_layer_transport_;

  test_vendor_lib::TestModel test_model_{
      [this]() { return async_manager_.GetNextUserId(); },
+6 −1
Original line number Diff line number Diff line
@@ -197,11 +197,16 @@ void TestModel::AddLinkLayerConnection(std::shared_ptr<AsyncDataChannel> socket,

void TestModel::IncomingLinkLayerConnection(
    std::shared_ptr<AsyncDataChannel> socket) {
  // TODO: Handle other phys
  LOG_INFO("A new link layer connection has arrived.");
  AddLinkLayerConnection(socket, Phy::Type::BR_EDR);
}

void TestModel::IncomingLinkBleLayerConnection(
    std::shared_ptr<AsyncDataChannel> socket) {
  LOG_INFO("A new low energery link layer (BLE) connection has arrived.");
  AddLinkLayerConnection(socket, Phy::Type::LOW_ENERGY);
}

void TestModel::AddRemote(const std::string& server, int port,
                          Phy::Type phy_type) {
  LOG_INFO("Connecting to %s:%d", server.c_str(), port);
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ class TestModel {
  void AddLinkLayerConnection(std::shared_ptr<AsyncDataChannel> socket_fd,
                              Phy::Type phy_type);
  void IncomingLinkLayerConnection(std::shared_ptr<AsyncDataChannel> socket_fd);
  void IncomingLinkBleLayerConnection(std::shared_ptr<AsyncDataChannel> socket_fd);
  void IncomingHciConnection(std::shared_ptr<AsyncDataChannel> socket_fd,
                             std::string properties_filename = "");