changing some things to check for updates to meetings list

This commit is contained in:
Andrew Welker
2020-09-29 13:24:53 -06:00
parent 72515a79ca
commit 1e6d65fe53
3 changed files with 42 additions and 32 deletions

View File

@@ -24,7 +24,7 @@ namespace PepperDash.Essentials.Devices.Common.Codec
public class CodecScheduleAwareness
{
List<Meeting> _Meetings;
List<Meeting> _meetings;
public event EventHandler<MeetingEventArgs> MeetingEventChange;
@@ -45,11 +45,11 @@ namespace PepperDash.Essentials.Devices.Common.Codec
{
get
{
return _Meetings;
return _meetings;
}
set
{
_Meetings = value;
_meetings = value;
var handler = MeetingsListHasChanged;
if (handler != null)
@@ -59,13 +59,13 @@ namespace PepperDash.Essentials.Devices.Common.Codec
}
}
private CTimer ScheduleChecker;
private CTimer _scheduleChecker;
public CodecScheduleAwareness()
{
Meetings = new List<Meeting>();
ScheduleChecker = new CTimer(CheckSchedule, null, 1000, 1000);
_scheduleChecker = new CTimer(CheckSchedule, null, 1000, 1000);
}
private void OnMeetingChange(eMeetingEventChangeType changeType, Meeting meeting)
@@ -82,9 +82,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
// Iterate the meeting list and check if any meeting need to do anythingk
const double meetingTimeEpsilon = 0.0001;
foreach (Meeting m in Meetings)
foreach (var m in Meetings)
{
eMeetingEventChangeType changeType = eMeetingEventChangeType.Unkown;
var changeType = eMeetingEventChangeType.Unkown;
if (m.TimeToMeetingStart.TotalMinutes <= m.MeetingWarningMinutes.TotalMinutes) // Meeting is about to start
changeType = eMeetingEventChangeType.MeetingStartWarning;
@@ -108,14 +108,17 @@ namespace PepperDash.Essentials.Devices.Common.Codec
/// </summary>
public class Meeting
{
public TimeSpan MeetingWarningMinutes = TimeSpan.FromMinutes(5);
public int MinutesBeforeMeeting;
public string Id { get; set; }
public string Organizer { get; set; }
public string Title { get; set; }
public string Agenda { get; set; }
public TimeSpan MeetingWarningMinutes
{
get { return TimeSpan.FromMinutes(MinutesBeforeMeeting); }
}
public TimeSpan TimeToMeetingStart
{
get

View File

@@ -489,27 +489,38 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
codec.CodecSchedule.MeetingWarningMinutes = i;
});
codec.CodecSchedule.MeetingsListHasChanged += (sender, args) =>
{
var clearBytes = XSigHelpers.ClearOutputs();
codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => UpdateMeetingsList(codec, trilist, joinMap);
trilist.SetString(joinMap.Schedule.JoinNumber,
Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length));
var meetingsData = UpdateMeetingsListXSig(codec.CodecSchedule.Meetings);
trilist.SetString(joinMap.Schedule.JoinNumber, meetingsData);
trilist.SetSigFalseAction(joinMap.DialMeeting.JoinNumber, () =>
codec.CodecSchedule.MeetingEventChange +=
(sender, args) =>
{
if (codec.CodecSchedule.Meetings[0].Joinable)
if (args.ChangeType == eMeetingEventChangeType.MeetingStartWarning)
{
Dial(codec.CodecSchedule.Meetings[0]);
UpdateMeetingsList(codec, trilist, joinMap);
}
});
};
}
trilist.SetUshort(joinMap.MeetingCount.JoinNumber, (ushort) codec.CodecSchedule.Meetings.Count);
};
private void UpdateMeetingsList(IHasScheduleAwareness codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
{
var clearBytes = XSigHelpers.ClearOutputs();
trilist.SetString(joinMap.Schedule.JoinNumber,
Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length));
var meetingsData = UpdateMeetingsListXSig(codec.CodecSchedule.Meetings);
trilist.SetString(joinMap.Schedule.JoinNumber, meetingsData);
trilist.SetSigFalseAction(joinMap.DialMeeting.JoinNumber, () =>
{
if (codec.CodecSchedule.Meetings[0].Joinable)
{
Dial(codec.CodecSchedule.Meetings[0]);
}
});
trilist.SetUshort(joinMap.MeetingCount.JoinNumber, (ushort)codec.CodecSchedule.Meetings.Count);
}
private string UpdateMeetingsListXSig(List<Meeting> meetings)
@@ -545,15 +556,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
foreach(var meeting in meetings)
{
if (meetingIndex >= maxMeetings*offset)
{
break;
}
var currentTime = DateTime.Now;
if(meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue;
if (meetingIndex > maxMeetings*offset) break;
if (meetingIndex >= maxMeetings*offset) break;
//digitals
tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, meeting.Joinable);

View File

@@ -843,7 +843,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
// this is a single participant event notification
var participant =
JsonConvert.DeserializeObject<zCommand.ListParticipant>(responseObj.ToString());
JsonConvert.DeserializeObject<zCommand.ListParticipant>(
responseObj.ToString());
if (participant != null)
{
@@ -1343,7 +1344,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
}
/// <summary>
/// Increments the voluem
/// </summary>