From 59c1212dd3038153c821ddf84ab4373ff51f3245 Mon Sep 17 00:00:00 2001 From: Andrew Knous Date: Fri, 12 Dec 2025 12:20:20 -0500 Subject: [PATCH 1/2] fix: adds ethernet event handler to GenericTcpClient to connect on link up status --- src/Comm/GenericTcpIpClient.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Comm/GenericTcpIpClient.cs b/src/Comm/GenericTcpIpClient.cs index 9fa17c1..d722dcc 100644 --- a/src/Comm/GenericTcpIpClient.cs +++ b/src/Comm/GenericTcpIpClient.cs @@ -186,6 +186,7 @@ namespace PepperDash.Core { StreamDebugging = new CommunicationStreamDebugging(key); CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler); + CrestronEnvironment.EthernetEventHandler += new EthernetEventHandler(CrestronEnvironment_EthernetEventHandler); AutoReconnectIntervalMs = 5000; Hostname = address; Port = port; @@ -206,6 +207,7 @@ namespace PepperDash.Core { StreamDebugging = new CommunicationStreamDebugging(key); CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler); + CrestronEnvironment.EthernetEventHandler += new EthernetEventHandler(CrestronEnvironment_EthernetEventHandler); AutoReconnectIntervalMs = 5000; BufferSize = 2000; @@ -223,6 +225,7 @@ namespace PepperDash.Core { StreamDebugging = new CommunicationStreamDebugging(SplusKey); CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler); + CrestronEnvironment.EthernetEventHandler += new EthernetEventHandler(CrestronEnvironment_EthernetEventHandler); AutoReconnectIntervalMs = 5000; BufferSize = 2000; @@ -252,6 +255,19 @@ namespace PepperDash.Core } } + /// + /// Handles reconnecting when + /// + void CrestronEnvironment_EthernetEventHandler(EthernetEventArgs ethernetEventArgs) + { + if (ethernetEventArgs.EthernetEventType == eEthernetEventType.LinkUp) + { + if(_client != null) + Connect(); + } + + } + /// /// /// @@ -295,12 +311,14 @@ namespace PepperDash.Core } else { + Debug.Console(1, this, "Creating new TCPClient"); //Stop retry timer if running RetryTimer.Stop(); _client = new TCPClient(Hostname, Port, BufferSize); _client.SocketStatusChange -= Client_SocketStatusChange; _client.SocketStatusChange += Client_SocketStatusChange; DisconnectCalledByUser = false; + RetryTimer.Reset(); _client.ConnectToServerAsync(ConnectToServerCallback); } } @@ -376,6 +394,7 @@ namespace PepperDash.Core { if (c.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED) { + Debug.LogError(Debug.ErrorLogLevel.Error, string.Format("{0}: Server connection result: {1}", Key, c.ClientStatus)); Debug.Console(0, this, "Server connection result: {0}", c.ClientStatus); WaitAndTryReconnect(); } @@ -500,6 +519,7 @@ namespace PepperDash.Core else { Debug.Console(1, this, "Socket status change {0} ({1})", clientSocketStatus, ClientStatusText); + RetryTimer.Stop(); _client.ReceiveDataAsync(Receive); } From ba556ad6e2ca3e289582b96ef4ebc6187cf977de Mon Sep 17 00:00:00 2001 From: Andrew Knous Date: Fri, 12 Dec 2025 13:17:04 -0500 Subject: [PATCH 2/2] fix: removes extraneous logging --- src/Comm/GenericTcpIpClient.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Comm/GenericTcpIpClient.cs b/src/Comm/GenericTcpIpClient.cs index d722dcc..489adaf 100644 --- a/src/Comm/GenericTcpIpClient.cs +++ b/src/Comm/GenericTcpIpClient.cs @@ -394,7 +394,6 @@ namespace PepperDash.Core { if (c.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED) { - Debug.LogError(Debug.ErrorLogLevel.Error, string.Format("{0}: Server connection result: {1}", Key, c.ClientStatus)); Debug.Console(0, this, "Server connection result: {0}", c.ClientStatus); WaitAndTryReconnect(); }