mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 12:44:58 +00:00
Merges Essentials bridges proof of concept work into new BB.org repo
This commit is contained in:
69
PepperDashEssentials/Bridges/Bridges.BridgeFactory.cs
Normal file
69
PepperDashEssentials/Bridges/Bridges.BridgeFactory.cs
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core.Routing;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.EthernetCommunication;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials {
|
||||||
|
public class BridgeFactory {
|
||||||
|
public static IKeyed GetDevice(PepperDash.Essentials.Core.Config.DeviceConfig dc) {
|
||||||
|
// ? why is this static JTA 2018-06-13?
|
||||||
|
|
||||||
|
var key = dc.Key;
|
||||||
|
var name = dc.Name;
|
||||||
|
var type = dc.Type;
|
||||||
|
var properties = dc.Properties;
|
||||||
|
var propAnon = new { };
|
||||||
|
JsonConvert.DeserializeAnonymousType(dc.Properties.ToString(), propAnon);
|
||||||
|
|
||||||
|
var typeName = dc.Type.ToLower();
|
||||||
|
var groupName = dc.Group.ToLower();
|
||||||
|
|
||||||
|
Debug.Console(0, "Name {0}, Key {1}, Type {2}, Properties {3}", name, key, type, properties.ToString());
|
||||||
|
if (typeName == "essentialdm") {
|
||||||
|
return new EssentialDM(key, name, properties);
|
||||||
|
} else if (typeName == "essentialcomm") {
|
||||||
|
|
||||||
|
Debug.Console(0, "Launch Essential Comm");
|
||||||
|
return new EssentialComm(key, name, properties);
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class BridgeApiEisc {
|
||||||
|
public uint Ipid;
|
||||||
|
public ThreeSeriesTcpIpEthernetIntersystemCommunications Eisc;
|
||||||
|
public BridgeApiEisc(string ipid) {
|
||||||
|
Ipid = (UInt32)int.Parse(ipid, System.Globalization.NumberStyles.HexNumber);
|
||||||
|
Eisc = new ThreeSeriesTcpIpEthernetIntersystemCommunications(Ipid, "127.0.0.2", Global.ControlSystem);
|
||||||
|
Eisc.Register();
|
||||||
|
Eisc.SigChange += Eisc_SigChange;
|
||||||
|
Debug.Console(0, "BridgeApiEisc Created at Ipid {0}", ipid);
|
||||||
|
}
|
||||||
|
void Eisc_SigChange(object currentDevice, Crestron.SimplSharpPro.SigEventArgs args) {
|
||||||
|
if (Debug.Level >= 1)
|
||||||
|
Debug.Console(2, "DDVC EISC change: {0} {1}={2}", args.Sig.Type, args.Sig.Number, args.Sig.StringValue);
|
||||||
|
var uo = args.Sig.UserObject;
|
||||||
|
if (uo is Action<bool>)
|
||||||
|
(uo as Action<bool>)(args.Sig.BoolValue);
|
||||||
|
else if (uo is Action<ushort>)
|
||||||
|
(uo as Action<ushort>)(args.Sig.UShortValue);
|
||||||
|
else if (uo is Action<string>)
|
||||||
|
(uo as Action<string>)(args.Sig.StringValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
144
PepperDashEssentials/Bridges/EssentialComms.cs
Normal file
144
PepperDashEssentials/Bridges/EssentialComms.cs
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core.Routing;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.EthernetCommunication;
|
||||||
|
using Crestron.SimplSharpPro.CrestronThread;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials {
|
||||||
|
public class EssentialCommConfig {
|
||||||
|
public string[] EiscApiIpids;
|
||||||
|
public EssentialCommCommConnectionConfigs[] CommConnections;
|
||||||
|
}
|
||||||
|
public class EssentialCommCommConnectionConfigs {
|
||||||
|
public uint joinNumber {get; set; }
|
||||||
|
public EssentialsControlPropertiesConfig control { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EssentialCommsPort {
|
||||||
|
public IBasicCommunication Comm;
|
||||||
|
public IntFeedback StatusFeedback;
|
||||||
|
public BoolFeedback ConnectedFeedback;
|
||||||
|
public List<EssentialComApiMap> Outputs = new List<EssentialComApiMap>();
|
||||||
|
public String RxBuffer;
|
||||||
|
public EssentialCommsPort(EssentialsControlPropertiesConfig config, string keyPrefix) {
|
||||||
|
Comm = CommFactory.CreateCommForConfig(config, keyPrefix);
|
||||||
|
// var PortGather = new CommunicationGather(Comm, config.EndOfLineChar);
|
||||||
|
Comm.TextReceived += new EventHandler<GenericCommMethodReceiveTextArgs>(Communication_TextReceived);
|
||||||
|
|
||||||
|
var socket = Comm as ISocketStatus;
|
||||||
|
StatusFeedback = new IntFeedback(() => { return (int)socket.ClientStatus; });
|
||||||
|
ConnectedFeedback = new BoolFeedback(() => { return Comm.IsConnected; });
|
||||||
|
|
||||||
|
if (socket != null) {
|
||||||
|
socket.ConnectionChange += new EventHandler<GenericSocketStatusChageEventArgs>(socket_ConnectionChange);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void socket_ConnectionChange(object sender, GenericSocketStatusChageEventArgs e) {
|
||||||
|
StatusFeedback.FireUpdate();
|
||||||
|
ConnectedFeedback.FireUpdate();
|
||||||
|
if (e.Client.IsConnected) {
|
||||||
|
// Tasks on connect
|
||||||
|
} else {
|
||||||
|
// Cleanup items from this session
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Communication_TextReceived(object sender, GenericCommMethodReceiveTextArgs args) {
|
||||||
|
try {
|
||||||
|
foreach (var Output in Outputs) {
|
||||||
|
Output.Api.Eisc.StringInput[Output.Join].StringValue = args.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception) {
|
||||||
|
throw new FormatException(string.Format("ERROR:{0}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EssentialComm : Device {
|
||||||
|
public EssentialCommConfig Properties;
|
||||||
|
|
||||||
|
public CommunicationGather PortGather { get; private set; }
|
||||||
|
public List<BridgeApiEisc> Apis {get; set;}
|
||||||
|
public Dictionary<string, StringFeedback> CommFeedbacks {get; private set; }
|
||||||
|
public StatusMonitorBase CommunicationMonitor { get; private set; }
|
||||||
|
public Dictionary<uint, EssentialCommsPort> CommDictionary { get; private set; }
|
||||||
|
|
||||||
|
public EssentialComm(string key, string name, JToken properties) : base(key, name) {
|
||||||
|
Properties = JsonConvert.DeserializeObject<EssentialCommConfig>(properties.ToString());
|
||||||
|
CommFeedbacks = new Dictionary<string, StringFeedback>();
|
||||||
|
CommDictionary = new Dictionary<uint, EssentialCommsPort>();
|
||||||
|
Apis = new List<BridgeApiEisc>();
|
||||||
|
int commNumber = 1;
|
||||||
|
foreach (var commConfig in Properties.CommConnections) {
|
||||||
|
var commPort = new EssentialCommsPort(commConfig.control, string.Format("{0}-{1}", this.Key, commConfig.joinNumber));
|
||||||
|
CommDictionary.Add(commConfig.joinNumber, commPort);
|
||||||
|
|
||||||
|
commNumber++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var Ipid in Properties.EiscApiIpids) {
|
||||||
|
var ApiEisc = new BridgeApiEisc(Ipid);
|
||||||
|
Apis.Add(ApiEisc);
|
||||||
|
foreach (var commConnection in CommDictionary) {
|
||||||
|
Debug.Console(0, "Joining Api{0} to comm {1}", Ipid, commConnection.Key);
|
||||||
|
var tempComm = commConnection.Value;
|
||||||
|
var tempJoin = (uint)commConnection.Key;
|
||||||
|
EssentialComApiMap ApiMap = new EssentialComApiMap(ApiEisc, (uint)tempJoin);
|
||||||
|
|
||||||
|
tempComm.Outputs.Add(ApiMap);
|
||||||
|
// Check for ApiMap Overide Values here
|
||||||
|
|
||||||
|
ApiEisc.Eisc.SetBoolSigAction(tempJoin, b => {if (b) { tempComm.Comm.Connect(); } else { tempComm.Comm.Disconnect(); }});
|
||||||
|
ApiEisc.Eisc.SetStringSigAction(tempJoin, s => tempComm.Comm.SendText(s));
|
||||||
|
|
||||||
|
tempComm.StatusFeedback.LinkInputSig(ApiEisc.Eisc.UShortInput[tempJoin]);
|
||||||
|
tempComm.ConnectedFeedback.LinkInputSig(ApiEisc.Eisc.BooleanInput[tempJoin]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
ApiEisc.Eisc.Register();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Debug.Console(0, "Name {0} Activated", this.Name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Debug.Console(0, "BRidge {0}", e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public class EssentialComApiMap {
|
||||||
|
public uint Join;
|
||||||
|
public BridgeApiEisc Api;
|
||||||
|
public uint connectJoin;
|
||||||
|
public EssentialComApiMap(BridgeApiEisc api, uint join) {
|
||||||
|
Join = join;
|
||||||
|
Api = api;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
140
PepperDashEssentials/Bridges/EssentialDM.cs
Normal file
140
PepperDashEssentials/Bridges/EssentialDM.cs
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
using PepperDash.Essentials.Core.Config;
|
||||||
|
using PepperDash.Essentials.DM;
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core.Routing;
|
||||||
|
using Crestron.SimplSharpPro;
|
||||||
|
using Crestron.SimplSharpPro.EthernetCommunication;
|
||||||
|
using Crestron.SimplSharpPro.DM;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials {
|
||||||
|
public class EssentialDM : PepperDash.Core.Device {
|
||||||
|
public EssentialDMProperties Properties;
|
||||||
|
public List<BridgeApiEisc> BridgeApiEiscs;
|
||||||
|
private PepperDash.Essentials.DM.DmChassisController DmSwitch;
|
||||||
|
private EssentialDMApiMap ApiMap = new EssentialDMApiMap();
|
||||||
|
public EssentialDM(string key, string name, JToken properties)
|
||||||
|
: base(key, name) {
|
||||||
|
Properties = JsonConvert.DeserializeObject<EssentialDMProperties>(properties.ToString());
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public override bool CustomActivate() {
|
||||||
|
// Create EiscApis
|
||||||
|
try {
|
||||||
|
foreach (var device in DeviceManager.AllDevices) {
|
||||||
|
if (device.Key == this.Properties.connectionDeviceKey) {
|
||||||
|
Debug.Console(2, "deviceKey {0} Matches", device.Key);
|
||||||
|
DmSwitch = DeviceManager.GetDeviceForKey(device.Key) as PepperDash.Essentials.DM.DmChassisController;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
else {
|
||||||
|
Debug.Console(2, "deviceKey {0} doesn't match", device.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Properties.EiscApiIpids != null) {
|
||||||
|
|
||||||
|
|
||||||
|
foreach (string Ipid in Properties.EiscApiIpids) {
|
||||||
|
var ApiEisc = new BridgeApiEisc(Ipid);
|
||||||
|
for (uint x = 1; x <= DmSwitch.Chassis.NumberOfInputs;x++ ) {
|
||||||
|
uint tempX = x;
|
||||||
|
Debug.Console(2, "Creating EiscActions {0}", tempX);
|
||||||
|
|
||||||
|
|
||||||
|
ApiEisc.Eisc.SetUShortSigAction(ApiMap.OutputVideoRoutes[tempX], u => DmSwitch.ExecuteSwitch(u, tempX, eRoutingSignalType.Video));
|
||||||
|
ApiEisc.Eisc.SetUShortSigAction(ApiMap.OutputAudioRoutes[tempX], u => DmSwitch.ExecuteSwitch(u, tempX, eRoutingSignalType.Audio));
|
||||||
|
|
||||||
|
if (DmSwitch.TxDictionary.ContainsKey(tempX)) {
|
||||||
|
Debug.Console(2, "Creating Tx Feedbacks {0}", tempX);
|
||||||
|
var TxKey = DmSwitch.TxDictionary[tempX];
|
||||||
|
var TxDevice = DeviceManager.GetDeviceForKey(TxKey) as DmTxControllerBase;
|
||||||
|
TxDevice.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxOnlineStatus[tempX]]);
|
||||||
|
TxDevice.AnyVideoInput.VideoStatus.VideoSyncFeedback.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxVideoSyncStatus[tempX]]);
|
||||||
|
ApiEisc.Eisc.SetUShortSigAction(901, u => TxDevice.SetHdcpSupport((eHdcpSupportMode)(u)));
|
||||||
|
} else {
|
||||||
|
DmSwitch.VideoInputSyncFeedbacks[tempX].LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.TxVideoSyncStatus[tempX]]);
|
||||||
|
}
|
||||||
|
if (DmSwitch.RxDictionary.ContainsKey(tempX)) {
|
||||||
|
Debug.Console(2, "Creating Rx Feedbacks {0}", tempX);
|
||||||
|
var RxKey = DmSwitch.RxDictionary[tempX];
|
||||||
|
var RxDevice = DeviceManager.GetDeviceForKey(RxKey) as DmRmcControllerBase;
|
||||||
|
RxDevice.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.RxOnlineStatus[tempX]]);
|
||||||
|
}
|
||||||
|
// DmSwitch.InputEndpointOnlineFeedbacks[(ushort)tempOutputNum].LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.OutputVideoRoutes[tempOutputNum]]);
|
||||||
|
DmSwitch.VideoOutputFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.UShortInput[ApiMap.OutputVideoRoutes[tempX]]);
|
||||||
|
DmSwitch.AudioOutputFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.UShortInput[ApiMap.OutputAudioRoutes[tempX]]);
|
||||||
|
DmSwitch.InputNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.InputNames[tempX]]);
|
||||||
|
DmSwitch.OutputNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.OutputNames[tempX]]);
|
||||||
|
DmSwitch.OutputRouteNameFeedbacks[(ushort)tempX].LinkInputSig(ApiEisc.Eisc.StringInput[ApiMap.OutputRouteNames[tempX]]);
|
||||||
|
}
|
||||||
|
DmSwitch.IsOnline.LinkInputSig(ApiEisc.Eisc.BooleanInput[ApiMap.ChassisOnline]);
|
||||||
|
ApiEisc.Eisc.Register();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Debug.Console(2, "Name {0} Activated", this.Name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
Debug.Console(2, "BRidge {0}", e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class EssentialDMProperties {
|
||||||
|
public string connectionDeviceKey;
|
||||||
|
public string[] EiscApiIpids;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class EssentialDMApiMap {
|
||||||
|
public ushort ChassisOnline = 11;
|
||||||
|
public Dictionary<uint, ushort> OutputVideoRoutes;
|
||||||
|
public Dictionary<uint, ushort> OutputAudioRoutes;
|
||||||
|
public Dictionary<uint, ushort> TxOnlineStatus;
|
||||||
|
public Dictionary<uint, ushort> RxOnlineStatus;
|
||||||
|
public Dictionary<uint, ushort> TxVideoSyncStatus;
|
||||||
|
public Dictionary<uint, ushort> InputNames;
|
||||||
|
public Dictionary<uint, ushort> OutputNames;
|
||||||
|
public Dictionary<uint, ushort> OutputRouteNames;
|
||||||
|
|
||||||
|
public EssentialDMApiMap() {
|
||||||
|
OutputVideoRoutes = new Dictionary<uint, ushort>();
|
||||||
|
OutputAudioRoutes = new Dictionary<uint, ushort>();
|
||||||
|
TxOnlineStatus = new Dictionary<uint, ushort>();
|
||||||
|
RxOnlineStatus = new Dictionary<uint, ushort>();
|
||||||
|
TxVideoSyncStatus = new Dictionary<uint, ushort>();
|
||||||
|
InputNames = new Dictionary<uint, ushort>();
|
||||||
|
OutputNames = new Dictionary<uint, ushort>();
|
||||||
|
OutputRouteNames = new Dictionary<uint, ushort>();
|
||||||
|
for (uint x = 1; x <= 200; x++) {
|
||||||
|
// Debug.Console(0, "Init Value {0}", x);
|
||||||
|
uint tempNum = x;
|
||||||
|
|
||||||
|
OutputVideoRoutes[tempNum] = (ushort)(tempNum + 100);
|
||||||
|
OutputAudioRoutes[tempNum] = (ushort)(tempNum + 300);
|
||||||
|
TxOnlineStatus[tempNum] = (ushort)(tempNum + 500);
|
||||||
|
RxOnlineStatus[tempNum] = (ushort)(tempNum + 700);
|
||||||
|
TxVideoSyncStatus[tempNum] = (ushort)(tempNum + 100);
|
||||||
|
InputNames[tempNum] = (ushort)(tempNum + 100);
|
||||||
|
OutputNames[tempNum] = (ushort)(tempNum + 300);
|
||||||
|
OutputRouteNames[tempNum] = (ushort)(tempNum + 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -80,6 +80,16 @@ namespace PepperDash.Essentials
|
|||||||
var dm = new DmMd8x8(ipId, Global.ControlSystem);
|
var dm = new DmMd8x8(ipId, Global.ControlSystem);
|
||||||
//dev = new DmChassisController(devKey, devName, dm);
|
//dev = new DmChassisController(devKey, devName, dm);
|
||||||
}
|
}
|
||||||
|
else if (devType.Equals("dmmd16x16", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var dm = new DmMd16x16(ipId, Global.ControlSystem);
|
||||||
|
//dev = new DmChassisController(devKey, devName, dm);
|
||||||
|
}
|
||||||
|
else if (devType.Equals("dmmd32x32", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
var dm = new DmMd32x32(ipId, Global.ControlSystem);
|
||||||
|
//dev = new DmChassisController(devKey, devName, dm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -207,8 +207,9 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadDevices()
|
public void LoadDevices()
|
||||||
{
|
{
|
||||||
// Build the processor wrapper class
|
# warning Missing PepperDash.Essentials.Core.Devices.CrestronProcessor("processor"));
|
||||||
DeviceManager.AddDevice(new PepperDash.Essentials.Core.Devices.CrestronProcessor("processor"));
|
// Build the processor wrapper class
|
||||||
|
// DeviceManager.AddDevice(new PepperDash.Essentials.Core.Devices.CrestronProcessor("processor"));
|
||||||
|
|
||||||
foreach (var devConf in ConfigReader.ConfigObject.Devices)
|
foreach (var devConf in ConfigReader.ConfigObject.Devices)
|
||||||
{
|
{
|
||||||
@@ -237,7 +238,8 @@ namespace PepperDash.Essentials
|
|||||||
newDev = PepperDash.Essentials.DM.DeviceFactory.GetDevice(devConf);
|
newDev = PepperDash.Essentials.DM.DeviceFactory.GetDevice(devConf);
|
||||||
if (newDev == null)
|
if (newDev == null)
|
||||||
newDev = PepperDash.Essentials.Devices.Displays.DisplayDeviceFactory.GetDevice(devConf);
|
newDev = PepperDash.Essentials.Devices.Displays.DisplayDeviceFactory.GetDevice(devConf);
|
||||||
|
if (newDev == null)
|
||||||
|
newDev = PepperDash.Essentials.BridgeFactory.GetDevice(devConf);
|
||||||
if (newDev != null)
|
if (newDev != null)
|
||||||
DeviceManager.AddDevice(newDev);
|
DeviceManager.AddDevice(newDev);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -105,6 +105,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Audio\EssentialsVolumeLevelConfig.cs" />
|
<Compile Include="Audio\EssentialsVolumeLevelConfig.cs" />
|
||||||
|
<Compile Include="Bridges\Bridges.BridgeFactory.cs" />
|
||||||
<Compile Include="Configuration ORIGINAL\Builders\TPConfig.cs" />
|
<Compile Include="Configuration ORIGINAL\Builders\TPConfig.cs" />
|
||||||
<Compile Include="Configuration ORIGINAL\Configuration.cs" />
|
<Compile Include="Configuration ORIGINAL\Configuration.cs" />
|
||||||
<Compile Include="Configuration ORIGINAL\ConfigurationHelpers.cs" />
|
<Compile Include="Configuration ORIGINAL\ConfigurationHelpers.cs" />
|
||||||
@@ -121,6 +122,8 @@
|
|||||||
<Compile Include="Configuration ORIGINAL\Factories\FactoryHelper.cs" />
|
<Compile Include="Configuration ORIGINAL\Factories\FactoryHelper.cs" />
|
||||||
<Compile Include="Config\ConfigReader.cs" />
|
<Compile Include="Config\ConfigReader.cs" />
|
||||||
<Compile Include="Config\EssentialsConfig.cs" />
|
<Compile Include="Config\EssentialsConfig.cs" />
|
||||||
|
<Compile Include="Bridges\EssentialComms.cs" />
|
||||||
|
<Compile Include="Bridges\EssentialDM.cs" />
|
||||||
<Compile Include="Factory\DeviceFactory.cs" />
|
<Compile Include="Factory\DeviceFactory.cs" />
|
||||||
<Compile Include="Devices\Amplifier.cs" />
|
<Compile Include="Devices\Amplifier.cs" />
|
||||||
<Compile Include="Devices\DiscPlayer\OppoExtendedBdp.cs" />
|
<Compile Include="Devices\DiscPlayer\OppoExtendedBdp.cs" />
|
||||||
|
|||||||
Submodule essentials-framework updated: e13dcea550...13a51fcbf6
Reference in New Issue
Block a user