diff --git a/src/PepperDash.Essentials.Core/Comm and IR/ComPortController.cs b/src/PepperDash.Essentials.Core/Comm and IR/ComPortController.cs
index 15050ebf..746fd317 100644
--- a/src/PepperDash.Essentials.Core/Comm and IR/ComPortController.cs
+++ b/src/PepperDash.Essentials.Core/Comm and IR/ComPortController.cs
@@ -9,52 +9,53 @@ using Crestron.SimplSharpPro;
using PepperDash.Core;
using Serilog.Events;
using PepperDash.Core.Logging;
+using Crestron.SimplSharpPro.GeneralIO;
namespace PepperDash.Essentials.Core
{
- ///
- /// Represents a ComPortController
- ///
+ ///
+ /// Represents a ComPortController
+ ///
public class ComPortController : Device, IBasicCommunicationWithStreamDebugging
{
- ///
- /// Gets or sets the StreamDebugging
- ///
- public CommunicationStreamDebugging StreamDebugging { get; private set; }
+ ///
+ /// Gets or sets the StreamDebugging
+ ///
+ public CommunicationStreamDebugging StreamDebugging { get; private set; }
public event EventHandler BytesReceived;
public event EventHandler TextReceived;
- ///
- /// Gets or sets the IsConnected
- ///
+ ///
+ /// Gets or sets the IsConnected
+ ///
public bool IsConnected { get { return true; } }
ComPort Port;
ComPort.ComPortSpec Spec;
- public ComPortController(string key, Func postActivationFunc,
- ComPort.ComPortSpec spec, EssentialsControlPropertiesConfig config) : base(key)
- {
- StreamDebugging = new CommunicationStreamDebugging(key);
+ public ComPortController(string key, Func postActivationFunc,
+ ComPort.ComPortSpec spec, EssentialsControlPropertiesConfig config) : base(key)
+ {
+ StreamDebugging = new CommunicationStreamDebugging(key);
- Spec = spec;
+ Spec = spec;
- AddPostActivationAction(() =>
- {
- Port = postActivationFunc(config);
+ AddPostActivationAction(() =>
+ {
+ Port = postActivationFunc(config);
- RegisterAndConfigureComPort();
- });
- }
+ RegisterAndConfigureComPort();
+ });
+ }
public ComPortController(string key, ComPort port, ComPort.ComPortSpec spec)
: base(key)
{
if (port == null)
{
- Debug.LogMessage(LogEventLevel.Information, this, "ERROR: Invalid com port, continuing but comms will not function");
+ Debug.LogMessage(LogEventLevel.Information, this, "ERROR: Invalid com port, continuing but comms will not function");
return;
}
@@ -65,14 +66,14 @@ namespace PepperDash.Essentials.Core
RegisterAndConfigureComPort();
}
- private void RegisterAndConfigureComPort()
- {
- if (Port == null)
- {
- Debug.LogMessage(LogEventLevel.Information, this, "Configured com Port for this device does not exist.");
- return;
- }
- if (Port.Parent is CrestronControlSystem)
+ private void RegisterAndConfigureComPort()
+ {
+ if (Port == null)
+ {
+ Debug.LogMessage(LogEventLevel.Information, this, "Configured com Port for this device does not exist.");
+ return;
+ }
+ if (Port.Parent is CrestronControlSystem || Port.Parent is CenIoCom102)
{
var result = Port.Register();
if (result != eDeviceRegistrationUnRegistrationResponse.Success)
@@ -82,19 +83,6 @@ namespace PepperDash.Essentials.Core
}
}
- Port.PropertyChanged += (s, e) =>
- {
- this.LogInformation($"RegisterAndConfigureComPort: PropertyChanged Fired >> comPort-'{Port.ID}', Property Changed-'{e.Property}', Value Changed-'{e.Value}'");
- this.LogInformation($"RegisterAndConfigureComPort: deviceName-'{Port.DeviceName}', parentDevice-'{Port.ParentDevice}', parent-`{Port.Parent}`, online-`{Port.IsOnline}`, preset-`{Port.Present}`, supportedBaudRates-'{Port.SupportedBaudRates}'");
- };
- Port.ExtendedInformationChanged += (s, e) =>
- {
- this.LogInformation($"RegisterAndConfigureComPort: ExtendedInformationChanged Fired >> comPort-'{Port.ID}', {e.Protocol} using {e.BaudRate},{e.Parity},{e.DataBits},{e.StopBits}, HW Handshake-'{e.HardwareHandshakeSetting}', SW Handshake-'{e.SoftwareHandshakeSetting}'");
- };
-
-
- this.LogInformation($"RegisterAndConfigureComPort: Configuring comPort-'{Port.ID}' using Spec {Spec.BaudRate},{Spec.DataBits},{Spec.Parity},{Spec.StopBits}, HW Handshake-'{Spec.HardwareHandShake}', SW Handshake-'{Spec.SoftwareHandshake}'");
-
var specResult = Port.SetComPortSpec(Spec);
if (specResult != 0)
{
@@ -102,50 +90,82 @@ namespace PepperDash.Essentials.Core
return;
}
- this.LogInformation($"RegisterAndConfigureComPort: comPort-'{Port.ID}' configured successfully using {Port.BaudRate},{Port.DataBits},{Port.Parity},{Port.StopBits}, HW Handshake-'{Port.HwHandShake}', SW Handshake-'{Port.SwHandShake}'");
+ //this.LogInformation($"RegisterAndConfigureComPort: Port.Parent-'{Port.Parent}', Port.ParentDevice-'{Port.ParentDevice}'");
+
+ // if (Port.Parent is CenIoCom102)
+ // {
+ // this.LogInformation($"RegisterAndConfigureComPort: ");
+ // Port.Register();
+
+ // Port.PropertyChanged += (s, e) =>
+ // {
+ // this.LogInformation($"RegisterAndConfigureComPort: PropertyChanged Fired >> comPort-'{Port.ID}', Property Changed-'{e.Property}', Value Changed-'{e.Value}'");
+ // this.LogInformation($"RegisterAndConfigureComPort: deviceName-'{Port.DeviceName}', parentDevice-'{Port.ParentDevice}', parent-`{Port.Parent}`, online-`{Port.IsOnline}`, preset-`{Port.Present}`, supportedBaudRates-'{Port.SupportedBaudRates}'");
+ // };
+ // Port.ExtendedInformationChanged += (s, e) =>
+ // {
+ // this.LogInformation($@"RegisterAndConfigureComPort: ExtendedInformationChanged Fired >> comPort-'{Port.ID}', {e.Protocol} using `
+ // {e.BaudRate},
+ // {e.Parity},
+ // {e.DataBits},
+ // {e.StopBits},
+ // HW Handshake-'{e.HardwareHandshakeSetting}',
+ // SW Handshake-'{e.SoftwareHandshakeSetting}'");
+ // };
+
+ // this.LogInformation($@"RegisterAndConfigureComPort: Configuring comPort-'{Port.ID}' using Spec
+ // {Spec.BaudRate},
+ // {Spec.DataBits},
+ // {Spec.Parity},
+ // {Spec.StopBits},
+ // HW Handshake-'{Spec.HardwareHandShake}',
+ // SW Handshake-'{Spec.SoftwareHandshake}'");
+
+
+ // }
Port.SerialDataReceived += Port_SerialDataReceived;
- }
+ }
- ~ComPortController()
+ ~ComPortController()
{
Port.SerialDataReceived -= Port_SerialDataReceived;
}
void Port_SerialDataReceived(ComPort ReceivingComPort, ComPortSerialDataEventArgs args)
{
- OnDataReceived(args.SerialData);
+ OnDataReceived(args.SerialData);
}
- void OnDataReceived(string s)
- {
+ void OnDataReceived(string s)
+ {
var eventSubscribed = false;
- var bytesHandler = BytesReceived;
- if (bytesHandler != null)
- {
- var bytes = Encoding.GetEncoding(28591).GetBytes(s);
+ var bytesHandler = BytesReceived;
+ if (bytesHandler != null)
+ {
+ var bytes = Encoding.GetEncoding(28591).GetBytes(s);
if (StreamDebugging.RxStreamDebuggingIsEnabled)
Debug.LogMessage(LogEventLevel.Information, this, "Received: '{0}'", ComTextHelper.GetEscapedText(bytes));
- bytesHandler(this, new GenericCommMethodReceiveBytesArgs(bytes));
+ bytesHandler(this, new GenericCommMethodReceiveBytesArgs(bytes));
eventSubscribed = true;
- }
- var textHandler = TextReceived;
- if (textHandler != null)
- {
+ }
+ var textHandler = TextReceived;
+ if (textHandler != null)
+ {
if (StreamDebugging.RxStreamDebuggingIsEnabled)
Debug.LogMessage(LogEventLevel.Information, this, "Received: '{0}'", s);
- textHandler(this, new GenericCommMethodReceiveTextArgs(s));
+ textHandler(this, new GenericCommMethodReceiveTextArgs(s));
eventSubscribed = true;
- }
+ }
- if(!eventSubscribed) Debug.LogMessage(LogEventLevel.Warning, this, "Received data but no handler is registered");
- }
+ if (!eventSubscribed) Debug.LogMessage(LogEventLevel.Warning, this, "Received data but no handler is registered");
+ }
- ///
- /// Deactivate method
- ///
- ///
+ ///
+ /// Deactivate method
+ ///
+ ///
public override bool Deactivate()
{
return Port.UnRegister() == eDeviceRegistrationUnRegistrationResponse.Success;
@@ -153,70 +173,70 @@ namespace PepperDash.Essentials.Core
#region IBasicCommunication Members
- ///
- /// SendText method
- ///
+ ///
+ /// SendText method
+ ///
public void SendText(string text)
{
if (Port == null)
return;
- if (StreamDebugging.TxStreamDebuggingIsEnabled)
- Debug.LogMessage(LogEventLevel.Information, this, "Sending {0} characters of text: '{1}'", text.Length, text);
- Port.Send(text);
+ if (StreamDebugging.TxStreamDebuggingIsEnabled)
+ Debug.LogMessage(LogEventLevel.Information, this, "Sending {0} characters of text: '{1}'", text.Length, text);
+ Port.Send(text);
}
- ///
- /// SendBytes method
- ///
+ ///
+ /// SendBytes method
+ ///
public void SendBytes(byte[] bytes)
{
if (Port == null)
return;
var text = Encoding.GetEncoding(28591).GetString(bytes, 0, bytes.Length);
- if (StreamDebugging.TxStreamDebuggingIsEnabled)
- Debug.LogMessage(LogEventLevel.Information, this, "Sending {0} bytes: '{1}'", bytes.Length, ComTextHelper.GetEscapedText(bytes));
+ if (StreamDebugging.TxStreamDebuggingIsEnabled)
+ Debug.LogMessage(LogEventLevel.Information, this, "Sending {0} bytes: '{1}'", bytes.Length, ComTextHelper.GetEscapedText(bytes));
Port.Send(text);
}
- ///
- /// Connect method
- ///
+ ///
+ /// Connect method
+ ///
public void Connect()
- {
+ {
}
- ///
- /// Disconnect method
- ///
+ ///
+ /// Disconnect method
+ ///
public void Disconnect()
{
}
#endregion
- ///
- ///
- ///
- ///
- ///
- /// SimulateReceive method
- ///
- public void SimulateReceive(string s)
- {
- // split out hex chars and build string
- var split = Regex.Split(s, @"(\\[Xx][0-9a-fA-F][0-9a-fA-F])");
- StringBuilder b = new StringBuilder();
- foreach (var t in split)
- {
- if (t.StartsWith(@"\") && t.Length == 4)
- b.Append((char)(Convert.ToByte(t.Substring(2, 2), 16)));
- else
- b.Append(t);
- }
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// SimulateReceive method
+ ///
+ public void SimulateReceive(string s)
+ {
+ // split out hex chars and build string
+ var split = Regex.Split(s, @"(\\[Xx][0-9a-fA-F][0-9a-fA-F])");
+ StringBuilder b = new StringBuilder();
+ foreach (var t in split)
+ {
+ if (t.StartsWith(@"\") && t.Length == 4)
+ b.Append((char)(Convert.ToByte(t.Substring(2, 2), 16)));
+ else
+ b.Append(t);
+ }
- OnDataReceived(b.ToString());
- }
+ OnDataReceived(b.ToString());
+ }
}
}
\ No newline at end of file