Compare commits

..

14 Commits

Author SHA1 Message Date
Andrew Welker
6b60f4ddb1 Merge branch 'development' into hotfix/zoom-phonebook-issues 2022-12-22 14:02:18 -07:00
Andrew Welker
d03581fea8 fix: change contact message handling
On some occasions when the Zoom Room restarted
and Essentials did not, the directory could be
requested while the Zoom Room had no contacts
yet, as it hadn't received them from Zoom Cloud.
This caused the directory to be empty, even
though there may be valid contacts. Now,
Essentials uses the Added Contact and Updated Contact
methods to fire the directory changed event, allowing
for directory updates to be propogated as necessary.
2022-12-22 08:54:24 -07:00
Andrew Welker
decc8ed3a5 refactor: update queue error handling
On some occasions, a ThreadAbortException was being
caught on shutdown and causing exceptions to be printed
needlessly. Messaging has also been updated to remove
personal pronouns.
2022-12-22 08:52:58 -07:00
Andrew Welker
b0637288e9 refactor: move logic for updating directory to method 2022-12-21 12:21:01 -07:00
Trevor Payne
ea8c3995bd Merge pull request #1048 from PepperDash/feature/Add-DinIo8
Remove references to pullup resistors in versiport digital outputs
2022-12-21 10:39:27 -06:00
Andrew Welker
f6e08eb077 Merge branch 'development' into feature/Add-DinIo8 2022-12-21 09:25:53 -07:00
Andrew Welker
c2d49c65f0 Merge pull request #1047 from PepperDash/hotfix/ssh-issues
Update PD Core version to fix SSH issue - DEV
2022-12-19 16:50:20 -07:00
Andrew Welker
99bc3f4f3e Merge branch 'development' into hotfix/ssh-issues 2022-12-19 16:21:47 -07:00
Trevor Payne
e8f773b2e6 Fix: removed references to pullup resistors in versiport digital outputs 2022-12-16 11:15:58 -05:00
Andrew Welker
e342bede11 Merge pull request #1046 from PepperDash/feature/Add-DinIo8
Feature/add din io8
2022-12-16 08:49:18 -07:00
Andrew Welker
52d945fca3 Merge pull request #1044 from PepperDash/hotfix/ssh-issues
Update PD Core version to fix SSH issues
2022-12-12 12:11:55 -07:00
Andrew Welker
0ef8fcfd27 chore: Update to PD Core 1.1.4 2022-12-12 11:42:16 -07:00
Andrew Welker
042416b470 chore: update PD Core version 2022-12-12 10:01:14 -07:00
jdevito
3d27b0928f Merge pull request #1042 from PepperDash/hotfix/zoomroom-camera-selection
Send command to select camera by ID for Zoom Room
2022-12-09 09:39:33 -06:00
4 changed files with 93 additions and 49 deletions

View File

@@ -42,16 +42,17 @@ namespace PepperDash.Essentials.Core.CrestronIO
OutputPort = postActivationFunc(config);
OutputPort.Register();
OutputPort.SetVersiportConfiguration(eVersiportConfiguration.DigitalOutput);
if (config.DisablePullUpResistor)
OutputPort.DisablePullUpResistor = true;
if (!OutputPort.SupportsDigitalOutput)
{
Debug.Console(0, this, "Device does not support configuration as a Digital Output");
return;
}
OutputPort.VersiportChange += OutputPort_VersiportChange;
Debug.Console(1, this, "Created GenericVersiportDigitalInputDevice on port '{0}'. DisablePullUpResistor: '{1}'", config.PortNumber, OutputPort.DisablePullUpResistor);
Debug.Console(1, this, "Created GenericVersiportDigitalOutputDevice on port '{0}'.", config.PortNumber);
});

View File

@@ -1,5 +1,6 @@
using System;
using Crestron.SimplSharp;
using Crestron.SimplSharp.Reflection;
using Crestron.SimplSharpPro.CrestronThread;
using PepperDash.Core;
@@ -187,9 +188,20 @@ namespace PepperDash.Essentials.Core.Queues
if (_delayEnabled)
Thread.Sleep(_delayTime);
}
catch (System.Threading.ThreadAbortException)
{
//swallowing this exception, as it should only happen on shut down
}
catch (Exception ex)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue {0}\r{1}\r{2}", ex.Message, ex.InnerException, ex.StackTrace);
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue: {1}:{0}", ex.Message, ex);
Debug.Console(2, this, Debug.ErrorLogLevel.Error, "Stack Trace: {0}", ex.StackTrace);
if (ex.InnerException != null)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "---\r\n{0}", ex.InnerException.Message);
Debug.Console(2, this, Debug.ErrorLogLevel.Error, "Stack Trace: {0}", ex.InnerException.StackTrace);
}
}
}
else _waitHandle.Wait();
@@ -202,7 +214,7 @@ namespace PepperDash.Essentials.Core.Queues
{
if (Disposed)
{
Debug.Console(1, this, "I've been disposed so you can't enqueue any messages. Are you trying to dispatch a message while the program is stopping?");
Debug.Console(1, this, "Queue has been disposed. Enqueuing messages not allowed while program is stopping.");
return;
}
@@ -446,7 +458,14 @@ namespace PepperDash_Essentials_Core.Queues
}
catch (Exception ex)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue {0}\r{1}\r{2}", ex.Message, ex.InnerException, ex.StackTrace);
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue {0}", ex.Message);
Debug.Console(2, this, Debug.ErrorLogLevel.Error, "Stack Trace: {0}", ex.StackTrace);
if (ex.InnerException != null)
{
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Caught an exception in the Queue {0}", ex.InnerException.Message);
Debug.Console(2, this, Debug.ErrorLogLevel.Error, "Stack Trace: {0}", ex.InnerException.StackTrace);
}
}
}
else _waitHandle.Wait();

View File

@@ -59,6 +59,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
private CameraBase _selectedCamera;
private string _lastDialedMeetingNumber;
private CTimer contactsDebounceTimer;
private readonly ZoomRoomPropertiesConfig _props;
@@ -1382,22 +1384,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
JsonConvert.PopulateObject(responseObj.ToString(), Status.Phonebook);
var directoryResults =
zStatus.Phonebook.ConvertZoomContactsToGeneric(Status.Phonebook.Contacts);
if (!PhonebookSyncState.InitialSyncComplete)
{
PhonebookSyncState.InitialPhonebookFoldersReceived();
PhonebookSyncState.PhonebookRootEntriesReceived();
PhonebookSyncState.SetPhonebookHasFolders(true);
PhonebookSyncState.SetNumberOfContacts(Status.Phonebook.Contacts.Count);
}
directoryResults.ResultsFolderId = "root";
DirectoryRoot = directoryResults;
CurrentDirectoryResult = directoryResults;
UpdateDirectory();
break;
}
@@ -1526,36 +1513,37 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
{
case "phonebook":
{
zStatus.Contact contact = new zStatus.Contact();
if (responseObj["Updated Contact"] != null)
{
var updatedContact =
JsonConvert.DeserializeObject<zStatus.Contact>(
responseObj["Updated Contact"].ToString());
var existingContact =
Status.Phonebook.Contacts.FirstOrDefault(c => c.Jid.Equals(updatedContact.Jid));
if (existingContact != null)
{
// Update existing contact
JsonConvert.PopulateObject(responseObj["Updated Contact"].ToString(),
existingContact);
}
{
contact = responseObj["Updated Contact"].ToObject<zStatus.Contact>();
}
else if (responseObj["Added Contact"] != null)
{
var jToken = responseObj["Updated Contact"];
if (jToken != null)
{
var newContact =
JsonConvert.DeserializeObject<zStatus.Contact>(
jToken.ToString());
// Add a new contact
Status.Phonebook.Contacts.Add(newContact);
}
contact = responseObj["Added Contact"].ToObject<zStatus.Contact>();
}
var existingContactIndex = Status.Phonebook.Contacts.FindIndex(c => c.Jid.Equals(contact.Jid));
if (existingContactIndex > 0)
{
Status.Phonebook.Contacts[existingContactIndex] = contact;
}
else
{
Status.Phonebook.Contacts.Add(contact);
}
if(contactsDebounceTimer == null)
{
contactsDebounceTimer = new CTimer(o => UpdateDirectory(), 2000);
}
else
{
contactsDebounceTimer.Reset();
}
break;
}
case "bookingslistresult":
@@ -2252,6 +2240,42 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
}
}
private void UpdateDirectory()
{
Debug.Console(2, this, "Updating directory");
var directoryResults = zStatus.Phonebook.ConvertZoomContactsToGeneric(Status.Phonebook.Contacts);
if (!PhonebookSyncState.InitialSyncComplete)
{
PhonebookSyncState.InitialPhonebookFoldersReceived();
PhonebookSyncState.PhonebookRootEntriesReceived();
PhonebookSyncState.SetPhonebookHasFolders(true);
PhonebookSyncState.SetNumberOfContacts(Status.Phonebook.Contacts.Count);
}
directoryResults.ResultsFolderId = "root";
DirectoryRoot = directoryResults;
CurrentDirectoryResult = directoryResults;
//
if (contactsDebounceTimer != null)
{
ClearContactDebounceTimer();
}
}
private void ClearContactDebounceTimer()
{
Debug.Console(2, this, "Clearing Timer");
if (!contactsDebounceTimer.Disposed && contactsDebounceTimer != null)
{
contactsDebounceTimer.Dispose();
contactsDebounceTimer = null;
}
}
/// <summary>
/// Will return true if the host is myself (this zoom room)
/// </summary>

View File

@@ -1,3 +1,3 @@
<packages>
<package id="PepperDashCore" version="1.1.3" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
<package id="PepperDashCore" version="1.1.4" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
</packages>