diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs index 4fc6401..a1fcd56 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs @@ -10,7 +10,7 @@ namespace PepperDash.Core /// /// /// - public class GenericSshClient : Device, IBasicCommunication, IAutoReconnect + public class GenericSshClient : Device, ISocketStatus, IAutoReconnect { /// /// Event that fires when data is received. Delivers args with byte array @@ -27,6 +27,10 @@ namespace PepperDash.Core /// public event EventHandler ConnectionChange; + + public event Crestron.SimplSharp.CrestronSockets.TCPClientSocketStatusChangeEventHandler SocketStatusChange; + + /// /// Address of server /// @@ -55,6 +59,15 @@ namespace PepperDash.Core // returns false if no client or not connected get { return UStatus == 2; } } + + /// + /// + /// + public Crestron.SimplSharp.CrestronSockets.SocketStatus ClientStatus + { + get { throw new NotImplementedException(); } + } + /// /// Contains the familiar Simpl analog status values. This drives the ConnectionChange event /// and IsConnected with be true when this == 2. diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index 59fb3f3..5f41d7c 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -11,7 +11,7 @@ using Newtonsoft.Json.Linq; namespace PepperDash.Core { - public class GenericTcpIpClient : Device, IBasicCommunication, IAutoReconnect + public class GenericTcpIpClient : Device, ISocketStatus, IAutoReconnect { /// /// @@ -23,6 +23,11 @@ namespace PepperDash.Core /// public event EventHandler TextReceived; + /// + /// + /// + public event TCPClientSocketStatusChangeEventHandler SocketStatusChange; + /// /// /// @@ -82,7 +87,7 @@ namespace PepperDash.Core : base(key) { Client = new TCPClient(address, port, bufferSize); - Client.SocketStatusChange += new TCPClientSocketStatusChangeEventHandler(Client_SocketStatusChange); + Client.SocketStatusChange += Client_SocketStatusChange; } //public override bool CustomActivate() @@ -175,40 +180,23 @@ namespace PepperDash.Core void Client_SocketStatusChange(TCPClient client, SocketStatus clientSocketStatus) { - Debug.Console(2, this, "Socket status change {0} ({1})", clientSocketStatus, UClientStatus); if (client.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED && !DisconnectCalledByUser) WaitAndTryReconnect(); + // Probably doesn't need to be a switch since all other cases were eliminated switch (clientSocketStatus) { - case SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY: - break; - case SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY: - break; case SocketStatus.SOCKET_STATUS_CONNECTED: Client.ReceiveDataAsync(Receive); DisconnectCalledByUser = false; break; - case SocketStatus.SOCKET_STATUS_CONNECT_FAILED: - break; - case SocketStatus.SOCKET_STATUS_DNS_FAILED: - break; - case SocketStatus.SOCKET_STATUS_DNS_LOOKUP: - break; - case SocketStatus.SOCKET_STATUS_DNS_RESOLVED: - break; - case SocketStatus.SOCKET_STATUS_LINK_LOST: - break; - case SocketStatus.SOCKET_STATUS_NO_CONNECT: - break; - case SocketStatus.SOCKET_STATUS_SOCKET_NOT_EXIST: - break; - case SocketStatus.SOCKET_STATUS_WAITING: - break; - default: - break; } + + // Relay the event + var handler = SocketStatusChange; + if (handler != null) + SocketStatusChange(client, clientSocketStatus); } } diff --git a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs index 910d277..b92282d 100644 --- a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs +++ b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronSockets; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -23,6 +24,17 @@ namespace PepperDash.Core void Connect(); } + /// + /// For IBasicCommunication classes that have SocketStatus. GenericSshClient, + /// GenericTcpIpClient + /// + public interface ISocketStatus : IBasicCommunication + { + event TCPClientSocketStatusChangeEventHandler SocketStatusChange; + SocketStatus ClientStatus { get; } + } + + public interface IAutoReconnect { bool AutoReconnect { get; set; } @@ -78,6 +90,8 @@ namespace PepperDash.Core public GenericCommMethodReceiveTextArgs() { } } + + /// /// /// diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index 7ccc33b..6634b12 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -85,7 +85,7 @@ C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.clz 1.007.0017 - 9/26/2016 8:35:29 AM + 9/26/2016 9:02:28 AM False diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index 0888cd4..29daa2e 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz and b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz differ diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config index 147ed58..9589b7a 100644 --- a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config +++ b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config @@ -10,7 +10,7 @@ - 9/26/2016 8:35:29 AM - 1.0.0.13663 + 9/26/2016 9:02:28 AM + 1.0.0.14473 \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll index 1dff3dd..72a09a4 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll and b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll differ diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.info b/Pepperdash Core/Pepperdash Core/bin/manifest.info index 6449a35..edb7e7e 100644 --- a/Pepperdash Core/Pepperdash Core/bin/manifest.info +++ b/Pepperdash Core/Pepperdash Core/bin/manifest.info @@ -1,4 +1,4 @@ -MainAssembly=PepperDash_Core.dll:03807ccdf300afd429e7566545de5e6c +MainAssembly=PepperDash_Core.dll:ddd7e6504766069b1c909eac0c499966 MainAssemblyMinFirmwareVersion=1.007.0017 ü DependencySource=Newtonsoft.Json.Compact.dll:ea996aa2ec65aa1878e7c9d09e37a896 diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.ser b/Pepperdash Core/Pepperdash Core/bin/manifest.ser index bc074a0..f16e3ff 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/manifest.ser and b/Pepperdash Core/Pepperdash Core/bin/manifest.ser differ diff --git a/Pepperdash Core/Pepperdash Core/obj/Debug/Pepperdash_Core.csproj.FileListAbsolute.txt b/Pepperdash Core/Pepperdash Core/obj/Debug/Pepperdash_Core.csproj.FileListAbsolute.txt index 5518a24..a6dc748 100644 --- a/Pepperdash Core/Pepperdash Core/obj/Debug/Pepperdash_Core.csproj.FileListAbsolute.txt +++ b/Pepperdash Core/Pepperdash Core/obj/Debug/Pepperdash_Core.csproj.FileListAbsolute.txt @@ -1,8 +1,8 @@ -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\ResolveAssemblyReference.cache -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\SimplSharpCustomAttributesInterface.dll -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\SimplSharpHelperInterface.dll -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\Newtonsoft.Json.Compact.dll -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.pdb -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\PepperDash_Core.dll -C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\PepperDash_Core.pdb +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\ResolveAssemblyReference.cache +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\SimplSharpCustomAttributesInterface.dll +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\SimplSharpHelperInterface.dll +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\Newtonsoft.Json.Compact.dll +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.pdb +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\PepperDash_Core.dll +C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\obj\Debug\PepperDash_Core.pdb