Adds support for C3Com3 card. Needs testing

This commit is contained in:
Jason T Alborough
2020-04-23 16:48:05 -04:00
parent 452ea52ae3
commit 31eefd7aa2
5 changed files with 531 additions and 479 deletions

View File

@@ -1,196 +1,196 @@
using System; using System;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using Crestron.SimplSharpPro; using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DM; using Crestron.SimplSharpPro.DM;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.Config;
namespace PepperDash.Essentials.Core namespace PepperDash.Essentials.Core
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public class CommFactory public class CommFactory
{ {
public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig) public static EssentialsControlPropertiesConfig GetControlPropertiesConfig(DeviceConfig deviceConfig)
{ {
try try
{ {
return JsonConvert.DeserializeObject<EssentialsControlPropertiesConfig> return JsonConvert.DeserializeObject<EssentialsControlPropertiesConfig>
(deviceConfig.Properties["control"].ToString()); (deviceConfig.Properties["control"].ToString());
//Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig)); //Debug.Console(2, "Control TEST: {0}", JsonConvert.SerializeObject(controlConfig));
} }
catch (Exception e) catch (Exception e)
{ {
Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e); Debug.Console(0, "ERROR: [{0}] Control properties deserialize failed:\r{1}", deviceConfig.Key, e);
return null; return null;
} }
} }
/// <summary> /// <summary>
/// Returns a comm method of either com port, TCP, SSH, and puts this into the DeviceManager /// Returns a comm method of either com port, TCP, SSH, and puts this into the DeviceManager
/// </summary> /// </summary>
/// <param name="deviceConfig">The Device config object</param> /// <param name="deviceConfig">The Device config object</param>
public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig) public static IBasicCommunication CreateCommForDevice(DeviceConfig deviceConfig)
{ {
EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig); EssentialsControlPropertiesConfig controlConfig = GetControlPropertiesConfig(deviceConfig);
if (controlConfig == null) if (controlConfig == null)
return null; return null;
IBasicCommunication comm = null; IBasicCommunication comm = null;
try try
{ {
var c = controlConfig.TcpSshProperties; var c = controlConfig.TcpSshProperties;
switch (controlConfig.Method) switch (controlConfig.Method)
{ {
case eControlMethod.Com: case eControlMethod.Com:
comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams); comm = new ComPortController(deviceConfig.Key + "-com", GetComPort(controlConfig), controlConfig.ComParams);
break; break;
case eControlMethod.Cec: case eControlMethod.Cec:
comm = new CecPortController(deviceConfig.Key + "-cec", GetCecPort(controlConfig)); comm = new CecPortController(deviceConfig.Key + "-cec", GetCecPort(controlConfig));
break; break;
case eControlMethod.IR: case eControlMethod.IR:
break; break;
case eControlMethod.Ssh: case eControlMethod.Ssh:
{ {
var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password); var ssh = new GenericSshClient(deviceConfig.Key + "-ssh", c.Address, c.Port, c.Username, c.Password);
ssh.AutoReconnect = c.AutoReconnect; ssh.AutoReconnect = c.AutoReconnect;
if(ssh.AutoReconnect) if(ssh.AutoReconnect)
ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; ssh.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
comm = ssh; comm = ssh;
break; break;
} }
case eControlMethod.Tcpip: case eControlMethod.Tcpip:
{ {
var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize); var tcp = new GenericTcpIpClient(deviceConfig.Key + "-tcp", c.Address, c.Port, c.BufferSize);
tcp.AutoReconnect = c.AutoReconnect; tcp.AutoReconnect = c.AutoReconnect;
if (tcp.AutoReconnect) if (tcp.AutoReconnect)
tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs; tcp.AutoReconnectIntervalMs = c.AutoReconnectIntervalMs;
comm = tcp; comm = tcp;
break; break;
} }
case eControlMethod.Udp: case eControlMethod.Udp:
{ {
var udp = new GenericUdpServer(deviceConfig.Key + "-udp", c.Address, c.Port, c.BufferSize); var udp = new GenericUdpServer(deviceConfig.Key + "-udp", c.Address, c.Port, c.BufferSize);
comm = udp; comm = udp;
break; break;
} }
case eControlMethod.Telnet: case eControlMethod.Telnet:
break; break;
default: default:
break; break;
} }
} }
catch (Exception e) catch (Exception e)
{ {
Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}", Debug.Console(0, "Cannot create communication from JSON:\r{0}\r\rException:\r{1}",
deviceConfig.Properties.ToString(), e); deviceConfig.Properties.ToString(), e);
} }
// put it in the device manager if it's the right flavor // put it in the device manager if it's the right flavor
var comDev = comm as Device; var comDev = comm as Device;
if (comDev != null) if (comDev != null)
DeviceManager.AddDevice(comDev); DeviceManager.AddDevice(comDev);
return comm; return comm;
} }
public static ComPort GetComPort(EssentialsControlPropertiesConfig config) public static ComPort GetComPort(EssentialsControlPropertiesConfig config)
{ {
var comPar = config.ComParams; var comPar = config.ComParams;
var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey); var dev = GetIComPortsDeviceFromManagedDevice(config.ControlPortDevKey);
if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts) if (dev != null && config.ControlPortNumber <= dev.NumberOfComPorts)
return dev.ComPorts[config.ControlPortNumber]; return dev.ComPorts[config.ControlPortNumber];
Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber); Debug.Console(0, "GetComPort: Device '{0}' does not have com port {1}", config.ControlPortDevKey, config.ControlPortNumber);
return null; return null;
} }
/// <summary> /// <summary>
/// Gets an ICec port from a RoutingInput or RoutingOutput on a device /// Gets an ICec port from a RoutingInput or RoutingOutput on a device
/// </summary> /// </summary>
/// <param name="config"></param> /// <param name="config"></param>
/// <returns></returns> /// <returns></returns>
public static ICec GetCecPort(ControlPropertiesConfig config) public static ICec GetCecPort(ControlPropertiesConfig config)
{ {
var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey); var dev = DeviceManager.GetDeviceForKey(config.ControlPortDevKey);
if (dev != null) if (dev != null)
{ {
var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName]; var inputPort = (dev as IRoutingInputsOutputs).InputPorts[config.ControlPortName];
if (inputPort != null) if (inputPort != null)
if (inputPort.Port is ICec) if (inputPort.Port is ICec)
return inputPort.Port as ICec; return inputPort.Port as ICec;
var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName]; var outputPort = (dev as IRoutingInputsOutputs).OutputPorts[config.ControlPortName];
if (outputPort != null) if (outputPort != null)
if (outputPort.Port is ICec) if (outputPort.Port is ICec)
return outputPort.Port as ICec; return outputPort.Port as ICec;
} }
Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called: '{1}'", config.ControlPortDevKey, config.ControlPortName); Debug.Console(0, "GetCecPort: Device '{0}' does not have a CEC port called: '{1}'", config.ControlPortDevKey, config.ControlPortName);
return null; return null;
} }
/// <summary> /// <summary>
/// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will /// Helper to grab the IComPorts device for this PortDeviceKey. Key "controlSystem" will
/// return the ControlSystem object from the Global class. /// return the ControlSystem object from the Global class.
/// </summary> /// </summary>
/// <returns>IComPorts device or null if the device is not found or does not implement IComPorts</returns> /// <returns>IComPorts device or null if the device is not found or does not implement IComPorts</returns>
public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey) public static IComPorts GetIComPortsDeviceFromManagedDevice(string ComPortDevKey)
{ {
if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase) if ((ComPortDevKey.Equals("controlSystem", System.StringComparison.OrdinalIgnoreCase)
|| ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase)) || ComPortDevKey.Equals("processor", System.StringComparison.OrdinalIgnoreCase))
&& Global.ControlSystem is IComPorts) && Global.ControlSystem is IComPorts)
return Global.ControlSystem; return Global.ControlSystem;
else else
{ {
var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts; var dev = DeviceManager.GetDeviceForKey(ComPortDevKey) as IComPorts;
if (dev == null) if (dev == null)
Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey); Debug.Console(0, "ComPortConfig: Cannot find com port device '{0}'", ComPortDevKey);
return dev; return dev;
} }
} }
} }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public class EssentialsControlPropertiesConfig : public class EssentialsControlPropertiesConfig :
PepperDash.Core.ControlPropertiesConfig PepperDash.Core.ControlPropertiesConfig
{ {
[JsonConverter(typeof(ComSpecJsonConverter))] [JsonConverter(typeof(ComSpecJsonConverter))]
public ComPort.ComPortSpec ComParams { get; set; } public ComPort.ComPortSpec ComParams { get; set; }
public uint CardSlot { get; set; }
public string CresnetId { get; set; } public string CresnetId { get; set; }
/// <summary> /// <summary>
/// Attempts to provide uint conversion of string CresnetId /// Attempts to provide uint conversion of string CresnetId
/// </summary> /// </summary>
public uint CresnetIdInt public uint CresnetIdInt
{ {
get get
{ {
try try
{ {
return Convert.ToUInt32(CresnetId, 16); return Convert.ToUInt32(CresnetId, 16);
} }
catch (Exception) catch (Exception)
{ {
throw new FormatException(string.Format("ERROR:Unable to convert Cresnet ID: {0} to hex. Error:\n{1}", CresnetId)); throw new FormatException(string.Format("ERROR:Unable to convert Cresnet ID: {0} to hex. Error:\n{1}", CresnetId));
} }
} }
} }
} }
public class IrControlSpec public class IrControlSpec
{ {
public string PortDeviceKey { get; set; } public string PortDeviceKey { get; set; }
public uint PortNumber { get; set; } public uint PortNumber { get; set; }
public string File { get; set; } public string File { get; set; }
} }
} }

View File

@@ -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<ComPort> ComPorts
{
get { return Card.ComPorts; }
}
public int NumberOfComPorts
{
get { return Card.NumberOfComPorts; }
}
}
}

View File

@@ -1,127 +1,137 @@
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;
using Crestron.SimplSharpPro; using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.GeneralIO; using Crestron.SimplSharpPro.GeneralIO;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.Config;
using PepperDash.Essentials.Core.CrestronIO; using PepperDash.Essentials.Core.CrestronIO;
using PepperDash.Essentials.Core.Touchpanels; using PepperDash.Essentials.Core.CrestronIO.Cards;
using PepperDash.Essentials.Core.Touchpanels;
namespace PepperDash.Essentials.Core using Crestron.SimplSharpPro.ThreeSeriesCards;
{
public class DeviceFactory
{ namespace PepperDash.Essentials.Core
/// <summary> {
/// A dictionary of factory methods, keyed by config types, added by plugins. public class DeviceFactory
/// These methods are looked up and called by GetDevice in this class. {
/// </summary> /// <summary>
static Dictionary<string, Func<DeviceConfig, IKeyed>> FactoryMethods = /// A dictionary of factory methods, keyed by config types, added by plugins.
new Dictionary<string, Func<DeviceConfig, IKeyed>>(StringComparer.OrdinalIgnoreCase); /// These methods are looked up and called by GetDevice in this class.
/// </summary>
/// <summary> static Dictionary<string, Func<DeviceConfig, IKeyed>> FactoryMethods =
/// Adds a plugin factory method new Dictionary<string, Func<DeviceConfig, IKeyed>>(StringComparer.OrdinalIgnoreCase);
/// </summary>
/// <param name="dc"></param> /// <summary>
/// <returns></returns> /// Adds a plugin factory method
public static void AddFactoryForType(string type, Func<DeviceConfig, IKeyed> method) /// </summary>
{ /// <param name="dc"></param>
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Adding factory method for type '{0}'", type); /// <returns></returns>
DeviceFactory.FactoryMethods.Add(type, method); public static void AddFactoryForType(string type, Func<DeviceConfig, IKeyed> method)
} {
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Adding factory method for type '{0}'", type);
/// <summary> DeviceFactory.FactoryMethods.Add(type, method);
/// The factory method for Core "things". Also iterates the Factory methods that have }
/// been loaded from plugins
/// </summary> /// <summary>
/// <param name="dc"></param> /// The factory method for Core "things". Also iterates the Factory methods that have
/// <returns></returns> /// been loaded from plugins
public static IKeyed GetDevice(DeviceConfig dc) /// </summary>
{ /// <param name="dc"></param>
var key = dc.Key; /// <returns></returns>
var name = dc.Name; public static IKeyed GetDevice(DeviceConfig dc)
var type = dc.Type; {
var properties = dc.Properties; var key = dc.Key;
var name = dc.Name;
var typeName = dc.Type.ToLower(); var type = dc.Type;
var properties = dc.Properties;
// Check for types that have been added by plugin dlls.
if (FactoryMethods.ContainsKey(typeName)) var typeName = dc.Type.ToLower();
{
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading '{0}' from plugin", dc.Type); // Check for types that have been added by plugin dlls.
return FactoryMethods[typeName](dc); if (FactoryMethods.ContainsKey(typeName))
} {
Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading '{0}' from plugin", dc.Type);
// Check "core" types return FactoryMethods[typeName](dc);
//if (typeName == "genericcomm") }
//{
// Debug.Console(1, "Factory Attempting to create new Generic Comm Device"); // Check "core" types
// return new GenericComm(dc); //if (typeName == "genericcomm")
//} //{
if (typeName == "ceniodigin104") // Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
{ // return new GenericComm(dc);
var control = CommFactory.GetControlPropertiesConfig(dc); //}
var ipid = control.IpIdInt; if (typeName == "ceniodigin104")
{
return new CenIoDigIn104Controller(key, name, new Crestron.SimplSharpPro.GeneralIO.CenIoDi104(ipid, Global.ControlSystem)); var control = CommFactory.GetControlPropertiesConfig(dc);
} var ipid = control.IpIdInt;
if (typeName == "statussign")
{ return new CenIoDigIn104Controller(key, name, new Crestron.SimplSharpPro.GeneralIO.CenIoDi104(ipid, Global.ControlSystem));
var control = CommFactory.GetControlPropertiesConfig(dc); }
var cresnetId = control.CresnetIdInt; if (typeName == "statussign")
{
return new StatusSignController(key, name, new StatusSign(cresnetId, Global.ControlSystem)); var control = CommFactory.GetControlPropertiesConfig(dc);
} var cresnetId = control.CresnetIdInt;
if (typeName == "c2nrths")
{ return new StatusSignController(key, name, new StatusSign(cresnetId, Global.ControlSystem));
var control = CommFactory.GetControlPropertiesConfig(dc); }
var cresnetId = control.CresnetIdInt; if (typeName == "c2nrths")
{
return new C2nRthsController(key, name, new C2nRths(cresnetId, Global.ControlSystem)); var control = CommFactory.GetControlPropertiesConfig(dc);
} var cresnetId = control.CresnetIdInt;
return null; return new C2nRthsController(key, name, new C2nRths(cresnetId, Global.ControlSystem));
} }
if (typeName == "c3com3")
/// <summary> {
/// Prints the type names fromt the FactoryMethods collection. var control = CommFactory.GetControlPropertiesConfig(dc);
/// </summary> var cardSlot = control.CardSlot;
/// <param name="command"></param>
public static void GetDeviceFactoryTypes(string filter) return new C3Com3Controller(key, name, new C3com3(cardSlot, Global.ControlSystem));
{ }
List<string> typeNames = new List<string>();
return null;
if (!string.IsNullOrEmpty(filter)) }
{
typeNames = FactoryMethods.Keys.Where(k => k.Contains(filter)).ToList(); /// <summary>
} /// Prints the type names fromt the FactoryMethods collection.
else /// </summary>
{ /// <param name="command"></param>
typeNames = FactoryMethods.Keys.ToList(); public static void GetDeviceFactoryTypes(string filter)
} {
List<string> typeNames = new List<string>();
Debug.Console(0, "Device Types:");
if (!string.IsNullOrEmpty(filter))
foreach (var type in typeNames) {
{ typeNames = FactoryMethods.Keys.Where(k => k.Contains(filter)).ToList();
Debug.Console(0, "type: '{0}'", type); }
} else
} {
} typeNames = FactoryMethods.Keys.ToList();
}
/// <summary> Debug.Console(0, "Device Types:");
/// Responsible for loading all of the device types
/// </summary> foreach (var type in typeNames)
public class CoreDeviceFactory {
{ Debug.Console(0, "type: '{0}'", type);
public CoreDeviceFactory() }
{ }
var genComm = new GenericCommFactory() as IDeviceFactory; }
genComm.LoadTypeFactories();
}
} /// <summary>
/// Responsible for loading all of the device types
/// </summary>
public class CoreDeviceFactory
{
public CoreDeviceFactory()
{
var genComm = new GenericCommFactory() as IDeviceFactory;
genComm.LoadTypeFactories();
}
}
} }

View File

@@ -70,6 +70,10 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Remotes.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.Remotes.dll</HintPath>
</Reference> </Reference>
<Reference Include="Crestron.SimplSharpPro.ThreeSeriesCards, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.ThreeSeriesCards.dll</HintPath>
</Reference>
<Reference Include="Crestron.SimplSharpPro.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="Crestron.SimplSharpPro.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll</HintPath>
@@ -143,6 +147,7 @@
<Compile Include="Config\Essentials\EssentialsConfig.cs" /> <Compile Include="Config\Essentials\EssentialsConfig.cs" />
<Compile Include="Config\SourceDevicePropertiesConfigBase.cs" /> <Compile Include="Config\SourceDevicePropertiesConfigBase.cs" />
<Compile Include="Crestron IO\C2nRts\C2nRthsController.cs" /> <Compile Include="Crestron IO\C2nRts\C2nRthsController.cs" />
<Compile Include="Crestron IO\Cards\C3Com3Card.cs" />
<Compile Include="Crestron IO\Inputs\CenIoDigIn104Controller.cs" /> <Compile Include="Crestron IO\Inputs\CenIoDigIn104Controller.cs" />
<Compile Include="Crestron IO\Inputs\GenericDigitalInputDevice.cs" /> <Compile Include="Crestron IO\Inputs\GenericDigitalInputDevice.cs" />
<Compile Include="Crestron IO\Inputs\GenericVersiportInputDevice.cs" /> <Compile Include="Crestron IO\Inputs\GenericVersiportInputDevice.cs" />

View File

@@ -1,159 +1,159 @@
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion> <ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{9199CE8A-0C9F-4952-8672-3EED798B284F}</ProjectGuid> <ProjectGuid>{9199CE8A-0C9F-4952-8672-3EED798B284F}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>PepperDash_Essentials_DM</RootNamespace> <RootNamespace>PepperDash_Essentials_DM</RootNamespace>
<AssemblyName>PepperDash_Essentials_DM</AssemblyName> <AssemblyName>PepperDash_Essentials_DM</AssemblyName>
<ProjectTypeGuids>{0B4745B0-194B-4BB6-8E21-E9057CA92300};{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <ProjectTypeGuids>{0B4745B0-194B-4BB6-8E21-E9057CA92300};{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<PlatformFamilyName>WindowsCE</PlatformFamilyName> <PlatformFamilyName>WindowsCE</PlatformFamilyName>
<PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID> <PlatformID>E2BECB1F-8C8C-41ba-B736-9BE7D946A398</PlatformID>
<OSVersion>5.0</OSVersion> <OSVersion>5.0</OSVersion>
<DeployDirSuffix>SmartDeviceProject1</DeployDirSuffix> <DeployDirSuffix>SmartDeviceProject1</DeployDirSuffix>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion> <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<NativePlatformName>Windows CE</NativePlatformName> <NativePlatformName>Windows CE</NativePlatformName>
<FormFactorID> <FormFactorID>
</FormFactorID> </FormFactorID>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<AllowedReferenceRelatedFileExtensions>.allowedReferenceRelatedFileExtensions</AllowedReferenceRelatedFileExtensions> <AllowedReferenceRelatedFileExtensions>.allowedReferenceRelatedFileExtensions</AllowedReferenceRelatedFileExtensions>
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType> <DebugType>full</DebugType>
<Optimize>false</Optimize> <Optimize>false</Optimize>
<OutputPath>bin\</OutputPath> <OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE;</DefineConstants> <DefineConstants>DEBUG;TRACE;</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<NoStdLib>true</NoStdLib> <NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig> <NoConfig>true</NoConfig>
<GenerateSerializationAssemblies>off</GenerateSerializationAssemblies> <GenerateSerializationAssemblies>off</GenerateSerializationAssemblies>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<AllowedReferenceRelatedFileExtensions>.allowedReferenceRelatedFileExtensions</AllowedReferenceRelatedFileExtensions> <AllowedReferenceRelatedFileExtensions>.allowedReferenceRelatedFileExtensions</AllowedReferenceRelatedFileExtensions>
<DebugType>none</DebugType> <DebugType>none</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\</OutputPath> <OutputPath>bin\</OutputPath>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<NoStdLib>true</NoStdLib> <NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig> <NoConfig>true</NoConfig>
<GenerateSerializationAssemblies>off</GenerateSerializationAssemblies> <GenerateSerializationAssemblies>off</GenerateSerializationAssemblies>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Crestron.SimplSharpPro.DeviceSupport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="Crestron.SimplSharpPro.DeviceSupport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DeviceSupport.dll</HintPath>
</Reference> </Reference>
<Reference Include="Crestron.SimplSharpPro.DM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="Crestron.SimplSharpPro.DM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.DM.dll</HintPath>
</Reference> </Reference>
<Reference Include="Crestron.SimplSharpPro.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="Crestron.SimplSharpPro.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SSPDevices\Crestron.SimplSharpPro.UI.dll</HintPath>
</Reference> </Reference>
<Reference Include="mscorlib" /> <Reference Include="mscorlib" />
<Reference Include="PepperDash_Core, Version=1.0.26.30384, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="PepperDash_Core, Version=1.0.26.30384, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\pepperdashcore-builds\PepperDash_Core.dll</HintPath> <HintPath>..\..\pepperdashcore-builds\PepperDash_Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="SimplSharpCustomAttributesInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpCustomAttributesInterface.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpCustomAttributesInterface.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="SimplSharpHelperInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="SimplSharpHelperInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpHelperInterface.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpHelperInterface.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="SimplSharpNewtonsoft, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="SimplSharpNewtonsoft, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpNewtonsoft.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpNewtonsoft.dll</HintPath>
</Reference> </Reference>
<Reference Include="SimplSharpPro, Version=1.5.3.17, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="SimplSharpPro, Version=1.5.3.17, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpPro.exe</HintPath> <HintPath>..\..\..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpPro.exe</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="SimplSharpReflectionInterface, Version=1.0.5583.25238, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL"> <Reference Include="SimplSharpReflectionInterface, Version=1.0.5583.25238, Culture=neutral, PublicKeyToken=1099c178b3b54c3b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpReflectionInterface.dll</HintPath> <HintPath>..\..\..\..\..\..\..\..\ProgramData\Crestron\SDK\SimplSharpReflectionInterface.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AirMedia\AirMediaPropertiesConfig.cs" /> <Compile Include="AirMedia\AirMediaPropertiesConfig.cs" />
<Compile Include="AirMedia\AirMediaController.cs" /> <Compile Include="AirMedia\AirMediaController.cs" />
<Compile Include="Chassis\DmBladeChassisController.cs" /> <Compile Include="Chassis\DmBladeChassisController.cs" />
<Compile Include="Chassis\DmCardAudioOutput.cs" /> <Compile Include="Chassis\DmCardAudioOutput.cs" />
<Compile Include="Chassis\DmChassisController.cs" /> <Compile Include="Chassis\DmChassisController.cs" />
<Compile Include="Chassis\DmpsAudioOutputController.cs" /> <Compile Include="Chassis\DmpsAudioOutputController.cs" />
<Compile Include="Chassis\DmpsInternalVirtualDmTxController.cs" /> <Compile Include="Chassis\DmpsInternalVirtualDmTxController.cs" />
<Compile Include="Chassis\DmpsRoutingController.cs" /> <Compile Include="Chassis\DmpsRoutingController.cs" />
<Compile Include="Chassis\HdMdNxM4kEController.cs" /> <Compile Include="Chassis\HdMdNxM4kEController.cs" />
<Compile Include="Endpoints\Transmitters\TxInterfaces.cs" /> <Compile Include="Endpoints\Transmitters\TxInterfaces.cs" />
<Compile Include="IDmSwitch.cs" /> <Compile Include="IDmSwitch.cs" />
<Compile Include="Config\DmpsRoutingConfig.cs" /> <Compile Include="Config\DmpsRoutingConfig.cs" />
<Compile Include="Config\DmRmcConfig.cs" /> <Compile Include="Config\DmRmcConfig.cs" />
<Compile Include="Config\DmTxConfig.cs" /> <Compile Include="Config\DmTxConfig.cs" />
<Compile Include="Config\DMChassisConfig.cs" /> <Compile Include="Config\DMChassisConfig.cs" />
<Compile Include="Config\HdMdNxM4kEPropertiesConfig.cs" /> <Compile Include="Config\HdMdNxM4kEPropertiesConfig.cs" />
<Compile Include="Config\InputPropertiesConfig.cs" /> <Compile Include="Config\InputPropertiesConfig.cs" />
<Compile Include="DmPortName.cs" /> <Compile Include="DmPortName.cs" />
<Compile Include="Endpoints\DGEs\DgeController.cs" /> <Compile Include="Endpoints\DGEs\DgeController.cs" />
<Compile Include="Endpoints\DGEs\DgePropertiesConfig.cs" /> <Compile Include="Endpoints\DGEs\DgePropertiesConfig.cs" />
<Compile Include="DmLite\HdMdxxxCEController.cs" /> <Compile Include="DmLite\HdMdxxxCEController.cs" />
<Compile Include="Endpoints\Receivers\DmHdBaseTEndpointController.cs" /> <Compile Include="Endpoints\Receivers\DmHdBaseTEndpointController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc100SController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc100SController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc150SController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc150SController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc200CController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc200CController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc200S2Controller.cs" /> <Compile Include="Endpoints\Receivers\DmRmc200S2Controller.cs" />
<Compile Include="Endpoints\Receivers\DmRmc200SController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc200SController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc4k100C1GController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc4k100C1GController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc4KScalerCController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc4KScalerCController.cs" />
<Compile Include="Endpoints\Receivers\DmRmc4kScalerCDspController.cs" /> <Compile Include="Endpoints\Receivers\DmRmc4kScalerCDspController.cs" />
<Compile Include="Endpoints\Receivers\DmRmcScalerCController.cs" /> <Compile Include="Endpoints\Receivers\DmRmcScalerCController.cs" />
<Compile Include="Endpoints\Receivers\DmRmcX100CController.cs" /> <Compile Include="Endpoints\Receivers\DmRmcX100CController.cs" />
<Compile Include="Endpoints\Receivers\DmRmcHelper.cs" /> <Compile Include="Endpoints\Receivers\DmRmcHelper.cs" />
<Compile Include="Endpoints\Receivers\DmRmcScalerS2Controller.cs" /> <Compile Include="Endpoints\Receivers\DmRmcScalerS2Controller.cs" />
<Compile Include="Endpoints\Receivers\DmRmcScalerSController.cs" /> <Compile Include="Endpoints\Receivers\DmRmcScalerSController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx200Controller.cs" /> <Compile Include="Endpoints\Transmitters\DmTx200Controller.cs" />
<Compile Include="Endpoints\Transmitters\DmTx401CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx401CController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx4k100Controller.cs" /> <Compile Include="Endpoints\Transmitters\DmTx4k100Controller.cs" />
<Compile Include="Endpoints\Transmitters\DmTx4k202CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx4k202CController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx4k302CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx4k302CController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx201CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx201CController.cs" />
<Compile Include="Endpoints\Transmitters\DmTx4kz302CController.cs" /> <Compile Include="Endpoints\Transmitters\DmTx4kz302CController.cs" />
<Compile Include="Endpoints\Transmitters\DmTxHelpers.cs" /> <Compile Include="Endpoints\Transmitters\DmTxHelpers.cs" />
<Compile Include="Extensions.cs" /> <Compile Include="Extensions.cs" />
<Compile Include="Config\DeviceFactory.cs" /> <Compile Include="Config\DeviceFactory.cs" />
<Compile Include="IDmHdmiInputExtensions.cs" /> <Compile Include="IDmHdmiInputExtensions.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VideoStatusHelpers.cs" /> <Compile Include="VideoStatusHelpers.cs" />
<None Include="app.config" /> <None Include="app.config" />
<None Include="Properties\ControlSystem.cfg" /> <None Include="Properties\ControlSystem.cfg" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Essentials Core\PepperDashEssentialsBase\PepperDash_Essentials_Core.csproj"> <ProjectReference Include="..\..\Essentials Core\PepperDashEssentialsBase\PepperDash_Essentials_Core.csproj">
<Project>{A49AD6C8-FC0A-4CC0-9089-DFB4CF92D2B5}</Project> <Project>{A49AD6C8-FC0A-4CC0-9089-DFB4CF92D2B5}</Project>
<Name>PepperDash_Essentials_Core</Name> <Name>PepperDash_Essentials_Core</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CompactFramework.CSharp.targets" />
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>
</VisualStudio> </VisualStudio>
</ProjectExtensions> </ProjectExtensions>
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>rem S# Pro preparation will execute after these operations</PostBuildEvent> <PostBuildEvent>rem S# Pro preparation will execute after these operations</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>