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

View File

@@ -489,27 +489,38 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
codec.CodecSchedule.MeetingWarningMinutes = i; codec.CodecSchedule.MeetingWarningMinutes = i;
}); });
codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => codec.CodecSchedule.MeetingsListHasChanged += (sender, args) => UpdateMeetingsList(codec, trilist, joinMap);
{
var clearBytes = XSigHelpers.ClearOutputs();
trilist.SetString(joinMap.Schedule.JoinNumber, codec.CodecSchedule.MeetingEventChange +=
Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length)); (sender, args) =>
var meetingsData = UpdateMeetingsListXSig(codec.CodecSchedule.Meetings);
trilist.SetString(joinMap.Schedule.JoinNumber, meetingsData);
trilist.SetSigFalseAction(joinMap.DialMeeting.JoinNumber, () =>
{ {
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) private string UpdateMeetingsListXSig(List<Meeting> meetings)
@@ -545,15 +556,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
foreach(var meeting in meetings) foreach(var meeting in meetings)
{ {
if (meetingIndex >= maxMeetings*offset)
{
break;
}
var currentTime = DateTime.Now; var currentTime = DateTime.Now;
if(meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue; if(meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue;
if (meetingIndex > maxMeetings*offset) break; if (meetingIndex >= maxMeetings*offset) break;
//digitals //digitals
tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, meeting.Joinable); 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 // this is a single participant event notification
var participant = var participant =
JsonConvert.DeserializeObject<zCommand.ListParticipant>(responseObj.ToString()); JsonConvert.DeserializeObject<zCommand.ListParticipant>(
responseObj.ToString());
if (participant != null) if (participant != null)
{ {
@@ -1343,7 +1344,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
} }
/// <summary> /// <summary>
/// Increments the voluem /// Increments the voluem
/// </summary> /// </summary>