aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pw_system/socket_target_io.cc6
-rw-r--r--targets/host/system_rpc_server.cc6
2 files changed, 10 insertions, 2 deletions
diff --git a/pw_system/socket_target_io.cc b/pw_system/socket_target_io.cc
index 55f105408..441de02b4 100644
--- a/pw_system/socket_target_io.cc
+++ b/pw_system/socket_target_io.cc
@@ -29,11 +29,15 @@ constexpr uint16_t kPort = PW_SYSTEM_SOCKET_IO_PORT;
stream::SocketStream& GetStream() {
static bool running = false;
static std::mutex socket_open_lock;
+ static stream::ServerSocket server_socket;
static stream::SocketStream socket_stream;
std::lock_guard guard(socket_open_lock);
if (!running) {
printf("Awaiting connection on port %d\n", static_cast<int>(kPort));
- PW_CHECK_OK(socket_stream.Serve(kPort));
+ PW_CHECK_OK(server_socket.Listen(kPort));
+ auto accept_result = server_socket.Accept();
+ PW_CHECK_OK(accept_result.status());
+ socket_stream = *std::move(accept_result);
printf("Client connected\n");
running = true;
}
diff --git a/targets/host/system_rpc_server.cc b/targets/host/system_rpc_server.cc
index f3d870fc9..8ff75751a 100644
--- a/targets/host/system_rpc_server.cc
+++ b/targets/host/system_rpc_server.cc
@@ -35,6 +35,7 @@ uint16_t socket_port = 33000;
static_assert(kMaxTransmissionUnit ==
hdlc::MaxEncodedFrameSize(rpc::cfg::kEncodingBufferSizeBytes));
+stream::ServerSocket server_socket;
stream::SocketStream socket_stream;
hdlc::FixedMtuChannelOutput<kMaxTransmissionUnit> hdlc_channel_output(
@@ -58,7 +59,10 @@ void Init() {
});
PW_LOG_INFO("Starting pw_rpc server on port %d", socket_port);
- PW_CHECK_OK(socket_stream.Serve(socket_port));
+ PW_CHECK_OK(server_socket.Listen(socket_port));
+ auto accept_result = server_socket.Accept();
+ PW_CHECK_OK(accept_result.status());
+ socket_stream = *std::move(accept_result);
}
rpc::Server& Server() { return server; }