Add logic to subscribe to PhoneBookSyncState during the CustomActivate method within CiscoSparkCodec class

This commit is contained in:
Jonathan Arndt
2022-02-08 16:24:54 -08:00
parent 64352811c5
commit 93bfcc7baa
3 changed files with 59 additions and 15 deletions

View File

@@ -464,7 +464,7 @@ namespace PepperDash.Essentials.Core.Bridges.JoinMaps
new JoinMetadata new JoinMetadata
{ {
Description = "Go to Directory Root", Description = "Go to Directory Root",
JoinCapabilities = eJoinCapabilities.ToSIMPL, JoinCapabilities = eJoinCapabilities.FromSIMPL,
JoinType = eJoinType.Digital JoinType = eJoinType.Digital
}); });

View File

@@ -590,9 +590,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
CrestronConsole.AddNewConsoleCommand(GetPhonebook, "GetCodecPhonebook", "Triggers a refresh of the codec phonebook", ConsoleAccessLevelEnum.AccessOperator); CrestronConsole.AddNewConsoleCommand(GetPhonebook, "GetCodecPhonebook", "Triggers a refresh of the codec phonebook", ConsoleAccessLevelEnum.AccessOperator);
CrestronConsole.AddNewConsoleCommand(GetBookings, "GetCodecBookings", "Triggers a refresh of the booking data for today", ConsoleAccessLevelEnum.AccessOperator); CrestronConsole.AddNewConsoleCommand(GetBookings, "GetCodecBookings", "Triggers a refresh of the booking data for today", ConsoleAccessLevelEnum.AccessOperator);
PhonebookSyncState.InitialSyncCompleted += new EventHandler<EventArgs>(PhonebookSyncState_InitialSyncCompleted);
return base.CustomActivate(); return base.CustomActivate();
} }
void PhonebookSyncState_InitialSyncCompleted(object sender, EventArgs e)
{
OnDirectoryResultReturned(DirectoryRoot);
}
#region Overrides of Device #region Overrides of Device
public override void Initialize() public override void Initialize()
@@ -1144,6 +1151,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
var handler = DirectoryResultReturned; var handler = DirectoryResultReturned;
if (handler != null) if (handler != null)
{ {
Debug.Console(2, this, "Directory result returned");
handler(this, new DirectoryEventArgs() handler(this, new DirectoryEventArgs()
{ {
Directory = result, Directory = result,

View File

@@ -939,8 +939,6 @@ ScreenIndexIsPinnedTo: {8} (a{17})
codec.CurrentDirectoryResultIsNotDirectoryRoot.LinkComplementInputSig( codec.CurrentDirectoryResultIsNotDirectoryRoot.LinkComplementInputSig(
trilist.BooleanInput[joinMap.DirectoryIsRoot.JoinNumber]); trilist.BooleanInput[joinMap.DirectoryIsRoot.JoinNumber]);
trilist.SetSigFalseAction(joinMap.DirectoryRoot.JoinNumber, codec.SetCurrentDirectoryToRoot);
trilist.SetStringSigAction(joinMap.DirectorySearchString.JoinNumber, codec.SearchDirectory); trilist.SetStringSigAction(joinMap.DirectorySearchString.JoinNumber, codec.SearchDirectory);
trilist.SetUShortSigAction(joinMap.DirectorySelectRow.JoinNumber, (i) => SelectDirectoryEntry(codec, i, trilist, joinMap)); trilist.SetUShortSigAction(joinMap.DirectorySelectRow.JoinNumber, (i) => SelectDirectoryEntry(codec, i, trilist, joinMap));
@@ -951,8 +949,25 @@ ScreenIndexIsPinnedTo: {8} (a{17})
trilist.SetSigFalseAction(joinMap.DirectoryFolderBack.JoinNumber, codec.GetDirectoryParentFolderContents); trilist.SetSigFalseAction(joinMap.DirectoryFolderBack.JoinNumber, codec.GetDirectoryParentFolderContents);
if (codec.DirectoryRoot != null)
{
trilist.SetUshort(joinMap.DirectoryRowCount.JoinNumber, (ushort)codec.DirectoryRoot.CurrentDirectoryResults.Count);
var clearBytes = XSigHelpers.ClearOutputs();
trilist.SetString(joinMap.DirectoryEntries.JoinNumber,
Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length));
var directoryXSig = UpdateDirectoryXSig(codec.DirectoryRoot, !codec.CurrentDirectoryResultIsNotDirectoryRoot.BoolValue);
Debug.Console(2, this, "Directory XSig Length: {0}", directoryXSig.Length);
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig);
}
codec.DirectoryResultReturned += (sender, args) => codec.DirectoryResultReturned += (sender, args) =>
{ {
Debug.Console(2, this, "CiscoLinkToApi > DirectoryResultReturnedHandler");
trilist.SetUshort(joinMap.DirectoryRowCount.JoinNumber, (ushort)args.Directory.CurrentDirectoryResults.Count); trilist.SetUshort(joinMap.DirectoryRowCount.JoinNumber, (ushort)args.Directory.CurrentDirectoryResults.Count);
var clearBytes = XSigHelpers.ClearOutputs(); var clearBytes = XSigHelpers.ClearOutputs();
@@ -961,6 +976,8 @@ ScreenIndexIsPinnedTo: {8} (a{17})
Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length)); Encoding.GetEncoding(XSigEncoding).GetString(clearBytes, 0, clearBytes.Length));
var directoryXSig = UpdateDirectoryXSig(args.Directory, !codec.CurrentDirectoryResultIsNotDirectoryRoot.BoolValue); var directoryXSig = UpdateDirectoryXSig(args.Directory, !codec.CurrentDirectoryResultIsNotDirectoryRoot.BoolValue);
Debug.Console(2, this, "Directory XSig Length: {0}", directoryXSig.Length);
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig); trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig);
}; };
} }
@@ -1068,10 +1085,14 @@ ScreenIndexIsPinnedTo: {8} (a{17})
var contactIndex = 1; var contactIndex = 1;
var tokenArray = new XSigToken[directory.CurrentDirectoryResults.Count]; var tokenArray = new XSigToken[directory.CurrentDirectoryResults.Count];
Debug.Console(2, this, "Is root {0} Directory Count: {1}", isRoot, directory.CurrentDirectoryResults.Count);
foreach (var entry in directory.CurrentDirectoryResults) foreach (var entry in directory.CurrentDirectoryResults)
{ {
var arrayIndex = contactIndex - 1; var arrayIndex = contactIndex - 1;
Debug.Console(2, this, "Entry Name: {0}, Folder ID: {1}", entry.Name, entry.FolderId);
if (entry is DirectoryFolder && entry.ParentFolderId == "root") if (entry is DirectoryFolder && entry.ParentFolderId == "root")
{ {
tokenArray[arrayIndex] = new XSigSerialToken(contactIndex, String.Format("[+] {0}", entry.Name)); tokenArray[arrayIndex] = new XSigSerialToken(contactIndex, String.Format("[+] {0}", entry.Name));
@@ -1081,7 +1102,11 @@ ScreenIndexIsPinnedTo: {8} (a{17})
continue; continue;
} }
if (isRoot && String.IsNullOrEmpty(entry.FolderId)) continue; //if (isRoot && String.IsNullOrEmpty(entry.FolderId)) { continue; }
//else
//{
// Debug.Console(2, this, "Skipping Entry");
//}
tokenArray[arrayIndex] = new XSigSerialToken(contactIndex, entry.Name); tokenArray[arrayIndex] = new XSigSerialToken(contactIndex, entry.Name);
@@ -1628,20 +1653,31 @@ ScreenIndexIsPinnedTo: {8} (a{17})
// Update the call history joins // Update the call history joins
var maxItems = joinMap.RecentCallNamesStart.JoinSpan; var maxItems = joinMap.RecentCallNamesStart.JoinSpan;
uint i = 0; // Create history
foreach(var item in codec.CallHistory.RecentCalls) uint index = 0;
for (uint i = 0; i < maxItems && i < codec.CallHistory.RecentCalls.Count; i++)
{ {
trilist.SetString(joinMap.RecentCallNamesStart.JoinNumber + i, item.Name); trilist.SetString(joinMap.RecentCallNamesStart.JoinNumber + i, codec.CallHistory.RecentCalls[(int)i].Name);
trilist.SetString(joinMap.RecentCallTimesStart.JoinNumber + i, item.StartTime.ToShortTimeString()); trilist.SetString(joinMap.RecentCallTimesStart.JoinNumber + i, codec.CallHistory.RecentCalls[(int)i].StartTime.ToShortTimeString());
trilist.SetUshort(joinMap.RecentCallOccurrenceType.JoinNumber + i, (ushort)item.OccurrenceType); trilist.SetUshort(joinMap.RecentCallOccurrenceType.JoinNumber + i, (ushort)codec.CallHistory.RecentCalls[(int)i].OccurrenceType);
i++; //i++;
index = i;
} }
for (uint index = i; i < maxItems; index++) //foreach(var item in codec.CallHistory.RecentCalls)
//{
// trilist.SetString(joinMap.RecentCallNamesStart.JoinNumber + i, item.Name);
// trilist.SetString(joinMap.RecentCallTimesStart.JoinNumber + i, item.StartTime.ToShortTimeString());
// trilist.SetUshort(joinMap.RecentCallOccurrenceType.JoinNumber + i, (ushort)item.OccurrenceType);
// i++;
//}
// Clears existing items
for (uint j = index; j < maxItems; j++)
{ {
trilist.SetString(joinMap.RecentCallNamesStart.JoinNumber + index, string.Empty); trilist.SetString(joinMap.RecentCallNamesStart.JoinNumber + j, string.Empty);
trilist.SetString(joinMap.RecentCallTimesStart.JoinNumber + index, string.Empty); trilist.SetString(joinMap.RecentCallTimesStart.JoinNumber + j, string.Empty);
trilist.SetUshort(joinMap.RecentCallOccurrenceType.JoinNumber + index, 0); trilist.SetUshort(joinMap.RecentCallOccurrenceType.JoinNumber + j, 0);
} }
} }