diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs index db9541f..9b2c36f 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs @@ -147,7 +147,7 @@ namespace PepperDash.Core IsConnected = true; Debug.Console(1, this, "Connected"); TheStream = Client.CreateShellStream("PDTShell", 100, 80, 100, 200, 65534); - TheStream.DataReceived += Stream_DataReceived; + TheStream.DataReceived += Stream_DataReceived; } return; } @@ -162,14 +162,18 @@ namespace PepperDash.Core Key, Hostname, Port, ie.GetType()); else if (ie is SshAuthenticationException) { - msg = string.Format("'{0}' Authentication failure for username '{1}', ({2})", + msg = string.Format("'{0}' Authentication failure for username '{1}', ({2})", Username, Key, ie.GetType()); - Debug.Console(0, this, "Authentication failure for username '{0}', ({1})", + Debug.Console(0, this, "Authentication failure for username '{0}', ({1})", Username, ie.GetType()); } else Debug.Console(0, this, "Error on connect:\r({0})", e); - } + } + catch (Exception e) + { + Debug.Console(0, this, "Unhandled exception on connect:\r({0})", e); + } } else { diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index 015843b..d5c618f 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -13,17 +13,64 @@ namespace PepperDash.Core { public class GenericTcpIpClient : Device, IBasicCommunication, IAutoReconnect { + /// + /// + /// public event EventHandler BytesReceived; + + /// + /// + /// public event EventHandler TextReceived; + /// + /// + /// public TCPClient Client { get; private set; } + + /// + /// + /// public bool IsConnected { get { return Client.ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED; } } - public string Status { get { return Client.ClientStatus.ToString(); } } + + /// + /// + /// + public SocketStatus ClientStatus { get { return Client.ClientStatus; } } + + /// + /// + /// + public string ClientStatusText { get { return Client.ClientStatus.ToString(); } } + + /// + /// + /// + public ushort UClientStatus { get { return (ushort)Client.ClientStatus; } } + + /// + /// + /// public string ConnectionFailure { get { return Client.ClientStatus.ToString(); } } + /// + /// + /// public bool AutoReconnect { get; set; } + + /// + /// + /// public int AutoReconnectIntervalMs { get; set; } + /// + /// Set only when the disconnect method is called. + /// + bool DisconnectCalledByUser; + + /// + /// + /// public bool Connected { get { return Client.ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED; } @@ -52,10 +99,12 @@ namespace PepperDash.Core public void Connect() { Client.ConnectToServerAsync(null); + DisconnectCalledByUser = false; } public void Disconnnect() { + DisconnectCalledByUser = true; Client.DisconnectFromServer(); } @@ -126,12 +175,11 @@ namespace PepperDash.Core void Client_SocketStatusChange(TCPClient client, SocketStatus clientSocketStatus) { - if (client.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED && - client.ClientStatus != SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY) + + Debug.Console(2, this, "Socket status change {0} ({1})", clientSocketStatus, UClientStatus); + if (client.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED && !DisconnectCalledByUser) WaitAndTryReconnect(); - - Debug.Console(2, this, "Socket status change {0}", clientSocketStatus); switch (clientSocketStatus) { case SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY: @@ -140,6 +188,7 @@ namespace PepperDash.Core break; case SocketStatus.SOCKET_STATUS_CONNECTED: Client.ReceiveDataAsync(Receive); + DisconnectCalledByUser = false; break; case SocketStatus.SOCKET_STATUS_CONNECT_FAILED: break; diff --git a/Pepperdash Core/Pepperdash Core/Network/DiscoveryThings.cs b/Pepperdash Core/Pepperdash Core/Network/DiscoveryThings.cs new file mode 100644 index 0000000..72f2285 --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Network/DiscoveryThings.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +namespace PepperDash.Core +{ + + public static class NetworkComm + { + + static NetworkComm() + { + } + } + +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index d695374..1f6615c 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -72,6 +72,7 @@ + @@ -84,7 +85,7 @@ C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.clz 1.007.0017 - 9/2/2016 4:24:23 PM + 9/12/2016 2:06:04 PM False diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index ff20d0e..ea64be7 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 a704865..fec6f6c 100644 --- a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config +++ b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config @@ -10,7 +10,7 @@ - 9/2/2016 4:24:23 PM - 1.0.0.27730 + 9/12/2016 2:06:04 PM + 1.0.0.23581 \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.info b/Pepperdash Core/Pepperdash Core/bin/manifest.info index 9a6a262..fc82798 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:91ae222c64760e498b41b5b05b1e591d +MainAssembly=PepperDash_Core.dll:841414db99de3a39f802c9ba80e23ad1 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 133c1ab..e02831d 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/manifest.ser and b/Pepperdash Core/Pepperdash Core/bin/manifest.ser differ