Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
5de1e2d
feat: add help request timeout functionality to IEssentialsRoomFusion…
ndorin Nov 26, 2025
636da8c
Merge pull request #1361 from PepperDash/feature/add-IHasFeedback-to-…
andrew-welker Nov 26, 2025
4f5d4ef
fix: ensure proper disposal of help request timeout timer and improve…
ndorin Nov 26, 2025
e93b5b3
Update src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionCon…
ndorin Nov 26, 2025
06cb508
Update src/PepperDash.Essentials.Core/Fusion/IEssentialsRoomFusionCon…
ndorin Nov 26, 2025
c07e099
feat: add logging for help request timeout events in IEssentialsRoomF…
ndorin Nov 26, 2025
dbf5740
Merge pull request #1362 from PepperDash/feature/add-IHasFeedback-to-…
ndorin Nov 26, 2025
f7c7160
feat: Add on/off dsp keys to EssentialsAvRoomPropertiesConfig
ndorin Nov 26, 2025
9ef4aed
Update src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfi…
ndorin Nov 26, 2025
a5e6059
Update src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfi…
ndorin Nov 26, 2025
2187c9f
Update src/PepperDash.Essentials.Core/Devices/SourceListItem.cs
ndorin Nov 26, 2025
d1babf6
Update src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfi…
ndorin Nov 26, 2025
7594b22
Update src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfi…
ndorin Nov 26, 2025
08fbec4
Update src/PepperDash.Essentials.Core/Room/Config/EssentialsRoomConfi…
ndorin Nov 26, 2025
81df273
Merge pull request #1363 from PepperDash/feature/add-on-off-dsp-prese…
ndorin Nov 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/PepperDash.Essentials.Core/Devices/SourceListItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,6 @@ public string PreferredName
/// A name that will override the source's name on the UI
/// </summary>
[JsonProperty("name")]
/// <summary>
/// Gets or sets the Name
/// </summary>
public string Name { get; set; }

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace PepperDash.Essentials.Core.Fusion
{
Expand Down Expand Up @@ -87,15 +88,17 @@ public class IEssentialsRoomFusionController : EssentialsDevice, IOccupancyStatu
/// <inheritdoc />
public StringFeedback HelpRequestStatusFeedback { get; private set; }

private Timer _helpRequestTimeoutTimer;

#region System Info Sigs

//StringSigData SystemName;
//StringSigData Model;
//StringSigData SerialNumber;
//StringSigData Uptime;
/// <summary>
/// Gets the DefaultHelpRequestTimeoutMs
/// </summary>
public int HelpRequestTimeoutMs => _config.HelpRequestTimeoutMs;

#endregion
/// <summary>
/// Gets whether to use a timer for help requests
/// </summary>
public bool UseHelpRequestTimer => _config.UseTimeoutForHelpRequests;

#region Processor Info Sigs

Expand Down Expand Up @@ -1805,7 +1808,7 @@ protected void FusionRoom_FusionStateChange(FusionBase device, FusionStateEventA
break;
case "Please call the helpdesk.":
// this.LogInformation("Please call the helpdesk.");
// _helpRequestStatus = eFusionHelpResponse.CallHelpDesk;
_helpRequestStatus = eFusionHelpResponse.CallHelpDesk;
break;
case "Please wait, I will reschedule your meeting to a different room.":
// this.LogInformation("Please wait, I will reschedule your meeting to a different room.",
Expand Down Expand Up @@ -1839,6 +1842,14 @@ protected void FusionRoom_FusionStateChange(FusionBase device, FusionStateEventA
}

HelpRequestStatusFeedback.FireUpdate();

if (_helpRequestTimeoutTimer != null)
{
_helpRequestTimeoutTimer.Stop();
_helpRequestTimeoutTimer.Elapsed -= OnTimedEvent;
_helpRequestTimeoutTimer.Dispose();
_helpRequestTimeoutTimer = null;
}
}


Expand Down Expand Up @@ -1909,10 +1920,34 @@ public void SendHelpRequest()
_helpRequestSent = true;
HelpRequestSentFeedback.FireUpdate();

if (UseHelpRequestTimer)
{
if (_helpRequestTimeoutTimer == null)
{
_helpRequestTimeoutTimer = new Timer(HelpRequestTimeoutMs);
_helpRequestTimeoutTimer.AutoReset = false;
_helpRequestTimeoutTimer.Enabled = true;

_helpRequestTimeoutTimer.Elapsed += OnTimedEvent;
}

_helpRequestTimeoutTimer.Interval = HelpRequestTimeoutMs;
_helpRequestTimeoutTimer.Start();

this.LogDebug("Help request timeout timer started for room '{0}' with timeout of {1} ms.",
Room.Name, HelpRequestTimeoutMs);
}

_helpRequestStatus = eFusionHelpResponse.HelpRequested;
HelpRequestStatusFeedback.FireUpdate();
}

private void OnTimedEvent(object source, ElapsedEventArgs e)
{
this.LogInformation("Help request timeout reached for room '{0}'. Cancelling help request.", Room.Name);
CancelHelpRequest();
}

/// <inheritdoc />
public void CancelHelpRequest()
{
Expand All @@ -1923,7 +1958,16 @@ public void CancelHelpRequest()
HelpRequestSentFeedback.FireUpdate();
_helpRequestStatus = eFusionHelpResponse.None;
HelpRequestStatusFeedback.FireUpdate();
Debug.LogMessage(LogEventLevel.Information, this, "Help request cancelled in Fusion for room '{0}'", Room.Name);
Debug.LogMessage(LogEventLevel.Information, this, "Help request cancelled for room '{0}'", Room.Name);
}

if (_helpRequestTimeoutTimer != null)
{
_helpRequestTimeoutTimer.Stop();
_helpRequestTimeoutTimer.Elapsed -= OnTimedEvent;
_helpRequestTimeoutTimer.Dispose();
_helpRequestTimeoutTimer = null;
this.LogDebug("Help request timeout timer stopped for room '{0}'.", Room.Name);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,16 @@ public uint IpIdInt
/// </summary>
[JsonProperty("use24HourTimeFormat")]
public bool Use24HourTimeFormat { get; set; } = false;

/// <summary>
/// Gets or sets whether to use a timeout for help requests
/// </summary>
[JsonProperty("useTimeoutForHelpRequests")]
public bool UseTimeoutForHelpRequests { get; set; } = false;

/// <summary>
/// Gets or sets the timeout duration for help requests in milliseconds
/// </summary>
[JsonProperty("helpRequestTimeoutMs")]
public int HelpRequestTimeoutMs { get; set; } = 30000;
}
Loading