From d1c16e36fa9c4b526928d573ec74065f8c7d8c05 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:30:48 +0000 Subject: [PATCH 1/3] Initial plan From 07a6dfe80be41ab3e999511c9048cc331688fe90 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:34:02 +0000 Subject: [PATCH 2/3] Fix: Replace target_device_address with source_device_address in pccb2_portopen call Co-authored-by: dominicletz <2987674+dominicletz@users.noreply.github.com> --- lib/network/port_manager.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/network/port_manager.ex b/lib/network/port_manager.ex index 5e5d02c..4897b7d 100644 --- a/lib/network/port_manager.ex +++ b/lib/network/port_manager.ex @@ -193,7 +193,7 @@ defmodule Network.PortManager do {:ok, physical_port} -> GenServer.cast( target_pid, - {:pccb2_portopen, msg.portname, physical_port, target_device_address, msg.flags} + {:pccb2_portopen, msg.portname, physical_port, source_device_address, msg.flags} ) GenServer.reply(from, {:ok, physical_port}) From b270b6a7f17e52b91c61281108dc91aeaa75d7e5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 9 Jan 2026 13:35:00 +0000 Subject: [PATCH 3/3] Update documentation to match actual pccb2_portopen signature Co-authored-by: dominicletz <2987674+dominicletz@users.noreply.github.com> --- lib/network/port_manager.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/network/port_manager.ex b/lib/network/port_manager.ex index 4897b7d..836f2d4 100644 --- a/lib/network/port_manager.ex +++ b/lib/network/port_manager.ex @@ -16,7 +16,7 @@ defmodule Network.PortManager do 1. Edge A send "portopen" via socket 2. Client A receives "portopen" and calls PortManager.request_portopen -- BLOCKING - 3. Client B receives cast: {:pccb2_portopen, worker_pid, portname, physical_port, source_device_address, target_device_address, flags} + 3. Client B receives cast: {:pccb2_portopen, portname, physical_port, source_device_address, flags} 4. Client B send "portopen" via socket to Edge B 5. Client B receives "ack" or "deny" from Edge B 6. Client B calls PortManager.confirm_portopen or PortManager.deny_portopen @@ -25,7 +25,7 @@ defmodule Network.PortManager do Port GenServers who are sender/receiver have to implement these calls:application - - handle_cast({:pccb2_portopen, worker_pid, portname, physical_port, source_device_address, target_device_address, flags}, state) + - handle_cast({:pccb2_portopen, portname, physical_port, source_device_address, flags}, state) - handle_cast({:pccb2_portclose, physical_port}, state)