diff --git a/Essentials Core/PepperDashEssentialsBase/Routing/IRoutingInputsExtensions.cs b/Essentials Core/PepperDashEssentialsBase/Routing/IRoutingInputsExtensions.cs
index 37dced42..e3be9f79 100644
--- a/Essentials Core/PepperDashEssentialsBase/Routing/IRoutingInputsExtensions.cs
+++ b/Essentials Core/PepperDashEssentialsBase/Routing/IRoutingInputsExtensions.cs
@@ -108,8 +108,9 @@ namespace PepperDash.Essentials.Core
// find a direct tie
var directTie = destDevInputTies.FirstOrDefault(
- t => !(t.SourcePort.ParentDevice is IRoutingInputsOutputs)
- && t.DestinationPort.ParentDevice == destination
+ t =>// !(t.SourcePort.ParentDevice is IRoutingInputsOutputs) // why????
+ //&&
+ t.DestinationPort.ParentDevice == destination
&& t.SourcePort.ParentDevice == source);
RoutingInputPort goodInputPort = null;
if (directTie != null) // Found a tie directly to the source
diff --git a/Essentials Core/PepperDashEssentialsBase/Routing/RoutingPortNames.cs b/Essentials Core/PepperDashEssentialsBase/Routing/RoutingPortNames.cs
index 758bd233..c50055fd 100644
--- a/Essentials Core/PepperDashEssentialsBase/Routing/RoutingPortNames.cs
+++ b/Essentials Core/PepperDashEssentialsBase/Routing/RoutingPortNames.cs
@@ -1,49 +1,159 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Crestron.SimplSharp;
-
-namespace PepperDash.Essentials.Core.Routing
-{
- ///
- /// These should correspond directly with the portNames var in the config tool.
- ///
- public class RoutingPortNames
- {
- public const string AntennaIn = "antennaIn";
- public const string AnyAudioIn = "anyAudioIn";
- public const string AnyAudioOut = "anyAudioOut";
- public const string AnyOut = "anyOut";
- public const string AnyVideoIn = "anyVideoIn";
- public const string AnyVideoOut = "anyVideoOut";
- public const string BalancedAudioOut = "balancedAudioOut";
- public const string ComponentIn = "componentIn";
- public const string ComponentOut = "componentOut";
- public const string CompositeIn = "compositeIn";
- public const string CompositeOut = "compositeOut";
- public const string DisplayPortIn = "displayPortIn";
- public const string DisplayPortIn1 = "displayPortIn1";
- public const string DisplayPortIn2 = "displayPortIn2";
- public const string DisplayPortIn3 = "displayPortIn3";
- public const string DisplayPortOut = "displayPortOut";
- public const string DmIn = "dmIn";
- public const string DmOut = "dmOut";
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+namespace PepperDash.Essentials.Core.Routing
+{
+ ///
+ /// These should correspond directly with the portNames var in the config tool.
+ ///
+ public class RoutingPortNames
+ {
+ ///
+ /// antennaIn
+ ///
+ public const string AntennaIn = "antennaIn";
+ ///
+ /// anyAudioIn
+ ///
+ public const string AnyAudioIn = "anyAudioIn";
+ ///
+ /// anyAudioOut
+ ///
+ public const string AnyAudioOut = "anyAudioOut";
+ ///
+ /// anyOut
+ ///
+ public const string AnyOut = "anyOut";
+ ///
+ /// anyVideoIn
+ ///
+ public const string AnyVideoIn = "anyVideoIn";
+ ///
+ /// anyVideoOut
+ ///
+ public const string AnyVideoOut = "anyVideoOut";
+ ///
+ /// balancedAudioOut
+ ///
+ public const string BalancedAudioOut = "balancedAudioOut";
+ ///
+ /// codecOsd
+ ///
+ public const string CodecOsd = "codecOsd";
+ ///
+ /// componentIn
+ ///
+ public const string ComponentIn = "componentIn";
+ ///
+ /// componentOut
+ ///
+ public const string ComponentOut = "componentOut";
+ ///
+ /// compositeIn
+ ///
+ public const string CompositeIn = "compositeIn";
+ ///
+ /// compositeOut
+ ///
+ public const string CompositeOut = "compositeOut";
+ ///
+ /// displayPortIn
+ ///
+ public const string DisplayPortIn = "displayPortIn";
+ ///
+ /// displayPortIn1
+ ///
+ public const string DisplayPortIn1 = "displayPortIn1";
+ ///
+ /// displayPortIn2
+ ///
+ public const string DisplayPortIn2 = "displayPortIn2";
+ ///
+ /// displayPortIn3
+ ///
+ public const string DisplayPortIn3 = "displayPortIn3";
+ ///
+ /// displayPortOut
+ ///
+ public const string DisplayPortOut = "displayPortOut";
+ ///
+ /// dmIn
+ ///
+ public const string DmIn = "dmIn";
+ ///
+ /// dmOut
+ ///
+ public const string DmOut = "dmOut";
+ ///
+ /// dviIn
+ ///
public const string DviIn = "dviIn";
+ ///
+ /// dviIn1
+ ///
public const string DviIn1 = "dviIn1";
- public const string DviOut = "dviOut";
- public const string HdmiIn = "hdmiIn";
- public const string HdmiIn1 = "hdmiIn1";
- public const string HdmiIn2 = "hdmiIn2";
- public const string HdmiIn3 = "hdmiIn3";
- public const string HdmiIn4 = "hdmiIn4";
- public const string HdmiIn5 = "hdmiIn5";
- public const string HdmiIn6 = "hdmiIn6";
- public const string HdmiOut = "hdmiOut";
+ ///
+ /// dviOut
+ ///
+ public const string DviOut = "dviOut";
+ ///
+ /// hdmiIn
+ ///
+ public const string HdmiIn = "hdmiIn";
+ ///
+ /// hdmiIn1
+ ///
+ public const string HdmiIn1 = "hdmiIn1";
+ ///
+ /// hdmiIn2
+ ///
+ public const string HdmiIn2 = "hdmiIn2";
+ ///
+ /// hdmiIn3
+ ///
+ public const string HdmiIn3 = "hdmiIn3";
+ ///
+ /// hdmiIn4
+ ///
+ public const string HdmiIn4 = "hdmiIn4";
+ ///
+ /// hdmiIn5
+ ///
+ public const string HdmiIn5 = "hdmiIn5";
+ ///
+ /// hdmiIn6
+ ///
+ public const string HdmiIn6 = "hdmiIn6";
+ ///
+ /// hdmiOut
+ ///
+ public const string HdmiOut = "hdmiOut";
+ ///
+ /// none
+ ///
+ public const string None = "none";
+ ///
+ /// rgbIn
+ ///
public const string RgbIn = "rgbIn";
+ ///
+ /// rgbIn1
+ ///
public const string RgbIn1 = "rgbIn1";
- public const string RgbIn2 = "rgbIn2";
- public const string VgaIn = "vgaIn";
- public const string VgaOut = "vgaOut";
- }
+ ///
+ /// rgbIn2
+ ///
+ public const string RgbIn2 = "rgbIn2";
+ ///
+ /// vgaIn
+ ///
+ public const string VgaIn = "vgaIn";
+ ///
+ /// vgaOut
+ ///
+ public const string VgaOut = "vgaOut";
+ }
}
\ No newline at end of file
diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs
index 307f26f1..430f4008 100644
--- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs
+++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs
@@ -11,18 +11,35 @@ using PepperDash.Essentials.Devices.Common.Codec;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
- public class MockVC : VideoCodecBase, IRoutingOutputs
+ public class MockVC : VideoCodecBase, IRoutingSource
{
+ public RoutingInputPort CodecOsdIn { get; private set; }
+ public RoutingInputPort HdmiIn1 { get; private set; }
+ public RoutingInputPort HdmiIn2 { get; private set; }
+ public RoutingOutputPort HdmiOut { get; private set; }
+
+ ///
+ ///
+ ///
public MockVC(string key, string name)
: base(key, name)
{
// Debug helpers
- //ActiveCallCountFeedback.OutputChange += (o, a) => Debug.Console(1, this, "InCall={0}", ActiveCallCountFeedback.IntValue);
IncomingCallFeedback.OutputChange += (o, a) => Debug.Console(1, this, "IncomingCall={0}", _IncomingCall);
MuteFeedback.OutputChange += (o, a) => Debug.Console(1, this, "Mute={0}", _IsMuted);
PrivacyModeIsOnFeedback.OutputChange += (o, a) => Debug.Console(1, this, "Privacy={0}", _PrivacyModeIsOn);
SharingSourceFeedback.OutputChange += (o, a) => Debug.Console(1, this, "SharingSource={0}", _SharingSource);
VolumeLevelFeedback.OutputChange += (o, a) => Debug.Console(1, this, "Volume={0}", _VolumeLevel);
+
+ CodecOsdIn = new RoutingInputPort(RoutingPortNames.CodecOsd, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, 0, this);
+ HdmiIn1 = new RoutingInputPort(RoutingPortNames.HdmiIn1, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, 1, this);
+ HdmiIn2 = new RoutingInputPort(RoutingPortNames.HdmiIn2, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, 2, this);
+ HdmiOut = new RoutingOutputPort(RoutingPortNames.HdmiOut, eRoutingSignalType.AudioVideo, eRoutingPortConnectionType.Hdmi, null, this);
+
+ InputPorts.Add(CodecOsdIn);
+ InputPorts.Add(HdmiIn1);
+ InputPorts.Add(HdmiIn2);
+ OutputPorts.Add(HdmiOut);
}
protected override Func IncomingCallFeedbackFunc
@@ -151,7 +168,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
///
public override void ExecuteSwitch(object selector)
{
- Debug.Console(1, this, "ExecuteSwitch");
+ Debug.Console(1, this, "ExecuteSwitch: {0}", selector);
_SharingSource = selector.ToString();
}
@@ -281,14 +298,5 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
Debug.Console(1, this, "TestFarEndHangup");
}
-
- #region IRoutingOutputs Members
-
- public RoutingPortCollection OutputPorts
- {
- get { return new RoutingPortCollection(); }
- }
-
- #endregion
}
}
\ No newline at end of file
diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
index a97e4ee0..83bee63c 100644
--- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
+++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
@@ -11,7 +11,7 @@ using PepperDash.Essentials.Devices.Common.Codec;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
- public abstract class VideoCodecBase : Device, IRoutingSinkWithSwitching, IUsageTracking, IHasDialer, IHasSharing, ICodecAudio
+ public abstract class VideoCodecBase : Device, IRoutingInputsOutputs, IUsageTracking, IHasDialer, IHasSharing, ICodecAudio
{
///
/// Fires when the status of any active, dialing, or incoming call changes or is new
@@ -28,11 +28,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
#endregion
- #region IRoutingInputs Members
-
public RoutingPortCollection InputPorts { get; private set; }
- #endregion
+ public RoutingPortCollection OutputPorts { get; private set; }
///
/// Returns true when any call is not in state Unknown, Disconnecting, Disconnected
@@ -41,9 +39,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public BoolFeedback IncomingCallFeedback { get; private set; }
- //public IntFeedback ActiveCallCountFeedback { get; private set; }
-
- //abstract protected Func ActiveCallCountFeedbackFunc { get; }
abstract protected Func IncomingCallFeedbackFunc { get; }
abstract protected Func PrivacyModeIsOnFeedbackFunc { get; }
abstract protected Func VolumeLevelFeedbackFunc { get; }
@@ -62,6 +57,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
SharingSourceFeedback = new StringFeedback(SharingSourceFeedbackFunc);
InputPorts = new RoutingPortCollection();
+ OutputPorts = new RoutingPortCollection();
ActiveCalls = new List();
}
diff --git a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs
index 7685de18..c93ce06c 100644
--- a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs
+++ b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs
@@ -365,6 +365,14 @@ namespace PepperDash.Essentials
RunRouteAction(LastSourceKey);
}
+ ///
+ /// Does what it says
+ ///
+ public override void SetDefaultLevels()
+ {
+ Debug.Console(0, this, "SetDefaultLevels not implemented");
+ }
+
///
///
///
diff --git a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs
index 18fe2a39..934e54cd 100644
--- a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs
+++ b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs
@@ -99,7 +99,7 @@ namespace PepperDash.Essentials
public EssentialsHuddleVtc1PropertiesConfig Config { get; private set; }
public IRoutingSinkWithSwitching DefaultDisplay { get; private set; }
- public IRoutingSinkNoSwitching DefaultAudioDevice { get; private set; }
+ public IBasicVolumeControls DefaultAudioDevice { get; private set; }
public IBasicVolumeControls DefaultVolumeControls { get; private set; }
public VideoCodecBase VideoCodec { get; private set; }
@@ -110,7 +110,7 @@ namespace PepperDash.Essentials
/// The config name of the source list
///
public string SourceListKey { get; set; }
-
+
public string DefaultSourceItem { get; set; }
public ushort DefaultVolume { get; set; }
@@ -179,18 +179,25 @@ namespace PepperDash.Essentials
public string CurrentSourceInfoKey { get; private set; }
+ ///
+ /// "codecOsd"
+ ///
+ public string DefaultCodecRouteString { get { return "codecOsd"; } }
+
///
///
///
///
///
public EssentialsHuddleVtc1Room(string key, string name, IRoutingSinkWithSwitching defaultDisplay,
- IRoutingSinkNoSwitching defaultAudio, VideoCodecBase vc, EssentialsHuddleVtc1PropertiesConfig config)
+ IBasicVolumeControls defaultAudio, VideoCodecBase codec, EssentialsHuddleVtc1PropertiesConfig config)
: base(key, name)
{
+ if (codec == null)
+ throw new ArgumentNullException("codec cannot be null");
Config = config;
DefaultDisplay = defaultDisplay;
- VideoCodec = vc;
+ VideoCodec = codec;
DefaultAudioDevice = defaultAudio;
if (defaultAudio is IBasicVolumeControls)
@@ -227,11 +234,14 @@ namespace PepperDash.Essentials
};
}
- InCallFeedback = new BoolFeedback(() => false); //###################################################
- IsSharingFeedback = new BoolFeedback(() => false); //##########################################################
- PrivacyModeIsOnFeedback = new BoolFeedback(() => false); //####################################################
- CallTypeFeedback = new IntFeedback(() => 0); //######################################################
+ InCallFeedback = new BoolFeedback(() => VideoCodec.IsInCall);
+ IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingSourceFeedback.StringValue != null);
+ // link privacy to VC (for now?)
+ PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
+ VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => this.PrivacyModeIsOnFeedback.FireUpdate();
+
+ CallTypeFeedback = new IntFeedback(() => 0);
SourceListKey = "default";
EnablePowerOnToLastSource = true;
@@ -244,18 +254,29 @@ namespace PepperDash.Essentials
public override void Shutdown()
{
RunRouteAction("roomOff");
+ VideoCodec.EndAllCalls();
}
///
/// Routes the default source item, if any. Returns true when default route exists
///
- public bool RunDefaultRoute()
+ public bool RunDefaultPresentRoute()
{
if (DefaultSourceItem != null)
RunRouteAction(DefaultSourceItem);
return DefaultSourceItem != null;
}
+ ///
+ /// Sets up the room when started into call mode without presenting a source
+ ///
+ ///
+ public bool RunDefaultCallRoute()
+ {
+ RunRouteAction(DefaultCodecRouteString);
+ return true;
+ }
+
///
///
///
@@ -355,6 +376,17 @@ namespace PepperDash.Essentials
}, 0); // end of CTimer
}
+
+ ///
+ /// Does what it says
+ ///
+ public override void SetDefaultLevels()
+ {
+ Debug.Console(1, this, "Restoring default levels");
+ var vc = CurrentVolumeControls as IBasicVolumeWithFeedback;
+ if (vc != null)
+ vc.SetVolume(DefaultVolume);
+ }
///
///
@@ -388,7 +420,7 @@ namespace PepperDash.Essentials
IRoutingSinkNoSwitching dest = null;
if (route.DestinationKey.Equals("$defaultaudio", StringComparison.OrdinalIgnoreCase))
- dest = DefaultAudioDevice;
+ dest = DefaultAudioDevice as IRoutingSinkNoSwitching;
else if (route.DestinationKey.Equals("$defaultDisplay", StringComparison.OrdinalIgnoreCase))
dest = DefaultDisplay;
else
@@ -445,17 +477,17 @@ namespace PepperDash.Essentials
public void PrivacyModeOff()
{
- // Turn off privacy on all things (codec only for now)
+ VideoCodec.PrivacyModeOff();
}
public void PrivacyModeOn()
{
- // Turn on ...
+ VideoCodec.PrivacyModeOn();
}
public void PrivacyModeToggle()
{
-
+ VideoCodec.PrivacyModeToggle();
}
#endregion
diff --git a/Essentials/PepperDashEssentials/Room/Types/EssentialsPresentationRoom.cs b/Essentials/PepperDashEssentials/Room/Types/EssentialsPresentationRoom.cs
index 4cc4d197..00ec1c8f 100644
--- a/Essentials/PepperDashEssentials/Room/Types/EssentialsPresentationRoom.cs
+++ b/Essentials/PepperDashEssentials/Room/Types/EssentialsPresentationRoom.cs
@@ -379,6 +379,14 @@ namespace PepperDash.Essentials
RunRouteAction(LastSourceKey);
}
+ ///
+ /// Does what it says
+ ///
+ public override void SetDefaultLevels()
+ {
+ Debug.Console(0, this, "SetDefaultLevels not implemented");
+ }
+
///
///
///
diff --git a/Essentials/PepperDashEssentials/Room/Types/EssentialsRoomBase.cs b/Essentials/PepperDashEssentials/Room/Types/EssentialsRoomBase.cs
index aeb8ee42..6cea3717 100644
--- a/Essentials/PepperDashEssentials/Room/Types/EssentialsRoomBase.cs
+++ b/Essentials/PepperDashEssentials/Room/Types/EssentialsRoomBase.cs
@@ -97,6 +97,11 @@ namespace PepperDash.Essentials
///
///
public abstract void Shutdown();
+
+ ///
+ /// Override this to implement a default volume level(s) method
+ ///
+ public abstract void SetDefaultLevels();
}
///
diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIUshortJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIUshortJoin.cs
index 69165d8d..ffc7f19e 100644
--- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIUshortJoin.cs
+++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIUshortJoin.cs
@@ -37,9 +37,14 @@
public const uint VolumeSlider6Value = 3862;
///
- /// 3922
+ /// 3922: 0-4, center->left. 5-8, center -> right.
///
- public const uint PresentationListCaretMode = 3922;
+ public const uint PresentationStagingCaretMode = 3922;
+
+ ///
+ /// 3923: 0-4, center->left. 5-8, center -> right.
+ ///
+ public const uint CallStagingCaretMode = 3923;
///
/// 15024 - Modes 0: On hook, 1: Phone, 2: Video
diff --git a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs
index dc5447d6..fbf22900 100644
--- a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs
+++ b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs
@@ -318,7 +318,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0,
b => { if (!b) ShareButtonPressed(); }));
ActivityFooterSrl.Count = 1;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 0;
+ TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 0;
ShareButtonSig.BoolValue = false;
}
@@ -333,7 +333,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl,
3, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 2;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 1;
+ TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 1;
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
ShareButtonSig.BoolValue = CurrentRoom.OnFeedback.BoolValue;
}
diff --git a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs
index c817ce5a..e8dda4ef 100644
--- a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs
+++ b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs
@@ -485,7 +485,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 1,
b => { }));
ActivityFooterSrl.Count = (ushort)(CurrentRoom.HasAudioDialer ? 2 : 1);
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue =
+ TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue =
(ushort)(CurrentRoom.HasAudioDialer ? 1 : 0);
}
@@ -504,7 +504,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl,
3, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 3;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 2;
+ TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 2;
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
}
else
@@ -512,7 +512,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl,
3, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 2;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 1;
+ TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 1;
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
}
}
diff --git a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs
index 3a0f6183..8de877cb 100644
--- a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs
+++ b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs
@@ -55,7 +55,7 @@ namespace PepperDash.Essentials
EssentialsHuddleVtc1Room _CurrentRoom;
///
- /// For hitting feedback
+ /// For hitting feedbacks
///
BoolInputSig CallButtonSig;
BoolInputSig ShareButtonSig;
@@ -129,6 +129,8 @@ namespace PepperDash.Essentials
public PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; private set; }
+ UiDisplayMode CurrentMode = UiDisplayMode.Start;
+
///
/// Constructor
///
@@ -147,6 +149,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl = new SubpageReferenceList(TriList, UISmartObjectJoin.ActivityFooterSRL, 3, 3, 3);
CallButtonSig = ActivityFooterSrl.BoolInputSig(1, 1);
ShareButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
+ EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
SetupActivityFooterWhenRoomOff();
@@ -203,19 +206,19 @@ namespace PepperDash.Essentials
TriList.SetBool(UIBoolJoin.TopBarHabaneroVisible, true);
TriList.SetBool(UIBoolJoin.ActivityFooterVisible, true);
+ // Privacy mute button
+ TriList.SetSigFalseAction(UIBoolJoin.Volume1SpeechMutePressAndFB, CurrentRoom.PrivacyModeToggle);
+ CurrentRoom.PrivacyModeIsOnFeedback.LinkInputSig(TriList.BooleanInput[UIBoolJoin.Volume1SpeechMutePressAndFB]);
+
// Default to showing rooms/sources now.
- //ShowMode(UiDisplayMode.PresentationMode);
if (CurrentRoom.OnFeedback.BoolValue)
{
- TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
TriList.SetBool(UIBoolJoin.TapToBeginVisible, false);
- TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
}
else
{
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
- TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
}
ShowCurrentDisplayModeSigsInUse();
@@ -280,8 +283,7 @@ namespace PepperDash.Essentials
PopupInterlock.HideAndClear());
// Default Volume button
- TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => // Set default volume method on room
- { });
+ TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => CurrentRoom.SetDefaultLevels());
if (TriList is CrestronApp)
@@ -388,8 +390,8 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 0,
b => { if (!b) ActivityShareButtonPressed(); }));
ActivityFooterSrl.Count = 2;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 0;
- ShareButtonSig.BoolValue = false;
+ TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 5); // right one slot
+ TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 1); // left one slot
}
///
@@ -405,11 +407,21 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl,
3, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 3;
- TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 1;
- EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
+ TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 0); // center
+ TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 2); // left -2
+ }
- ShareButtonSig.BoolValue = CurrentRoom.OnFeedback.BoolValue;
- }
+ ///
+ /// Single point call for setting the feedbacks on the activity buttons
+ ///
+ void SetActivityFooterFeedbacks()
+ {
+ CallButtonSig.BoolValue = CurrentMode == UiDisplayMode.Call
+ && CurrentRoom.ShutdownType == ShutdownType.None;
+ ShareButtonSig.BoolValue = CurrentMode == UiDisplayMode.Presentation
+ && CurrentRoom.ShutdownType == ShutdownType.None;
+ EndMeetingButtonSig.BoolValue = CurrentRoom.ShutdownType != ShutdownType.None;
+ }
///
///
@@ -418,14 +430,18 @@ namespace PepperDash.Essentials
{
if (VCDriver.IsVisible)
return;
- CallButtonSig.BoolValue = true;
- ShareButtonSig.BoolValue = false;
HideLogo();
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false);
TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
if (CurrentSourcePageManager != null)
CurrentSourcePageManager.Hide();
+ if (!CurrentRoom.OnFeedback.BoolValue)
+ {
+ CurrentRoom.RunDefaultCallRoute();
+ }
+ CurrentMode = UiDisplayMode.Call;
+ SetActivityFooterFeedbacks();
VCDriver.Show();
}
@@ -436,22 +452,26 @@ namespace PepperDash.Essentials
{
if (VCDriver.IsVisible)
VCDriver.Hide();
- ShareButtonSig.BoolValue = true;
- CallButtonSig.BoolValue = false;
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
+ TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false);
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
// Run default source when room is off and share is pressed
if (!CurrentRoom.OnFeedback.BoolValue)
{
// If there's no default, show UI elements
- if(!CurrentRoom.RunDefaultRoute())
+ if(!CurrentRoom.RunDefaultPresentRoute())
TriList.SetBool(UIBoolJoin.SelectASourceVisible, true);
}
- else // show what's active
+ else // room is on show what's active or select a source if nothing is yet active
{
- if (CurrentSourcePageManager != null)
+ Debug.Console(0, "*#*#*#*# ActivitySharPressed: CurrentSourceInfoKey={0}", CurrentRoom.CurrentSourceInfoKey);
+ if(CurrentRoom.CurrentSourceInfo == null || CurrentRoom.CurrentSourceInfoKey == CurrentRoom.DefaultCodecRouteString)
+ TriList.SetBool(UIBoolJoin.SelectASourceVisible, true);
+ else if (CurrentSourcePageManager != null)
CurrentSourcePageManager.Show();
}
+ CurrentMode = UiDisplayMode.Presentation;
+ SetActivityFooterFeedbacks();
}
///
@@ -536,8 +556,7 @@ namespace PepperDash.Essentials
{
// Do we need to check where the UI is? No?
var timer = CurrentRoom.ShutdownPromptTimer;
- EndMeetingButtonSig.BoolValue = true;
- ShareButtonSig.BoolValue = false;
+ SetActivityFooterFeedbacks();
if (CurrentRoom.ShutdownType == ShutdownType.Manual)
{
@@ -555,8 +574,8 @@ namespace PepperDash.Essentials
{
if (!onFb.BoolValue)
{
- EndMeetingButtonSig.BoolValue = false;
PowerDownModal.HideDialog();
+ SetActivityFooterFeedbacks();
onFb.OutputChange -= offHandler;
}
};
@@ -580,11 +599,9 @@ namespace PepperDash.Essentials
///
void ShutdownPromptTimer_HasFinished(object sender, EventArgs e)
{
- //Debug.Console(2, "*#*UI shutdown prompt finished");
- EndMeetingButtonSig.BoolValue = false;
+ SetActivityFooterFeedbacks();
CurrentRoom.ShutdownPromptTimer.TimeRemainingFeedback.OutputChange -= ShutdownPromptTimer_TimeRemainingFeedback_OutputChange;
CurrentRoom.ShutdownPromptTimer.PercentFeedback.OutputChange -= ShutdownPromptTimer_PercentFeedback_OutputChange;
-
}
///
@@ -594,16 +611,17 @@ namespace PepperDash.Essentials
///
void ShutdownPromptTimer_WasCancelled(object sender, EventArgs e)
{
- //Debug.Console(2, "*#*UI shutdown prompt cancelled");
if (PowerDownModal != null)
PowerDownModal.HideDialog();
- EndMeetingButtonSig.BoolValue = false;
- ShareButtonSig.BoolValue = CurrentRoom.OnFeedback.BoolValue;
+ SetActivityFooterFeedbacks();
CurrentRoom.ShutdownPromptTimer.TimeRemainingFeedback.OutputChange += ShutdownPromptTimer_TimeRemainingFeedback_OutputChange;
CurrentRoom.ShutdownPromptTimer.PercentFeedback.OutputChange -= ShutdownPromptTimer_PercentFeedback_OutputChange;
}
+ ///
+ /// Event handler for countdown timer on power off modal
+ ///
void ShutdownPromptTimer_TimeRemainingFeedback_OutputChange(object sender, EventArgs e)
{
@@ -611,6 +629,9 @@ namespace PepperDash.Essentials
TriList.StringInput[ModalDialog.MessageTextJoin].StringValue = message;
}
+ ///
+ /// Event handler for percentage on power off countdown
+ ///
void ShutdownPromptTimer_PercentFeedback_OutputChange(object sender, EventArgs e)
{
var value = (ushort)((sender as IntFeedback).UShortValue * 65535 / 100);
@@ -669,7 +690,7 @@ namespace PepperDash.Essentials
_CurrentRoom.OnFeedback.OutputChange += CurrentRoom_OnFeedback_OutputChange;
_CurrentRoom.IsWarmingUpFeedback.OutputChange -= CurrentRoom_IsWarmingFeedback_OutputChange;
- _CurrentRoom.IsCoolingDownFeedback.OutputChange -= IsCoolingDownFeedback_OutputChange;
+ _CurrentRoom.IsCoolingDownFeedback.OutputChange -= CurrentRoom_IsCoolingDownFeedback_OutputChange;
}
_CurrentRoom = room;
@@ -717,7 +738,7 @@ namespace PepperDash.Essentials
_CurrentRoom.OnFeedback.OutputChange += CurrentRoom_OnFeedback_OutputChange;
CurrentRoom_SyncOnFeedback();
_CurrentRoom.IsWarmingUpFeedback.OutputChange += CurrentRoom_IsWarmingFeedback_OutputChange;
- _CurrentRoom.IsCoolingDownFeedback.OutputChange += IsCoolingDownFeedback_OutputChange;
+ _CurrentRoom.IsCoolingDownFeedback.OutputChange += CurrentRoom_IsCoolingDownFeedback_OutputChange;
_CurrentRoom.CurrentVolumeDeviceChange += CurrentRoom_CurrentAudioDeviceChange;
RefreshAudioDeviceConnections();
@@ -739,29 +760,33 @@ namespace PepperDash.Essentials
CurrentRoom_SyncOnFeedback();
}
+ ///
+ ///
+ ///
void CurrentRoom_SyncOnFeedback()
{
var value = _CurrentRoom.OnFeedback.BoolValue;
- //Debug.Console(2, CurrentRoom, "UI: Is on event={0}", value);
TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value;
if (value) //ON
{
SetupActivityFooterWhenRoomOn();
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
- TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
+ //TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
- TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = true;
+ TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = true;
}
else
{
+ CurrentMode = UiDisplayMode.Start;
if (VCDriver.IsVisible)
VCDriver.Hide();
SetupActivityFooterWhenRoomOff();
ShowLogo();
+ SetActivityFooterFeedbacks();
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
- TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = false;
+ TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
}
}
@@ -771,10 +796,7 @@ namespace PepperDash.Essentials
///
void CurrentRoom_IsWarmingFeedback_OutputChange(object sender, EventArgs e)
{
- var value = CurrentRoom.IsWarmingUpFeedback.BoolValue;
- //Debug.Console(2, CurrentRoom, "UI: WARMING event={0}", value);
-
- if (value)
+ if (CurrentRoom.IsWarmingUpFeedback.BoolValue)
{
WarmingCoolingModal = new ModalDialog(TriList);
WarmingCoolingModal.PresentModalDialog(0, "Powering Up", "Power", "Room is powering up
Please wait
",
@@ -792,12 +814,9 @@ namespace PepperDash.Essentials
///
///
///
- void IsCoolingDownFeedback_OutputChange(object sender, EventArgs e)
+ void CurrentRoom_IsCoolingDownFeedback_OutputChange(object sender, EventArgs e)
{
- var value = CurrentRoom.IsCoolingDownFeedback.BoolValue;
- //Debug.Console(2, CurrentRoom, "UI: Cooldown event={0}", value);
-
- if (value)
+ if (CurrentRoom.IsCoolingDownFeedback.BoolValue)
{
WarmingCoolingModal = new ModalDialog(TriList);
WarmingCoolingModal.PresentModalDialog(0, "Shut Down", "Power", "Room is shutting down
Please wait
",
diff --git a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
index 0ef34d84..8b518391 100644
--- a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
+++ b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
@@ -75,6 +75,8 @@ namespace PepperDash.Essentials.UIDrivers.VC
public EssentialsVideoCodecUiDriver(BasicTriListWithSmartObject triList, IAVDriver parent, VideoCodecBase codec)
: base(triList)
{
+ if (codec == null)
+ throw new ArgumentNullException("Codec cannot be null");
Codec = codec;
Parent = parent;
SetupCallStagingPopover();
@@ -274,7 +276,6 @@ namespace PepperDash.Essentials.UIDrivers.VC
{
if (Codec.ActiveCalls.Count > 1)
{
- Debug.Console(1, "#*#*#*# FUCK ME!!!!");
Parent.PopupInterlock.ShowInterlocked(UIBoolJoin.HeaderActiveCallsListVisible);
}
else
diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz
index 2b9a781e..480bd616 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 a4dee1dd..8f39feb1 100644
Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ