Compare commits

...

4 Commits

3 changed files with 70 additions and 28 deletions

View File

@@ -37,6 +37,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
private int _meetingWarningMinutes = 5; private int _meetingWarningMinutes = 5;
private bool _nullMeeting { get; set; }
private Meeting _previousChangedMeeting; private Meeting _previousChangedMeeting;
private eMeetingEventChangeType _previousChangeType = eMeetingEventChangeType.Unknown; private eMeetingEventChangeType _previousChangeType = eMeetingEventChangeType.Unknown;
@@ -91,6 +94,23 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// <param name="meeting"></param> /// <param name="meeting"></param>
private void OnMeetingChange(eMeetingEventChangeType changeType, Meeting meeting) private void OnMeetingChange(eMeetingEventChangeType changeType, Meeting meeting)
{ {
if (meeting == null)
{
var message = _nullMeeting
? "*****************OnMeetingChange No meetings to update*****************"
: "*****************OnMeetingChange No meetings present. Clearing List*****************";
Debug.Console(2, message);
if (_nullMeeting) return;
_nullMeeting = true;
var handler = MeetingEventChange;
if (handler != null)
{
handler(this, new MeetingEventArgs() { ChangeType = eMeetingEventChangeType.Unknown, Meeting = null });
}
return;
}
_nullMeeting = false;
Debug.Console(2, "*****************OnMeetingChange. id: {0} changeType: {1}**********************", meeting.Id, changeType); Debug.Console(2, "*****************OnMeetingChange. id: {0} changeType: {1}**********************", meeting.Id, changeType);
if (changeType != (changeType & meeting.NotifiedChangeTypes)) if (changeType != (changeType & meeting.NotifiedChangeTypes))
{ {
@@ -119,6 +139,11 @@ namespace PepperDash.Essentials.Devices.Common.Codec
// Iterate the meeting list and check if any meeting need to do anything // Iterate the meeting list and check if any meeting need to do anything
const double meetingTimeEpsilon = 0.05; const double meetingTimeEpsilon = 0.05;
if (Meetings.Count < 1)
{
OnMeetingChange(eMeetingEventChangeType.Unknown, null);
return;
}
foreach (var m in Meetings) foreach (var m in Meetings)
{ {
var changeType = eMeetingEventChangeType.Unknown; var changeType = eMeetingEventChangeType.Unknown;

View File

@@ -831,6 +831,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => UpdateMeetingsList(codec, trilist, joinMap); codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => UpdateMeetingsList(codec, trilist, joinMap);
codec.CodecSchedule.MeetingEventChange += (sender, args) => codec.CodecSchedule.MeetingEventChange += (sender, args) =>
{ {
if (args.Meeting == null)
{
UpdateMeetingsList(codec, trilist, joinMap);
}
if (args.ChangeType == eMeetingEventChangeType.MeetingStartWarning) if (args.ChangeType == eMeetingEventChangeType.MeetingStartWarning)
{ {
UpdateMeetingsList(codec, trilist, joinMap); UpdateMeetingsList(codec, trilist, joinMap);
@@ -909,6 +913,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var stringIndex = 0; var stringIndex = 0;
var meetingIndex = 0; var meetingIndex = 0;
if (meetings.Count == 0)
{
var clearBytes = XSigHelpers.ClearOutputs();
return Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length);
}
var tokenArray = new XSigToken[_meetingsToDisplay * offset]; var tokenArray = new XSigToken[_meetingsToDisplay * offset];
/* /*
* Digitals * Digitals
@@ -1296,7 +1306,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++) for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++)
{ {
trilist.SetSigFalseAction((uint)(joinMap.JoinCallStart.JoinNumber + i), () => trilist.SetSigFalseAction((uint) (joinMap.JoinCallStart.JoinNumber + i), () =>
{ {
var call = ActiveCalls[i]; var call = ActiveCalls[i];
if (call != null) if (call != null)
@@ -1382,8 +1392,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var digitalIndex = maxStrings * maxCalls; var digitalIndex = maxStrings * maxCalls;
var arrayIndex = 0; var arrayIndex = 0;
if (ActiveCalls.Count == 0)
{
var clearBytes = XSigHelpers.ClearOutputs();
return Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length);
}
var tokenArray = new XSigToken[maxCalls * offset]; //set array size for number of calls * pieces of info var tokenArray = new XSigToken[maxCalls * offset]; //set array size for number of calls * pieces of info
foreach (var call in ActiveCalls) foreach (var call in ActiveCalls)
{ {
if (arrayIndex >= maxCalls * offset) if (arrayIndex >= maxCalls * offset)