mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-17 05:35:03 +00:00
Compare commits
4 Commits
v2.19.2-mc
...
v2.20.0-fe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e95f5337e | ||
|
|
f27965ac29 | ||
|
|
dff5d2d32e | ||
|
|
317bde3814 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -396,3 +396,4 @@ _site/
|
||||
api/
|
||||
*.DS_Store
|
||||
/._PepperDash.Essentials.4Series.sln
|
||||
dotnet
|
||||
|
||||
@@ -78,6 +78,10 @@ namespace PepperDash.Core
|
||||
/// <summary>
|
||||
/// Used when comms needs to be handled in SIMPL and bridged opposite the normal direction
|
||||
/// </summary>
|
||||
ComBridge
|
||||
ComBridge,
|
||||
/// <summary>
|
||||
/// InfinetEX control
|
||||
/// </summary>
|
||||
InfinetEx
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
|
||||
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharp.CrestronIO;
|
||||
using Crestron.SimplSharp.CrestronXml;
|
||||
using Crestron.SimplSharp.CrestronXml.Serialization;
|
||||
@@ -21,26 +19,40 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
/// <summary>
|
||||
/// Represents a EssentialsHuddleSpaceFusionSystemControllerBase
|
||||
/// </summary>
|
||||
public class EssentialsHuddleSpaceFusionSystemControllerBase : Device, IOccupancyStatusProvider
|
||||
public class IEssentialsRoomFusionController : EssentialsDevice, IOccupancyStatusProvider, IFusionHelpRequest
|
||||
{
|
||||
private readonly EssentialsHuddleSpaceRoomFusionRoomJoinMap JoinMap;
|
||||
private EssentialsHuddleSpaceRoomFusionRoomJoinMap JoinMap;
|
||||
|
||||
private const string RemoteOccupancyXml = "<Occupancy><Type>Local</Type><State>{0}</State></Occupancy>";
|
||||
private readonly bool _guidFileExists;
|
||||
private bool _guidFileExists;
|
||||
|
||||
private readonly Dictionary<Device, BoolInputSig> _sourceToFeedbackSigs =
|
||||
new Dictionary<Device, BoolInputSig>();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the CurrentRoomSourceNameSig
|
||||
/// </summary>
|
||||
protected StringSigData CurrentRoomSourceNameSig;
|
||||
|
||||
private readonly FusionCustomPropertiesBridge CustomPropertiesBridge = new FusionCustomPropertiesBridge();
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the FusionOccSensor
|
||||
/// </summary>
|
||||
protected FusionOccupancySensorAsset FusionOccSensor;
|
||||
private readonly FusionRemoteOccupancySensor FusionRemoteOccSensor;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the FusionRoom
|
||||
/// </summary>
|
||||
protected FusionRoom FusionRoom;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the FusionStaticAssets
|
||||
/// </summary>
|
||||
protected Dictionary<int, FusionAsset> FusionStaticAssets;
|
||||
private readonly long PushNotificationTimeout = 5000;
|
||||
private readonly IEssentialsRoom Room;
|
||||
private IEssentialsRoom Room;
|
||||
private readonly long SchedulePollInterval = 300000;
|
||||
|
||||
private Event _currentMeeting;
|
||||
@@ -60,6 +72,14 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
|
||||
private string _roomOccupancyRemoteString;
|
||||
|
||||
private bool _helpRequestSent;
|
||||
|
||||
/// <inheritdoc />
|
||||
public StringFeedback HelpRequestResponseFeedback { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
public BoolFeedback HelpRequestSentFeedback { get; private set; }
|
||||
|
||||
#region System Info Sigs
|
||||
|
||||
//StringSigData SystemName;
|
||||
@@ -93,8 +113,48 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
|
||||
#endregion
|
||||
|
||||
public EssentialsHuddleSpaceFusionSystemControllerBase(IEssentialsRoom room, uint ipId, string joinMapKey)
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public IEssentialsRoomFusionController(IEssentialsRoomFusionControllerPropertiesConfig config)
|
||||
: base("FusionRoomController")
|
||||
{
|
||||
AddPostActivationAction(() =>
|
||||
{
|
||||
var room = DeviceManager.GetDeviceForKey<IEssentialsRoom>(config.RoomKey);
|
||||
|
||||
if (room == null)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Error, this,
|
||||
"Error Creating Fusion Room Controller. No room found with key '{0}'", config.RoomKey);
|
||||
return;
|
||||
}
|
||||
|
||||
ConstructorHelper(room, config.IpId, config.JoinMapKey);
|
||||
|
||||
var guidFilePath = GetGuidFilePath(config.IpId);
|
||||
|
||||
PostActivate(guidFilePath);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="room"></param>
|
||||
/// <param name="ipId"></param>
|
||||
/// <param name="joinMapKey"></param>
|
||||
public IEssentialsRoomFusionController(IEssentialsRoom room, uint ipId, string joinMapKey)
|
||||
: base(room.Key + "-fusion")
|
||||
{
|
||||
ConstructorHelper(room, ipId, joinMapKey);
|
||||
|
||||
var guidFilePath = GetGuidFilePath(ipId);
|
||||
|
||||
AddPostActivationAction(() => PostActivate(guidFilePath));
|
||||
}
|
||||
|
||||
private void ConstructorHelper(IEssentialsRoom room, uint ipId, string joinMapKey)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -110,7 +170,7 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
JoinMap.SetCustomJoinData(customJoins);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Room = room;
|
||||
|
||||
_ipId = ipId;
|
||||
@@ -119,6 +179,37 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
|
||||
_guiDs = new FusionRoomGuids();
|
||||
|
||||
|
||||
|
||||
|
||||
if (Room is IRoomOccupancy occupancyRoom)
|
||||
{
|
||||
if (occupancyRoom.RoomOccupancy != null)
|
||||
{
|
||||
if (occupancyRoom.OccupancyStatusProviderIsRemote)
|
||||
{
|
||||
SetUpRemoteOccupancy();
|
||||
}
|
||||
else
|
||||
{
|
||||
SetUpLocalOccupancy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HelpRequestResponseFeedback = new StringFeedback("HelpRequestResponse", () => FusionRoom.Help.InputSig.StringValue);
|
||||
HelpRequestResponseFeedback.LinkInputSig(FusionRoom.Help.InputSig);
|
||||
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Error Building Fusion System Controller: {0}", e);
|
||||
}
|
||||
}
|
||||
|
||||
private string GetGuidFilePath(uint ipId)
|
||||
{
|
||||
var mac =
|
||||
CrestronEthernetHelper.GetEthernetParameter(
|
||||
CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_MAC_ADDRESS, 0);
|
||||
@@ -140,44 +231,22 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
File.Delete(oldGuidFilePath);
|
||||
}
|
||||
|
||||
_guidFileExists = File.Exists(guidFilePath);
|
||||
_guidFileExists = File.Exists(guidFilePath);
|
||||
|
||||
// Check if file exists
|
||||
if (!_guidFileExists)
|
||||
{
|
||||
// Does not exist. Create GUIDs
|
||||
_guiDs = new FusionRoomGuids(Room.Name, ipId, _guiDs.GenerateNewRoomGuid(slot, mac),
|
||||
FusionStaticAssets);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Exists. Read GUIDs
|
||||
ReadGuidFile(guidFilePath);
|
||||
}
|
||||
|
||||
|
||||
if (Room is IRoomOccupancy occupancyRoom)
|
||||
{
|
||||
if (occupancyRoom.RoomOccupancy != null)
|
||||
{
|
||||
if (occupancyRoom.OccupancyStatusProviderIsRemote)
|
||||
{
|
||||
SetUpRemoteOccupancy();
|
||||
}
|
||||
else
|
||||
{
|
||||
SetUpLocalOccupancy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AddPostActivationAction(() => PostActivate(guidFilePath));
|
||||
}
|
||||
catch (Exception e)
|
||||
// Check if file exists
|
||||
if (!_guidFileExists)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Error Building Fusion System Controller: {0}", e);
|
||||
// Does not exist. Create GUIDs
|
||||
_guiDs = new FusionRoomGuids(Room.Name, ipId, _guiDs.GenerateNewRoomGuid(slot, mac),
|
||||
FusionStaticAssets);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Exists. Read GUIDs
|
||||
ReadGuidFile(guidFilePath);
|
||||
}
|
||||
|
||||
return guidFilePath;
|
||||
}
|
||||
|
||||
private void PostActivate(string guidFilePath)
|
||||
@@ -194,6 +263,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
GenerateGuidFile(guidFilePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the RoomGuid
|
||||
/// </summary>
|
||||
protected string RoomGuid
|
||||
{
|
||||
get { return _guiDs.RoomGuid; }
|
||||
@@ -204,6 +276,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
/// </summary>
|
||||
public StringFeedback RoomOccupancyRemoteStringFeedback { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the RoomIsOccupiedFeedbackFunc
|
||||
/// </summary>
|
||||
protected Func<bool> RoomIsOccupiedFeedbackFunc
|
||||
{
|
||||
get { return () => FusionRemoteOccSensor.RoomOccupied.OutputSig.BoolValue; }
|
||||
@@ -218,10 +293,16 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// ScheduleChange event
|
||||
/// </summary>
|
||||
public event EventHandler<ScheduleChangeEventArgs> ScheduleChange;
|
||||
//public event EventHandler<MeetingChangeEventArgs> MeetingEndWarning;
|
||||
//public event EventHandler<MeetingChangeEventArgs> NextMeetingBeginWarning;
|
||||
|
||||
/// <summary>
|
||||
/// RoomInfoChange event
|
||||
/// </summary>
|
||||
public event EventHandler<EventArgs> RoomInfoChange;
|
||||
|
||||
//ScheduleResponseEvent NextMeeting;
|
||||
@@ -343,6 +424,10 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CreateSymbolAndBasicSigs method
|
||||
/// </summary>
|
||||
/// <param name="ipId"></param>
|
||||
protected virtual void CreateSymbolAndBasicSigs(uint ipId)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Creating Fusion Room symbol with GUID: {0} and IP-ID {1:X2}", RoomGuid, ipId);
|
||||
@@ -405,6 +490,10 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
CrestronEnvironment.EthernetEventHandler += CrestronEnvironment_EthernetEventHandler;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// CrestronEnvironment_EthernetEventHandler method
|
||||
/// </summary>
|
||||
/// <param name="ethernetEventArgs"></param>
|
||||
protected void CrestronEnvironment_EthernetEventHandler(EthernetEventArgs ethernetEventArgs)
|
||||
{
|
||||
if (ethernetEventArgs.EthernetEventType == eEthernetEventType.LinkUp)
|
||||
@@ -413,6 +502,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetSystemInfo method
|
||||
/// </summary>
|
||||
protected void GetSystemInfo()
|
||||
{
|
||||
//SystemName.InputSig.StringValue = Room.Name;
|
||||
@@ -426,6 +518,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
() => CrestronConsole.SendControlSystemCommand("reboot", ref response));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetUpEthernetValues method
|
||||
/// </summary>
|
||||
protected void SetUpEthernetValues()
|
||||
{
|
||||
_ip1 = FusionRoom.CreateOffsetStringSig(JoinMap.ProcessorIp1.JoinNumber, JoinMap.ProcessorIp1.AttributeName, eSigIoMask.InputSigOnly);
|
||||
@@ -441,6 +536,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
_netMask2 = FusionRoom.CreateOffsetStringSig(JoinMap.ProcessorNetMask2.JoinNumber, JoinMap.ProcessorNetMask2.AttributeName, eSigIoMask.InputSigOnly);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetProcessorEthernetValues method
|
||||
/// </summary>
|
||||
protected void GetProcessorEthernetValues()
|
||||
{
|
||||
_ip1.InputSig.StringValue =
|
||||
@@ -489,6 +587,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetProcessorInfo method
|
||||
/// </summary>
|
||||
protected void GetProcessorInfo()
|
||||
{
|
||||
_firmware = FusionRoom.CreateOffsetStringSig(JoinMap.ProcessorFirmware.JoinNumber, JoinMap.ProcessorFirmware.AttributeName, eSigIoMask.InputSigOnly);
|
||||
@@ -507,6 +608,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
_firmware.InputSig.StringValue = InitialParametersClass.FirmwareVersion;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetCustomProperties method
|
||||
/// </summary>
|
||||
protected void GetCustomProperties()
|
||||
{
|
||||
if (FusionRoom.IsOnline)
|
||||
@@ -524,6 +628,11 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
// TODO: Get IP and Project Name from TP
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// FusionRoom_OnlineStatusChange method
|
||||
/// </summary>
|
||||
/// <param name="currentDevice"></param>
|
||||
/// <param name="args"></param>
|
||||
protected void FusionRoom_OnlineStatusChange(GenericBase currentDevice, OnlineOfflineEventArgs args)
|
||||
{
|
||||
if (args.DeviceOnLine)
|
||||
@@ -1065,6 +1174,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetUpSources method
|
||||
/// </summary>
|
||||
protected virtual void SetUpSources()
|
||||
{
|
||||
// Sources
|
||||
@@ -1157,7 +1269,13 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "Device usage string: {0}", deviceUsage);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Tries to add route action sigs for a source
|
||||
/// </summary>
|
||||
/// <param name="attrName"></param>
|
||||
/// <param name="attrNum"></param>
|
||||
/// <param name="routeKey"></param>
|
||||
/// <param name="pSrc"></param>
|
||||
protected void TryAddRouteActionSigs(string attrName, uint attrNum, string routeKey, Device pSrc)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Verbose, this, "Creating attribute '{0}' with join {1} for source {2}",
|
||||
@@ -1185,9 +1303,7 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
|
||||
private void SetUpCommunitcationMonitors()
|
||||
{
|
||||
uint displayNum = 0;
|
||||
@@ -1285,6 +1401,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SetUpDisplay method
|
||||
/// </summary>
|
||||
protected virtual void SetUpDisplay()
|
||||
{
|
||||
try
|
||||
@@ -1588,12 +1707,25 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event handler for Fusion state changes
|
||||
/// </summary>
|
||||
/// <param name="device"></param>
|
||||
/// <param name="args"></param>
|
||||
protected void FusionRoom_FusionStateChange(FusionBase device, FusionStateEventArgs args)
|
||||
{
|
||||
if (args.EventId == FusionEventIds.HelpMessageReceivedEventId)
|
||||
{
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Help message received from Fusion for room '{0}'",
|
||||
Room.Name);
|
||||
// Fire help request event
|
||||
HelpRequestResponseFeedback.FireUpdate();
|
||||
}
|
||||
|
||||
|
||||
// The sig/UO method: Need separate handlers for fixed and user sigs, all flavors,
|
||||
// even though they all contain sigs.
|
||||
|
||||
|
||||
BoolOutputSig outSig;
|
||||
if (args.UserConfiguredSigDetail is BooleanSigDataFixedName sigData)
|
||||
{
|
||||
@@ -1632,9 +1764,51 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
(outSig.UserObject as Action<string>).Invoke(outSig.StringValue);
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void SendHelpRequest(bool isHtml = false)
|
||||
{
|
||||
var now = DateTime.Now;
|
||||
|
||||
var breakString = !isHtml ? "\r\n" : "<BR>";
|
||||
|
||||
var requestString = $"HR00: {breakString} Assistance has been requested from room {Room.Name}{breakString}on {now.ToLongDateString()} at {now.ToLongTimeString()}";
|
||||
|
||||
FusionRoom.Help.InputSig.StringValue = requestString;
|
||||
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Help request sent to Fusion from room '{0}'", Room.Name);
|
||||
|
||||
_helpRequestSent = true;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void CancelHelpRequest()
|
||||
{
|
||||
if (_helpRequestSent)
|
||||
{
|
||||
FusionRoom.Help.InputSig.StringValue = "";
|
||||
_helpRequestSent = false;
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Help request cancelled in Fusion for room '{0}'", Room.Name);
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void ToggleHelpRequest(bool isHtml = false)
|
||||
{
|
||||
if (_helpRequestSent)
|
||||
{
|
||||
CancelHelpRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
SendHelpRequest(isHtml);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Extensions to enhance Fusion room, asset and signal creation.
|
||||
/// </summary>
|
||||
public static class FusionRoomExtensions
|
||||
{
|
||||
/// <summary>
|
||||
@@ -1803,6 +1977,9 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
/// </summary>
|
||||
public class RoomInformation
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public RoomInformation()
|
||||
{
|
||||
FusionCustomProperties = new List<FusionCustomProperty>();
|
||||
@@ -1855,10 +2032,17 @@ namespace PepperDash.Essentials.Core.Fusion
|
||||
/// </summary>
|
||||
public class FusionCustomProperty
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public FusionCustomProperty()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor with id
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
public FusionCustomProperty(string id)
|
||||
{
|
||||
ID = id;
|
||||
@@ -0,0 +1,33 @@
|
||||
using System.Collections.Generic;
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.Fusion;
|
||||
|
||||
/// <summary>
|
||||
/// Factory for creating IEssentialsRoomFusionController devices
|
||||
/// </summary>
|
||||
public class IEssentialsRoomFusionControllerFactory : EssentialsDeviceFactory<IEssentialsRoomFusionController>
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
public IEssentialsRoomFusionControllerFactory()
|
||||
{
|
||||
TypeNames = new List<string>() { "fusionRoom" };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Builds the device
|
||||
/// </summary>
|
||||
/// <param name="dc"></param>
|
||||
/// <returns></returns>
|
||||
public override EssentialsDevice BuildDevice(PepperDash.Essentials.Core.Config.DeviceConfig dc)
|
||||
{
|
||||
Debug.LogDebug("Factory Attempting to create new IEssentialsRoomFusionController Device");
|
||||
|
||||
|
||||
var properties = dc.Properties.ToObject<IEssentialsRoomFusionControllerPropertiesConfig>();
|
||||
|
||||
return new IEssentialsRoomFusionController(properties);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
/// <summary>
|
||||
/// Config properties for an IEssentialsRoomFusionController device
|
||||
/// </summary>
|
||||
public class IEssentialsRoomFusionControllerPropertiesConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the IP ID of the Fusion Room Controller
|
||||
/// </summary>
|
||||
[JsonProperty("ipId")]
|
||||
public uint IpId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the join map key
|
||||
/// </summary>
|
||||
[JsonProperty("joinMapKey")]
|
||||
public string JoinMapKey { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the room key associated with this Fusion Room Controller
|
||||
/// </summary>
|
||||
[JsonProperty("roomKey")]
|
||||
public string RoomKey { get; set; }
|
||||
}
|
||||
40
src/PepperDash.Essentials.Core/Fusion/IFusionHelpRequest.cs
Normal file
40
src/PepperDash.Essentials.Core/Fusion/IFusionHelpRequest.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Fusion
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents Fusion Help Request functionality
|
||||
/// </summary>
|
||||
public interface IFusionHelpRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// Feedback containing the response to a help request
|
||||
/// </summary>
|
||||
StringFeedback HelpRequestResponseFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether a help request has been sent
|
||||
/// </summary>
|
||||
BoolFeedback HelpRequestSentFeedback { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Sends a help request
|
||||
/// </summary>
|
||||
/// <param name="isHtml"></param>
|
||||
void SendHelpRequest(bool isHtml);
|
||||
|
||||
/// <summary>
|
||||
/// Clears the current help request status
|
||||
/// </summary>
|
||||
void CancelHelpRequest();
|
||||
|
||||
/// <summary>
|
||||
/// Toggles between sending and cancelling a help request
|
||||
/// </summary>
|
||||
void ToggleHelpRequest(bool isHtml);
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@ namespace PepperDash.Essentials.Core
|
||||
/// </summary>
|
||||
public IRoomOccupancy Room { get; private set; }
|
||||
|
||||
private Fusion.EssentialsHuddleSpaceFusionSystemControllerBase FusionRoom;
|
||||
private Fusion.IEssentialsRoomFusionController FusionRoom;
|
||||
|
||||
public RoomOnToDefaultSourceWhenOccupied(DeviceConfig config) :
|
||||
base (config)
|
||||
@@ -74,7 +74,7 @@ namespace PepperDash.Essentials.Core
|
||||
|
||||
var fusionRoomKey = PropertiesConfig.RoomKey + "-fusion";
|
||||
|
||||
FusionRoom = DeviceManager.GetDeviceForKey(fusionRoomKey) as Core.Fusion.EssentialsHuddleSpaceFusionSystemControllerBase;
|
||||
FusionRoom = DeviceManager.GetDeviceForKey(fusionRoomKey) as Core.Fusion.IEssentialsRoomFusionController;
|
||||
|
||||
if (FusionRoom == null)
|
||||
Debug.LogMessage(LogEventLevel.Debug, this, "Unable to get Fusion Room from Device Manager with key: {0}", fusionRoomKey);
|
||||
|
||||
@@ -408,7 +408,7 @@ namespace PepperDash.Essentials.Core
|
||||
Debug.LogMessage(LogEventLevel.Information, this, "Timeout Minutes from Config is: {0}", timeoutMinutes);
|
||||
|
||||
// If status provider is fusion, set flag to remote
|
||||
if (statusProvider is Core.Fusion.EssentialsHuddleSpaceFusionSystemControllerBase)
|
||||
if (statusProvider is Core.Fusion.IEssentialsRoomFusionController)
|
||||
OccupancyStatusProviderIsRemote = true;
|
||||
|
||||
if(timeoutMinutes > 0)
|
||||
|
||||
@@ -2174,7 +2174,6 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
var clientId = content["clientId"].Value<string>();
|
||||
var roomKey = content["roomKey"].Value<string>();
|
||||
var touchpanelKey = content.SelectToken("touchpanelKey");
|
||||
|
||||
if (_roomCombiner == null)
|
||||
{
|
||||
@@ -2237,20 +2236,6 @@ namespace PepperDash.Essentials
|
||||
SendMessageObject(newMessage);
|
||||
|
||||
SendDeviceInterfaces(clientId);
|
||||
|
||||
SendTouchpanelKey(clientId, touchpanelKey);
|
||||
}
|
||||
|
||||
private void SendTouchpanelKey(string clientId, JToken touchpanelKeyToken)
|
||||
{
|
||||
if (touchpanelKeyToken == null) { return; }
|
||||
|
||||
SendMessageObject(new MobileControlMessage
|
||||
{
|
||||
Type = "/system/touchpanelKey",
|
||||
ClientId = clientId,
|
||||
Content = touchpanelKeyToken.Value<string>()
|
||||
});
|
||||
}
|
||||
|
||||
private void SendDeviceInterfaces(string clientId)
|
||||
|
||||
@@ -723,7 +723,7 @@ namespace PepperDash.Essentials.WebSocketServer
|
||||
|
||||
private UiClient BuildUiClient(string roomKey, JoinToken token, string key)
|
||||
{
|
||||
var c = new UiClient($"uiclient-{key}-{roomKey}-{token.Id}", token.Id, token.Token, token.TouchpanelKey);
|
||||
var c = new UiClient($"uiclient-{key}-{roomKey}-{token.Id}", token.Id, token.Token);
|
||||
this.LogInformation("Constructing UiClient with key {key} and ID {id}", key, token.Id);
|
||||
c.Controller = _parent;
|
||||
c.RoomKey = roomKey;
|
||||
|
||||
@@ -31,11 +31,6 @@ namespace PepperDash.Essentials.WebSocketServer
|
||||
/// </summary>
|
||||
public string Token { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Touchpanel Key associated with this client
|
||||
/// </summary>
|
||||
public string TouchpanelKey { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the mobile control system controller that handles this client's messages
|
||||
/// </summary>
|
||||
@@ -80,13 +75,11 @@ namespace PepperDash.Essentials.WebSocketServer
|
||||
/// <param name="key">The unique key to identify this client</param>
|
||||
/// <param name="id">The client ID used by the client for this connection</param>
|
||||
/// <param name="token">The token associated with this client</param>
|
||||
/// <param name="touchpanelKey">The touchpanel key associated with this client</param>
|
||||
public UiClient(string key, string id, string token, string touchpanelKey = "")
|
||||
public UiClient(string key, string id, string token)
|
||||
{
|
||||
Key = key;
|
||||
Id = id;
|
||||
Token = token;
|
||||
TouchpanelKey = touchpanelKey;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -112,7 +105,6 @@ namespace PepperDash.Essentials.WebSocketServer
|
||||
{
|
||||
clientId = Id,
|
||||
roomKey = RoomKey,
|
||||
touchpanelKey = string.IsNullOrEmpty(TouchpanelKey) ? TouchpanelKey : string.Empty,
|
||||
})
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user