From 492e593263c847bd64ac01447421824456fc4373 Mon Sep 17 00:00:00 2001 From: Jason DeVito Date: Mon, 7 Jun 2021 22:22:00 -0500 Subject: [PATCH] Updated IHasCodecLayouts to implement Layout Position selection and feedback, updated bridge map to map Layout Position signals. Updated ZoomRoom to implement Layout Position selection and feedback. --- .../VideoCodec/Interfaces/IHasCodecLayouts.cs | 10 +- .../VideoCodec/ZoomRoom/ZoomRoom.cs | 115 ++++++++++- .../VideoCodec/ZoomRoom/ZoomRoomJoinMap.cs | 180 +++++++++++++++--- 3 files changed, 274 insertions(+), 31 deletions(-) diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs index 36499281..97ac35c5 100644 --- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs +++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs @@ -31,7 +31,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec BoolFeedback LayoutViewIsOnLastPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func BoolFeedback CanSwapContentWithThumbnailFeedback { get; } BoolFeedback ContentSwappedWithThumbnailFeedback { get; } - //StringFeedback LayoutSizeFeedback { get; } // TOOD: #714 [ ] Feature Layout Size + StringFeedback LayoutSizeFeedback { get; } // TODO: #714 [ ] Feature Layout Size + StringFeedback LayoutPositionFeedback { get; } // TODO: #714 [ ] Feature Layout Size ZoomRoom.zConfiguration.eLayoutStyle LastSelectedLayout { get; } ZoomRoom.zConfiguration.eLayoutStyle AvailableLayouts { get; } @@ -43,8 +44,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec void LayoutTurnNextPage(); void LayoutTurnPreviousPage(); - void GetCurrentLayoutSize(); // TOOD: #714 [ ] Feature Layout Size - void SetLayoutSize(ZoomRoom.zConfiguration.eLayoutSize layoutSize); // TOOD: #714 [ ] Feature Layout Size + void GetCurrentLayoutSize(); // TODO: #714 [ ] Feature Layout Size + void SetLayoutSize(ZoomRoom.zConfiguration.eLayoutSize layoutSize); // TODO: #714 [ ] Feature Layout Size + + void GetCurrentLayoutPosition(); // TODO: #714 [ ] Feature Layout Size + void SetLayoutPosition(ZoomRoom.zConfiguration.eLayoutPosition layoutPosition); // TODO: #714 [ ] Feature Layout Size } public class LayoutInfoChangedEventArgs : EventArgs diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs index ceead746..85de4dec 100644 --- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs +++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs @@ -126,6 +126,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom LocalLayoutFeedback = new StringFeedback(LocalLayoutFeedbackFunc); + // TODO: #714 [ ] Feature Layout Size + LayoutSizeFeedback = new StringFeedback(LayoutSizeFeedbackFunc); + LayoutPositionFeedback = new StringFeedback(LayoutPositionFeedbackFunc); + + LayoutViewIsOnFirstPageFeedback = new BoolFeedback(LayoutViewIsOnFirstPageFeedbackFunc); LayoutViewIsOnLastPageFeedback = new BoolFeedback(LayoutViewIsOnLastPageFeedbackFunc); CanSwapContentWithThumbnailFeedback = new BoolFeedback(CanSwapContentWithThumbnailFeedbackFunc); @@ -1797,13 +1802,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom layoutsCodec.LocalLayoutFeedback.LinkInputSig(trilist.StringInput[joinMap.GetSetCurrentLayout.JoinNumber]); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size trilist.SetSigFalseAction(joinMap.SetLayoutSizeOff.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Off)); trilist.SetSigFalseAction(joinMap.SetLayoutSize1.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Size1)); trilist.SetSigFalseAction(joinMap.SetLayoutSize2.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Size2)); trilist.SetSigFalseAction(joinMap.SetLayoutSize3.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Size3)); - trilist.SetSigFalseAction(joinMap.SetLayoutSizeStrip.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Strip)); - // TOOD: #714 [ ] Feature Layout Size + trilist.SetSigFalseAction(joinMap.SetLayoutSizeStrip.JoinNumber, () => layoutsCodec.SetLayoutSize(zConfiguration.eLayoutSize.Strip)); trilist.SetSigFalseAction(joinMap.GetSetCurrentLayoutSize.JoinNumber, layoutsCodec.GetCurrentLayoutSize); trilist.SetStringSigAction(joinMap.GetSetCurrentLayoutSize.JoinNumber, (s) => { @@ -1817,6 +1821,41 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom Debug.Console(1, this, "Unable to parse '{0}' to zConfiguration.eLayoutSize: {1}", s, e); } }); + layoutsCodec.LayoutSizeFeedback.LinkInputSig(trilist.StringInput[joinMap.GetSetCurrentLayoutSize.JoinNumber]); + + // TODO: #714 [ ] Feature Layout Size + trilist.SetSigFalseAction(joinMap.SetLayoutPositionCenter.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.Center)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionUp.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.Up)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionRight.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.Right)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionUpRight.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.UpRight)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionDown.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.Down)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionDownRight.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.DownRight)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionLeft.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.Left)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionUpLeft.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.UpLeft)); + trilist.SetSigFalseAction(joinMap.SetLayoutPositionDownLeft.JoinNumber, + () => layoutsCodec.SetLayoutPosition(zConfiguration.eLayoutPosition.DownLeft)); + trilist.SetSigFalseAction(joinMap.GetSetCurrentLayoutPosition.JoinNumber, layoutsCodec.GetCurrentLayoutPosition); + trilist.SetStringSigAction(joinMap.GetSetCurrentLayoutPosition.JoinNumber, (s) => + { + try + { + var position = (zConfiguration.eLayoutPosition) Enum.Parse(typeof (zConfiguration.eLayoutPosition), s, true); + SetLayoutPosition(position); + } + catch (Exception e) + { + Debug.Console(1, this, "Unable to parse '{0}' to zConfiguration.eLayoutPosition: {1}", s, e); + } + }); + } var pinCodec = this as IHasParticipantPinUnpin; @@ -2327,22 +2366,86 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom SendText("zCommand Call Layout TurnPage Forward: Off"); } - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size + /// + /// Stores last selected layout size + /// public zConfiguration.eLayoutSize LastSelectedLayoutSize { get; private set; } - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size + /// + /// Queries for current layout size + /// public void GetCurrentLayoutSize() { SendText("zConfiguration Call Layout Size"); } - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size + /// + /// Sets selected layout size + /// + /// zConfiguration.eLayoutSize public void SetLayoutSize(zConfiguration.eLayoutSize layoutSize) { LastSelectedLayoutSize = layoutSize; SendText(String.Format("zConfiguration Call Layout Size: {0}", layoutSize.ToString())); } + // TODO: #714 [ ] Feature Layout Size + private Func LayoutSizeFeedbackFunc + { + get + { + return () => Configuration.Call.Layout.Size.ToString(); + } + } + + /// + /// Layout size feedback + /// + public StringFeedback LayoutSizeFeedback { get; private set; } + + // TODO: #714 [ ] Feature Layout Size + /// + /// Stores last selected layout position + /// + public zConfiguration.eLayoutPosition LastSelectedLayoutPosition { get; private set; } + + // TODO: #714 [ ] Feature Layout Size + /// + /// Queries for current layout position + /// + public void GetCurrentLayoutPosition() + { + SendText("zConfiguration Call Layout Position"); + } + + // TODO: #714 [ ] Feature Layout Size + /// + /// Sets selected layout position + /// + /// + public void SetLayoutPosition(zConfiguration.eLayoutPosition layoutPosition) + { + LastSelectedLayoutPosition = layoutPosition; + SendText(String.Format("zConfiguration Call Layout Position: {0}", layoutPosition.ToString())); + } + + // TODO: #714 [ ] Feature Layout Size + private Func LayoutPositionFeedbackFunc + { + get + { + return () => Configuration.Call.Layout.Position.ToString(); + } + } + + /// + /// Layout position feedback + /// + public StringFeedback LayoutPositionFeedback { get; private set; } + #endregion #region IHasCodecLayouts Members diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoomJoinMap.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoomJoinMap.cs index 24cf65e8..fe9e0691 100644 --- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoomJoinMap.cs +++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoomJoinMap.cs @@ -162,24 +162,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom Description = "FB Indicates if layout 'ShareAll' is available", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.DigitalSerial - }); + }); - // TOOD: #714 [ ] Feature Layout Size - //[JoinName("GetCurrentLayoutSize")] - //public JoinDataComplete GetCurrentLayoutSize = new JoinDataComplete( - // new JoinData - // { - // JoinNumber = 230, - // JoinSpan = 1 - // }, - // new JoinMetadata - // { - // Description = "Poll for the current layout size", - // JoinCapabilities = eJoinCapabilities.FromSIMPL, - // JoinType = eJoinType.Digital - // }); - - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("SetLayoutSizeOff")] public JoinDataComplete SetLayoutSizeOff = new JoinDataComplete( new JoinData @@ -194,7 +179,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.Digital }); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("SetLayoutSize1")] public JoinDataComplete SetLayoutSize1 = new JoinDataComplete( new JoinData @@ -209,7 +194,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.Digital }); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("SetLayoutSize2")] public JoinDataComplete SetLayoutSize2 = new JoinDataComplete( new JoinData @@ -224,7 +209,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.Digital }); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("SetLayoutSize3")] public JoinDataComplete SetLayoutSize3 = new JoinDataComplete( new JoinData @@ -239,7 +224,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.Digital }); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("SetLayoutSizeStrip")] public JoinDataComplete SetLayoutSizeStrip = new JoinDataComplete( new JoinData @@ -252,6 +237,141 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom Description = "Sets layout size strip", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionCenter")] + public JoinDataComplete SetLayoutPositionCenter = new JoinDataComplete( + new JoinData + { + JoinNumber = 241, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to center", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionUp")] + public JoinDataComplete SetLayoutPositionUp = new JoinDataComplete( + new JoinData + { + JoinNumber = 242, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to up", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionRight")] + public JoinDataComplete SetLayoutPositionRight = new JoinDataComplete( + new JoinData + { + JoinNumber = 243, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to right", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionUpRight")] + public JoinDataComplete SetLayoutPositionUpRight = new JoinDataComplete( + new JoinData + { + JoinNumber = 244, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to up right", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionDown")] + public JoinDataComplete SetLayoutPositionDown = new JoinDataComplete( + new JoinData + { + JoinNumber = 245, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to down", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionDownRight")] + public JoinDataComplete SetLayoutPositionDownRight = new JoinDataComplete( + new JoinData + { + JoinNumber = 246, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to down right", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionLeft")] + public JoinDataComplete SetLayoutPositionLeft = new JoinDataComplete( + new JoinData + { + JoinNumber = 247, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position todown left", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionUpLeft")] + public JoinDataComplete SetLayoutPositionUpLeft = new JoinDataComplete( + new JoinData + { + JoinNumber = 248, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to up left", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital + }); + + // TODO: #714 [ ] Feature Layout Size + [JoinName("SetLayoutPositionDownLeft")] + public JoinDataComplete SetLayoutPositionDownLeft = new JoinDataComplete( + new JoinData + { + JoinNumber = 249, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets layout position to down left", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.Digital }); //[JoinName("ParticipantAudioMuteToggleStart")] @@ -348,7 +468,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.Serial }); - // TOOD: #714 [ ] Feature Layout Size + // TODO: #714 [ ] Feature Layout Size [JoinName("GetSetCurrentLayoutSize")] public JoinDataComplete GetSetCurrentLayoutSize = new JoinDataComplete( new JoinData @@ -363,6 +483,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom JoinType = eJoinType.DigitalSerial }); + // TODO: #714 [ ] Feature Layout Size + [JoinName("GetSetCurrentLayoutPosition")] + public JoinDataComplete GetSetCurrentLayoutPosition = new JoinDataComplete( + new JoinData + { + JoinNumber = 240, + JoinSpan = 1 + }, + new JoinMetadata + { + Description = "Sets and reports the current layout position.", + JoinCapabilities = eJoinCapabilities.ToFromSIMPL, + JoinType = eJoinType.DigitalSerial + }); + + #endregion public ZoomRoomJoinMap(uint joinStart)