diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs new file mode 100644 index 0000000..3a388ee --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSocketStatusChangeEventArgs.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronSockets; + + +namespace PepperDash.Core +{ + public delegate void GenericSocketStatusChangeEventDelegate(ISocketStatus client); +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs index a1fcd56..d3df82d 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Text; using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.Ssh; using Crestron.SimplSharp.Ssh.Common; @@ -25,11 +26,13 @@ namespace PepperDash.Core /// /// Event when the connection status changes. /// - public event EventHandler ConnectionChange; - - - public event Crestron.SimplSharp.CrestronSockets.TCPClientSocketStatusChangeEventHandler SocketStatusChange; + //[Obsolete("Use SocketStatusChange instead")] + //public event EventHandler ConnectionChange; + /// + /// + /// + public event GenericSocketStatusChangeEventDelegate SocketStatusChange; /// /// Address of server @@ -57,16 +60,24 @@ namespace PepperDash.Core public bool IsConnected { // returns false if no client or not connected - get { return UStatus == 2; } + get { return ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED; } } /// /// /// - public Crestron.SimplSharp.CrestronSockets.SocketStatus ClientStatus + public SocketStatus ClientStatus { - get { throw new NotImplementedException(); } + get { return _ClientStatus; } + private set + { + if (_ClientStatus == value) + return; + _ClientStatus = value; + OnConnectionChange(); + } } + SocketStatus _ClientStatus; /// /// Contains the familiar Simpl analog status values. This drives the ConnectionChange event @@ -74,17 +85,8 @@ namespace PepperDash.Core /// public ushort UStatus { - get { return _UStatus; } - private set - { - if (_UStatus == value) - return; - _UStatus = value; - OnConnectionChange(); - } - + get { return (ushort)_ClientStatus; } } - ushort _UStatus; /// /// Determines whether client will attempt reconnection on failure. Default is true @@ -226,7 +228,7 @@ namespace PepperDash.Core PreviousUsername = Username; //You can do it! - UStatus = 1; + ClientStatus = SocketStatus.SOCKET_STATUS_WAITING; try { Client.Connect(); @@ -237,7 +239,7 @@ namespace PepperDash.Core TheStream = Client.CreateShellStream("PDTShell", 100, 80, 100, 200, 65534); TheStream.DataReceived += Stream_DataReceived; Debug.Console(1, this, "Connected"); - UStatus = 2; + ClientStatus = SocketStatus.SOCKET_STATUS_CONNECTED; PreviousHostname = Hostname; PreviousPassword = Password; PreviousPort = Port; @@ -268,7 +270,7 @@ namespace PepperDash.Core // Sucess will not make it this far Client.Disconnect(); - UStatus = 3; + ClientStatus = SocketStatus.SOCKET_STATUS_CONNECT_FAILED; HandleConnectionFailure(); } @@ -286,7 +288,7 @@ namespace PepperDash.Core if(TheStream != null) TheStream.DataReceived -= Stream_DataReceived; Client.Disconnect(); - UStatus = 5; + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_LOCALLY; Debug.Console(1, this, "Disconnected"); } @@ -386,7 +388,7 @@ namespace PepperDash.Core //Client.Dispose(); //Client = null; } - UStatus = 4; + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY; HandleConnectionFailure(); } @@ -395,8 +397,12 @@ namespace PepperDash.Core /// void OnConnectionChange() { - if(ConnectionChange != null) - ConnectionChange(this, new SshConnectionChangeEventArgs(IsConnected, this)); + //if(ConnectionChange != null) + // ConnectionChange(this, new SshConnectionChangeEventArgs(IsConnected, this)); + + var handler = SocketStatusChange; + if (handler != null) + SocketStatusChange(this); } #region IBasicCommunication Members @@ -415,7 +421,7 @@ namespace PepperDash.Core catch { Debug.Console(1, this, "Stream write failed. Disconnected, closing"); - UStatus = 4; + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY; HandleConnectionFailure(); } } @@ -430,7 +436,7 @@ namespace PepperDash.Core catch { Debug.Console(1, this, "Stream write failed. Disconnected, closing"); - UStatus = 4; + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY; HandleConnectionFailure(); } } diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index 5f41d7c..4b45522 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -26,7 +26,7 @@ namespace PepperDash.Core /// /// /// - public event TCPClientSocketStatusChangeEventHandler SocketStatusChange; + public event GenericSocketStatusChangeEventDelegate SocketStatusChange; /// /// @@ -107,7 +107,7 @@ namespace PepperDash.Core DisconnectCalledByUser = false; } - public void Disconnnect() + public void Disconnect() { DisconnectCalledByUser = true; Client.DisconnectFromServer(); @@ -196,7 +196,7 @@ namespace PepperDash.Core // Relay the event var handler = SocketStatusChange; if (handler != null) - SocketStatusChange(client, clientSocketStatus); + SocketStatusChange(this); } } diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClientWithGather.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClientWithGather.cs deleted file mode 100644 index 078c9ec..0000000 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClientWithGather.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; - -namespace PepperDash.Core -{ - /// - /// A wrapper class that creates a TCP client and gather for use within S+ - /// - public class SplusGenericTcpIpClientWithGather - { - public GenericTcpIpClient Client { get; private set; } - public CommunicationGather Gather { get; private set; } - - public SplusGenericTcpIpClientWithGather() - { - } - - /// - /// In place of the useless contstructor, for S+ compatability - /// - /// - /// - /// - /// - /// - public void Initialize(string key, string host, int port, int bufferSize, char delimiter) - { - Client = new GenericTcpIpClient(key, host, port, bufferSize); - Gather = new CommunicationGather(Client, delimiter); - } - } -} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Comm/SshConfig.cs b/Pepperdash Core/Pepperdash Core/Comm/SshConfig.cs deleted file mode 100644 index e9f1b86..0000000 --- a/Pepperdash Core/Pepperdash Core/Comm/SshConfig.cs +++ /dev/null @@ -1,16 +0,0 @@ -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Text; -//using Crestron.SimplSharp; - -//using Newtonsoft.Json; - -//namespace PepperDash.Core -//{ -// public class SshConfig : TcpIpConfig -// { -// public string Username { get; set; } -// public string Password { get; set; } -// } -//} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs index b92282d..73917b1 100644 --- a/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs +++ b/Pepperdash Core/Pepperdash Core/CommunicationExtras.cs @@ -22,6 +22,7 @@ namespace PepperDash.Core void SendText(string text); void SendBytes(byte[] bytes); void Connect(); + void Disconnect(); } /// @@ -30,7 +31,7 @@ namespace PepperDash.Core /// public interface ISocketStatus : IBasicCommunication { - event TCPClientSocketStatusChangeEventHandler SocketStatusChange; + event GenericSocketStatusChangeEventDelegate SocketStatusChange; SocketStatus ClientStatus { get; } } diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index 6634b12..3e42cb4 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -64,9 +64,8 @@ + - - @@ -85,7 +84,7 @@ C:\Users\hvolm\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.clz 1.007.0017 - 9/26/2016 9:02:28 AM + 9/27/2016 5:17:31 PM False diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index 29daa2e..11358db 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 9589b7a..8ff292e 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 9:02:28 AM - 1.0.0.14473 + 9/27/2016 5:17:31 PM + 1.0.0.29325 \ 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 72a09a4..acf38fd 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 edb7e7e..ba28745 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:ddd7e6504766069b1c909eac0c499966 +MainAssembly=PepperDash_Core.dll:945e6c6366e369445585fb8cacdefe8e 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 f16e3ff..f0933ea 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/manifest.ser and b/Pepperdash Core/Pepperdash Core/bin/manifest.ser differ