diff --git a/Pepperdash Core/Pepperdash Core.suo b/Pepperdash Core/Pepperdash Core.suo index f6a264d..b9d2a14 100644 Binary files a/Pepperdash Core/Pepperdash Core.suo and b/Pepperdash Core/Pepperdash Core.suo differ diff --git a/Pepperdash Core/Pepperdash Core/Comm/DynamicTCPServer.cs b/Pepperdash Core/Pepperdash Core/Comm/DynamicTCPServer.cs index a408950..792b1a8 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/DynamicTCPServer.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/DynamicTCPServer.cs @@ -8,30 +8,6 @@ using PepperDash.Core; namespace PepperDash_Core { - #region UNUSED OBJECT JUST IN CASE TILL DONE WITH CODING - //public class DynamicServer - //{ - // public object Server - // { - // get - // { - // if(Secure) - // return secureServer; - // else - // return unsecureServer; - // } - // private set; - // } - // public bool Secure { get; set; } - // private TCPServer unsecureServer; - // private SecureTCPServer secureServer; - // public DynamicServer(bool secure) - // { - // Secure = secure; - // } - //} - #endregion - public class DynamicTCPServer : Device { #region Events @@ -49,7 +25,7 @@ namespace PepperDash_Core public bool Secure { get; set; } /// - /// S+ Helper for Secure bool + /// S+ Helper for Secure bool. Parameter in SIMPL+ so there is no get, one way set from simpl+ Param to property in func main of SIMPL+ /// public ushort uSecure { @@ -62,20 +38,17 @@ namespace PepperDash_Core } } + public string status + { + get { return Secure ? SecureServer.State.ToString() : UnsecureServer.State.ToString(); } + } + /// /// Bool showing if socket is connected /// public bool IsConnected { - get - { - if (Secure && SecureServer != null) - return SecureServer.State == ServerState.SERVER_CONNECTED; - else if (!Secure && UnsecureServer != null) - return UnsecureServer.State == ServerState.SERVER_CONNECTED; - else - return false; - } + get { return Secure ? SecureServer.State == ServerState.SERVER_CONNECTED : UnsecureServer.State == ServerState.SERVER_CONNECTED; } } /// @@ -91,15 +64,7 @@ namespace PepperDash_Core /// public bool IsListening { - get - { - if (Secure && SecureServer != null) - return SecureServer.State == ServerState.SERVER_LISTENING; - else if (!Secure && UnsecureServer != null) - return UnsecureServer.State == ServerState.SERVER_LISTENING; - else - return false; - } + get { return Secure ? SecureServer.State == ServerState.SERVER_LISTENING : UnsecureServer.State == ServerState.SERVER_LISTENING; } } public ushort MaxConnections { get; set; } // should be set by parameter in SIMPL+ in the MAIN method, Should not ever need to be configurable @@ -117,15 +82,7 @@ namespace PepperDash_Core /// public ushort NumberOfClientsConnected { - get - { - if (Secure && SecureServer != null) - return (ushort)SecureServer.NumberOfClientsConnected; - else if (!Secure && UnsecureServer != null) - return (ushort)UnsecureServer.NumberOfClientsConnected; - else - return 0; - } + get { return Secure ? (ushort)SecureServer.NumberOfClientsConnected : (ushort)UnsecureServer.NumberOfClientsConnected; } } /// @@ -136,7 +93,7 @@ namespace PepperDash_Core /// /// S+ helper /// - public ushort UPort + public ushort uPort { get { return Convert.ToUInt16(Port); } set { Port = Convert.ToInt32(value); } @@ -173,10 +130,7 @@ namespace PepperDash_Core } set { - if (Secure && SecureServer != null && SecureServer.State == ServerState.SERVER_CONNECTED) - DisconnectAllClients(); - if (!Secure && UnsecureServer != null && UnsecureServer.State == ServerState.SERVER_CONNECTED) - DisconnectAllClients(); + DisconnectAllClients(); _SharedKey = value; } } @@ -203,10 +157,7 @@ namespace PepperDash_Core get { return _OnlyAcceptConnectionFromAddress; } set { - if (Secure && SecureServer != null && SecureServer.State == ServerState.SERVER_CONNECTED) - DisconnectAllClients(); - if (!Secure && UnsecureServer != null && UnsecureServer.State == ServerState.SERVER_CONNECTED) - DisconnectAllClients(); + DisconnectAllClients(); MaxConnections = 1; _OnlyAcceptConnectionFromAddress = value; } @@ -229,20 +180,14 @@ namespace PepperDash_Core BufferSize = 2000; Secure = false; } - - - void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType) - { - if (programEventType == eProgramStatusEventType.Stopping) - { - Debug.Console(1, this, "Program stopping. Closing server"); - DisconnectAllClients(); - StopListening(); - } - } #endregion #region Methods - Server Actions + public void Initialize(string key) + { + Key = key; + } + public void Listen() { if (Port < 1 || Port > 65535) @@ -311,7 +256,7 @@ namespace PepperDash_Core { if (ConnectedClientsIndexes.Count > 0) { - if (Secure && SecureServer != null) + if (Secure) { foreach (uint i in ConnectedClientsIndexes) { @@ -319,7 +264,7 @@ namespace PepperDash_Core SecureServer.SendDataAsync(i, b, b.Length, SecureSendDataAsyncCallback); } } - else if (!Secure && UnsecureServer != null) + else { foreach (uint i in ConnectedClientsIndexes) { @@ -337,12 +282,12 @@ namespace PepperDash_Core /// public void SendTextToClient(string text, uint clientIndex) { - if (Secure && SecureServer != null) + if (Secure) { byte[] b = Encoding.ASCII.GetBytes(text); SecureServer.SendDataAsync(clientIndex, b, b.Length, SecureSendDataAsyncCallback); } - else if (!Secure && UnsecureServer != null) + else { byte[] b = Encoding.ASCII.GetBytes(text); UnsecureServer.SendDataAsync(clientIndex, b, b.Length, UnsecureSendDataAsyncCallback); @@ -400,7 +345,7 @@ namespace PepperDash_Core Debug.Console(0, "Sent Shared Key to client at {0}", mySecureTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex)); } mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedCallback); - if (mySecureTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1) + if (mySecureTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1 && !ServerStopped) SecureServer.WaitForConnectionAsync(IPAddress.Any, SecureConnectCallback); } } @@ -412,7 +357,7 @@ namespace PepperDash_Core Debug.Console(0, "Connected to client at {0}", myTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex)); myTCPServer.ReceiveDataAsync(clientIndex, UnsecureReceivedCallback); } - if (myTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1) + if (myTCPServer.State != ServerState.SERVER_LISTENING && MaxConnections > 1 && !ServerStopped) UnsecureServer.WaitForConnectionAsync(IPAddress.Any, UnsecureConnectCallback); } #endregion @@ -483,7 +428,7 @@ namespace PepperDash_Core } #endregion - #region Methods - EventHelper + #region Methods - EventHelpers/Callbacks void onConnectionChange() { var handler = ClientConnectionChange; @@ -502,6 +447,16 @@ namespace PepperDash_Core if (handler != null) TextReceived(this, new GenericCommMethodReceiveTextArgs(text)); } + + void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType) + { + if (programEventType == eProgramStatusEventType.Stopping) + { + Debug.Console(1, this, "Program stopping. Closing server"); + DisconnectAllClients(); + StopListening(); + } + } #endregion } } \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index 970d782..a0d0bd4 100644 Binary files a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo and b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo differ diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index 278003b..b8ce03e 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 938a55e..287c6a1 100644 --- a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config +++ b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config @@ -10,8 +10,8 @@ - 3/15/2017 12:09:01 AM - 1.0.6282.41670 + 3/15/2017 3:30:41 PM + 1.0.6283.26120 Crestron.SIMPLSharp, Version=2.0.52.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll index 00a2c14..a745858 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/PepperDash_Core.pdb b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.pdb index 2bb936d..4771332 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.pdb and b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.pdb differ diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.info b/Pepperdash Core/Pepperdash Core/bin/manifest.info index 9e7f67f..a357fc1 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:5c64dc849bf12d4e264b1963b820aee1 +MainAssembly=PepperDash_Core.dll:36d08f49a05b4a3b41534e1c11044524 MainAssemblyMinFirmwareVersion=1.007.0017 MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e ü diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.ser b/Pepperdash Core/Pepperdash Core/bin/manifest.ser index 1a62c41..2c88bc1 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.dll b/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.dll index cd4c49f..982a762 100644 Binary files a/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.dll and b/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.dll differ diff --git a/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.pdb b/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.pdb index f9a36ef..b8f8c4b 100644 Binary files a/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.pdb and b/Pepperdash Core/Pepperdash Core/obj/Debug/PepperDash_Core.pdb differ