diff --git a/Essentials Core/PepperDashEssentialsBase/Monitoring/GenericCommunicationMonitor.cs b/Essentials Core/PepperDashEssentialsBase/Monitoring/GenericCommunicationMonitor.cs
index bf5bc25b..ceb79207 100644
--- a/Essentials Core/PepperDashEssentialsBase/Monitoring/GenericCommunicationMonitor.cs
+++ b/Essentials Core/PepperDashEssentialsBase/Monitoring/GenericCommunicationMonitor.cs
@@ -40,8 +40,8 @@ namespace PepperDash.Essentials.Core
{
if (pollTime > warningTime || pollTime > errorTime)
throw new ArgumentException("pollTime must be less than warning or errorTime");
- if (pollTime < 5000)
- throw new ArgumentException("pollTime cannot be less than 5000 ms");
+ //if (pollTime < 5000)
+ // throw new ArgumentException("pollTime cannot be less than 5000 ms");
Client = client;
PollTime = pollTime;
@@ -63,8 +63,8 @@ namespace PepperDash.Essentials.Core
{
if (pollTime > warningTime || pollTime > errorTime)
throw new ArgumentException("pollTime must be less than warning or errorTime");
- if (pollTime < 5000)
- throw new ArgumentException("pollTime cannot be less than 5000 ms");
+ //if (pollTime < 5000)
+ // throw new ArgumentException("pollTime cannot be less than 5000 ms");
Client = client;
PollTime = pollTime;
@@ -112,7 +112,7 @@ namespace PepperDash.Essentials.Core
StartErrorTimers();
if (Client.IsConnected)
{
- Debug.Console(2, Client, "Monitor, Polling");
+ Debug.Console(2, this, "Polling");
if(PollAction != null)
PollAction.Invoke();
else
@@ -120,7 +120,7 @@ namespace PepperDash.Essentials.Core
}
else
{
- Debug.Console(2, Client, "Monitor, Comm not connected");
+ Debug.Console(2, this, "Comm not connected");
}
}
@@ -132,7 +132,7 @@ namespace PepperDash.Essentials.Core
if (Client.IsConnected)
{
//Client.IsConnected -= OneTimeConnectHandler;
- Debug.Console(2, Client, "Monitor, Comm connected");
+ Debug.Console(2, this, "Comm connected");
Poll();
}
}
diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
index 684cfafd..08bd5c19 100644
--- a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
+++ b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
@@ -99,6 +99,7 @@
+
@@ -132,6 +133,7 @@
+
diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo
index 9ddd1b74..86124937 100644
Binary files a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo and b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo differ
diff --git a/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/ActionIncrementer.cs b/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/ActionIncrementer.cs
new file mode 100644
index 00000000..f63d57bf
--- /dev/null
+++ b/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/ActionIncrementer.cs
@@ -0,0 +1,120 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+using PepperDash.Core;
+
+namespace PepperDash.Essentials.Core
+{
+ ///
+ /// An incrementer that can use the values of some other object/primitive value to do its thing.
+ /// It uses an Action to set the value and a Func to get the value from whatever this is
+ /// attached to.
+ ///
+ public class ActionIncrementer
+ {
+ public int ChangeAmount { get; set; }
+ public int MaxValue { get; set; }
+ public int MinValue { get; set; }
+ public uint RepeatDelay { get; set; }
+ public uint RepeatTime { get; set; }
+
+ Action SetAction;
+ Func GetFunc;
+ CTimer Timer;
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Action that will be called when this needs to set the destination value
+ /// Func that is called to get the current value
+ public ActionIncrementer(int changeAmount, int minValue, int maxValue, uint repeatDelay, uint repeatTime, Action setAction, Func getFunc)
+ {
+ SetAction = setAction;
+ GetFunc = getFunc;
+ ChangeAmount = changeAmount;
+ MaxValue = maxValue;
+ MinValue = minValue;
+ RepeatDelay = repeatDelay;
+ RepeatTime = repeatTime;
+ }
+
+ ///
+ /// Starts incrementing cycle
+ ///
+ public void StartUp()
+ {
+ if (Timer != null) return;
+ Go(ChangeAmount);
+ }
+
+ ///
+ /// Starts decrementing cycle
+ ///
+ public void StartDown()
+ {
+ if (Timer != null) return;
+ Go(-ChangeAmount);
+ }
+
+ ///
+ /// Stops the repeat
+ ///
+ public void Stop()
+ {
+ if (Timer != null)
+ Timer.Stop();
+ Timer = null;
+ }
+
+ ///
+ /// Helper that does the work of setting new level, and starting repeat loop, checking against bounds first.
+ ///
+ ///
+ void Go(int change)
+ {
+ int currentLevel = GetFunc();
+ // Fire once then pause
+ int newLevel = currentLevel + change;
+ bool atLimit = CheckLevel(newLevel, out newLevel);
+ SetAction(newLevel);
+
+ if (atLimit) // Don't go past end
+ Stop();
+ else if (Timer == null) // Only enter the timer if it's not already running
+ Timer = new CTimer(o => { Go(change); }, null, RepeatDelay, RepeatTime);
+ }
+
+ ///
+ /// Helper to check a new level against min/max. Returns revised level if new level
+ /// will go out of bounds
+ ///
+ /// The level to check against bounds
+ /// Revised level if bounds are exceeded. Min or max
+ /// true if new level is at or past bounds
+ bool CheckLevel(int levelIn, out int levelOut)
+ {
+ bool isAtLimit = false;
+ if (levelIn > MaxValue)
+ {
+ levelOut = MaxValue;
+ isAtLimit = true;
+ }
+ else if (levelIn < MinValue)
+ {
+ levelOut = MinValue;
+ isAtLimit = true;
+ }
+ else
+ levelOut = levelIn;
+ return isAtLimit;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/UshortSigIncrementer.cs b/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/UshortSigIncrementer.cs
new file mode 100644
index 00000000..1a6f3c06
--- /dev/null
+++ b/Essentials Core/PepperDashEssentialsBase/Ramps and Increments/UshortSigIncrementer.cs
@@ -0,0 +1,100 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+using Crestron.SimplSharpPro;
+
+using PepperDash.Core;
+
+namespace PepperDash.Essentials.Core
+{
+ ///
+ /// Attaches to UShortInputSig and does incremental ramping of the signal
+ ///
+ public class UshortSigIncrementer
+ {
+ UShortInputSig TheSig;
+ public ushort ChangeAmount { get; set; }
+ public int MaxValue { get; set; }
+ public int MinValue { get; set; }
+ public uint RepeatDelay { get; set; }
+ public uint RepeatTime { get; set; }
+ bool SignedMode;
+ CTimer Timer;
+
+ public UshortSigIncrementer(UShortInputSig sig, ushort changeAmount, int minValue, int maxValue, uint repeatDelay, uint repeatTime)
+ {
+ TheSig = sig;
+ ChangeAmount = changeAmount;
+ MaxValue = maxValue;
+ MinValue = minValue;
+ if (MinValue < 0 || MaxValue < 0) SignedMode = true;
+ RepeatDelay = repeatDelay;
+ RepeatTime = repeatTime;
+ if (SignedMode && (MinValue < -32768 || MaxValue > 32767))
+ Debug.Console(1, "UshortSigIncrementer has signed values that exceed range of -32768, 32767");
+ }
+
+ public void StartUp()
+ {
+ if (Timer != null) return;
+ Go(ChangeAmount);
+ }
+
+ public void StartDown()
+ {
+ if (Timer != null) return;
+ Go(-ChangeAmount);
+ }
+
+ void Go(int change)
+ {
+ int level;
+ if (SignedMode) level = TheSig.ShortValue;
+ else level = TheSig.UShortValue;
+
+ // Fire once then pause
+ int newLevel = level + change;
+ bool atLimit = CheckLevel(newLevel, out newLevel);
+ SetValue((ushort)newLevel);
+
+
+ if (atLimit) // Don't go past end
+ Stop();
+ else if (Timer == null) // Only enter the timer if it's not already running
+ Timer = new CTimer(o => { Go(change); }, null, RepeatDelay, RepeatTime);
+ }
+
+ bool CheckLevel(int levelIn, out int levelOut)
+ {
+ bool IsAtLimit = false;
+ if (levelIn > MaxValue)
+ {
+ levelOut = MaxValue;
+ IsAtLimit = true;
+ }
+ else if (levelIn < MinValue)
+ {
+ levelOut = MinValue;
+ IsAtLimit = true;
+ }
+ else
+ levelOut = levelIn;
+ return IsAtLimit;
+ }
+
+ public void Stop()
+ {
+ if (Timer != null)
+ Timer.Stop();
+ Timer = null;
+ }
+
+ void SetValue(ushort value)
+ {
+ //CrestronConsole.PrintLine("Increment level:{0} / {1}", value, (short)value);
+ TheSig.UShortValue = value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Essentials Core/PepperDashEssentialsBase/SigHelper.cs b/Essentials Core/PepperDashEssentialsBase/SigHelper.cs
index 3eac3b4f..86395114 100644
--- a/Essentials Core/PepperDashEssentialsBase/SigHelper.cs
+++ b/Essentials Core/PepperDashEssentialsBase/SigHelper.cs
@@ -69,93 +69,4 @@ namespace PepperDash.Essentials.Core
sig.CreateRamp(level, time / 10);
}
}
-
- ///
- /// Attaches to UShortInputSig and does incremental ramping of the signal
- ///
- public class UshortSigIncrementer
- {
- UShortInputSig TheSig;
- public ushort ChangeAmount { get; set; }
- public int MaxValue { get; set; }
- public int MinValue { get; set; }
- public uint RepeatDelay { get; set; }
- public uint RepeatTime { get; set; }
- bool SignedMode;
- CTimer Timer;
-
- public UshortSigIncrementer(UShortInputSig sig, ushort changeAmount, int minValue, int maxValue, uint repeatDelay, uint repeatTime)
- {
- TheSig = sig;
- ChangeAmount = changeAmount;
- MaxValue = maxValue;
- MinValue = minValue;
- if (MinValue < 0 || MaxValue < 0) SignedMode = true;
- RepeatDelay = repeatDelay;
- RepeatTime = repeatTime;
- if (SignedMode && (MinValue < -32768 || MaxValue > 32767))
- Debug.Console(1, "UshortSigIncrementer has signed values that exceed range of -32768, 32767");
- }
-
- public void StartUp()
- {
- if (Timer != null) return;
- Go(ChangeAmount);
- }
-
- public void StartDown()
- {
- if (Timer != null) return;
- Go(-ChangeAmount);
- }
-
- void Go(int change)
- {
- int level;
- if (SignedMode) level = TheSig.ShortValue;
- else level = TheSig.UShortValue;
-
- // Fire once then pause
- int newLevel = level + change;
- bool atLimit = CheckLevel(newLevel, out newLevel);
- SetValue((ushort)newLevel);
-
-
- if (atLimit) // Don't go past end
- Stop();
- else if (Timer == null) // Only enter the timer if it's not already running
- Timer = new CTimer(o => { Go(change); }, null, RepeatDelay, RepeatTime);
- }
-
- bool CheckLevel(int levelIn, out int levelOut)
- {
- bool IsAtLimit = false;
- if (levelIn > MaxValue)
- {
- levelOut = MaxValue;
- IsAtLimit = true;
- }
- else if (levelIn < MinValue)
- {
- levelOut = MinValue;
- IsAtLimit = true;
- }
- else
- levelOut = levelIn;
- return IsAtLimit;
- }
-
- public void Stop()
- {
- if (Timer != null)
- Timer.Stop();
- Timer = null;
- }
-
- void SetValue(ushort value)
- {
- //CrestronConsole.PrintLine("Increment level:{0} / {1}", value, (short)value);
- TheSig.UShortValue = value;
- }
- }
}
\ No newline at end of file
diff --git a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo
index e026e968..64e201fb 100644
Binary files a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo and b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo differ
diff --git a/Essentials Devices Common/Essentials Devices Common/Display/SamsungMDCDisplay.cs b/Essentials Devices Common/Essentials Devices Common/Display/SamsungMDCDisplay.cs
index 8f7831b3..4010b62b 100644
--- a/Essentials Devices Common/Essentials Devices Common/Display/SamsungMDCDisplay.cs
+++ b/Essentials Devices Common/Essentials Devices Common/Display/SamsungMDCDisplay.cs
@@ -24,11 +24,13 @@ namespace PepperDash.Essentials.Devices.Displays
bool _PowerIsOn;
bool _IsWarmingUp;
bool _IsCoolingDown;
- ushort _VolumeLevel;
+ ushort _VolumeLevelForSig;
+ int _LastVolumeSent;
bool _IsMuted;
RoutingInputPort _CurrentInputPort;
byte[] IncomingBuffer = new byte[]{};
- //CTimer StatusTimer;
+ ActionIncrementer VolumeIncrementer;
+ bool VolumeIsRamping;
protected override Func PowerIsOnFeedbackFunc { get { return () => _PowerIsOn; } }
protected override Func IsCoolingDownFeedbackFunc { get { return () => _IsCoolingDown; } }
@@ -85,9 +87,13 @@ namespace PepperDash.Essentials.Devices.Displays
void Init()
{
WarmupTime = 10000;
- CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000, StatusGet);
+ CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 2000, 120000, 300000, StatusGet);
DeviceManager.AddDevice(CommunicationMonitor);
+ VolumeIncrementer = new ActionIncrementer(655, 0, 65535, 800, 80,
+ v => SetVolume((ushort)v),
+ () => _LastVolumeSent);
+
AddRoutingInputPort(new RoutingInputPort(RoutingPortNames.HdmiIn1, eRoutingSignalType.AudioVideo,
eRoutingPortConnectionType.Hdmi, new Action(InputHdmi1), this), 0x21);
@@ -112,7 +118,7 @@ namespace PepperDash.Essentials.Devices.Displays
AddRoutingInputPort(new RoutingInputPort(RoutingPortNames.RgbIn2, eRoutingSignalType.Video,
eRoutingPortConnectionType.Rgb, new Action(new Action(InputRgb2)), this), 0x1E);
- VolumeLevelFeedback = new IntFeedback(() => { return _VolumeLevel; });
+ VolumeLevelFeedback = new IntFeedback(() => { return _VolumeLevelForSig; });
MuteFeedback = new BoolFeedback(() => _IsMuted);
StatusGet();
@@ -238,7 +244,6 @@ namespace PepperDash.Essentials.Devices.Displays
_PowerIsOn = newVal;
PowerIsOnFeedback.FireUpdate();
}
-
}
///
@@ -246,11 +251,13 @@ namespace PepperDash.Essentials.Devices.Displays
///
///
void UpdateVolumeFB(byte b)
- {
+ {
var newVol = (ushort)Scale((double)b, 0, 100, 0, 65535);
- if (newVol != _VolumeLevel)
+ if (!VolumeIsRamping)
+ _LastVolumeSent = newVol;
+ if (newVol != _VolumeLevelForSig)
{
- _VolumeLevel = newVol;
+ _VolumeLevelForSig = newVol;
VolumeLevelFeedback.FireUpdate();
}
}
@@ -450,8 +457,10 @@ namespace PepperDash.Essentials.Devices.Displays
///
public void SetVolume(ushort level)
{
- var volByte = Convert.ToByte(Scale(level, 0, 65535, 0, 100)); // The inputs to Scale ensures it won't overflow
- SendBytes(new byte[] { 0xAA, 0x12, 0x00, 0x01, volByte, 0x00 });
+ _LastVolumeSent = level;
+ var scaled = (int)Scale(level, 0, 65535, 0, 100);
+ // The inputs to Scale ensure that byte won't overflow
+ SendBytes(new byte[] { 0xAA, 0x12, 0x00, 0x01, Convert.ToByte(scaled), 0x00 });
}
///
@@ -534,7 +543,16 @@ namespace PepperDash.Essentials.Devices.Displays
///
public void VolumeDown(bool pressRelease)
{
- throw new NotImplementedException();
+ if (pressRelease)
+ {
+ VolumeIncrementer.StartDown();
+ VolumeIsRamping = true;
+ }
+ else
+ {
+ VolumeIsRamping = false;
+ VolumeIncrementer.Stop();
+ }
}
///
@@ -543,9 +561,21 @@ namespace PepperDash.Essentials.Devices.Displays
///
public void VolumeUp(bool pressRelease)
{
- throw new NotImplementedException();
- }
+ if (pressRelease)
+ {
+ VolumeIncrementer.StartUp();
+ VolumeIsRamping = true;
+ }
+ else
+ {
+ VolumeIsRamping = false;
+ VolumeIncrementer.Stop();
+ }
+ }
+ ///
+ ///
+ ///
public void VolumeGet()
{
SendBytes(new byte[] { 0xAA, 0x12, 0x00, 0x00, 0x00 });
diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo
index 42c6d232..936dbfd7 100644
Binary files a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo and b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo differ
diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo
index 9c956c7d..4b4070d0 100644
Binary files a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo and b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ
diff --git a/Essentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs b/Essentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs
index 985abf01..c06bb06c 100644
--- a/Essentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs
+++ b/Essentials/PepperDashEssentials/Room/EssentialsHuddleSpaceRoom.cs
@@ -14,6 +14,23 @@ namespace PepperDash.Essentials
public event EventHandler CurrentVolumeDeviceChange;
public event SourceInfoChangeHandler CurrentSingleSourceChange;
+ protected override Func OnFeedbackFunc
+ {
+ get
+ {
+ return () =>
+ {
+ var disp = DefaultDisplay as DisplayBase;
+ var val = CurrentSourceInfo != null
+ && CurrentSourceInfo.Type == eSourceListItemType.Route
+ && disp != null
+ && disp.PowerIsOnFeedback.BoolValue;
+ Debug.Console(2, this, "************** ROOM POWER {0}", val);
+ return val;
+ };
+ }
+ }
+
public EssentialsRoomPropertiesConfig Config { get; private set; }
public IRoutingSinkWithSwitching DefaultDisplay { get; private set; }
@@ -91,11 +108,6 @@ namespace PepperDash.Essentials
public string CurrentSourceInfoKey { get; private set; }
- ///
- ///
- ///
- public BoolFeedback OnFeedback { get; private set; }
-
///
///
///
@@ -115,13 +127,19 @@ namespace PepperDash.Essentials
CurrentVolumeControls = DefaultVolumeControls;
var disp = DefaultDisplay as DisplayBase;
- OnFeedback = new BoolFeedback(() =>
- {
- return CurrentSourceInfo != null
- && CurrentSourceInfo.Type == eSourceListItemType.Route
- && disp != null
- && disp.PowerIsOnFeedback.BoolValue;
- });
+ if (disp != null)
+ {
+ disp.PowerIsOnFeedback.OutputChange += (o, a) =>
+ {
+ if (disp.PowerIsOnFeedback.BoolValue != OnFeedback.BoolValue)
+ {
+ if (!disp.PowerIsOnFeedback.BoolValue)
+ CurrentSourceInfo = null;
+ OnFeedback.FireUpdate();
+ }
+ };
+ }
+
SourceListKey = "default";
EnablePowerOnToLastSource = true;
}
diff --git a/Essentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs b/Essentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs
index 73fd504f..f91e00f9 100644
--- a/Essentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs
+++ b/Essentials/PepperDashEssentials/Room/EssentialsPresentationRoom.cs
@@ -16,6 +16,14 @@ namespace PepperDash.Essentials
public event SourceInfoChangeHandler CurrentDisplay1SourceChange;
public event SourceInfoChangeHandler CurrentDisplay2SourceChange;
+ protected override Func OnFeedbackFunc { get {
+ return () => (CurrentSingleSourceInfo != null
+ && CurrentSingleSourceInfo.Type != eSourceListItemType.Off)
+ || (Display1SourceInfo != null
+ && Display1SourceInfo.Type != eSourceListItemType.Off)
+ || (Display2SourceInfo != null
+ && Display2SourceInfo.Type != eSourceListItemType.Off); } }
+
public EssentialsPresentationRoomPropertiesConfig Config { get; private set; }
public Dictionary Displays { get; private set; }
@@ -141,16 +149,10 @@ namespace PepperDash.Essentials
}
SourceListItem _Display2SourceInfo;
- ///
- ///
- ///
- public BoolFeedback OnFeedback { get; private set; }
-
///
/// If an audio dialer is available for this room
///
public bool HasAudioDialer { get { return false; } }
-
///
///
///
@@ -173,15 +175,7 @@ namespace PepperDash.Essentials
//else if (defaultAudio is IHasVolumeDevice)
// DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice;
- OnFeedback = new BoolFeedback(() =>
- { return (CurrentSingleSourceInfo != null
- && CurrentSingleSourceInfo.Type != eSourceListItemType.Off)
- || (Display1SourceInfo != null
- && Display1SourceInfo.Type != eSourceListItemType.Off)
- || (Display2SourceInfo != null
- && Display2SourceInfo.Type != eSourceListItemType.Off);
-
- });
+
SourceListKey = "default";
EnablePowerOnToLastSource = true;
}
diff --git a/Essentials/PepperDashEssentials/Room/EssentialsRoomBase.cs b/Essentials/PepperDashEssentials/Room/EssentialsRoomBase.cs
index 62e01ad7..787df20f 100644
--- a/Essentials/PepperDashEssentials/Room/EssentialsRoomBase.cs
+++ b/Essentials/PepperDashEssentials/Room/EssentialsRoomBase.cs
@@ -20,11 +20,23 @@ namespace PepperDash.Essentials
///
///
///
- public class EssentialsRoomBase : Device
+ public abstract class EssentialsRoomBase : Device
{
+ ///
+ ///
+ ///
+ public BoolFeedback OnFeedback { get; private set; }
+
+ public BoolFeedback IsWarmingFeedback { get; private set; }
+ public BoolFeedback IsCoolingFeedback { get; private set; }
+ public BoolFeedback ShutdownPendingFeedback { get; private set; }
+
+ protected abstract Func OnFeedbackFunc { get; }
+
+
public EssentialsRoomBase(string key, string name) : base(key, name)
{
-
+ OnFeedback = new BoolFeedback(OnFeedbackFunc);
}
}
}
\ No newline at end of file
diff --git a/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
index f8462186..488f38e4 100644
--- a/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
+++ b/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
@@ -147,13 +147,7 @@ namespace PepperDash.Essentials
: base(parent.TriList)
{
Config = config;
- Parent = parent;
-
- //SelectASourceVisibleFeedback = new BoolFeedback(() =>
- // CurrentRoom != null && !CurrentRoom.OnFeedback.BoolValue && this.IsVisible);
-
- //SourcesDynamicList = new SmartObjectDynamicList(
- // TriList.SmartObjects[UISmartObjectJoin.SourceList], true, 3200);
+ Parent = parent;
SourcesSrl = new SubpageReferenceList(TriList, 3200, 3, 3, 3);
ActivityFooterSrl = new SubpageReferenceList(TriList, 15022, 3, 3, 3);
@@ -242,12 +236,16 @@ namespace PepperDash.Essentials
base.Show();
}
+ ///
+ /// Handler for room on/off feedback
+ ///
+ ///
+ ///
void OnFeedback_OutputChange(object sender, EventArgs e)
{
if (CurrentRoom.OnFeedback.BoolValue)
{
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = true;
- //TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = true;
}
else
{
diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz
index 3588ac22..ffd5460c 100644
Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ
diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll
index 99b5fda6..fe634b9e 100644
Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ