mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-18 22:24:48 +00:00
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:
@@ -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 })
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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...
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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>
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
|
||||||
Binary file not shown.
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
namespace PepperDash.Core.Intersystem.Tokens
|
namespace PepperDash.Core.XSigUtility.Tokens
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// XSig token types.
|
/// XSig token types.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user