diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo
index 6a48bbc5..1bcc9dfe 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 DM/Essentials_DM/Essentials_DM.projectinfo b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo
index 024f38e7..ad2c3757 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
new file mode 100644
index 00000000..c3f4cad6
--- /dev/null
+++ b/Essentials Devices Common/Essentials Devices Common/Display/SamsungMDCDisplay.cs
@@ -0,0 +1,487 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+using Crestron.SimplSharpPro;
+using PepperDash.Core;
+using PepperDash.Essentials.Core;
+using PepperDash.Essentials.Core.Routing;
+
+namespace PepperDash.Essentials.Devices.Displays
+{
+ ///
+ ///
+ ///
+ public class SamsungMDC : TwoWayDisplayBase, IBasicVolumeWithFeedback, ICommunicationMonitor
+ {
+ public IBasicCommunication Communication { get; private set; }
+ public CommunicationGather PortGather { get; private set; }
+ public StatusMonitorBase CommunicationMonitor { get; private set; }
+
+ #region Command constants
+
+ public string Ack
+ {
+ get { return AssembleCommand(string.Format("\xAA\xFF{0}\x03A", ID)); }
+ }
+ public string Nak
+ {
+ get { return AssembleCommand(string.Format("\xAA\xFF{0}\x03N", ID)); }
+ }
+
+ // Power Commands
+
+ public string PowerGetCmd
+ {
+ get { return AssembleCommand(string.Format("\x11{0}\x00", ID)); }
+ }
+
+ public string PowerOnCmd
+ {
+ get { return AssembleCommand(string.Format("\x11{0}\x01\x01", ID)); }
+ }
+
+ public string PowerOffCmd
+ {
+ get { return AssembleCommand(string.Format("\x11{0}\x01\x00", ID)); }
+ }
+
+ // Input Commands
+
+ public string InputGetCmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x00", ID)); }
+ }
+
+ public string Dp1Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x25", ID)); }
+ }
+
+ public string Hdmi1Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x21", ID)); }
+ }
+
+ public string Hdmi2Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x23", ID)); }
+ }
+
+ public string Hdmi3Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x32", ID)); }
+ }
+
+ public string Dvi1Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x18", ID)); }
+ }
+
+ public string Rgb1Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x14", ID)); }
+ }
+
+ public string Rgb2Cmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x1E", ID)); }
+ }
+
+ public string CompCmd
+ {
+ get { return AssembleCommand(string.Format("\x14{0}\x01\x08", ID)); }
+ }
+
+ // Volume Commands
+
+ public string MuteGetCmd
+ {
+ get { return AssembleCommand(string.Format("\x13{0}\x00", ID)); }
+ }
+
+ public string MuteOnCmd
+ {
+ get { return AssembleCommand(string.Format("\x13{0}\x01\x01", ID)); }
+ }
+
+ public string MuteOffCmd
+ {
+ get { return AssembleCommand(string.Format("\x13{0}\x01\x00", ID)); }
+ }
+
+ public string VolumeGetCmd
+ {
+ get { return AssembleCommand(string.Format("\x12{0}\x00", ID)); }
+ }
+
+ ///
+ /// To be appended with the requested volume level. Does not include checksum calculation
+ ///
+ public string VolumeLevelCmd
+ {
+ get { return string.Format("\x1s{0}\x01", ID); }
+ }
+
+
+
+
+
+ //public string InputGetCmd = "";
+ //public const string Hdmi1Cmd = "";
+ //public const string Hdmi2Cmd = "";
+ //public const string Hdmi3Cmd = "";
+ //public const string Hdmi4Cmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x38\x33\x03\x79\x0D";
+ //public const string Dp1Cmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x30\x46\x03\x04\x0D";
+ //public const string Dp2Cmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x31\x30\x03\x73\x0D";
+ //public const string Dvi1Cmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x30\x33\x03\x71\x0d";
+ //public const string Video1Cmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x30\x35\x03\x77\x0D";
+ //public const string VgaCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x30\x31\x03\x73\x0D";
+ //public const string RgbCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x30\x30\x30\x30\x32\x03\x70\x0D";
+
+ //public const string PowerOnCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x30\x33\x44\x36\x30\x30\x30\x31\x03\x73\x0D";
+ //public const string PowerOffCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x30\x33\x44\x36\x30\x30\x30\x34\x03\x76\x0D";
+ //public const string PowerToggleIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x30\x33\x30\x33\x03\x02\x0D";
+
+ //public const string MuteOffCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x38\x44\x30\x30\x30\x30\x03\x08\x0D";
+ //public const string MuteOnCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x38\x44\x30\x30\x30\x31\x03\x09\x0D";
+ //public const string MuteToggleIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x31\x42\x30\x33\x03\x72\x0D";
+ //public const string MuteGetCmd = "\x01\x30\x41\x30\x43\x30\x36\x02\x30\x30\x38\x44\x03\x79\x0D";
+
+ //public const string VolumeGetCmd = "\x01\x30\x41\x30\x43\x30\x36\x02\x30\x30\x36\x32\x03\x01\x0D";
+ //public const string VolumeLevelPartialCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x30\x30\x36\x32"; //\x46\x46\x46\x46\x03\xNN\x0D
+ //public const string VolumeUpCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x31\x30\x41\x44\x30\x30\x30\x31\x03\x71\x0D";
+ //public const string VolumeDownCmd = "\x01\x30\x41\x30\x45\x30\x41\x02\x31\x30\x41\x44\x30\x30\x30\x32\x03\x72\x0D";
+
+ //public const string MenuIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x32\x30\x30\x33\x03\x03\x0D";
+ //public const string UpIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x31\x35\x30\x33\x03\x05\x0D";
+ //public const string DownIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x31\x34\x30\x33\x03\x04\x0D";
+ //public const string LeftIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x32\x31\x30\x33\x03\x02\x0D";
+ //public const string RightIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x32\x32\x30\x33\x03\x01\x0D";
+ //public const string SelectIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x32\x33\x30\x33\x03\x00\x0D";
+ //public const string ExitIrCmd = "\x01\x30\x41\x30\x41\x30\x43\x02\x43\x32\x31\x30\x30\x30\x31\x46\x30\x33\x03\x76\x0D";
+ #endregion
+
+
+ public byte ID { get; private set; }
+
+ ///
+ /// Builds the command by including the ID of the display and calculating the checksum
+ ///
+ ///
+ ///
+ private string AssembleCommand(string command)
+ {
+ double checksum = 0;
+
+ var bytes = command.ToCharArray();
+
+ for (int i = 1; i < bytes.Length; i++)
+ {
+ checksum = checksum + Char.GetNumericValue(bytes[i]);
+ }
+
+ string result = string.Format("{0}{1}", command, checksum);
+
+ return result;
+
+ }
+
+ bool _PowerIsOn;
+ bool _IsWarmingUp;
+ bool _IsCoolingDown;
+ ushort _VolumeLevel;
+ bool _IsMuted;
+
+ protected override Func PowerIsOnFeedbackFunc { get { return () => _PowerIsOn; } }
+ protected override Func IsCoolingDownFeedbackFunc { get { return () => _IsCoolingDown; } }
+ protected override Func IsWarmingUpFeedbackFunc { get { return () => _IsWarmingUp; } }
+
+ ///
+ /// Constructor for IBasicCommunication
+ ///
+ public SamsungMDC(string key, string name, IBasicCommunication comm)
+ : base(key, name)
+ {
+ Communication = comm;
+ Init();
+ }
+ ///
+ /// Constructor for TCP
+ ///
+ public SamsungMDC(string key, string name, string hostname, int port, byte id)
+ : base(key, name)
+ {
+ Communication = new GenericTcpIpClient(key + "-tcp", hostname, port, 5000);
+ Init();
+ }
+
+
+ ///
+ /// Constructor for COM
+ ///
+ public SamsungMDC(string key, string name, ComPort port, ComPort.ComPortSpec spec, byte id)
+ : base(key, name)
+ {
+ Communication = new ComPortController(key + "-com", port, spec);
+ Init();
+ }
+
+ void Init()
+ {
+ PortGather = new CommunicationGather(Communication, '\x0d');
+ PortGather.LineReceived += this.Port_LineReceived;
+ CommunicationMonitor = new GenericCommunicationMonitor(this, Communication, 30000, 120000, 300000, "xx\x0d");
+
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn1, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Hdmi, new Action(InputHdmi1), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn2, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Hdmi, new Action(InputHdmi2), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn3, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Hdmi, new Action(InputHdmi3), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.HdmiIn4, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Hdmi, new Action(InputHdmi4), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.DisplayPortIn1, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.DisplayPort, new Action(InputDisplayPort1), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.DisplayPortIn2, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.DisplayPort, new Action(InputDisplayPort2), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.DviIn, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Dvi, new Action(InputDvi1), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.CompositeIn, eRoutingSignalType.AudioVideo,
+ eRoutingPortConnectionType.Composite, new Action(InputVideo1), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.VgaIn, eRoutingSignalType.Video,
+ eRoutingPortConnectionType.Vga, new Action(InputVga), this));
+ InputPorts.Add(new RoutingInputPort(RoutingPortNames.RgbIn, eRoutingSignalType.Video,
+ eRoutingPortConnectionType.Rgb, new Action(new Action(InputRgb)), this));
+
+ VolumeLevelFeedback = new IntFeedback(() => { return _VolumeLevel; });
+ MuteFeedback = new BoolFeedback(() => _IsMuted);
+
+ // new BoolCueActionPair(CommonBoolCue.Menu, b => { if(b) Send(MenuIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Up, b => { if(b) Send(UpIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Down, b => { if(b) Send(DownIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Left, b => { if(b) Send(LeftIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Right, b => { if(b) Send(RightIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Select, b => { if(b) Send(SelectIrCmd); }),
+ // new BoolCueActionPair(CommonBoolCue.Exit, b => { if(b) Send(ExitIrCmd); }),
+ //};
+ }
+
+ ~SamsungMDC()
+ {
+ PortGather = null;
+ }
+
+ public override bool CustomActivate()
+ {
+ Communication.Connect();
+ CommunicationMonitor.StatusChange += (o, a) => { Debug.Console(2, this, "Communication monitor state: {0}", CommunicationMonitor.Status); };
+ CommunicationMonitor.Start();
+ return true;
+ }
+
+ public override List Feedbacks
+ {
+ get
+ {
+ var list = base.Feedbacks;
+ list.AddRange(new List
+ {
+
+ });
+ return list;
+ }
+ }
+
+ void Port_LineReceived(object dev, GenericCommMethodReceiveTextArgs args)
+ {
+ if (Debug.Level == 2)
+ Debug.Console(2, this, "Received: '{0}'", ComTextHelper.GetEscapedText(args.Text));
+
+ if (args.Text=="DO SOMETHING HERE EVENTUALLY")
+ {
+ _IsMuted = true;
+ MuteFeedback.FireUpdate();
+ }
+ }
+
+ //void AppendChecksumAndSend(string s)
+ //{
+ // int x = 0;
+ // for (int i = 1; i < s.Length; i++)
+ // x = x ^ s[i];
+
+ // string send = s + (char)x + '\x0d';
+ // Send(send);
+ //}
+
+ void Send(string s)
+ {
+ if (Debug.Level == 2)
+ Debug.Console(2, this, "Send: '{0}'", ComTextHelper.GetEscapedText(s));
+ Communication.SendText(s);
+ }
+
+
+ public override void PowerOn()
+ {
+ Send(PowerOnCmd);
+ if (!PowerIsOnFeedback.BoolValue && !_IsWarmingUp && !_IsCoolingDown)
+ {
+ _IsWarmingUp = true;
+ IsWarmingUpFeedback.FireUpdate();
+ // Fake power-up cycle
+ WarmupTimer = new CTimer(o =>
+ {
+ _IsWarmingUp = false;
+ _PowerIsOn = true;
+ IsWarmingUpFeedback.FireUpdate();
+ PowerIsOnFeedback.FireUpdate();
+ }, WarmupTime);
+ }
+ }
+
+ public override void PowerOff()
+ {
+ // If a display has unreliable-power off feedback, just override this and
+ // remove this check.
+ if (PowerIsOnFeedback.BoolValue && !_IsWarmingUp && !_IsCoolingDown)
+ {
+ Send(PowerOffCmd);
+ _IsCoolingDown = true;
+ _PowerIsOn = false;
+ PowerIsOnFeedback.FireUpdate();
+ IsCoolingDownFeedback.FireUpdate();
+ // Fake cool-down cycle
+ CooldownTimer = new CTimer(o =>
+ {
+ Debug.Console(2, this, "Cooldown timer ending");
+ _IsCoolingDown = false;
+ IsCoolingDownFeedback.FireUpdate();
+ }, CooldownTime);
+ }
+ }
+
+ public override void PowerToggle()
+ {
+ if (PowerIsOnFeedback.BoolValue && !IsWarmingUpFeedback.BoolValue)
+ PowerOff();
+ else if (!PowerIsOnFeedback.BoolValue && !IsCoolingDownFeedback.BoolValue)
+ PowerOn();
+ }
+
+ public void InputHdmi1()
+ {
+ Send(Hdmi1Cmd);
+ }
+
+ public void InputHdmi2()
+ {
+ Send(Hdmi2Cmd);
+ }
+
+ public void InputHdmi3()
+ {
+ Send(Hdmi3Cmd);
+ }
+
+ public void InputHdmi4()
+ {
+ Send(Hdmi4Cmd);
+ }
+
+ public void InputDisplayPort1()
+ {
+ Send(Dp1Cmd);
+ }
+
+ public void InputDisplayPort2()
+ {
+ Send(Dp2Cmd);
+ }
+
+ public void InputDvi1()
+ {
+ Send(Dvi1Cmd);
+ }
+
+ public void InputVideo1()
+ {
+ Send(Video1Cmd);
+ }
+
+ public void InputVga()
+ {
+ Send(VgaCmd);
+ }
+
+ public void InputRgb()
+ {
+ Send(RgbCmd);
+ }
+
+ public override void ExecuteSwitch(object selector)
+ {
+ if (selector is Action)
+ (selector as Action).Invoke();
+ else
+ Debug.Console(1, this, "WARNING: ExecuteSwitch cannot handle type {0}", selector.GetType());
+ //Send((string)selector);
+ }
+
+ void SetVolume(ushort level)
+ {
+ var levelString = string.Format("{0}{1:X4}\x03", VolumeLevelPartialCmd, level);
+ AppendChecksumAndSend(levelString);
+ //Debug.Console(2, this, "Volume:{0}", ComTextHelper.GetEscapedText(levelString));
+ _VolumeLevel = level;
+ VolumeLevelFeedback.FireUpdate();
+ }
+
+ #region IBasicVolumeWithFeedback Members
+
+ public IntFeedback VolumeLevelFeedback { get; private set; }
+
+ public BoolFeedback MuteFeedback { get; private set; }
+
+ public void MuteOff()
+ {
+ Send(MuteOffCmd);
+ }
+
+ public void MuteOn()
+ {
+ Send(MuteOnCmd);
+ }
+
+ void IBasicVolumeWithFeedback.SetVolume(ushort level)
+ {
+ SetVolume(level);
+ }
+
+ #endregion
+
+ #region IBasicVolumeControls Members
+
+ public void MuteToggle()
+ {
+ Send(MuteToggleIrCmd);
+ }
+
+ public void VolumeDown(bool pressRelease)
+ {
+ //throw new NotImplementedException();
+//#warning need incrementer for these
+ SetVolume(_VolumeLevel++);
+ }
+
+ public void VolumeUp(bool pressRelease)
+ {
+ //throw new NotImplementedException();
+ SetVolume(_VolumeLevel--);
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
index c30380a8..f2de7d91 100644
--- a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
+++ b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
@@ -93,6 +93,7 @@
+
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 1eac3b58..faf56049 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 af89359b..fc218d04 100644
Binary files a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo and b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ
diff --git a/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
index a117a423..721b2524 100644
--- a/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
+++ b/Essentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs
@@ -1,244 +1,244 @@
-using System;
-using System.Collections.Generic;
-using Crestron.SimplSharp;
-using Crestron.SimplSharpPro;
-
-using PepperDash.Core;
-using PepperDash.Essentials.Core;
-using PepperDash.Essentials.Core.SmartObjects;
-using PepperDash.Essentials.Core.PageManagers;
-
-namespace PepperDash.Essentials
-{
- ///
- ///
- ///
- public class EssentialsHuddlePanelAvFunctionsDriver : PanelDriverBase
- {
- CrestronTouchpanelPropertiesConfig Config;
-
- public enum UiDisplayMode
- {
- PresentationMode, AudioSetup
- }
-
- ///
- /// Whether volume ramping from this panel will show the volume
- /// gauge popup.
- ///
- public bool ShowVolumeGauge { get; set; }
-
- ///
- /// The amount of time that the volume buttons stays on screen, in ms
- ///
- public uint VolumeButtonPopupTimeout
- {
- get { return VolumeButtonsPopupFeedback.TimeoutMs; }
- set { VolumeButtonsPopupFeedback.TimeoutMs = value; }
- }
-
- ///
- /// The amount of time that the volume gauge stays on screen, in ms
- ///
- public uint VolumeGaugePopupTimeout
- {
- get { return VolumeGaugeFeedback.TimeoutMs; }
- set { VolumeGaugeFeedback.TimeoutMs = value; }
- }
-
- ///
- ///
- ///
- public uint PowerOffTimeout { get; set; }
-
- ///
- ///
- ///
- public string DefaultRoomKey
- {
- get { return _DefaultRoomKey; }
- set
- {
- _DefaultRoomKey = value;
- CurrentRoom = DeviceManager.GetDeviceForKey(value) as EssentialsHuddleSpaceRoom;
- }
- }
- string _DefaultRoomKey;
-
- ///
- ///
- ///
- public EssentialsHuddleSpaceRoom CurrentRoom
- {
- get { return _CurrentRoom; }
- set
- {
- SetCurrentRoom(value);
- }
- }
- EssentialsHuddleSpaceRoom _CurrentRoom;
-
- ///
- /// For hitting feedback
- ///
- BoolInputSig ShareButtonSig;
- BoolInputSig EndMeetingButtonSig;
-
- ///
- /// Controls the extended period that the volume gauge shows on-screen,
- /// as triggered by Volume up/down operations
- ///
- BoolFeedbackPulseExtender VolumeGaugeFeedback;
-
- ///
- /// Controls the period that the volume buttons show on non-hard-button
- /// interfaces
- ///
- BoolFeedbackPulseExtender VolumeButtonsPopupFeedback;
-
- ///
- /// The parent driver for this
- ///
- PanelDriverBase Parent;
-
- ///
- /// All children attached to this driver. For hiding and showing as a group.
- ///
- List ChildDrivers = new List();
-
- List CurrentDisplayModeSigsInUse = new List();
-
- //// Important smart objects
-
- ///
- /// Smart Object 3200
- ///
- SubpageReferenceList SourcesSrl;
-
- ///
- /// Smart Object 15022
- ///
- SubpageReferenceList ActivityFooterSrl;
-
- ///
- /// Tracks which audio page group the UI is in
- ///
- UiDisplayMode CurrentDisplayMode;
-
- ///
- /// The AV page mangagers that have been used, to keep them alive for later
- ///
- Dictionary