mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 04:34:56 +00:00
Finishes converting all existing types to new DeviceFactory mechanism. #106
This commit is contained in:
@@ -9,6 +9,7 @@ using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using Feedback = PepperDash.Essentials.Core.Feedback;
|
||||
|
||||
@@ -725,4 +726,24 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class AvocorDisplayFactory : EssentialsDeviceFactory<AvocorDisplay>
|
||||
{
|
||||
public AvocorDisplayFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "avocorvtf" };
|
||||
}
|
||||
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new AvocorDisplay(dc.Key, dc.Name, comm, null);
|
||||
else
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,51 +14,20 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
{
|
||||
public class DisplayDeviceFactory
|
||||
{
|
||||
public static IKeyed GetDevice(DeviceConfig dc)
|
||||
{
|
||||
var key = dc.Key;
|
||||
var name = dc.Name;
|
||||
var type = dc.Type;
|
||||
var properties = dc.Properties;
|
||||
public DisplayDeviceFactory()
|
||||
{
|
||||
var necFactory = new NecPSXMDisplayFactory() as IDeviceFactory;
|
||||
necFactory.LoadTypeFactories();
|
||||
|
||||
var typeName = dc.Type.ToLower();
|
||||
var panasonicThFactory = new PanasonicThDisplayFactory() as IDeviceFactory;
|
||||
panasonicThFactory.LoadTypeFactories();
|
||||
|
||||
try
|
||||
{
|
||||
if (typeName == "necmpsx")
|
||||
{
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new NecPSXMDisplay(dc.Key, dc.Name, comm);
|
||||
}
|
||||
if (typeName == "panasonicthef")
|
||||
{
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new PanasonicThefDisplay(dc.Key, dc.Name, comm);
|
||||
}
|
||||
else if(typeName == "samsungmdc")
|
||||
{
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new SamsungMDC(dc.Key, dc.Name, comm, dc.Properties["id"].Value<string>());
|
||||
}
|
||||
if (typeName == "avocorvtf")
|
||||
{
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new AvocorDisplay(dc.Key, dc.Name, comm, null);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Console(0, "Displays factory: Exception creating device type {0}, key {1}: \nCONFIG JSON: {2} \nERROR: {3}\n\n",
|
||||
dc.Type, dc.Key, JsonConvert.SerializeObject(dc), e);
|
||||
return null;
|
||||
}
|
||||
var samsungMdcFactory = new SamsungMDCFactory() as IDeviceFactory;
|
||||
samsungMdcFactory.LoadTypeFactories();
|
||||
|
||||
var avocorFactory = new AvocorDisplayFactory() as IDeviceFactory;
|
||||
avocorFactory.LoadTypeFactories();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using Crestron.SimplSharpPro;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using Feedback = PepperDash.Essentials.Core.Feedback;
|
||||
@@ -361,4 +362,23 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class NecPSXMDisplayFactory : EssentialsDeviceFactory<NecPSXMDisplay>
|
||||
{
|
||||
public NecPSXMDisplayFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "necmpsx" };
|
||||
}
|
||||
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new NecPSXMDisplay(dc.Key, dc.Name, comm);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using Crestron.SimplSharpPro;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using Feedback = PepperDash.Essentials.Core.Feedback;
|
||||
@@ -16,7 +17,7 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class PanasonicThefDisplay : TwoWayDisplayBase, IBasicVolumeWithFeedback, ICommunicationMonitor
|
||||
public class PanasonicThDisplay : TwoWayDisplayBase, IBasicVolumeWithFeedback, ICommunicationMonitor
|
||||
{
|
||||
public IBasicCommunication Communication { get; private set; }
|
||||
public CommunicationGather PortGather { get; private set; }
|
||||
@@ -73,7 +74,7 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
/// <summary>
|
||||
/// Constructor for IBasicCommunication
|
||||
/// </summary>
|
||||
public PanasonicThefDisplay(string key, string name, IBasicCommunication comm)
|
||||
public PanasonicThDisplay(string key, string name, IBasicCommunication comm)
|
||||
: base(key, name)
|
||||
{
|
||||
Communication = comm;
|
||||
@@ -82,7 +83,7 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
/// <summary>
|
||||
/// Constructor for TCP
|
||||
/// </summary>
|
||||
public PanasonicThefDisplay(string key, string name, string hostname, int port)
|
||||
public PanasonicThDisplay(string key, string name, string hostname, int port)
|
||||
: base(key, name)
|
||||
{
|
||||
Communication = new GenericTcpIpClient(key + "-tcp", hostname, port, 5000);
|
||||
@@ -93,7 +94,7 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
/// <summary>
|
||||
/// Constructor for COM
|
||||
/// </summary>
|
||||
public PanasonicThefDisplay(string key, string name, ComPort port, ComPort.ComPortSpec spec)
|
||||
public PanasonicThDisplay(string key, string name, ComPort port, ComPort.ComPortSpec spec)
|
||||
: base(key, name)
|
||||
{
|
||||
Communication = new ComPortController(key + "-com", port, spec);
|
||||
@@ -132,7 +133,7 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
//};
|
||||
}
|
||||
|
||||
~PanasonicThefDisplay()
|
||||
~PanasonicThDisplay()
|
||||
{
|
||||
PortGather = null;
|
||||
}
|
||||
@@ -343,4 +344,23 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PanasonicThDisplayFactory : EssentialsDeviceFactory<PanasonicThDisplay>
|
||||
{
|
||||
public PanasonicThDisplayFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "panasonicthef" };
|
||||
}
|
||||
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new PanasonicThDisplay(dc.Key, dc.Name, comm);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,9 +9,12 @@ using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Bridges;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
using PepperDash.Essentials.Core.Routing;
|
||||
using Feedback = PepperDash.Essentials.Core.Feedback;
|
||||
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Displays
|
||||
{
|
||||
/// <summary>
|
||||
@@ -637,4 +640,23 @@ namespace PepperDash.Essentials.Devices.Displays
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class SamsungMDCFactory : EssentialsDeviceFactory<SamsungMDC>
|
||||
{
|
||||
public SamsungMDCFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "samsungmdc" };
|
||||
}
|
||||
|
||||
public override EssentialsDevice BuildDevice(DeviceConfig dc)
|
||||
{
|
||||
Debug.Console(1, "Factory Attempting to create new Generic Comm Device");
|
||||
var comm = CommFactory.CreateCommForDevice(dc);
|
||||
if (comm != null)
|
||||
return new SamsungMDC(dc.Key, dc.Name, comm, dc.Properties["id"].Value<string>());
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user