chore: run code cleanup

Ran code cleanup with the options set to remove unused
usings, sort usings, and adjust namespaces to match
folders.
This commit is contained in:
Andrew Welker
2023-03-23 09:26:17 -06:00
parent 046caba889
commit 2f2ea964cb
67 changed files with 4192 additions and 4693 deletions

View File

@@ -1,14 +1,8 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Crestron.SimplSharp;
using PepperDash.Core; namespace PepperDash.Core.Comm
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Defines the string event handler for line events on the gather /// Defines the string event handler for line events on the gather
@@ -68,7 +62,7 @@ namespace PepperDash.Core
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="delimiter"></param> /// <param name="delimiter"></param>
public CommunicationGather(ICommunicationReceiver port, string delimiter) public CommunicationGather(ICommunicationReceiver port, string delimiter)
:this(port, new string[] { delimiter} ) : this(port, new string[] { delimiter })
{ {
} }

View File

@@ -1,11 +1,8 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic; using PepperDash.Core.Logging;
using System.Linq; using System;
using System.Text;
using Crestron.SimplSharp;
using PepperDash.Core;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Controls the ability to disable/enable debugging of TX/RX data sent to/from a device with a built in timer to disable /// Controls the ability to disable/enable debugging of TX/RX data sent to/from a device with a built in timer to disable
@@ -37,14 +34,14 @@ namespace PepperDash.Core
{ {
get get
{ {
return _DebugTimeoutInMs/60000; return _DebugTimeoutInMs / 60000;
} }
} }
/// <summary> /// <summary>
/// Indicates that receive stream debugging is enabled /// Indicates that receive stream debugging is enabled
/// </summary> /// </summary>
public bool RxStreamDebuggingIsEnabled{ get; private set; } public bool RxStreamDebuggingIsEnabled { get; private set; }
/// <summary> /// <summary>
/// Indicates that transmit stream debugging is enabled /// Indicates that transmit stream debugging is enabled

View File

@@ -1,13 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Newtonsoft.Json; using Newtonsoft.Json;
using System;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Config properties that indicate how to communicate with a device for control /// Config properties that indicate how to communicate with a device for control

View File

@@ -8,15 +8,10 @@ and in all parts thereof, regardless of the use to which it is being put. Any u
of this material by another party without the express written permission of PepperDash Technology Corporation is prohibited. of this material by another party without the express written permission of PepperDash Technology Corporation is prohibited.
PepperDash Technology Corporation reserves all rights under applicable laws. PepperDash Technology Corporation reserves all rights under applicable laws.
------------------------------------ */ ------------------------------------ */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using System;
namespace PepperDash.Core.Comm
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Delegate for notifying of socket status changes /// Delegate for notifying of socket status changes

View File

@@ -1,10 +1,8 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Background class that manages debug features for sockets /// Background class that manages debug features for sockets
@@ -38,30 +36,30 @@ namespace PepperDash.Core
if (tokens.Length == 0) if (tokens.Length == 0)
return; return;
var command = tokens[0].ToLower(); var command = tokens[0].ToLower();
if(command == "connect") if (command == "connect")
{ {
} }
else if(command == "disco") else if (command == "disco")
{ {
} }
else if(command =="list") else if (command == "list")
{ {
CrestronConsole.ConsoleCommandResponse("{0} sockets", Sockets.Count); CrestronConsole.ConsoleCommandResponse("{0} sockets", Sockets.Count);
if(Sockets.Count == 0) if (Sockets.Count == 0)
return; return;
// get the longest key name, for formatting // get the longest key name, for formatting
var longestLength = Sockets.Aggregate("", var longestLength = Sockets.Aggregate("",
(max, cur) => max.Length > cur.Key.Length ? max : cur.Key).Length; (max, cur) => max.Length > cur.Key.Length ? max : cur.Key).Length;
for(int i = 0; i < Sockets.Count; i++) for (int i = 0; i < Sockets.Count; i++)
{ {
var sock = Sockets[i]; var sock = Sockets[i];
CrestronConsole.ConsoleCommandResponse("{0} {1} {2} {3}", CrestronConsole.ConsoleCommandResponse("{0} {1} {2} {3}",
i, sock.Key, GetSocketType(sock), sock.ClientStatus); i, sock.Key, GetSocketType(sock), sock.ClientStatus);
} }
} }
else if(command == "send") else if (command == "send")
{ {
} }
@@ -87,7 +85,7 @@ namespace PepperDash.Core
/// <param name="socket"></param> /// <param name="socket"></param>
public static void AddSocket(ISocketStatus socket) public static void AddSocket(ISocketStatus socket)
{ {
if(!Sockets.Contains(socket)) if (!Sockets.Contains(socket))
Sockets.Add(socket); Sockets.Add(socket);
} }

View File

@@ -1,12 +1,11 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp.CrestronIO;
using Crestron.SimplSharp.Net.Http; using Crestron.SimplSharp.Net.Http;
using PepperDash.Core.Logging;
using System;
using System.Text;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Client for communicating with an HTTP Server Side Event pattern /// Client for communicating with an HTTP Server Side Event pattern
@@ -94,7 +93,7 @@ namespace PepperDash.Core
{ {
try try
{ {
if(string.IsNullOrEmpty(url)) if (string.IsNullOrEmpty(url))
{ {
Debug.Console(0, this, "Error connecting to Server. No URL specified"); Debug.Console(0, this, "Error connecting to Server. No URL specified");
return; return;

View File

@@ -1,12 +1,11 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic; using Crestron.SimplSharp.CrestronSockets;
using PepperDash.Core.Logging;
using System;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// A class to handle secure TCP/IP communications with a server /// A class to handle secure TCP/IP communications with a server
@@ -261,7 +260,7 @@ namespace PepperDash.Core
/// <summary> /// <summary>
/// Simpl+ Heartbeat Analog value in seconds /// Simpl+ Heartbeat Analog value in seconds
/// </summary> /// </summary>
public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatInterval = (value * 1000); } } public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatInterval = value * 1000; } }
CTimer HeartbeatSendTimer; CTimer HeartbeatSendTimer;
CTimer HeartbeatAckTimer; CTimer HeartbeatAckTimer;
@@ -424,7 +423,7 @@ namespace PepperDash.Core
{ {
if (_client != null) if (_client != null)
{ {
_client.SocketStatusChange -= this.Client_SocketStatusChange; _client.SocketStatusChange -= Client_SocketStatusChange;
DisconnectClient(); DisconnectClient();
} }
return true; return true;
@@ -483,7 +482,7 @@ namespace PepperDash.Core
_client = new SecureTCPClient(Hostname, Port, BufferSize); _client = new SecureTCPClient(Hostname, Port, BufferSize);
_client.SocketStatusChange += Client_SocketStatusChange; _client.SocketStatusChange += Client_SocketStatusChange;
if (HeartbeatEnabled) if (HeartbeatEnabled)
_client.SocketSendOrReceiveTimeOutInMs = (HeartbeatInterval * 5); _client.SocketSendOrReceiveTimeOutInMs = HeartbeatInterval * 5;
_client.AddressClientConnectedTo = Hostname; _client.AddressClientConnectedTo = Hostname;
_client.PortNumber = Port; _client.PortNumber = Port;
// SecureClient = c; // SecureClient = c;
@@ -744,11 +743,11 @@ namespace PepperDash.Core
if (HeartbeatSendTimer == null) if (HeartbeatSendTimer == null)
{ {
HeartbeatSendTimer = new CTimer(this.SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval); HeartbeatSendTimer = new CTimer(SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval);
} }
if (HeartbeatAckTimer == null) if (HeartbeatAckTimer == null)
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
} }
@@ -772,7 +771,7 @@ namespace PepperDash.Core
} }
void SendHeartbeat(object notused) void SendHeartbeat(object notused)
{ {
this.SendText(HeartbeatString); SendText(HeartbeatString);
Debug.Console(2, this, "Sending Heartbeat"); Debug.Console(2, this, "Sending Heartbeat");
} }
@@ -796,7 +795,7 @@ namespace PepperDash.Core
} }
else else
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString); Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString);
return remainingText; return remainingText;
@@ -861,7 +860,7 @@ namespace PepperDash.Core
// HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING????? // HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING?????
if (n <= 0) if (n <= 0)
{ {
Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", this.Key); Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", Key);
} }
}); });
} }
@@ -906,7 +905,7 @@ namespace PepperDash.Core
} }
try try
{ {
Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)(client.ClientStatus)); Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)client.ClientStatus);
OnConnectionChange(); OnConnectionChange();
// The client could be null or disposed by this time... // The client could be null or disposed by this time...

View File

@@ -10,15 +10,14 @@ of this material by another party without the express written permission of Pepp
PepperDash Technology Corporation reserves all rights under applicable laws. PepperDash Technology Corporation reserves all rights under applicable laws.
------------------------------------ */ ------------------------------------ */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using PepperDash.Core.Logging;
using System;
using System.Linq;
using System.Text;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Generic secure TCP/IP client for server /// Generic secure TCP/IP client for server
@@ -250,7 +249,7 @@ namespace PepperDash.Core
/// <summary> /// <summary>
/// Simpl+ Heartbeat Analog value in seconds /// Simpl+ Heartbeat Analog value in seconds
/// </summary> /// </summary>
public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatInterval = (value * 1000); } } public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatInterval = value * 1000; } }
CTimer HeartbeatSendTimer; CTimer HeartbeatSendTimer;
CTimer HeartbeatAckTimer; CTimer HeartbeatAckTimer;
@@ -446,7 +445,7 @@ namespace PepperDash.Core
Client = new SecureTCPClient(Hostname, Port, BufferSize); Client = new SecureTCPClient(Hostname, Port, BufferSize);
Client.SocketStatusChange += Client_SocketStatusChange; Client.SocketStatusChange += Client_SocketStatusChange;
if (HeartbeatEnabled) if (HeartbeatEnabled)
Client.SocketSendOrReceiveTimeOutInMs = (HeartbeatInterval * 5); Client.SocketSendOrReceiveTimeOutInMs = HeartbeatInterval * 5;
Client.AddressClientConnectedTo = Hostname; Client.AddressClientConnectedTo = Hostname;
Client.PortNumber = Port; Client.PortNumber = Port;
// SecureClient = c; // SecureClient = c;
@@ -590,7 +589,7 @@ namespace PepperDash.Core
RetryTimer.Stop(); RetryTimer.Stop();
RetryTimer = null; RetryTimer = null;
} }
if(AutoReconnectTriggered != null) if (AutoReconnectTriggered != null)
AutoReconnectTriggered(this, new EventArgs()); AutoReconnectTriggered(this, new EventArgs());
RetryTimer = new CTimer(o => Connect(), rndTime); RetryTimer = new CTimer(o => Connect(), rndTime);
} }
@@ -702,11 +701,11 @@ namespace PepperDash.Core
if (HeartbeatSendTimer == null) if (HeartbeatSendTimer == null)
{ {
HeartbeatSendTimer = new CTimer(this.SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval); HeartbeatSendTimer = new CTimer(SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval);
} }
if (HeartbeatAckTimer == null) if (HeartbeatAckTimer == null)
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
} }
@@ -730,7 +729,7 @@ namespace PepperDash.Core
} }
void SendHeartbeat(object notused) void SendHeartbeat(object notused)
{ {
this.SendText(HeartbeatString); SendText(HeartbeatString);
Debug.Console(2, this, "Sending Heartbeat"); Debug.Console(2, this, "Sending Heartbeat");
} }
@@ -754,7 +753,7 @@ namespace PepperDash.Core
} }
else else
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString); Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString);
return remainingText; return remainingText;
@@ -819,7 +818,7 @@ namespace PepperDash.Core
// HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING????? // HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING?????
if (n <= 0) if (n <= 0)
{ {
Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", this.Key); Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", Key);
} }
}); });
} }
@@ -864,7 +863,7 @@ namespace PepperDash.Core
} }
try try
{ {
Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)(client.ClientStatus)); Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)client.ClientStatus);
OnConnectionChange(); OnConnectionChange();
// The client could be null or disposed by this time... // The client could be null or disposed by this time...
@@ -897,7 +896,7 @@ namespace PepperDash.Core
void OnClientReadyForcommunications(bool isReady) void OnClientReadyForcommunications(bool isReady)
{ {
IsReadyForCommunication = isReady; IsReadyForCommunication = isReady;
if (this.IsReadyForCommunication) { HeartbeatStart(); } if (IsReadyForCommunication) { HeartbeatStart(); }
var handler = ClientReadyForCommunications; var handler = ClientReadyForCommunications;
if (handler != null) if (handler != null)
handler(this, new GenericTcpServerClientReadyForcommunicationsEventArgs(IsReadyForCommunication)); handler(this, new GenericTcpServerClientReadyForcommunicationsEventArgs(IsReadyForCommunication));

View File

@@ -10,16 +10,15 @@ of this material by another party without the express written permission of Pepp
PepperDash Technology Corporation reserves all rights under applicable laws. PepperDash Technology Corporation reserves all rights under applicable laws.
------------------------------------ */ ------------------------------------ */
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
using PepperDash.Core.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Generic secure TCP/IP server /// Generic secure TCP/IP server
@@ -257,7 +256,7 @@ namespace PepperDash.Core
/// <summary> /// <summary>
/// Simpl+ Heartbeat Analog value in seconds /// Simpl+ Heartbeat Analog value in seconds
/// </summary> /// </summary>
public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatRequiredIntervalMs = (value * 1000); } } public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatRequiredIntervalMs = value * 1000; } }
/// <summary> /// <summary>
/// String to Match for heartbeat. If null or empty any string will reset heartbeat timer /// String to Match for heartbeat. If null or empty any string will reset heartbeat timer
@@ -422,7 +421,7 @@ namespace PepperDash.Core
{ {
SecureServer = new SecureTCPServer(Port, MaxClients); SecureServer = new SecureTCPServer(Port, MaxClients);
if (HeartbeatRequired) if (HeartbeatRequired)
SecureServer.SocketSendOrReceiveTimeOutInMs = (this.HeartbeatRequiredIntervalMs * 5); SecureServer.SocketSendOrReceiveTimeOutInMs = HeartbeatRequiredIntervalMs * 5;
SecureServer.HandshakeTimeout = 30; SecureServer.HandshakeTimeout = 30;
SecureServer.SocketStatusChange += new SecureTCPServerSocketStatusChangeEventHandler(SecureServer_SocketStatusChange); SecureServer.SocketStatusChange += new SecureTCPServerSocketStatusChangeEventHandler(SecureServer_SocketStatusChange);
} }
@@ -546,7 +545,7 @@ namespace PepperDash.Core
byte[] b = Encoding.GetEncoding(28591).GetBytes(text); byte[] b = Encoding.GetEncoding(28591).GetBytes(text);
foreach (uint i in ConnectedClientsIndexes) foreach (uint i in ConnectedClientsIndexes)
{ {
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(i))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(i))
{ {
SocketErrorCodes error = SecureServer.SendDataAsync(i, b, b.Length, (x, y, z) => { }); SocketErrorCodes error = SecureServer.SendDataAsync(i, b, b.Length, (x, y, z) => { });
if (error != SocketErrorCodes.SOCKET_OK && error != SocketErrorCodes.SOCKET_OPERATION_PENDING) if (error != SocketErrorCodes.SOCKET_OK && error != SocketErrorCodes.SOCKET_OPERATION_PENDING)
@@ -575,7 +574,7 @@ namespace PepperDash.Core
byte[] b = Encoding.GetEncoding(28591).GetBytes(text); byte[] b = Encoding.GetEncoding(28591).GetBytes(text);
if (SecureServer != null && SecureServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED) if (SecureServer != null && SecureServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
{ {
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))
SecureServer.SendDataAsync(clientIndex, b, b.Length, (x, y, z) => { }); SecureServer.SendDataAsync(clientIndex, b, b.Length, (x, y, z) => { });
} }
} }
@@ -639,9 +638,9 @@ namespace PepperDash.Core
public string GetClientIPAddress(uint clientIndex) public string GetClientIPAddress(uint clientIndex)
{ {
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress Index: {0}", clientIndex); Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress Index: {0}", clientIndex);
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))
{ {
var ipa = this.SecureServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex); var ipa = SecureServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress IPAddreess: {0}", ipa); Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress IPAddreess: {0}", ipa);
return ipa; return ipa;
@@ -666,7 +665,7 @@ namespace PepperDash.Core
address = SecureServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex); address = SecureServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Heartbeat not received for Client index {2} IP: {0}, DISCONNECTING BECAUSE HEARTBEAT REQUIRED IS TRUE {1}", Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Heartbeat not received for Client index {2} IP: {0}, DISCONNECTING BECAUSE HEARTBEAT REQUIRED IS TRUE {1}",
address, string.IsNullOrEmpty(HeartbeatStringToMatch) ? "" : ("HeartbeatStringToMatch: " + HeartbeatStringToMatch), clientIndex); address, string.IsNullOrEmpty(HeartbeatStringToMatch) ? "" : "HeartbeatStringToMatch: " + HeartbeatStringToMatch, clientIndex);
if (SecureServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED) if (SecureServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
SendTextToClient("Heartbeat not received by server, closing connection", clientIndex); SendTextToClient("Heartbeat not received by server, closing connection", clientIndex);
@@ -827,7 +826,7 @@ namespace PepperDash.Core
try try
{ {
byte[] bytes = mySecureTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex); byte[] bytes = mySecureTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex);
received = System.Text.Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived); received = Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived);
if (WaitingForSharedKey.Contains(clientIndex)) if (WaitingForSharedKey.Contains(clientIndex))
{ {
received = received.Replace("\r", ""); received = received.Replace("\r", "");
@@ -1011,8 +1010,8 @@ namespace PepperDash.Core
void RunMonitorClient() void RunMonitorClient()
{ {
MonitorClient = new GenericSecureTcpIpClient_ForServer(Key + "-MONITOR", "127.0.0.1", Port, 2000); MonitorClient = new GenericSecureTcpIpClient_ForServer(Key + "-MONITOR", "127.0.0.1", Port, 2000);
MonitorClient.SharedKeyRequired = this.SharedKeyRequired; MonitorClient.SharedKeyRequired = SharedKeyRequired;
MonitorClient.SharedKey = this.SharedKey; MonitorClient.SharedKey = SharedKey;
MonitorClient.ConnectionHasHungCallback = MonitorClientHasHungCallback; MonitorClient.ConnectionHasHungCallback = MonitorClientHasHungCallback;
//MonitorClient.ConnectionChange += MonitorClient_ConnectionChange; //MonitorClient.ConnectionChange += MonitorClient_ConnectionChange;
MonitorClient.ClientReadyForCommunications += MonitorClient_IsReadyForComm; MonitorClient.ClientReadyForCommunications += MonitorClient_IsReadyForComm;

View File

@@ -1,12 +1,12 @@
using System; using Crestron.SimplSharp;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using Crestron.SimplSharp.Ssh; using Crestron.SimplSharp.Ssh;
using Crestron.SimplSharp.Ssh.Common; using Crestron.SimplSharp.Ssh.Common;
using PepperDash.Core.Logging;
using System;
using System.Text;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// ///
@@ -357,12 +357,12 @@ namespace PepperDash.Core
Connect(); Connect();
}, AutoReconnectIntervalMs); }, AutoReconnectIntervalMs);
Debug.Console(1, this, "Attempting connection in {0} seconds", Debug.Console(1, this, "Attempting connection in {0} seconds",
(float) (AutoReconnectIntervalMs/1000)); (float)(AutoReconnectIntervalMs / 1000));
} }
else else
{ {
Debug.Console(1, this, "{0} second reconnect cycle running", Debug.Console(1, this, "{0} second reconnect cycle running",
(float) (AutoReconnectIntervalMs/1000)); (float)(AutoReconnectIntervalMs / 1000));
} }
} }
} }
@@ -395,7 +395,7 @@ namespace PepperDash.Core
/// <summary> /// <summary>
/// Handler for data receive on ShellStream. Passes data across to queue for line parsing. /// Handler for data receive on ShellStream. Passes data across to queue for line parsing.
/// </summary> /// </summary>
void Stream_DataReceived(object sender, Crestron.SimplSharp.Ssh.Common.ShellDataEventArgs e) void Stream_DataReceived(object sender, ShellDataEventArgs e)
{ {
var bytes = e.Data; var bytes = e.Data;
if (bytes.Length > 0) if (bytes.Length > 0)
@@ -427,7 +427,7 @@ namespace PepperDash.Core
/// Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange /// Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange
/// event /// event
/// </summary> /// </summary>
void Client_ErrorOccurred(object sender, Crestron.SimplSharp.Ssh.Common.ExceptionEventArgs e) void Client_ErrorOccurred(object sender, ExceptionEventArgs e)
{ {
CrestronInvoke.BeginInvoke(o => CrestronInvoke.BeginInvoke(o =>
{ {

View File

@@ -1,14 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using Newtonsoft.Json; using Newtonsoft.Json;
using PepperDash.Core.Logging;
using System;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// A class to handle basic TCP/IP communications with a server /// A class to handle basic TCP/IP communications with a server
@@ -262,7 +262,7 @@ namespace PepperDash.Core
RetryTimer.Dispose(); RetryTimer.Dispose();
if (_client != null) if (_client != null)
{ {
_client.SocketStatusChange -= this.Client_SocketStatusChange; _client.SocketStatusChange -= Client_SocketStatusChange;
DisconnectClient(); DisconnectClient();
} }
return true; return true;

View File

@@ -10,15 +10,14 @@ of this material by another party without the express written permission of Pepp
PepperDash Technology Corporation reserves all rights under applicable laws. PepperDash Technology Corporation reserves all rights under applicable laws.
------------------------------------ */ ------------------------------------ */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using PepperDash.Core.Logging;
using System;
using System.Linq;
using System.Text;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Generic TCP/IP client for server /// Generic TCP/IP client for server
@@ -361,8 +360,8 @@ namespace PepperDash.Core
Client = new TCPClient(Hostname, Port, BufferSize); Client = new TCPClient(Hostname, Port, BufferSize);
Client.SocketStatusChange += Client_SocketStatusChange; Client.SocketStatusChange += Client_SocketStatusChange;
if(HeartbeatEnabled) if (HeartbeatEnabled)
Client.SocketSendOrReceiveTimeOutInMs = (HeartbeatInterval * 5); Client.SocketSendOrReceiveTimeOutInMs = HeartbeatInterval * 5;
Client.AddressClientConnectedTo = Hostname; Client.AddressClientConnectedTo = Hostname;
Client.PortNumber = Port; Client.PortNumber = Port;
// SecureClient = c; // SecureClient = c;
@@ -567,11 +566,11 @@ namespace PepperDash.Core
if (HeartbeatSendTimer == null) if (HeartbeatSendTimer == null)
{ {
HeartbeatSendTimer = new CTimer(this.SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval); HeartbeatSendTimer = new CTimer(SendHeartbeat, null, HeartbeatInterval, HeartbeatInterval);
} }
if (HeartbeatAckTimer == null) if (HeartbeatAckTimer == null)
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
} }
@@ -595,7 +594,7 @@ namespace PepperDash.Core
} }
void SendHeartbeat(object notused) void SendHeartbeat(object notused)
{ {
this.SendText(HeartbeatString); SendText(HeartbeatString);
Debug.Console(2, this, "Sending Heartbeat"); Debug.Console(2, this, "Sending Heartbeat");
} }
@@ -619,7 +618,7 @@ namespace PepperDash.Core
} }
else else
{ {
HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, (HeartbeatInterval * 2), (HeartbeatInterval * 2)); HeartbeatAckTimer = new CTimer(HeartbeatAckTimerFail, null, HeartbeatInterval * 2, HeartbeatInterval * 2);
} }
Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString); Debug.Console(2, this, "Heartbeat Received: {0}, from Server", HeartbeatString);
return remainingText; return remainingText;
@@ -684,7 +683,7 @@ namespace PepperDash.Core
// HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING????? // HOW IN THE HELL DO WE CATCH AN EXCEPTION IN SENDING?????
if (n <= 0) if (n <= 0)
{ {
Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", this.Key); Debug.Console(1, Debug.ErrorLogLevel.Warning, "[{0}] Sent zero bytes. Was there an error?", Key);
} }
}); });
} }
@@ -729,7 +728,7 @@ namespace PepperDash.Core
} }
try try
{ {
Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)(client.ClientStatus)); Debug.Console(2, this, "Socket status change: {0} ({1})", client.ClientStatus, (ushort)client.ClientStatus);
OnConnectionChange(); OnConnectionChange();
@@ -763,7 +762,7 @@ namespace PepperDash.Core
void OnClientReadyForcommunications(bool isReady) void OnClientReadyForcommunications(bool isReady)
{ {
IsReadyForCommunication = isReady; IsReadyForCommunication = isReady;
if (this.IsReadyForCommunication) { HeartbeatStart(); } if (IsReadyForCommunication) { HeartbeatStart(); }
var handler = ClientReadyForCommunications; var handler = ClientReadyForCommunications;
if (handler != null) if (handler != null)
handler(this, new GenericTcpServerClientReadyForcommunicationsEventArgs(IsReadyForCommunication)); handler(this, new GenericTcpServerClientReadyForcommunicationsEventArgs(IsReadyForCommunication));

View File

@@ -10,16 +10,15 @@ of this material by another party without the express written permission of Pepp
PepperDash Technology Corporation reserves all rights under applicable laws. PepperDash Technology Corporation reserves all rights under applicable laws.
------------------------------------ */ ------------------------------------ */
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
using PepperDash.Core.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Generic TCP/IP server device /// Generic TCP/IP server device
@@ -238,7 +237,7 @@ namespace PepperDash.Core
/// <summary> /// <summary>
/// Simpl+ Heartbeat Analog value in seconds /// Simpl+ Heartbeat Analog value in seconds
/// </summary> /// </summary>
public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatRequiredIntervalMs = (value * 1000); } } public ushort HeartbeatRequiredIntervalInSeconds { set { HeartbeatRequiredIntervalMs = value * 1000; } }
/// <summary> /// <summary>
/// String to Match for heartbeat. If null or empty any string will reset heartbeat timer /// String to Match for heartbeat. If null or empty any string will reset heartbeat timer
@@ -402,8 +401,8 @@ namespace PepperDash.Core
if (myTcpServer == null) if (myTcpServer == null)
{ {
myTcpServer = new TCPServer(Port, MaxClients); myTcpServer = new TCPServer(Port, MaxClients);
if(HeartbeatRequired) if (HeartbeatRequired)
myTcpServer.SocketSendOrReceiveTimeOutInMs = (this.HeartbeatRequiredIntervalMs * 5); myTcpServer.SocketSendOrReceiveTimeOutInMs = HeartbeatRequiredIntervalMs * 5;
// myTcpServer.HandshakeTimeout = 30; // myTcpServer.HandshakeTimeout = 30;
} }
@@ -525,7 +524,7 @@ namespace PepperDash.Core
byte[] b = Encoding.GetEncoding(28591).GetBytes(text); byte[] b = Encoding.GetEncoding(28591).GetBytes(text);
foreach (uint i in ConnectedClientsIndexes) foreach (uint i in ConnectedClientsIndexes)
{ {
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(i))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(i))
{ {
SocketErrorCodes error = myTcpServer.SendDataAsync(i, b, b.Length, (x, y, z) => { }); SocketErrorCodes error = myTcpServer.SendDataAsync(i, b, b.Length, (x, y, z) => { });
if (error != SocketErrorCodes.SOCKET_OK && error != SocketErrorCodes.SOCKET_OPERATION_PENDING) if (error != SocketErrorCodes.SOCKET_OK && error != SocketErrorCodes.SOCKET_OPERATION_PENDING)
@@ -554,7 +553,7 @@ namespace PepperDash.Core
byte[] b = Encoding.GetEncoding(28591).GetBytes(text); byte[] b = Encoding.GetEncoding(28591).GetBytes(text);
if (myTcpServer != null && myTcpServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED) if (myTcpServer != null && myTcpServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
{ {
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))
myTcpServer.SendDataAsync(clientIndex, b, b.Length, (x, y, z) => { }); myTcpServer.SendDataAsync(clientIndex, b, b.Length, (x, y, z) => { });
} }
} }
@@ -618,9 +617,9 @@ namespace PepperDash.Core
public string GetClientIPAddress(uint clientIndex) public string GetClientIPAddress(uint clientIndex)
{ {
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress Index: {0}", clientIndex); Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress Index: {0}", clientIndex);
if (!SharedKeyRequired || (SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))) if (!SharedKeyRequired || SharedKeyRequired && ClientReadyAfterKeyExchange.Contains(clientIndex))
{ {
var ipa = this.myTcpServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex); var ipa = myTcpServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress IPAddreess: {0}", ipa); Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "GetClientIPAddress IPAddreess: {0}", ipa);
return ipa; return ipa;
@@ -645,7 +644,7 @@ namespace PepperDash.Core
address = myTcpServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex); address = myTcpServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Heartbeat not received for Client index {2} IP: {0}, DISCONNECTING BECAUSE HEARTBEAT REQUIRED IS TRUE {1}", Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Heartbeat not received for Client index {2} IP: {0}, DISCONNECTING BECAUSE HEARTBEAT REQUIRED IS TRUE {1}",
address, string.IsNullOrEmpty(HeartbeatStringToMatch) ? "" : ("HeartbeatStringToMatch: " + HeartbeatStringToMatch), clientIndex); address, string.IsNullOrEmpty(HeartbeatStringToMatch) ? "" : "HeartbeatStringToMatch: " + HeartbeatStringToMatch, clientIndex);
if (myTcpServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED) if (myTcpServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
SendTextToClient("Heartbeat not received by server, closing connection", clientIndex); SendTextToClient("Heartbeat not received by server, closing connection", clientIndex);
@@ -680,7 +679,7 @@ namespace PepperDash.Core
try try
{ {
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "SecureServerSocketStatusChange Index:{0} status:{1} Port:{2} IP:{3}", clientIndex, serverSocketStatus, this.myTcpServer.GetPortNumberServerAcceptedConnectionFromForSpecificClient(clientIndex), this.myTcpServer.GetLocalAddressServerAcceptedConnectionFromForSpecificClient(clientIndex)); Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "SecureServerSocketStatusChange Index:{0} status:{1} Port:{2} IP:{3}", clientIndex, serverSocketStatus, myTcpServer.GetPortNumberServerAcceptedConnectionFromForSpecificClient(clientIndex), myTcpServer.GetLocalAddressServerAcceptedConnectionFromForSpecificClient(clientIndex));
if (serverSocketStatus != SocketStatus.SOCKET_STATUS_CONNECTED) if (serverSocketStatus != SocketStatus.SOCKET_STATUS_CONNECTED)
{ {
if (ConnectedClientsIndexes.Contains(clientIndex)) if (ConnectedClientsIndexes.Contains(clientIndex))
@@ -796,7 +795,7 @@ namespace PepperDash.Core
try try
{ {
byte[] bytes = myTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex); byte[] bytes = myTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex);
received = System.Text.Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived); received = Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived);
if (WaitingForSharedKey.Contains(clientIndex)) if (WaitingForSharedKey.Contains(clientIndex))
{ {
received = received.Replace("\r", ""); received = received.Replace("\r", "");
@@ -938,8 +937,8 @@ namespace PepperDash.Core
void RunMonitorClient() void RunMonitorClient()
{ {
MonitorClient = new GenericTcpIpClient_ForServer(Key + "-MONITOR", "127.0.0.1", Port, 2000); MonitorClient = new GenericTcpIpClient_ForServer(Key + "-MONITOR", "127.0.0.1", Port, 2000);
MonitorClient.SharedKeyRequired = this.SharedKeyRequired; MonitorClient.SharedKeyRequired = SharedKeyRequired;
MonitorClient.SharedKey = this.SharedKey; MonitorClient.SharedKey = SharedKey;
MonitorClient.ConnectionHasHungCallback = MonitorClientHasHungCallback; MonitorClient.ConnectionHasHungCallback = MonitorClientHasHungCallback;
//MonitorClient.ConnectionChange += MonitorClient_ConnectionChange; //MonitorClient.ConnectionChange += MonitorClient_ConnectionChange;
MonitorClient.ClientReadyForCommunications += MonitorClient_IsReadyForComm; MonitorClient.ClientReadyForCommunications += MonitorClient_IsReadyForComm;

View File

@@ -1,21 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets; using Crestron.SimplSharp.CrestronSockets;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using PepperDash.Core.Logging;
using System;
using System.Linq;
using System.Text;
namespace PepperDash.Core.Comm
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Generic UDP Server device /// Generic UDP Server device
@@ -233,7 +225,7 @@ namespace PepperDash.Core
/// </summary> /// </summary>
public void Disconnect() public void Disconnect()
{ {
if(Server != null) if (Server != null)
Server.DisableUDPServer(); Server.DisableUDPServer();
IsConnected = false; IsConnected = false;

View File

@@ -1,10 +1,9 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic; using PepperDash.Core.Interfaces;
using System.Linq; using PepperDash.Core.Logging;
using System.Text; using System;
using Crestron.SimplSharp;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Allows for two simultaneous TCP clients to connect to a redundant pair of QSC Core DSPs and manages /// Allows for two simultaneous TCP clients to connect to a redundant pair of QSC Core DSPs and manages

View File

@@ -2,7 +2,7 @@
using Newtonsoft.Json; using Newtonsoft.Json;
namespace PepperDash.Core namespace PepperDash.Core.Comm
{ {
/// <summary> /// <summary>
/// Client config object for TCP client with server that inherits from TcpSshPropertiesConfig and adds properties for shared key and heartbeat /// Client config object for TCP client with server that inherits from TcpSshPropertiesConfig and adds properties for shared key and heartbeat

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.Comm
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Tcp Server Config object with properties for a tcp server with shared key and heartbeat capabilities /// Tcp Server Config object with properties for a tcp server with shared key and heartbeat capabilities

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.Comm
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Crestron Control Methods for a comm object /// Crestron Control Methods for a comm object

View File

@@ -1,243 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronSockets;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core
{
/// <summary>
/// An incoming communication stream
/// </summary>
public interface ICommunicationReceiver : IKeyed
{
/// <summary>
/// Notifies of bytes received
/// </summary>
event EventHandler<GenericCommMethodReceiveBytesArgs> BytesReceived;
/// <summary>
/// Notifies of text received
/// </summary>
event EventHandler<GenericCommMethodReceiveTextArgs> TextReceived;
/// <summary>
/// Indicates connection status
/// </summary>
bool IsConnected { get; }
/// <summary>
/// Connect to the device
/// </summary>
void Connect();
/// <summary>
/// Disconnect from the device
/// </summary>
void Disconnect();
}
/// <summary>
/// Represents a device that uses basic connection
/// </summary>
public interface IBasicCommunication : ICommunicationReceiver
{
/// <summary>
/// Send text to the device
/// </summary>
/// <param name="text"></param>
void SendText(string text);
/// <summary>
/// Send bytes to the device
/// </summary>
/// <param name="bytes"></param>
void SendBytes(byte[] bytes);
}
/// <summary>
/// Represents a device that implements IBasicCommunication and IStreamDebugging
/// </summary>
public interface IBasicCommunicationWithStreamDebugging : IBasicCommunication, IStreamDebugging
{
}
/// <summary>
/// Represents a device with stream debugging capablities
/// </summary>
public interface IStreamDebugging
{
/// <summary>
/// Object to enable stream debugging
/// </summary>
CommunicationStreamDebugging StreamDebugging { get; }
}
/// <summary>
/// For IBasicCommunication classes that have SocketStatus. GenericSshClient,
/// GenericTcpIpClient
/// </summary>
public interface ISocketStatus : IBasicCommunication
{
/// <summary>
/// Notifies of socket status changes
/// </summary>
event EventHandler<GenericSocketStatusChageEventArgs> ConnectionChange;
/// <summary>
/// The current socket status of the client
/// </summary>
SocketStatus ClientStatus { get; }
}
/// <summary>
/// Describes a device that implements ISocketStatus and IStreamDebugging
/// </summary>
public interface ISocketStatusWithStreamDebugging : ISocketStatus, IStreamDebugging
{
}
/// <summary>
/// Describes a device that can automatically attempt to reconnect
/// </summary>
public interface IAutoReconnect
{
/// <summary>
/// Enable automatic recconnect
/// </summary>
bool AutoReconnect { get; set; }
/// <summary>
/// Interval in ms to attempt automatic recconnections
/// </summary>
int AutoReconnectIntervalMs { get; set; }
}
/// <summary>
///
/// </summary>
public enum eGenericCommMethodStatusChangeType
{
/// <summary>
/// Connected
/// </summary>
Connected,
/// <summary>
/// Disconnected
/// </summary>
Disconnected
}
/// <summary>
/// This delegate defines handler for IBasicCommunication status changes
/// </summary>
/// <param name="comm">Device firing the status change</param>
/// <param name="status"></param>
public delegate void GenericCommMethodStatusHandler(IBasicCommunication comm, eGenericCommMethodStatusChangeType status);
/// <summary>
///
/// </summary>
public class GenericCommMethodReceiveBytesArgs : EventArgs
{
/// <summary>
///
/// </summary>
public byte[] Bytes { get; private set; }
/// <summary>
///
/// </summary>
/// <param name="bytes"></param>
public GenericCommMethodReceiveBytesArgs(byte[] bytes)
{
Bytes = bytes;
}
/// <summary>
/// S+ Constructor
/// </summary>
public GenericCommMethodReceiveBytesArgs() { }
}
/// <summary>
///
/// </summary>
public class GenericCommMethodReceiveTextArgs : EventArgs
{
/// <summary>
///
/// </summary>
public string Text { get; private set; }
/// <summary>
///
/// </summary>
public string Delimiter { get; private set; }
/// <summary>
///
/// </summary>
/// <param name="text"></param>
public GenericCommMethodReceiveTextArgs(string text)
{
Text = text;
}
/// <summary>
///
/// </summary>
/// <param name="text"></param>
/// <param name="delimiter"></param>
public GenericCommMethodReceiveTextArgs(string text, string delimiter)
:this(text)
{
Delimiter = delimiter;
}
/// <summary>
/// S+ Constructor
/// </summary>
public GenericCommMethodReceiveTextArgs() { }
}
/// <summary>
///
/// </summary>
public class ComTextHelper
{
/// <summary>
/// Gets escaped text for a byte array
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public static string GetEscapedText(byte[] bytes)
{
return String.Concat(bytes.Select(b => string.Format(@"[{0:X2}]", (int)b)).ToArray());
}
/// <summary>
/// Gets escaped text for a string
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string GetEscapedText(string text)
{
var bytes = Encoding.GetEncoding(28591).GetBytes(text);
return String.Concat(bytes.Select(b => string.Format(@"[{0:X2}]", (int)b)).ToArray());
}
/// <summary>
/// Gets debug text for a string
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string GetDebugText(string text)
{
return Regex.Replace(text, @"[^\u0020-\u007E]", a => GetEscapedText(a.Value));
}
}
}

View File

@@ -1,16 +1,11 @@
using System; using Crestron.SimplSharp.CrestronIO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Crestron.SimplSharp; using PepperDash.Core.Logging;
using Crestron.SimplSharp.CrestronIO; using System;
using System.Linq;
using PepperDash.Core;
namespace PepperDash.Core.Config namespace PepperDash.Core.Config
{ {
@@ -36,7 +31,7 @@ namespace PepperDash.Core.Config
using (StreamReader fs = new StreamReader(filePath)) using (StreamReader fs = new StreamReader(filePath))
{ {
var jsonObj = JObject.Parse(fs.ReadToEnd()); var jsonObj = JObject.Parse(fs.ReadToEnd());
if(jsonObj["template"] != null && jsonObj["system"] != null) if (jsonObj["template"] != null && jsonObj["system"] != null)
{ {
// it's a double-config, merge it. // it's a double-config, merge it.
var merged = MergeConfigs(jsonObj); var merged = MergeConfigs(jsonObj);

View File

@@ -1,10 +1,6 @@
using System; using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core namespace PepperDash.Core.Conversion
{ {
public class EncodingHelper public class EncodingHelper
{ {

View File

@@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core
{
/// <summary>
/// Unique key interface to require a unique key for the class
/// </summary>
public interface IKeyed
{
/// <summary>
/// Unique Key
/// </summary>
string Key { get; }
}
/// <summary>
/// Named Keyed device interface. Forces the devie to have a Unique Key and a name.
/// </summary>
public interface IKeyName : IKeyed
{
/// <summary>
/// Isn't it obvious :)
/// </summary>
string Name { get; }
}
}

View File

@@ -1,4 +1,6 @@
using System; using PepperDash.Core.Interfaces;
using PepperDash.Core.Logging;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;

View File

@@ -1,11 +1,7 @@
using Crestron.SimplSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Newtonsoft.Json; using Newtonsoft.Json;
using PepperDash.Core.Logging;
namespace PepperDash.Core namespace PepperDash.Core
{ {

View File

@@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core namespace PepperDash.Core
{ {

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.GenericRESTfulCommunications
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.GenericRESTfulCommunications
{ {
/// <summary> /// <summary>
/// Constants /// Constants

View File

@@ -1,10 +1,7 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.Net.Http; using Crestron.SimplSharp.Net.Http;
using Crestron.SimplSharp.Net.Https; using Crestron.SimplSharp.Net.Https;
using System;
namespace PepperDash.Core.GenericRESTfulCommunications namespace PepperDash.Core.GenericRESTfulCommunications
{ {
@@ -78,7 +75,7 @@ namespace PepperDash.Core.GenericRESTfulCommunications
client.KeepAlive = false; client.KeepAlive = false;
if(port >= 1 || port <= 65535) if (port >= 1 || port <= 65535)
client.Port = port; client.Port = port;
else else
client.Port = 80; client.Port = 80;
@@ -155,10 +152,10 @@ namespace PepperDash.Core.GenericRESTfulCommunications
CrestronConsole.PrintLine(string.Format("SubmitRequestHttp Response[{0}]: {1}", response.Code, response.ContentString.ToString())); CrestronConsole.PrintLine(string.Format("SubmitRequestHttp Response[{0}]: {1}", response.Code, response.ContentString.ToString()));
if(!string.IsNullOrEmpty(response.ContentString.ToString())) if (!string.IsNullOrEmpty(response.ContentString.ToString()))
OnStringChange(response.ContentString.ToString(), 0, GenericRESTfulConstants.ResponseStringChange); OnStringChange(response.ContentString.ToString(), 0, GenericRESTfulConstants.ResponseStringChange);
if(response.Code > 0) if (response.Code > 0)
OnUshrtChange((ushort)response.Code, 0, GenericRESTfulConstants.ResponseCodeChange); OnUshrtChange((ushort)response.Code, 0, GenericRESTfulConstants.ResponseCodeChange);
} }
@@ -196,7 +193,7 @@ namespace PepperDash.Core.GenericRESTfulCommunications
var msg = string.Format("EncodeBase64({0}, {1}) failed:\r{2}", username, password, e); var msg = string.Format("EncodeBase64({0}, {1}) failed:\r{2}", username, password, e);
CrestronConsole.PrintLine(msg); CrestronConsole.PrintLine(msg);
ErrorLog.Error(msg); ErrorLog.Error(msg);
return "" ; return "";
} }
return authorization; return authorization;

View File

@@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.JsonStandardObjects namespace PepperDash.Core.JsonStandardObjects
{ {

View File

@@ -1,12 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core.JsonToSimpl; using PepperDash.Core.JsonToSimpl;
using PepperDash.Core.Logging;
using System;
using System.Linq;
namespace PepperDash.Core.JsonStandardObjects namespace PepperDash.Core.JsonStandardObjects
{ {

View File

@@ -1,8 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.JsonStandardObjects namespace PepperDash.Core.JsonStandardObjects
{ {

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.JsonToSimpl
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.JsonToSimpl
{ {
/// <summary> /// <summary>
/// Constants for Simpl modules /// Constants for Simpl modules
@@ -108,7 +102,7 @@ namespace PepperDash.Core.JsonToSimpl
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public SPlusValueWrapper() {} public SPlusValueWrapper() { }
/// <summary> /// <summary>
/// ///

View File

@@ -1,8 +1,8 @@
using System; using Crestron.SimplSharp;
using PepperDash.Core.Logging;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Crestron.SimplSharp;
//using PepperDash.Core; //using PepperDash.Core;

View File

@@ -1,11 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core.Logging;
using System;
using System.Linq;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,11 +1,10 @@
using Newtonsoft.Json.Linq;
using PepperDash.Core.Interfaces;
using PepperDash.Core.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {
@@ -174,9 +173,11 @@ namespace PepperDash.Core.JsonToSimpl
} }
// Processes the path to a ushort, converting to ushort if able, twos complement if necessary, firing off UshrtChange event // Processes the path to a ushort, converting to ushort if able, twos complement if necessary, firing off UshrtChange event
void ProcessUshortPath(ushort index) { void ProcessUshortPath(ushort index)
{
string response; string response;
if (Process(UshortPaths[index], out response)) { if (Process(UshortPaths[index], out response))
{
ushort val; ushort val;
try { val = Convert.ToInt32(response) < 0 ? (ushort)(Convert.ToInt16(response) + 65536) : Convert.ToUInt16(response); } try { val = Convert.ToInt32(response) < 0 ? (ushort)(Convert.ToInt16(response) + 65536) : Convert.ToUInt16(response); }
catch { val = 0; } catch { val = 0; }

View File

@@ -1,14 +1,13 @@
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json.Linq;
using PepperDash.Core.Logging;
using System; using System;
//using System.IO; //using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,14 +1,4 @@
//using System.IO;
using System;
//using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,9 +1,10 @@
using System;
using System.Collections.Generic;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core.Logging;
using System;
using System.Collections.Generic;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,14 +1,13 @@
using Crestron.SimplSharp;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core.Interfaces;
using PepperDash.Core.Logging;
using System; using System;
//using System.IO; //using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,16 +1,14 @@
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json.Linq;
using PepperDash.Core.Config;
using PepperDash.Core.Logging;
using System; using System;
//using System.IO; //using System.IO;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Core.Config;
namespace PepperDash.Core.JsonToSimpl namespace PepperDash.Core.JsonToSimpl
{ {

View File

@@ -1,16 +1,15 @@
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Crestron.SimplSharp.CrestronLogger;
using Crestron.SimplSharp.Reflection;
using Newtonsoft.Json;
using PepperDash.Core.Interfaces;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using Crestron.SimplSharp;
using Crestron.SimplSharp.Reflection;
using Crestron.SimplSharp.CrestronLogger;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using PepperDash.Core.DebugThings;
namespace PepperDash.Core.Logging
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Contains debug commands for use in various situations /// Contains debug commands for use in various situations
@@ -115,7 +114,7 @@ namespace PepperDash.Core
Level = context.Level; Level = context.Level;
DoNotLoadOnNextBoot = context.DoNotLoadOnNextBoot; DoNotLoadOnNextBoot = context.DoNotLoadOnNextBoot;
if(DoNotLoadOnNextBoot) if (DoNotLoadOnNextBoot)
CrestronConsole.PrintLine(string.Format("Program {0} will not load config after next boot. Use console command go:{0} to load the config manually", InitialParametersClass.ApplicationNumber)); CrestronConsole.PrintLine(string.Format("Program {0} will not load config after next boot. Use console command go:{0} to load the config manually", InitialParametersClass.ApplicationNumber));
try try
@@ -140,7 +139,7 @@ namespace PepperDash.Core
var assembly = Assembly.GetExecutingAssembly(); var assembly = Assembly.GetExecutingAssembly();
var ver = var ver =
assembly assembly
.GetCustomAttributes(typeof (AssemblyInformationalVersionAttribute), false); .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false);
if (ver != null && ver.Length > 0) if (ver != null && ver.Length > 0)
{ {
@@ -213,7 +212,7 @@ namespace PepperDash.Core
return; return;
} }
SetDoNotLoadOnNextBoot(Boolean.Parse(stateString)); SetDoNotLoadOnNextBoot(bool.Parse(stateString));
} }
catch catch
{ {
@@ -385,7 +384,7 @@ namespace PepperDash.Core
return; return;
} }
if(Level < level) if (Level < level)
{ {
return; return;
} }
@@ -558,19 +557,19 @@ namespace PepperDash.Core
return string.Format(@"\user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber); return string.Format(@"\user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber);
} }
return string.Format("{0}{1}user{1}debugSettings{1}{2}.json",Directory.GetApplicationRootDirectory(), Path.DirectorySeparatorChar, InitialParametersClass.RoomId); return string.Format("{0}{1}user{1}debugSettings{1}{2}.json", Directory.GetApplicationRootDirectory(), Path.DirectorySeparatorChar, InitialParametersClass.RoomId);
} }
private static void CheckForMigration() private static void CheckForMigration()
{ {
var oldFilePath = String.Format(@"\nvram\debugSettings\program{0}", InitialParametersClass.ApplicationNumber); var oldFilePath = string.Format(@"\nvram\debugSettings\program{0}", InitialParametersClass.ApplicationNumber);
var newFilePath = String.Format(@"\user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber); var newFilePath = string.Format(@"\user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber);
//check for file at old path //check for file at old path
if (!File.Exists(oldFilePath)) if (!File.Exists(oldFilePath))
{ {
Console(0, ErrorLogLevel.Notice, Console(0, ErrorLogLevel.Notice,
String.Format( string.Format(
@"Debug settings file migration not necessary. Using file at \user\debugSettings\program{0}", @"Debug settings file migration not necessary. Using file at \user\debugSettings\program{0}",
InitialParametersClass.ApplicationNumber)); InitialParametersClass.ApplicationNumber));
@@ -584,7 +583,7 @@ namespace PepperDash.Core
} }
Console(0, ErrorLogLevel.Notice, Console(0, ErrorLogLevel.Notice,
String.Format( string.Format(
@"File found at \nvram\debugSettings\program{0}. Migrating to \user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber)); @"File found at \nvram\debugSettings\program{0}. Migrating to \user\debugSettings\program{0}", InitialParametersClass.ApplicationNumber));
//Copy file from old path to new path, then delete it. This will overwrite the existing file //Copy file from old path to new path, then delete it. This will overwrite the existing file

View File

@@ -1,17 +1,14 @@
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using PepperDash.Core.Interfaces;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Crestron.SimplSharp.CrestronDataStore;
using Crestron.SimplSharp.CrestronIO;
using Newtonsoft.Json;
using PepperDash.Core.DebugThings;
namespace PepperDash.Core.Logging
namespace PepperDash.Core
{ {
/// <summary> /// <summary>
/// Represents a debugging context /// Represents a debugging context

View File

@@ -1,11 +1,10 @@
using System.Collections.Generic;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Collections.Generic;
namespace PepperDash.Core.DebugThings namespace PepperDash.Core.Logging
{ {
/// <summary> /// <summary>
/// Class to persist current Debug settings across program restarts /// Class to persist current Debug settings across program restarts

View File

@@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core
{
/// <summary>
/// Not in use
/// </summary>
public static class NetworkComm
{
/// <summary>
/// Not in use
/// </summary>
static NetworkComm()
{
}
}
}

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.PasswordManagement
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.PasswordManagement
{ {
/// <summary> /// <summary>
/// JSON password configuration /// JSON password configuration

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.PasswordManagement
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.PasswordManagement
{ {
/// <summary> /// <summary>
/// Constants /// Constants

View File

@@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.PasswordManagement namespace PepperDash.Core.PasswordManagement
{ {

View File

@@ -1,14 +1,9 @@
using Crestron.SimplSharp;
using PepperDash.Core.Logging;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Crestron.SimplSharp;
using PepperDash.Core.JsonToSimpl;
using PepperDash.Core.JsonStandardObjects;
namespace PepperDash.Core.PasswordManagement namespace PepperDash.Core.PasswordManagement
{ {
@@ -91,7 +86,7 @@ namespace PepperDash.Core.PasswordManagement
try try
{ {
// if key exists, update the value // if key exists, update the value
if(_passwords.ContainsKey(key)) if (_passwords.ContainsKey(key))
_passwords[key] = password; _passwords[key] = password;
// else add the key & value // else add the key & value
else else

View File

@@ -1,53 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RootNamespace>PepperDash.Core</RootNamespace>
<AssemblyName>PepperDashCore</AssemblyName>
<TargetFramework>net472</TargetFramework>
<Deterministic>false</Deterministic>
<NeutralLanguage>en</NeutralLanguage>
<OutputPath>bin\$(Configuration)\</OutputPath>
<SignAssembly>False</SignAssembly>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Title>PepperDash Core</Title>
<Company>PepperDash Technologies</Company>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/PepperDash/PepperDashCore</RepositoryUrl>
<PackageTags>crestron;4series;</PackageTags>
<Version>$(Version)</Version>
<PackageOutputPath>../../package</PackageOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugType>full</DebugType>
<DefineConstants>TRACE;DEBUG;SERIES4</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DocumentationFile>bin\4Series\$(Configuration)\PepperDashCore.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Crestron.SimplSharp.SDK.Library" Version="2.19.35" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2">
<Aliases></Aliases>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Compile Remove="Comm\._GenericSshClient.cs" />
<Compile Remove="Comm\._GenericTcpIpClient.cs" />
<Compile Remove="Comm\DynamicTCPServer.cs" />
<Compile Remove="PasswordManagement\OLD-ARRAY-Config.cs" />
<Compile Remove="PasswordManagement\OLD-ARRAY-PasswordClient.cs" />
<Compile Remove="PasswordManagement\OLD-ARRAY-PasswordManager.cs" />
</ItemGroup>
<Target Name="SimplSharpNewtonsoft" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'SimplSharpNewtonsoft'">
<Aliases>crestron</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
</Project>

View File

@@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.SystemInfo namespace PepperDash.Core.SystemInfo
{ {

View File

@@ -1,10 +1,4 @@
using System; namespace PepperDash.Core.SystemInfo
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.SystemInfo
{ {
/// <summary> /// <summary>
/// Processor info class /// Processor info class

View File

@@ -1,8 +1,5 @@
using System; using Crestron.SimplSharp;
using System.Collections.Generic; using System;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.SystemInfo namespace PepperDash.Core.SystemInfo
{ {
@@ -134,11 +131,11 @@ namespace PepperDash.Core.SystemInfo
string[] dnsList = dns.Split(','); string[] dnsList = dns.Split(',');
for (var i = 0; i < dnsList.Length; i++) for (var i = 0; i < dnsList.Length; i++)
{ {
if(i == 0) if (i == 0)
adapter.Dns1 = !string.IsNullOrEmpty(dnsList[0]) ? dnsList[0] : "0.0.0.0"; adapter.Dns1 = !string.IsNullOrEmpty(dnsList[0]) ? dnsList[0] : "0.0.0.0";
if(i == 1) if (i == 1)
adapter.Dns2 = !string.IsNullOrEmpty(dnsList[1]) ? dnsList[1] : "0.0.0.0"; adapter.Dns2 = !string.IsNullOrEmpty(dnsList[1]) ? dnsList[1] : "0.0.0.0";
if(i == 2) if (i == 2)
adapter.Dns3 = !string.IsNullOrEmpty(dnsList[2]) ? dnsList[2] : "0.0.0.0"; adapter.Dns3 = !string.IsNullOrEmpty(dnsList[2]) ? dnsList[2] : "0.0.0.0";
} }
} }

View File

@@ -1,12 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using Newtonsoft.Json;
namespace PepperDash.Core.WebApi.Presets namespace PepperDash.Core.WebApi.Presets

View File

@@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
namespace PepperDash.Core.WebApi.Presets namespace PepperDash.Core.WebApi.Presets
{ {

View File

@@ -1,17 +1,15 @@
using System;
using System.Text;
using Crestron.SimplSharp; // For Basic SIMPL# Classes using Crestron.SimplSharp; // For Basic SIMPL# Classes
using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp.CrestronIO;
using Crestron.SimplSharp.Net;
using Crestron.SimplSharp.Net.Http; using Crestron.SimplSharp.Net.Http;
using Crestron.SimplSharp.Net.Https; using Crestron.SimplSharp.Net.Https;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core.Interfaces;
using PepperDash.Core;
using PepperDash.Core.JsonToSimpl; using PepperDash.Core.JsonToSimpl;
using PepperDash.Core.Logging;
using System;
namespace PepperDash.Core.WebApi.Presets namespace PepperDash.Core.WebApi.Presets

View File

@@ -1,7 +1,7 @@
using PepperDash.Core.XSigUtility.Tokens;
using System.Collections.Generic; using System.Collections.Generic;
using PepperDash.Core.Intersystem.Tokens;
namespace PepperDash.Core.Intersystem.Serialization namespace PepperDash.Core.XSigUtility.Serialization
{ {
/// <summary> /// <summary>
/// Interface to determine XSig serialization for an object. /// Interface to determine XSig serialization for an object.

View File

@@ -1,6 +1,6 @@
using System; using System;
namespace PepperDash.Core.Intersystem.Serialization namespace PepperDash.Core.XSigUtility.Serialization
{ {
/// <summary> /// <summary>
/// Class to handle this specific exception type /// Class to handle this specific exception type

View File

@@ -1,6 +1,6 @@
using System; using System;
namespace PepperDash.Core.Intersystem.Tokens namespace PepperDash.Core.XSigUtility.Tokens
{ {
/// <summary> /// <summary>
/// Represents an XSigAnalogToken /// Represents an XSigAnalogToken
@@ -47,8 +47,8 @@ namespace PepperDash.Core.Intersystem.Tokens
public override byte[] GetBytes() public override byte[] GetBytes()
{ {
return new[] { return new[] {
(byte)(0xC0 | ((Value & 0xC000) >> 10) | (Index - 1 >> 7)), (byte)(0xC0 | (Value & 0xC000) >> 10 | Index - 1 >> 7),
(byte)((Index - 1) & 0x7F), (byte)(Index - 1 & 0x7F),
(byte)((Value & 0x3F80) >> 7), (byte)((Value & 0x3F80) >> 7),
(byte)(Value & 0x7F) (byte)(Value & 0x7F)
}; };

View File

@@ -1,6 +1,6 @@
using System; using System;
namespace PepperDash.Core.Intersystem.Tokens namespace PepperDash.Core.XSigUtility.Tokens
{ {
/// <summary> /// <summary>
/// Represents an XSigDigitalToken /// Represents an XSigDigitalToken
@@ -47,8 +47,8 @@ namespace PepperDash.Core.Intersystem.Tokens
public override byte[] GetBytes() public override byte[] GetBytes()
{ {
return new[] { return new[] {
(byte)(0x80 | (Value ? 0 : 0x20) | ((Index - 1) >> 7)), (byte)(0x80 | (Value ? 0 : 0x20) | Index - 1 >> 7),
(byte)((Index - 1) & 0x7F) (byte)(Index - 1 & 0x7F)
}; };
} }

View File

@@ -1,7 +1,7 @@
using System; using System;
using System.Text; using System.Text;
namespace PepperDash.Core.Intersystem.Tokens namespace PepperDash.Core.XSigUtility.Tokens
{ {
/// <summary> /// <summary>
/// Represents an XSigSerialToken /// Represents an XSigSerialToken
@@ -47,11 +47,11 @@ namespace PepperDash.Core.Intersystem.Tokens
/// <returns></returns> /// <returns></returns>
public override byte[] GetBytes() public override byte[] GetBytes()
{ {
var serialBytes = String.IsNullOrEmpty(Value) ? new byte[0] : Encoding.GetEncoding(28591).GetBytes(Value); var serialBytes = string.IsNullOrEmpty(Value) ? new byte[0] : Encoding.GetEncoding(28591).GetBytes(Value);
var xsig = new byte[serialBytes.Length + 3]; var xsig = new byte[serialBytes.Length + 3];
xsig[0] = (byte)(0xC8 | (Index - 1 >> 7)); xsig[0] = (byte)(0xC8 | Index - 1 >> 7);
xsig[1] = (byte)((Index - 1) & 0x7F); xsig[1] = (byte)(Index - 1 & 0x7F);
xsig[xsig.Length - 1] = 0xFF; xsig[xsig.Length - 1] = 0xFF;
Buffer.BlockCopy(serialBytes, 0, xsig, 2, serialBytes.Length); Buffer.BlockCopy(serialBytes, 0, xsig, 2, serialBytes.Length);

View File

@@ -1,4 +1,4 @@
namespace PepperDash.Core.Intersystem.Tokens namespace PepperDash.Core.XSigUtility.Tokens
{ {
/// <summary> /// <summary>
/// Represents the base class for all XSig datatypes. /// Represents the base class for all XSig datatypes.

View File

@@ -1,4 +1,4 @@
namespace PepperDash.Core.Intersystem.Tokens namespace PepperDash.Core.XSigUtility.Tokens
{ {
/// <summary> /// <summary>
/// XSig token types. /// XSig token types.

View File

@@ -1,8 +1,7 @@
using Crestron.SimplSharp.CrestronIO;
using PepperDash.Core.XSigUtility.Serialization;
using System; using System;
using System.Linq; using System.Linq;
using Crestron.SimplSharp.CrestronIO;
using PepperDash.Core.Intersystem.Serialization;
using PepperDash.Core.Intersystem.Tokens;
/* /*
Digital (2 bytes) Digital (2 bytes)
@@ -18,7 +17,7 @@ using PepperDash.Core.Intersystem.Tokens;
11111111 <- denotes end of data 11111111 <- denotes end of data
*/ */
namespace PepperDash.Core.Intersystem namespace PepperDash.Core.XSigUtility
{ {
/// <summary> /// <summary>
/// Helper methods for creating XSig byte sequences compatible with the Intersystem Communications (ISC) symbol. /// Helper methods for creating XSig byte sequences compatible with the Intersystem Communications (ISC) symbol.

View File

@@ -1,10 +1,10 @@
using Crestron.SimplSharp.CrestronIO;
using PepperDash.Core.XSigUtility.Serialization;
using PepperDash.Core.XSigUtility.Tokens;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Crestron.SimplSharp.CrestronIO;
using PepperDash.Core.Intersystem.Serialization;
using PepperDash.Core.Intersystem.Tokens;
namespace PepperDash.Core.Intersystem namespace PepperDash.Core.XSigUtility
{ {
/// <summary> /// <summary>
/// XSigToken stream reader. /// XSigToken stream reader.
@@ -56,7 +56,7 @@ namespace PepperDash.Core.Intersystem
var buffer = new byte[2]; var buffer = new byte[2];
stream.Read(buffer, 0, 2); stream.Read(buffer, 0, 2);
value = (ushort)((buffer[0] << 8) | buffer[1]); value = (ushort)(buffer[0] << 8 | buffer[1]);
return true; return true;
} }
@@ -73,7 +73,7 @@ namespace PepperDash.Core.Intersystem
if ((prefix & 0xF880) == 0xC800) // Serial data if ((prefix & 0xF880) == 0xC800) // Serial data
{ {
var index = ((prefix & 0x0700) >> 1) | (prefix & 0x7F); var index = (prefix & 0x0700) >> 1 | prefix & 0x7F;
var n = 0; var n = 0;
const int maxSerialDataLength = 252; const int maxSerialDataLength = 252;
var chars = new char[maxSerialDataLength]; var chars = new char[maxSerialDataLength];
@@ -95,14 +95,14 @@ namespace PepperDash.Core.Intersystem
if (!TryReadUInt16BE(_stream, out data)) if (!TryReadUInt16BE(_stream, out data))
return null; return null;
var index = ((prefix & 0x0700) >> 1) | (prefix & 0x7F); var index = (prefix & 0x0700) >> 1 | prefix & 0x7F;
var value = ((prefix & 0x3000) << 2) | ((data & 0x7F00) >> 1) | (data & 0x7F); var value = (prefix & 0x3000) << 2 | (data & 0x7F00) >> 1 | data & 0x7F;
return new XSigAnalogToken((ushort)(index + 1), (ushort)value); return new XSigAnalogToken((ushort)(index + 1), (ushort)value);
} }
if ((prefix & 0xC080) == 0x8000) // Digital data if ((prefix & 0xC080) == 0x8000) // Digital data
{ {
var index = ((prefix & 0x1F00) >> 1) | (prefix & 0x7F); var index = (prefix & 0x1F00) >> 1 | prefix & 0x7F;
var value = (prefix & 0x2000) == 0; var value = (prefix & 0x2000) == 0;
return new XSigDigitalToken((ushort)(index + 1), value); return new XSigDigitalToken((ushort)(index + 1), value);
} }

View File

@@ -1,11 +1,11 @@
using System;
using System.Linq;
using System.Collections.Generic;
using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp.CrestronIO;
using PepperDash.Core.Intersystem.Serialization; using PepperDash.Core.XSigUtility.Serialization;
using PepperDash.Core.Intersystem.Tokens; using PepperDash.Core.XSigUtility.Tokens;
using System;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Core.Intersystem namespace PepperDash.Core.XSigUtility
{ {
/// <summary> /// <summary>
/// XSigToken stream writer. /// XSigToken stream writer.