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);
}