Compare commits

...

4 Commits

3 changed files with 70 additions and 28 deletions

View File

@@ -1,10 +1,10 @@
using System;
namespace PepperDash.Essentials.Core.Bridges
{
public class IDigitalInputJoinMap : JoinMapBaseAdvanced
{
namespace PepperDash.Essentials.Core.Bridges
{
public class IDigitalInputJoinMap : JoinMapBaseAdvanced
{
[JoinName("InputState")]
public JoinDataComplete InputState = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
new JoinMetadata { Description = "Room Email Url", JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinType = eJoinType.Digital });
@@ -26,6 +26,6 @@ namespace PepperDash.Essentials.Core.Bridges
protected IDigitalInputJoinMap(uint joinStart, Type type)
: base(joinStart, type)
{
}
}
}
}
}

View File

@@ -37,6 +37,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
private int _meetingWarningMinutes = 5;
private bool _nullMeeting { get; set; }
private Meeting _previousChangedMeeting;
private eMeetingEventChangeType _previousChangeType = eMeetingEventChangeType.Unknown;
@@ -91,6 +94,23 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// <param name="meeting"></param>
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);
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
const double meetingTimeEpsilon = 0.05;
if (Meetings.Count < 1)
{
OnMeetingChange(eMeetingEventChangeType.Unknown, null);
return;
}
foreach (var m in Meetings)
{
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.MeetingEventChange += (sender, args) =>
{
if (args.Meeting == null)
{
UpdateMeetingsList(codec, trilist, joinMap);
}
if (args.ChangeType == eMeetingEventChangeType.MeetingStartWarning)
{
UpdateMeetingsList(codec, trilist, joinMap);
@@ -909,6 +913,12 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var stringIndex = 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];
/*
* Digitals
@@ -1290,28 +1300,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
};
var joinCodec = this as IJoinCalls;
if (joinCodec != null)
{
trilist.SetSigFalseAction(joinMap.JoinAllCalls.JoinNumber, () => joinCodec.JoinAllCalls());
if (joinCodec != null)
{
trilist.SetSigFalseAction(joinMap.JoinAllCalls.JoinNumber, () => joinCodec.JoinAllCalls());
for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++)
{
trilist.SetSigFalseAction((uint)(joinMap.JoinCallStart.JoinNumber + i), () =>
{
var call = ActiveCalls[i];
if (call != null)
{
joinCodec.JoinCall(call);
}
else
{
Debug.Console(0, this, "[Join Call] Unable to find call at index '{0}'", i);
}
});
}
}
for (int i = 0; i < joinMap.JoinCallStart.JoinSpan; i++)
{
trilist.SetSigFalseAction((uint) (joinMap.JoinCallStart.JoinNumber + i), () =>
{
var call = ActiveCalls[i];
if (call != null)
{
joinCodec.JoinCall(call);
}
else
{
Debug.Console(0, this, "[Join Call] Unable to find call at index '{0}'", i);
}
});
}
}
var holdCodec = this as IHasCallHold;
var holdCodec = this as IHasCallHold;
if (holdCodec != null)
{
trilist.SetSigFalseAction(joinMap.HoldAllCalls.JoinNumber, () =>
@@ -1382,7 +1392,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var digitalIndex = maxStrings * maxCalls;
var arrayIndex = 0;
var tokenArray = new XSigToken[maxCalls * offset]; //set array size for number of calls * pieces of info
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
foreach (var call in ActiveCalls)
{