diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/Comm and IR/CommFactory.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/Comm and IR/CommFactory.cs
index 23aea272..568f7bed 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/Comm and IR/CommFactory.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Config/Comm and IR/CommFactory.cs
@@ -1,196 +1,196 @@
-using System;
-using Crestron.SimplSharp;
-using Crestron.SimplSharpPro;
-using Crestron.SimplSharpPro.DM;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using PepperDash.Core;
-using PepperDash.Essentials.Core.Config;
-
-namespace PepperDash.Essentials.Core
-{
- ///
- ///
- ///
- public class CommFactory
- {
- public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig)
- {
- try
- {
- return JsonConvert.DeserializeObject
- (deviceConfig.Properties["control"].ToString());
- //Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig));
- }
- catch (Exception e)
- {
-
- Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e);
- return null;
- }
- }
-
-
- ///
- /// Returns a comm method of either com port, TCP, SSH, and puts this into the DeviceManager
- ///
- /// The Device config object
- public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig)
- {
- EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig);
- if (controlConfig == null)
- return null;
-
- IBasicCommunication comm = null;
- try
- {
- var c = controlConfig.TcpSshProperties;
- switch (controlConfig.Method)
- {
- case eControlMethod.Com:
- comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams);
- break;
- case eControlMethod.Cec:
- comm = new CecPortController(deviceConfig.Key + "-cec", GetCecPort(controlConfig));
- break;
- case eControlMethod.IR:
- break;
- case eControlMethod.Ssh:
- {
- var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password);
- ssh.AutoReconnect = c.AutoReconnect;
- if(ssh.AutoReconnect)
- ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
- comm = ssh;
- break;
- }
- case eControlMethod.Tcpip:
- {
- var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize);
- tcp.AutoReconnect = c.AutoReconnect;
- if (tcp.AutoReconnect)
- tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
- comm = tcp;
- break;
- }
- case eControlMethod.Udp:
- {
- var udp = new GenericUdpServer(deviceConfig.Key + "-udp", c.Address, c.Port, c.BufferSize);
- comm = udp;
- break;
- }
- case eControlMethod.Telnet:
- break;
- default:
- break;
- }
- }
- catch (Exception e)
- {
- Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}",
- deviceConfig.Properties.ToString(), e);
- }
-
- // put it in the device manager if it's the right flavor
- var comDev = comm as Device;
- if (comDev != null)
- DeviceManager.AddDevice(comDev);
- return comm;
- }
-
- public static ComPort GetComPort(EssentialsControlPropertiesConfig config)
- {
- var comPar = config.ComParams;
- var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey);
- if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts)
- return dev.ComPorts[config.ControlPortNumber];
- Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber);
- return null;
- }
-
- ///
- /// Gets an ICec port from a RoutingInput or RoutingOutput on a device
- ///
- ///
- ///
- public static ICec GetCecPort(ControlPropertiesConfig config)
- {
- var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
-
- if (dev != null)
- {
- var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName];
-
- if (inputPort != null)
- if (inputPort.Port is ICec)
- return inputPort.Port as ICec;
-
- var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName];
-
- if (outputPort != null)
- if (outputPort.Port is ICec)
- return outputPort.Port as ICec;
- }
- Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called: '{1}'", config.ControlPortDevKey, config.ControlPortName);
- return null;
- }
-
- ///
- /// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will
- /// return the ControlSystem object from the Global class.
- ///
- /// IComPorts device or null if the device is not found or does not implement IComPorts
- public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey)
- {
- if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase)
- || ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase))
- && Global.ControlSystem is IComPorts)
- return Global.ControlSystem;
- else
- {
- var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts;
- if (dev == null)
- Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey);
- return dev;
- }
- }
- }
-
- ///
- ///
- ///
- public class EssentialsControlPropertiesConfig :
- PepperDash.Core.ControlPropertiesConfig
- {
-
- [JsonConverter(typeof(ComSpecJsonConverter))]
- public ComPort.ComPortSpec ComParams { get; set; }
-
- public string CresnetId { get; set; }
-
- ///
- /// Attempts to provide uint conversion of string CresnetId
- ///
- public uint CresnetIdInt
- {
- get
- {
- try
- {
- return Convert.ToUInt32(CresnetId, 16);
- }
- catch (Exception)
- {
- throw new FormatException(string.Format("ERROR:Unable to convert Cresnet ID: {0} to hex. Error:\n{1}", CresnetId));
- }
- }
- }
- }
-
- public class IrControlSpec
- {
- public string PortDeviceKey { get; set; }
- public uint PortNumber { get; set; }
- public string File { get; set; }
- }
+using System;
+using Crestron.SimplSharp;
+using Crestron.SimplSharpPro;
+using Crestron.SimplSharpPro.DM;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using PepperDash.Core;
+using PepperDash.Essentials.Core.Config;
+
+namespace PepperDash.Essentials.Core
+{
+ ///
+ ///
+ ///
+ public class CommFactory
+ {
+ public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig)
+ {
+ try
+ {
+ return JsonConvert.DeserializeObject
+ (deviceConfig.Properties["control"].ToString());
+ //Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig));
+ }
+ catch (Exception e)
+ {
+
+ Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e);
+ return null;
+ }
+ }
+
+
+ ///
+ /// Returns a comm method of either com port, TCP, SSH, and puts this into the DeviceManager
+ ///
+ /// The Device config object
+ public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig)
+ {
+ EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig);
+ if (controlConfig == null)
+ return null;
+
+ IBasicCommunication comm = null;
+ try
+ {
+ var c = controlConfig.TcpSshProperties;
+ switch (controlConfig.Method)
+ {
+ case eControlMethod.Com:
+ comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams);
+ break;
+ case eControlMethod.Cec:
+ comm = new CecPortController(deviceConfig.Key + "-cec", GetCecPort(controlConfig));
+ break;
+ case eControlMethod.IR:
+ break;
+ case eControlMethod.Ssh:
+ {
+ var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password);
+ ssh.AutoReconnect = c.AutoReconnect;
+ if(ssh.AutoReconnect)
+ ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
+ comm = ssh;
+ break;
+ }
+ case eControlMethod.Tcpip:
+ {
+ var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize);
+ tcp.AutoReconnect = c.AutoReconnect;
+ if (tcp.AutoReconnect)
+ tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
+ comm = tcp;
+ break;
+ }
+ case eControlMethod.Udp:
+ {
+ var udp = new GenericUdpServer(deviceConfig.Key + "-udp", c.Address, c.Port, c.BufferSize);
+ comm = udp;
+ break;
+ }
+ case eControlMethod.Telnet:
+ break;
+ default:
+ break;
+ }
+ }
+ catch (Exception e)
+ {
+ Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}",
+ deviceConfig.Properties.ToString(), e);
+ }
+
+ // put it in the device manager if it's the right flavor
+ var comDev = comm as Device;
+ if (comDev != null)
+ DeviceManager.AddDevice(comDev);
+ return comm;
+ }
+
+ public static ComPort GetComPort(EssentialsControlPropertiesConfig config)
+ {
+ var comPar = config.ComParams;
+ var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey);
+ if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts)
+ return dev.ComPorts[config.ControlPortNumber];
+ Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber);
+ return null;
+ }
+
+ ///
+ /// Gets an ICec port from a RoutingInput or RoutingOutput on a device
+ ///
+ ///
+ ///
+ public static ICec GetCecPort(ControlPropertiesConfig config)
+ {
+ var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
+
+ if (dev != null)
+ {
+ var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName];
+
+ if (inputPort != null)
+ if (inputPort.Port is ICec)
+ return inputPort.Port as ICec;
+
+ var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName];
+
+ if (outputPort != null)
+ if (outputPort.Port is ICec)
+ return outputPort.Port as ICec;
+ }
+ Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called: '{1}'", config.ControlPortDevKey, config.ControlPortName);
+ return null;
+ }
+
+ ///
+ /// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will
+ /// return the ControlSystem object from the Global class.
+ ///
+ /// IComPorts device or null if the device is not found or does not implement IComPorts
+ public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey)
+ {
+ if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase)
+ || ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase))
+ && Global.ControlSystem is IComPorts)
+ return Global.ControlSystem;
+ else
+ {
+ var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts;
+ if (dev == null)
+ Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey);
+ return dev;
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public class EssentialsControlPropertiesConfig :
+ PepperDash.Core.ControlPropertiesConfig
+ {
+
+ [JsonConverter(typeof(ComSpecJsonConverter))]
+ public ComPort.ComPortSpec ComParams { get; set; }
+ public uint CardSlot { get; set; }
+ public string CresnetId { get; set; }
+
+ ///
+ /// Attempts to provide uint conversion of string CresnetId
+ ///
+ public uint CresnetIdInt
+ {
+ get
+ {
+ try
+ {
+ return Convert.ToUInt32(CresnetId, 16);
+ }
+ catch (Exception)
+ {
+ throw new FormatException(string.Format("ERROR:Unable to convert Cresnet ID: {0} to hex. Error:\n{1}", CresnetId));
+ }
+ }
+ }
+ }
+
+ public class IrControlSpec
+ {
+ public string PortDeviceKey { get; set; }
+ public uint PortNumber { get; set; }
+ public string File { get; set; }
+ }
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron IO/Cards/C3Com3Card.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron IO/Cards/C3Com3Card.cs
new file mode 100644
index 00000000..613425ff
--- /dev/null
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Crestron IO/Cards/C3Com3Card.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+using Crestron.SimplSharpPro;
+using Crestron.SimplSharpPro.DeviceSupport;
+using Newtonsoft.Json;
+using PepperDash.Core;
+using PepperDash.Essentials.Core.Bridges;
+using PepperDash_Essentials_Core.Devices;
+using PepperDash.Essentials.Core;
+using Crestron.SimplSharpPro.ThreeSeriesCards;
+
+namespace PepperDash.Essentials.Core.CrestronIO.Cards
+{
+ public class C3Com3Controller : CrestronGenericBaseDevice, IComPorts
+ {
+ C3com3 Card;
+ public C3Com3Controller(string key, string name, C3com3 card)
+ : base(key, key, card)
+ {
+ Card = card;
+ }
+
+ public CrestronCollection ComPorts
+ {
+ get { return Card.ComPorts; }
+ }
+
+ public int NumberOfComPorts
+ {
+ get { return Card.NumberOfComPorts; }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Factory/DeviceFactory.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Factory/DeviceFactory.cs
index 201675d0..fc59b131 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Factory/DeviceFactory.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Factory/DeviceFactory.cs
@@ -1,127 +1,137 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
-using Crestron.SimplSharpPro;
-using Crestron.SimplSharpPro.GeneralIO;
-using PepperDash.Core;
-using PepperDash.Essentials.Core;
-using PepperDash.Essentials.Core.Config;
-using PepperDash.Essentials.Core.CrestronIO;
-using PepperDash.Essentials.Core.Touchpanels;
-
-namespace PepperDash.Essentials.Core
-{
- public class DeviceFactory
- {
- ///
- /// A dictionary of factory methods, keyed by config types, added by plugins.
- /// These methods are looked up and called by GetDevice in this class.
- ///
- static Dictionary> FactoryMethods =
- new Dictionary>(StringComparer.OrdinalIgnoreCase);
-
- ///
- /// Adds a plugin factory method
- ///
- ///
- ///
- public static void AddFactoryForType(string type, Func method)
- {
- Debug.Console(0, Debug.ErrorLogLevel.Notice, "Adding factory method for type '{0}'", type);
- DeviceFactory.FactoryMethods.Add(type, method);
- }
-
- ///
- /// The factory method for Core "things". Also iterates the Factory methods that have
- /// been loaded from plugins
- ///
- ///
- ///
- public static IKeyed GetDevice(DeviceConfig dc)
- {
- var key = dc.Key;
- var name = dc.Name;
- var type = dc.Type;
- var properties = dc.Properties;
-
- var typeName = dc.Type.ToLower();
-
- // Check for types that have been added by plugin dlls.
- if (FactoryMethods.ContainsKey(typeName))
- {
- Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading '{0}' from plugin", dc.Type);
- return FactoryMethods[typeName](dc);
- }
-
- // Check "core" types
- //if (typeName == "genericcomm")
- //{
- // Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
- // return new GenericComm(dc);
- //}
- if (typeName == "ceniodigin104")
- {
- var control = CommFactory.GetControlPropertiesConfig(dc);
- var ipid = control.IpIdInt;
-
- return new CenIoDigIn104Controller(key, name, new Crestron.SimplSharpPro.GeneralIO.CenIoDi104(ipid, Global.ControlSystem));
- }
- if (typeName == "statussign")
- {
- var control = CommFactory.GetControlPropertiesConfig(dc);
- var cresnetId = control.CresnetIdInt;
-
- return new StatusSignController(key, name, new StatusSign(cresnetId, Global.ControlSystem));
- }
- if (typeName == "c2nrths")
- {
- var control = CommFactory.GetControlPropertiesConfig(dc);
- var cresnetId = control.CresnetIdInt;
-
- return new C2nRthsController(key, name, new C2nRths(cresnetId, Global.ControlSystem));
- }
-
- return null;
- }
-
- ///
- /// Prints the type names fromt the FactoryMethods collection.
- ///
- ///
- public static void GetDeviceFactoryTypes(string filter)
- {
- List typeNames = new List();
-
- if (!string.IsNullOrEmpty(filter))
- {
- typeNames = FactoryMethods.Keys.Where(k => k.Contains(filter)).ToList();
- }
- else
- {
- typeNames = FactoryMethods.Keys.ToList();
- }
-
- Debug.Console(0, "Device Types:");
-
- foreach (var type in typeNames)
- {
- Debug.Console(0, "type: '{0}'", type);
- }
- }
- }
-
-
- ///
- /// Responsible for loading all of the device types
- ///
- public class CoreDeviceFactory
- {
- public CoreDeviceFactory()
- {
- var genComm = new GenericCommFactory() as IDeviceFactory;
- genComm.LoadTypeFactories();
- }
- }
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+using Crestron.SimplSharpPro;
+using Crestron.SimplSharpPro.GeneralIO;
+using PepperDash.Core;
+using PepperDash.Essentials.Core;
+using PepperDash.Essentials.Core.Config;
+using PepperDash.Essentials.Core.CrestronIO;
+using PepperDash.Essentials.Core.CrestronIO.Cards;
+using PepperDash.Essentials.Core.Touchpanels;
+using Crestron.SimplSharpPro.ThreeSeriesCards;
+
+
+namespace PepperDash.Essentials.Core
+{
+ public class DeviceFactory
+ {
+ ///
+ /// A dictionary of factory methods, keyed by config types, added by plugins.
+ /// These methods are looked up and called by GetDevice in this class.
+ ///
+ static Dictionary> FactoryMethods =
+ new Dictionary>(StringComparer.OrdinalIgnoreCase);
+
+ ///
+ /// Adds a plugin factory method
+ ///
+ ///
+ ///
+ public static void AddFactoryForType(string type, Func method)
+ {
+ Debug.Console(0, Debug.ErrorLogLevel.Notice, "Adding factory method for type '{0}'", type);
+ DeviceFactory.FactoryMethods.Add(type, method);
+ }
+
+ ///
+ /// The factory method for Core "things". Also iterates the Factory methods that have
+ /// been loaded from plugins
+ ///
+ ///
+ ///
+ public static IKeyed GetDevice(DeviceConfig dc)
+ {
+ var key = dc.Key;
+ var name = dc.Name;
+ var type = dc.Type;
+ var properties = dc.Properties;
+
+ var typeName = dc.Type.ToLower();
+
+ // Check for types that have been added by plugin dlls.
+ if (FactoryMethods.ContainsKey(typeName))
+ {
+ Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading '{0}' from plugin", dc.Type);
+ return FactoryMethods[typeName](dc);
+ }
+
+ // Check "core" types
+ //if (typeName == "genericcomm")
+ //{
+ // Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
+ // return new GenericComm(dc);
+ //}
+ if (typeName == "ceniodigin104")
+ {
+ var control = CommFactory.GetControlPropertiesConfig(dc);
+ var ipid = control.IpIdInt;
+
+ return new CenIoDigIn104Controller(key, name, new Crestron.SimplSharpPro.GeneralIO.CenIoDi104(ipid, Global.ControlSystem));
+ }
+ if (typeName == "statussign")
+ {
+ var control = CommFactory.GetControlPropertiesConfig(dc);
+ var cresnetId = control.CresnetIdInt;
+
+ return new StatusSignController(key, name, new StatusSign(cresnetId, Global.ControlSystem));
+ }
+ if (typeName == "c2nrths")
+ {
+ var control = CommFactory.GetControlPropertiesConfig(dc);
+ var cresnetId = control.CresnetIdInt;
+
+ return new C2nRthsController(key, name, new C2nRths(cresnetId, Global.ControlSystem));
+ }
+ if (typeName == "c3com3")
+ {
+ var control = CommFactory.GetControlPropertiesConfig(dc);
+ var cardSlot = control.CardSlot;
+
+ return new C3Com3Controller(key, name, new C3com3(cardSlot, Global.ControlSystem));
+ }
+
+ return null;
+ }
+
+ ///
+ /// Prints the type names fromt the FactoryMethods collection.
+ ///
+ ///
+ public static void GetDeviceFactoryTypes(string filter)
+ {
+ List typeNames = new List();
+
+ if (!string.IsNullOrEmpty(filter))
+ {
+ typeNames = FactoryMethods.Keys.Where(k => k.Contains(filter)).ToList();
+ }
+ else
+ {
+ typeNames = FactoryMethods.Keys.ToList();
+ }
+
+ Debug.Console(0, "Device Types:");
+
+ foreach (var type in typeNames)
+ {
+ Debug.Console(0, "type: '{0}'", type);
+ }
+ }
+ }
+
+
+ ///
+ /// Responsible for loading all of the device types
+ ///
+ public class CoreDeviceFactory
+ {
+ public CoreDeviceFactory()
+ {
+ var genComm = new GenericCommFactory() as IDeviceFactory;
+ genComm.LoadTypeFactories();
+ }
+ }
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
index e7a5a8ac..7c74c2d3 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
@@ -70,6 +70,10 @@
False
..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Remotes.dll
+
+ False
+ ..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.ThreeSeriesCards.dll
+
False
..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll
@@ -143,6 +147,7 @@
+
diff --git a/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj b/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj
index f8ea57a9..5a530c20 100644
--- a/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj
+++ b/essentials-framework/Essentials DM/Essentials_DM/PepperDash_Essentials_DM.csproj
@@ -1,159 +1,159 @@
-
-
- Release
- AnyCPU
- 9.0.30729
- 2.0
- {9199CE8A-0C9F-4952-8672-3EED798B284F}
- Library
- Properties
- PepperDash_Essentials_DM
- PepperDash_Essentials_DM
- {0B4745B0-194B-4BB6-8E21-E9057CA92300};{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- WindowsCE
- E2BECB1F-8C8C-41ba-B736-9BE7D946A398
- 5.0
- SmartDeviceProject1
- v3.5
- Windows CE
-
-
-
-
- .allowedReferenceRelatedFileExtensions
- true
- full
- false
- bin\
- DEBUG;TRACE;
- prompt
- 4
- 512
- true
- true
- off
-
-
- .allowedReferenceRelatedFileExtensions
- none
- true
- bin\
- prompt
- 4
- 512
- true
- true
- off
-
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll
-
-
-
- False
- ..\..\pepperdashcore-builds\PepperDash_Core.dll
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpCustomAttributesInterface.dll
- False
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpHelperInterface.dll
- False
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpNewtonsoft.dll
-
-
- False
- ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpPro.exe
- False
-
-
- False
- ..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpReflectionInterface.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {A49AD6C8-FC0A-4CC0-9089-DFB4CF92D2B5}
- PepperDash_Essentials_Core
-
-
-
-
-
-
-
-
- rem S# Pro preparation will execute after these operations
-
+
+
+ Release
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {9199CE8A-0C9F-4952-8672-3EED798B284F}
+ Library
+ Properties
+ PepperDash_Essentials_DM
+ PepperDash_Essentials_DM
+ {0B4745B0-194B-4BB6-8E21-E9057CA92300};{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ WindowsCE
+ E2BECB1F-8C8C-41ba-B736-9BE7D946A398
+ 5.0
+ SmartDeviceProject1
+ v3.5
+ Windows CE
+
+
+
+
+ .allowedReferenceRelatedFileExtensions
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE;
+ prompt
+ 4
+ 512
+ true
+ true
+ off
+
+
+ .allowedReferenceRelatedFileExtensions
+ none
+ true
+ bin\
+ prompt
+ 4
+ 512
+ true
+ true
+ off
+
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll
+
+
+
+ False
+ ..\..\pepperdashcore-builds\PepperDash_Core.dll
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpCustomAttributesInterface.dll
+ False
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpHelperInterface.dll
+ False
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpNewtonsoft.dll
+
+
+ False
+ ..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpPro.exe
+ False
+
+
+ False
+ ..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpReflectionInterface.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {A49AD6C8-FC0A-4CC0-9089-DFB4CF92D2B5}
+ PepperDash_Essentials_Core
+
+
+
+
+
+
+
+
+ rem S# Pro preparation will execute after these operations
+
\ No newline at end of file