Merge pull request #885 from PepperDash/hotfix/videocodecbase-max-meeting-xsig-value-set

fix: Added MeetingsToDisplay analog join to join map
This commit is contained in:
Neil Dorin
2022-01-19 15:02:48 -07:00
committed by GitHub
2 changed files with 48 additions and 7 deletions

View File

@@ -922,7 +922,22 @@ namespace PepperDash.Essentials.Core.Bridges.JoinMaps
#region Analog #region Analog
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
[JoinName("MeetingsToDisplay")]
public JoinDataComplete MeetingsToDisplay = new JoinDataComplete(
new JoinData
{
JoinNumber = 40,
JoinSpan = 1
},
new JoinMetadata
{
Description = "Set/FB the number of meetings to display via the bridge xsig; default: 3 meetings.",
JoinCapabilities = eJoinCapabilities.ToFromSIMPL,
JoinType = eJoinType.Analog
});
[JoinName("MinutesBeforeMeetingStart")] [JoinName("MinutesBeforeMeetingStart")]
public JoinDataComplete MinutesBeforeMeetingStart = new JoinDataComplete( public JoinDataComplete MinutesBeforeMeetingStart = new JoinDataComplete(

View File

@@ -41,6 +41,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
SharingSourceFeedback = new StringFeedback(SharingSourceFeedbackFunc); SharingSourceFeedback = new StringFeedback(SharingSourceFeedbackFunc);
SharingContentIsOnFeedback = new BoolFeedback(SharingContentIsOnFeedbackFunc); SharingContentIsOnFeedback = new BoolFeedback(SharingContentIsOnFeedbackFunc);
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
MeetingsToDisplayFeedback = new IntFeedback(() => MeetingsToDisplay);
InputPorts = new RoutingPortCollection<RoutingInputPort>(); InputPorts = new RoutingPortCollection<RoutingInputPort>();
OutputPorts = new RoutingPortCollection<RoutingOutputPort>(); OutputPorts = new RoutingPortCollection<RoutingOutputPort>();
@@ -792,6 +795,10 @@ ScreenIndexIsPinnedTo: {8} (a{17})
} }
}; };
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
trilist.SetUShortSigAction(joinMap.MeetingsToDisplay.JoinNumber, m => MeetingsToDisplay = m);
MeetingsToDisplayFeedback.LinkInputSig(trilist.UShortInput[joinMap.MeetingsToDisplay.JoinNumber]);
trilist.OnlineStatusChange += (device, args) => trilist.OnlineStatusChange += (device, args) =>
{ {
if (!args.DeviceOnLine) return; if (!args.DeviceOnLine) return;
@@ -799,6 +806,8 @@ ScreenIndexIsPinnedTo: {8} (a{17})
// TODO [ ] Issue #868 // TODO [ ] Issue #868
trilist.SetString(joinMap.Schedule.JoinNumber, "\xFC"); trilist.SetString(joinMap.Schedule.JoinNumber, "\xFC");
UpdateMeetingsList(codec, trilist, joinMap); UpdateMeetingsList(codec, trilist, joinMap);
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
MeetingsToDisplayFeedback.LinkInputSig(trilist.UShortInput[joinMap.MeetingsToDisplay.JoinNumber]);
}; };
} }
@@ -832,17 +841,34 @@ ScreenIndexIsPinnedTo: {8} (a{17})
}; };
} }
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
private int _meetingsToDisplay = 3;
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
protected int MeetingsToDisplay
{
get { return _meetingsToDisplay; }
set {
_meetingsToDisplay = (ushort) (value == 0 ? 3 : value);
MeetingsToDisplayFeedback.FireUpdate();
}
}
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
public IntFeedback MeetingsToDisplayFeedback { get; set; }
private string UpdateMeetingsListXSig(List<Meeting> meetings) private string UpdateMeetingsListXSig(List<Meeting> meetings)
{ {
const int maxMeetings = 3; // TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
//const int _meetingsToDisplay = 3;
const int maxDigitals = 2; const int maxDigitals = 2;
const int maxStrings = 7; const int maxStrings = 7;
const int offset = maxDigitals + maxStrings; const int offset = maxDigitals + maxStrings;
var digitalIndex = maxStrings * maxMeetings; //15 var digitalIndex = maxStrings * _meetingsToDisplay; //15
var stringIndex = 0; var stringIndex = 0;
var meetingIndex = 0; var meetingIndex = 0;
var tokenArray = new XSigToken[maxMeetings * offset]; var tokenArray = new XSigToken[_meetingsToDisplay * offset];
/* /*
* Digitals * Digitals
* IsJoinable - 1 * IsJoinable - 1
@@ -865,7 +891,7 @@ ScreenIndexIsPinnedTo: {8} (a{17})
if (meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue; if (meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue;
if (meetingIndex >= maxMeetings * offset) if (meetingIndex >= _meetingsToDisplay * offset)
{ {
Debug.Console(2, this, "Max Meetings reached"); Debug.Console(2, this, "Max Meetings reached");
break; break;
@@ -890,10 +916,10 @@ ScreenIndexIsPinnedTo: {8} (a{17})
stringIndex += maxStrings; stringIndex += maxStrings;
} }
while (meetingIndex < maxMeetings * offset) while (meetingIndex < _meetingsToDisplay * offset)
{ {
Debug.Console(2, this, "Clearing unused data. Meeting Index: {0} MaxMeetings * Offset: {1}", Debug.Console(2, this, "Clearing unused data. Meeting Index: {0} MaxMeetings * Offset: {1}",
meetingIndex, maxMeetings * offset); meetingIndex, _meetingsToDisplay * offset);
//digitals //digitals
tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false); tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false);