diff --git a/src/Comm/GenericTcpIpClient.cs b/src/Comm/GenericTcpIpClient.cs index 9fa17c1..489adaf 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); } } @@ -500,6 +518,7 @@ namespace PepperDash.Core else { Debug.Console(1, this, "Socket status change {0} ({1})", clientSocketStatus, ClientStatusText); + RetryTimer.Stop(); _client.ReceiveDataAsync(Receive); }