diff --git a/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IDisplay.cs b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IDisplay.cs
new file mode 100644
index 00000000..9b82cacd
--- /dev/null
+++ b/src/PepperDash.Essentials.Core/DeviceTypeInterfaces/IDisplay.cs
@@ -0,0 +1,8 @@
+using PepperDash.Core;
+
+namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
+{
+ public interface IDisplay: IHasFeedback, IRoutingSinkWithSwitching, IHasPowerControl, IWarmingCooling, IUsageTracking, IKeyName
+ {
+ }
+}
diff --git a/src/PepperDash.Essentials.Core/Devices/FIND HOMES Interfaces.cs b/src/PepperDash.Essentials.Core/Devices/FIND HOMES Interfaces.cs
index 318f5179..d4b09779 100644
--- a/src/PepperDash.Essentials.Core/Devices/FIND HOMES Interfaces.cs
+++ b/src/PepperDash.Essentials.Core/Devices/FIND HOMES Interfaces.cs
@@ -1,12 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
-using Crestron.SimplSharpPro;
-using Crestron.SimplSharpPro.DeviceSupport;
-
-using PepperDash.Core;
+using PepperDash.Core;
namespace PepperDash.Essentials.Core
@@ -16,22 +8,6 @@ namespace PepperDash.Essentials.Core
BoolFeedback IsOnline { get; }
}
- /////
- ///// ** WANT THIS AND ALL ITS FRIENDS TO GO AWAY **
- ///// Defines a class that has a list of CueAction objects, typically
- ///// for linking functions to user interfaces or API calls
- /////
- //public interface IHasCueActionList
- //{
- // List CueActionList { get; }
- //}
-
-
- //public interface IHasComPortsHardware
- //{
- // IComPorts ComPortsDevice { get; }
- //}
-
///
/// Describes a device that can have a video sync providing device attached to it
///
diff --git a/src/PepperDash.Essentials.Core/Display/BasicIrDisplay.cs b/src/PepperDash.Essentials.Core/Display/BasicIrDisplay.cs
deleted file mode 100644
index 394fa17a..00000000
--- a/src/PepperDash.Essentials.Core/Display/BasicIrDisplay.cs
+++ /dev/null
@@ -1,229 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
-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 Serilog.Events;
-
-namespace PepperDash.Essentials.Core
-{
- [Obsolete("Please use PepperDash.Essentials.Device.Common, this will be removed in 2.1")]
- public class BasicIrDisplay : DisplayBase, IBasicVolumeControls, IBridgeAdvanced
- {
- public IrOutputPortController IrPort { get; private set; }
- public ushort IrPulseTime { get; set; }
-
- protected Func PowerIsOnFeedbackFunc
- {
- get { return () => _PowerIsOn; }
- }
- protected override Func IsCoolingDownFeedbackFunc
- {
- get { return () => _IsCoolingDown; }
- }
- protected override Func IsWarmingUpFeedbackFunc
- {
- get { return () => _IsWarmingUp; }
- }
-
- bool _PowerIsOn;
- bool _IsWarmingUp;
- bool _IsCoolingDown;
-
- public BasicIrDisplay(string key, string name, IROutputPort port, string irDriverFilepath)
- : base(key, name)
- {
- IrPort = new IrOutputPortController(key + "-ir", port, irDriverFilepath);
- DeviceManager.AddDevice(IrPort);
-
- IsWarmingUpFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Verbose, this, "Warming up={0}", _IsWarmingUp);
- IsCoolingDownFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Verbose, this, "Cooling down={0}", _IsCoolingDown);
-
- InputPorts.AddRange(new RoutingPortCollection
- {
- new RoutingInputPort(RoutingPortNames.HdmiIn1, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Hdmi1), this, false),
- new RoutingInputPort(RoutingPortNames.HdmiIn2, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Hdmi2), this, false),
- new RoutingInputPort(RoutingPortNames.HdmiIn3, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Hdmi3), this, false),
- new RoutingInputPort(RoutingPortNames.HdmiIn4, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Hdmi4), this, false),
- new RoutingInputPort(RoutingPortNames.ComponentIn, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Component1), this, false),
- new RoutingInputPort(RoutingPortNames.CompositeIn, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Video1), this, false),
- new RoutingInputPort(RoutingPortNames.AntennaIn, eRoutingSignalType.Audio | eRoutingSignalType.Video,
- eRoutingPortConnectionType.Hdmi, new Action(Antenna), this, false),
- });
- }
-
- public void Hdmi1()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_1, IrPulseTime);
- }
-
- public void Hdmi2()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_2, IrPulseTime);
- }
-
- public void Hdmi3()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_3, IrPulseTime);
- }
-
- public void Hdmi4()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_HDMI_4, IrPulseTime);
- }
-
- public void Component1()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_COMPONENT_1, IrPulseTime);
- }
-
- public void Video1()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_VIDEO_1, IrPulseTime);
- }
-
- public void Antenna()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_ANTENNA, IrPulseTime);
- }
-
- #region IPower Members
-
- public override void PowerOn()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_POWER_ON, IrPulseTime);
- _PowerIsOn = true;
- }
-
- public override void PowerOff()
- {
- _PowerIsOn = false;
- IrPort.Pulse(IROutputStandardCommands.IROut_POWER_OFF, IrPulseTime);
- }
-
- public override void PowerToggle()
- {
- _PowerIsOn = false;
- IrPort.Pulse(IROutputStandardCommands.IROut_POWER, IrPulseTime);
- }
-
- #endregion
-
- #region IBasicVolumeControls Members
-
- public void VolumeUp(bool pressRelease)
- {
- IrPort.PressRelease(IROutputStandardCommands.IROut_VOL_PLUS, pressRelease);
- }
-
- public void VolumeDown(bool pressRelease)
- {
- IrPort.PressRelease(IROutputStandardCommands.IROut_VOL_MINUS, pressRelease);
- }
-
- public void MuteToggle()
- {
- IrPort.Pulse(IROutputStandardCommands.IROut_MUTE, 200);
- }
-
- #endregion
-
- void StartWarmingTimer()
- {
- _IsWarmingUp = true;
- IsWarmingUpFeedback.FireUpdate();
- new CTimer(o => {
- _IsWarmingUp = false;
- IsWarmingUpFeedback.FireUpdate();
- }, 10000);
- }
-
- void StartCoolingTimer()
- {
- _IsCoolingDown = true;
- IsCoolingDownFeedback.FireUpdate();
- new CTimer(o =>
- {
- _IsCoolingDown = false;
- IsCoolingDownFeedback.FireUpdate();
- }, 7000);
- }
-
- #region IRoutingSink Members
-
- ///
- /// Typically called by the discovery routing algorithm.
- ///
- /// A delegate containing the input selector method to call
- public override void ExecuteSwitch(object inputSelector)
- {
- Debug.LogMessage(LogEventLevel.Verbose, this, "Switching to input '{0}'", (inputSelector as Action).ToString());
-
- Action finishSwitch = () =>
- {
- var action = inputSelector as Action;
- if (action != null)
- action();
- };
-
- if (!_PowerIsOn)
- {
- PowerOn();
- EventHandler oneTimer = null;
- oneTimer = (o, a) =>
- {
- if (IsWarmingUpFeedback.BoolValue) return; // Only catch done warming
- IsWarmingUpFeedback.OutputChange -= oneTimer;
- finishSwitch();
- };
- IsWarmingUpFeedback.OutputChange += oneTimer;
- }
- else // Do it!
- finishSwitch();
- }
-
- #endregion
-
- public void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
- {
- LinkDisplayToApi(this, trilist, joinStart, joinMapKey, bridge);
- }
- }
-
- [Obsolete("Please use PepperDash.Essentials.Device.Common, this will be removed in 2.1")]
- public class BasicIrDisplayFactory : EssentialsDeviceFactory
- {
- public BasicIrDisplayFactory()
- {
- TypeNames = new List() { "basicirdisplay" };
- }
-
- public override EssentialsDevice BuildDevice(DeviceConfig dc)
- {
- Debug.LogMessage(LogEventLevel.Debug, "Factory Attempting to create new BasicIrDisplay Device");
- var ir = IRPortHelper.GetIrPort(dc.Properties);
- if (ir != null)
- {
- var display = new BasicIrDisplay(dc.Key, dc.Name, ir.Port, ir.FileName);
- display.IrPulseTime = 200; // Set default pulse time for IR commands.
- return display;
- }
-
- return null;
- }
- }
-
-}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Display/DisplayBase.cs b/src/PepperDash.Essentials.Core/Display/DisplayBase.cs
deleted file mode 100644
index a41f936f..00000000
--- a/src/PepperDash.Essentials.Core/Display/DisplayBase.cs
+++ /dev/null
@@ -1,320 +0,0 @@
-
-
-using Crestron.SimplSharp;
-using Crestron.SimplSharpPro.DeviceSupport;
-using Newtonsoft.Json;
-using PepperDash.Core;
-using PepperDash.Essentials.Core.Bridges;
-using Serilog.Events;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-
-namespace PepperDash.Essentials.Core
-{
- [Obsolete("Please use PepperDash.Essentials.Devices.Common, this will be removed in 2.1")]
- public abstract class DisplayBase : EssentialsDevice, IHasFeedback, IRoutingSinkWithSwitching, IHasPowerControl, IWarmingCooling, IUsageTracking
- {
- public event SourceInfoChangeHandler CurrentSourceChange;
- public event InputChangedEventHandler InputChanged;
-
- public string CurrentSourceInfoKey { get; set; }
- public SourceListItem CurrentSourceInfo
- {
- get
- {
- return _CurrentSourceInfo;
- }
- set
- {
- if (value == _CurrentSourceInfo) return;
-
- var handler = CurrentSourceChange;
-
- if (handler != null)
- handler(_CurrentSourceInfo, ChangeType.WillChange);
-
- _CurrentSourceInfo = value;
-
- if (handler != null)
- handler(_CurrentSourceInfo, ChangeType.DidChange);
- }
- }
- SourceListItem _CurrentSourceInfo;
-
- public BoolFeedback IsCoolingDownFeedback { get; protected set; }
- public BoolFeedback IsWarmingUpFeedback { get; private set; }
-
- public UsageTracking UsageTracker { get; set; }
-
- public uint WarmupTime { get; set; }
- public uint CooldownTime { get; set; }
-
- ///
- /// Bool Func that will provide a value for the PowerIsOn Output. Must be implemented
- /// by concrete sub-classes
- ///
- abstract protected Func IsCoolingDownFeedbackFunc { get; }
- abstract protected Func IsWarmingUpFeedbackFunc { get; }
-
-
- protected CTimer WarmupTimer;
- protected CTimer CooldownTimer;
-
- #region IRoutingInputs Members
-
- public RoutingPortCollection InputPorts { get; private set; }
-
- #endregion
-
- protected DisplayBase(string key, string name)
- : base(key, name)
- {
- IsCoolingDownFeedback = new BoolFeedback("IsCoolingDown", IsCoolingDownFeedbackFunc);
- IsWarmingUpFeedback = new BoolFeedback("IsWarmingUp", IsWarmingUpFeedbackFunc);
-
- InputPorts = new RoutingPortCollection();
-
- }
-
- public abstract void PowerOn();
- public abstract void PowerOff();
- public abstract void PowerToggle();
-
- public virtual FeedbackCollection Feedbacks
- {
- get
- {
- return new FeedbackCollection
- {
- IsCoolingDownFeedback,
- IsWarmingUpFeedback
- };
- }
- }
-
- public RoutingInputPort CurrentInputPort => throw new NotImplementedException();
-
- public abstract void ExecuteSwitch(object selector);
-
- protected void LinkDisplayToApi(DisplayBase displayDevice, BasicTriList trilist, uint joinStart, string joinMapKey,
- EiscApiAdvanced bridge)
- {
- var joinMap = new DisplayControllerJoinMap(joinStart);
-
- var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);
-
- if (!string.IsNullOrEmpty(joinMapSerialized))
- joinMap = JsonConvert.DeserializeObject(joinMapSerialized);
-
- if (bridge != null)
- {
- bridge.AddJoinMap(Key, joinMap);
- }
- else
- {
- Debug.LogMessage(LogEventLevel.Information,this,"Please update config to use 'eiscapiadvanced' to get all join map features for this device.");
- }
-
- LinkDisplayToApi(displayDevice, trilist, joinMap);
- }
-
- protected void LinkDisplayToApi(DisplayBase displayDevice, BasicTriList trilist, DisplayControllerJoinMap joinMap)
- {
- Debug.LogMessage(LogEventLevel.Debug, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));
- Debug.LogMessage(LogEventLevel.Information, "Linking to Display: {0}", displayDevice.Name);
-
- trilist.StringInput[joinMap.Name.JoinNumber].StringValue = displayDevice.Name;
-
- var commMonitor = displayDevice as ICommunicationMonitor;
- if (commMonitor != null)
- {
- commMonitor.CommunicationMonitor.IsOnlineFeedback.LinkInputSig(trilist.BooleanInput[joinMap.IsOnline.JoinNumber]);
- }
-
- var inputNumber = 0;
- var inputKeys = new List();
-
- var inputNumberFeedback = new IntFeedback(() => inputNumber);
-
- // Two way feedbacks
- var twoWayDisplay = displayDevice as TwoWayDisplayBase;
-
- if (twoWayDisplay != null)
- {
- trilist.SetBool(joinMap.IsTwoWayDisplay.JoinNumber, true);
-
- twoWayDisplay.CurrentInputFeedback.OutputChange += (o, a) => Debug.LogMessage(LogEventLevel.Information, "CurrentInputFeedback_OutputChange {0}", a.StringValue);
-
-
- inputNumberFeedback.LinkInputSig(trilist.UShortInput[joinMap.InputSelect.JoinNumber]);
- }
-
- // Power Off
- trilist.SetSigTrueAction(joinMap.PowerOff.JoinNumber, () =>
- {
- inputNumber = 102;
- inputNumberFeedback.FireUpdate();
- displayDevice.PowerOff();
- });
-
- var twoWayDisplayDevice = displayDevice as TwoWayDisplayBase;
- if (twoWayDisplayDevice != null)
- {
- twoWayDisplayDevice.PowerIsOnFeedback.OutputChange += (o, a) =>
- {
- if (!a.BoolValue)
- {
- inputNumber = 102;
- inputNumberFeedback.FireUpdate();
-
- }
- else
- {
- inputNumber = 0;
- inputNumberFeedback.FireUpdate();
- }
- };
-
- twoWayDisplayDevice.PowerIsOnFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.PowerOff.JoinNumber]);
- twoWayDisplayDevice.PowerIsOnFeedback.LinkInputSig(trilist.BooleanInput[joinMap.PowerOn.JoinNumber]);
- }
-
- // PowerOn
- trilist.SetSigTrueAction(joinMap.PowerOn.JoinNumber, () =>
- {
- inputNumber = 0;
- inputNumberFeedback.FireUpdate();
- displayDevice.PowerOn();
- });
-
-
-
- for (int i = 0; i < displayDevice.InputPorts.Count; i++)
- {
- if (i < joinMap.InputNamesOffset.JoinSpan)
- {
- inputKeys.Add(displayDevice.InputPorts[i].Key);
- var tempKey = inputKeys.ElementAt(i);
- trilist.SetSigTrueAction((ushort)(joinMap.InputSelectOffset.JoinNumber + i),
- () => displayDevice.ExecuteSwitch(displayDevice.InputPorts[tempKey].Selector));
- Debug.LogMessage(LogEventLevel.Verbose, displayDevice, "Setting Input Select Action on Digital Join {0} to Input: {1}",
- joinMap.InputSelectOffset.JoinNumber + i, displayDevice.InputPorts[tempKey].Key.ToString());
- trilist.StringInput[(ushort)(joinMap.InputNamesOffset.JoinNumber + i)].StringValue = displayDevice.InputPorts[i].Key.ToString();
- }
- else
- Debug.LogMessage(LogEventLevel.Information, displayDevice, "Device has {0} inputs. The Join Map allows up to {1} inputs. Discarding inputs {2} - {3} from bridge.",
- displayDevice.InputPorts.Count, joinMap.InputNamesOffset.JoinSpan, i + 1, displayDevice.InputPorts.Count);
- }
-
- Debug.LogMessage(LogEventLevel.Verbose, displayDevice, "Setting Input Select Action on Analog Join {0}", joinMap.InputSelect);
- trilist.SetUShortSigAction(joinMap.InputSelect.JoinNumber, (a) =>
- {
- if (a == 0)
- {
- displayDevice.PowerOff();
- inputNumber = 0;
- }
- else if (a > 0 && a < displayDevice.InputPorts.Count && a != inputNumber)
- {
- displayDevice.ExecuteSwitch(displayDevice.InputPorts.ElementAt(a - 1).Selector);
- inputNumber = a;
- }
- else if (a == 102)
- {
- displayDevice.PowerToggle();
-
- }
- if (twoWayDisplay != null)
- inputNumberFeedback.FireUpdate();
- });
-
-
- var volumeDisplay = displayDevice as IBasicVolumeControls;
- if (volumeDisplay == null) return;
-
- trilist.SetBoolSigAction(joinMap.VolumeUp.JoinNumber, volumeDisplay.VolumeUp);
- trilist.SetBoolSigAction(joinMap.VolumeDown.JoinNumber, volumeDisplay.VolumeDown);
- trilist.SetSigTrueAction(joinMap.VolumeMute.JoinNumber, volumeDisplay.MuteToggle);
-
- var volumeDisplayWithFeedback = volumeDisplay as IBasicVolumeWithFeedback;
-
- if (volumeDisplayWithFeedback == null) return;
- trilist.SetSigTrueAction(joinMap.VolumeMuteOn.JoinNumber, volumeDisplayWithFeedback.MuteOn);
- trilist.SetSigTrueAction(joinMap.VolumeMuteOff.JoinNumber, volumeDisplayWithFeedback.MuteOff);
-
-
- trilist.SetUShortSigAction(joinMap.VolumeLevel.JoinNumber, volumeDisplayWithFeedback.SetVolume);
- volumeDisplayWithFeedback.VolumeLevelFeedback.LinkInputSig(trilist.UShortInput[joinMap.VolumeLevel.JoinNumber]);
- volumeDisplayWithFeedback.MuteFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VolumeMute.JoinNumber]);
- volumeDisplayWithFeedback.MuteFeedback.LinkInputSig(trilist.BooleanInput[joinMap.VolumeMuteOn.JoinNumber]);
- volumeDisplayWithFeedback.MuteFeedback.LinkComplementInputSig(trilist.BooleanInput[joinMap.VolumeMuteOff.JoinNumber]);
- }
-
- }
-
- [Obsolete("Please use PepperDash.Essentials.Devices.Common, this will be removed in 2.1")]
- public abstract class TwoWayDisplayBase : DisplayBase, IRoutingFeedback, IHasPowerControlWithFeedback
- {
- public StringFeedback CurrentInputFeedback { get; private set; }
-
- abstract protected Func CurrentInputFeedbackFunc { get; }
-
- public BoolFeedback PowerIsOnFeedback { get; protected set; }
-
- abstract protected Func PowerIsOnFeedbackFunc { get; }
-
-
- // public static MockDisplay DefaultDisplay
- // {
- // get
- // {
- // if (_DefaultDisplay == null)
- // _DefaultDisplay = new MockDisplay("default", "Default Display");
- // return _DefaultDisplay;
- // }
- //}
- //static MockDisplay _DefaultDisplay;
-
- public TwoWayDisplayBase(string key, string name)
- : base(key, name)
- {
- CurrentInputFeedback = new StringFeedback(CurrentInputFeedbackFunc);
-
- WarmupTime = 7000;
- CooldownTime = 15000;
-
- PowerIsOnFeedback = new BoolFeedback("PowerOnFeedback", PowerIsOnFeedbackFunc);
-
- Feedbacks.Add(CurrentInputFeedback);
- Feedbacks.Add(PowerIsOnFeedback);
-
- PowerIsOnFeedback.OutputChange += PowerIsOnFeedback_OutputChange;
-
- }
-
- void PowerIsOnFeedback_OutputChange(object sender, EventArgs e)
- {
- if (UsageTracker != null)
- {
- if (PowerIsOnFeedback.BoolValue)
- UsageTracker.StartDeviceUsage();
- else
- UsageTracker.EndDeviceUsage();
- }
- }
-
- public event EventHandler NumericSwitchChange;
-
- ///
- /// Raise an event when the status of a switch object changes.
- ///
- /// Arguments defined as IKeyName sender, output, input, and eRoutingSignalType
- protected void OnSwitchChange(RoutingNumericEventArgs e)
- {
- var newEvent = NumericSwitchChange;
- if (newEvent != null) newEvent(this, e);
- }
- }
-}
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Core/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs b/src/PepperDash.Essentials.Core/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs
index 04f2490a..ab04a0b0 100644
--- a/src/PepperDash.Essentials.Core/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs
+++ b/src/PepperDash.Essentials.Core/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs
@@ -9,6 +9,7 @@ using Crestron.SimplSharpPro.Fusion;
using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Essentials.Core.Config;
+using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using Serilog.Events;
using System;
using System.Collections.Generic;
@@ -1245,7 +1246,7 @@ namespace PepperDash.Essentials.Core.Fusion
}
//else
- if (dev is DisplayBase)
+ if (dev is IDisplay)
{
attrNum = attrNum + displayNum;
if (attrNum > JoinMap.DisplayOnlineStart.JoinSpan)
@@ -1289,13 +1290,13 @@ namespace PepperDash.Essentials.Core.Fusion
{
//Setup Display Usage Monitoring
- var displays = DeviceManager.AllDevices.Where(d => d is DisplayBase);
+ var displays = DeviceManager.AllDevices.Where(d => d is IDisplay);
// Consider updating this in multiple display systems
- foreach (var display in displays.Cast())
+ foreach (var display in displays.Cast())
{
- display.UsageTracker = new UsageTracking(display) {UsageIsTracked = true};
+ display.UsageTracker = new UsageTracking(display as Device) {UsageIsTracked = true};
display.UsageTracker.DeviceUsageEnded += UsageTracker_DeviceUsageEnded;
}
@@ -1304,7 +1305,7 @@ namespace PepperDash.Essentials.Core.Fusion
{
return;
}
- var defaultDisplay = hasDefaultDisplay.DefaultDisplay as DisplayBase;
+ var defaultDisplay = hasDefaultDisplay.DefaultDisplay as IDisplay;
if (defaultDisplay == null)
{
Debug.LogMessage(LogEventLevel.Debug, this, "Cannot link null display to Fusion because default display is null");
@@ -1370,8 +1371,8 @@ namespace PepperDash.Essentials.Core.Fusion
}
// Use extension methods
- dispAsset.TrySetMakeModel(defaultDisplay);
- dispAsset.TryLinkAssetErrorToCommunication(defaultDisplay);
+ dispAsset.TrySetMakeModel(defaultDisplay as Device);
+ dispAsset.TryLinkAssetErrorToCommunication(defaultDisplay as Device);
}
catch (Exception e)
{
@@ -1386,7 +1387,7 @@ namespace PepperDash.Essentials.Core.Fusion
///
///
/// a
- protected virtual void MapDisplayToRoomJoins(int displayIndex, uint joinOffset, DisplayBase display)
+ protected virtual void MapDisplayToRoomJoins(int displayIndex, uint joinOffset, IDisplay display)
{
var displayName = string.Format("Display {0} - ", displayIndex);
diff --git a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
index 778d471e..fecf88f9 100644
--- a/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
+++ b/src/PepperDash.Essentials.Core/PepperDash.Essentials.Core.csproj
@@ -6,6 +6,7 @@
net472
true
+ true
bin\$(Configuration)\
PepperDash_Essentials_Core
PepperDash.Essentials.Core
@@ -31,4 +32,7 @@
+
+
+
\ No newline at end of file
diff --git a/src/PepperDash.Essentials.Devices.Common/Displays/DisplayBase.cs b/src/PepperDash.Essentials.Devices.Common/Displays/DisplayBase.cs
index 9796599b..24d55c2e 100644
--- a/src/PepperDash.Essentials.Devices.Common/Displays/DisplayBase.cs
+++ b/src/PepperDash.Essentials.Devices.Common/Displays/DisplayBase.cs
@@ -4,6 +4,7 @@ using Newtonsoft.Json;
using PepperDash.Core;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Bridges;
+using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using Serilog.Events;
using System;
using System.Collections.Generic;
@@ -12,12 +13,7 @@ using Feedback = PepperDash.Essentials.Core.Feedback;
namespace PepperDash.Essentials.Devices.Common.Displays
{
- public abstract class DisplayBase : EssentialsDevice
- , IHasFeedback
- , IRoutingSinkWithSwitching
- , IHasPowerControl
- , IWarmingCooling
- , IUsageTracking
+ public abstract class DisplayBase : EssentialsDevice, IDisplay
{
private RoutingInputPort _currentInputPort;
public RoutingInputPort CurrentInputPort
diff --git a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
index a58861a5..5f8e6707 100644
--- a/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
+++ b/src/PepperDash.Essentials.Devices.Common/PepperDash.Essentials.Devices.Common.csproj
@@ -9,7 +9,7 @@
bin\$(Configuration)\
Essentials Devices Common
PepperDash.Essentials.Devices.Common
- True
+ true
PepperDash Essentials Devices Common
PepperDash.Essentials.Devices.Common
2.0.0-local
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/DisplayBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/DisplayBaseMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/DisplayBaseMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IChannelMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IChannelMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IChannelMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IColorMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IColorMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IColorMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IDPadMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IDPadMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDPadMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IDvrMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IDvrMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IDvrMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IHasPowerMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/IHasPowerMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/IHasPowerMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/INumericMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/INumericMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/INumericMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/ISetTopBoxControlsMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/ISetTopBoxControlsMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ISetTopBoxControlsMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/ITransportMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs
similarity index 100%
rename from src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/ITransportMessenger.cs
rename to src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtensions/ITransportMessenger.cs
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/CoreDisplayBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/CoreDisplayBaseMessenger.cs
deleted file mode 100644
index bf782710..00000000
--- a/src/PepperDash.Essentials.MobileControl.Messengers/DeviceTypeExtenstions/CoreDisplayBaseMessenger.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using Newtonsoft.Json.Linq;
-using PepperDash.Core;
-using PepperDash.Essentials.AppServer;
-using PepperDash.Essentials.AppServer.Messengers;
-using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-using System;
-using System.Linq;
-using DisplayBase = PepperDash.Essentials.Core.DisplayBase;
-
-namespace PepperDash.Essentials.Room.MobileControl
-{
- public class CoreDisplayBaseMessenger: MessengerBase
- {
- private readonly DisplayBase display;
-
- public CoreDisplayBaseMessenger(string key, string messagePath, DisplayBase device) : base(key, messagePath, device)
- {
- display = device;
- }
-
- protected override void RegisterActions()
- {
- base.RegisterActions();
-
- /* AddAction("/powerOn", (id, content) => display.PowerOn());
- AddAction("/powerOff", (id, content) => display.PowerOff());
- AddAction("/powerToggle", (id, content) => display.PowerToggle());*/
-
- AddAction("/inputSelect", (id, content) =>
- {
- var s = content.ToObject>();
-
- var inputPort = display.InputPorts.FirstOrDefault(i => i.Key == s.Value);
-
- if (inputPort == null)
- {
- Debug.Console(1, "No input named {0} found for device {1}", s, display.Key);
- return;
- }
-
- display.ExecuteSwitch(inputPort.Selector);
- });
-
- AddAction("/inputs", (id, content) =>
- {
- var inputsList = display.InputPorts.Select(p => p.Key).ToList();
-
- var messageObject = new MobileControlMessage
- {
- Type = MessagePath + "/inputs",
- Content = JToken.FromObject(new
- {
- inputKeys = inputsList,
- })
- };
-
- AppServerController.SendMessageObject(messageObject);
- });
- }
- }
-}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CoreTwoWayDisplayBaseMessenger.cs b/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CoreTwoWayDisplayBaseMessenger.cs
deleted file mode 100644
index 8bce8a4e..00000000
--- a/src/PepperDash.Essentials.MobileControl.Messengers/Messengers/CoreTwoWayDisplayBaseMessenger.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using Newtonsoft.Json.Linq;
-using PepperDash.Core;
-using PepperDash.Essentials.Core;
-using PepperDash.Essentials.Core.DeviceTypeInterfaces;
-
-namespace PepperDash.Essentials.AppServer.Messengers
-{
- public class CoreTwoWayDisplayBaseMessenger : MessengerBase
- {
- private readonly TwoWayDisplayBase _display;
-
- public CoreTwoWayDisplayBaseMessenger(string key, string messagePath, Device display)
- : base(key, messagePath, display)
- {
- _display = display as TwoWayDisplayBase;
- }
-
- #region Overrides of MessengerBase
-
- public void SendFullStatus()
- {
- var messageObj = new TwoWayDisplayBaseStateMessage
- {
- //PowerState = _display.PowerIsOnFeedback.BoolValue,
- CurrentInput = _display.CurrentInputFeedback.StringValue
- };
-
- PostStatusMessage(messageObj);
- }
-
-#if SERIES4
- protected override void RegisterActions()
-#else
- protected override void CustomRegisterWithAppServer(MobileControlSystemController appServerController)
-#endif
- {
- base.RegisterActions();
- if (_display == null)
- {
- Debug.Console(0, this, $"Unable to register TwoWayDisplayBase messenger {Key}");
- return;
- }
-
- AddAction("/fullStatus", (id, content) => SendFullStatus());
-
- _display.PowerIsOnFeedback.OutputChange += PowerIsOnFeedbackOnOutputChange;
- _display.CurrentInputFeedback.OutputChange += CurrentInputFeedbackOnOutputChange;
- _display.IsCoolingDownFeedback.OutputChange += IsCoolingFeedbackOnOutputChange;
- _display.IsWarmingUpFeedback.OutputChange += IsWarmingFeedbackOnOutputChange;
- }
-
- private void CurrentInputFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
- {
- PostStatusMessage(JToken.FromObject(new
- {
- currentInput = feedbackEventArgs.StringValue
- }));
- }
-
-
- private void PowerIsOnFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
- {
- PostStatusMessage(JToken.FromObject(new
- {
- powerState = feedbackEventArgs.BoolValue
- })
- );
- }
-
- private void IsWarmingFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
- {
- PostStatusMessage(JToken.FromObject(new
- {
- isWarming = feedbackEventArgs.BoolValue
- })
- );
-
- }
-
- private void IsCoolingFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
- {
- PostStatusMessage(JToken.FromObject(new
- {
- isCooling = feedbackEventArgs.BoolValue
- })
- );
- }
-
- #endregion
- }
-}
diff --git a/src/PepperDash.Essentials.MobileControl.Messengers/PepperDash.Essentials.MobileControl.Messengers.csproj b/src/PepperDash.Essentials.MobileControl.Messengers/PepperDash.Essentials.MobileControl.Messengers.csproj
index 83dc2c17..196f83bd 100644
--- a/src/PepperDash.Essentials.MobileControl.Messengers/PepperDash.Essentials.MobileControl.Messengers.csproj
+++ b/src/PepperDash.Essentials.MobileControl.Messengers/PepperDash.Essentials.MobileControl.Messengers.csproj
@@ -6,6 +6,7 @@
PepperDash.Essentials.AppServer
net472
mobile-control-messengers
+ mobile-control-messengers
mobile-control-messengers
Copyright © 2024
bin\$(Configuration)\
diff --git a/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs b/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs
index 86d8f48d..2ff51a4d 100644
--- a/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs
+++ b/src/PepperDash.Essentials.MobileControl/MobileControlSystemController.cs
@@ -500,19 +500,19 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
- if (device is Core.DisplayBase)
- {
- Debug.Console(2, this, "Adding actions for device: {0}", device.Key);
+ //if (device is Core.DisplayBase)
+ //{
+ // Debug.Console(2, this, "Adding actions for device: {0}", device.Key);
- var dbMessenger = new CoreDisplayBaseMessenger(
- $"{device.Key}-displayBase-{Key}",
- $"/device/{device.Key}",
- device as Core.DisplayBase
- );
- AddDefaultDeviceMessenger(dbMessenger);
+ // var dbMessenger = new CoreDisplayBaseMessenger(
+ // $"{device.Key}-displayBase-{Key}",
+ // $"/device/{device.Key}",
+ // device as Core.DisplayBase
+ // );
+ // AddDefaultDeviceMessenger(dbMessenger);
- messengerAdded = true;
- }
+ // messengerAdded = true;
+ //}
if (device is TwoWayDisplayBase)
{
@@ -533,25 +533,6 @@ namespace PepperDash.Essentials
messengerAdded = true;
}
- if (device is Core.TwoWayDisplayBase)
- {
- var display = device as Core.TwoWayDisplayBase;
- Debug.Console(
- 2,
- this,
- "Adding TwoWayDisplayBase for device: {0}",
- device.Key
- );
- var twoWayDisplayMessenger = new CoreTwoWayDisplayBaseMessenger(
- $"{device.Key}-twoWayDisplay-{Key}",
- string.Format("/device/{0}", device.Key),
- display
- );
- AddDefaultDeviceMessenger(twoWayDisplayMessenger);
-
- messengerAdded = true;
- }
-
if (device is IBasicVolumeWithFeedback)
{
var deviceKey = device.Key;
diff --git a/src/PepperDash.Essentials.MobileControl/PepperDash.Essentials.MobileControl.csproj b/src/PepperDash.Essentials.MobileControl/PepperDash.Essentials.MobileControl.csproj
index b43a8221..66818fcf 100644
--- a/src/PepperDash.Essentials.MobileControl/PepperDash.Essentials.MobileControl.csproj
+++ b/src/PepperDash.Essentials.MobileControl/PepperDash.Essentials.MobileControl.csproj
@@ -8,12 +8,14 @@
true
false
epi-essentials-mobile-control
+ epi-essentials-mobile-control
PepperDash Technologies
epi-essentials-mobile-control
This software is a plugin designed to work as a part of PepperDash Essentials for Crestron control processors. This plugin allows for connection to a PepperDash Mobile Control server.
Copyright 2020
4.0.0-local
true
+ true
$(Version)
false
bin\$(Configuration)\