feat: unique status requests for messengers

UI Applications can now request status for specific feature sets instead of full status for a device. This will hopefully cut down on the traffic and messages required to get the data for the UI.
This commit is contained in:
Andrew Welker
2025-09-23 10:55:16 -05:00
parent cae1bbd6e6
commit 9c9eaea928
45 changed files with 619 additions and 425 deletions

View File

@@ -1,8 +1,8 @@
using Newtonsoft.Json.Linq; using System;
using System.Linq;
using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Devices.Common.AudioCodec; using PepperDash.Essentials.Devices.Common.AudioCodec;
using PepperDash.Essentials.Devices.Common.Codec; using PepperDash.Essentials.Devices.Common.Codec;
using System;
using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -29,12 +29,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
codec.CallStatusChange += Codec_CallStatusChange; codec.CallStatusChange += Codec_CallStatusChange;
} }
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendAtcFullMessageObject()); AddAction("/fullStatus", (id, content) => SendAtcFullMessageObject(id));
AddAction("/audioDialerStatus", (id, content) => SendAtcFullMessageObject(id));
AddAction("/dial", (id, content) => AddAction("/dial", (id, content) =>
{ {
var msg = content.ToObject<MobileControlSimpleContent<string>>(); var msg = content.ToObject<MobileControlSimpleContent<string>>();
@@ -97,7 +101,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// Helper method to build call status for vtc /// Helper method to build call status for vtc
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
private void SendAtcFullMessageObject() private void SendAtcFullMessageObject(string id = null)
{ {
var info = Codec.CodecInfo; var info = Codec.CodecInfo;
@@ -109,7 +113,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
phoneNumber = info.PhoneNumber phoneNumber = info.PhoneNumber
} }
}) }), id
); );
} }
} }

View File

@@ -55,7 +55,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendCameraFullMessageObject()); AddAction("/fullStatus", (id, content) => SendCameraFullMessageObject(id));
AddAction("/cameraStatus", (id, content) => SendCameraFullMessageObject(id));
if (Camera is IHasCameraPtzControl ptzCamera) if (Camera is IHasCameraPtzControl ptzCamera)
@@ -173,7 +175,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// Helper method to update the full status of the camera /// Helper method to update the full status of the camera
/// </summary> /// </summary>
private void SendCameraFullMessageObject() private void SendCameraFullMessageObject(string id = null)
{ {
var presetList = new List<CameraPreset>(); var presetList = new List<CameraPreset>();
@@ -188,7 +190,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
cameraMode = GetCameraMode(), cameraMode = GetCameraMode(),
hasPresets = Camera is IHasCameraPresets, hasPresets = Camera is IHasCameraPresets,
presets = presetList presets = presetList
}) }), id
); );
} }

View File

@@ -33,16 +33,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => AddAction("/fullStatus", (id, content) => SendCurrentSourceStatus(id));
{
var message = new CurrentSourcesStateMessage
{
CurrentSourceKeys = sourceDevice.CurrentSourceKeys,
CurrentSources = sourceDevice.CurrentSources
};
PostStatusMessage(message); AddAction("/currentSourceStatus", (id, content) => SendCurrentSourceStatus(id));
});
sourceDevice.CurrentSourcesChanged += (sender, e) => sourceDevice.CurrentSourcesChanged += (sender, e) =>
{ {
@@ -53,6 +46,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
})); }));
}; };
} }
private void SendCurrentSourceStatus(string id = null)
{
var message = new CurrentSourcesStateMessage
{
CurrentSourceKeys = sourceDevice.CurrentSourceKeys,
CurrentSources = sourceDevice.CurrentSources
};
PostStatusMessage(message, id);
}
} }
/// <summary> /// <summary>

View File

@@ -1,8 +1,8 @@
using Newtonsoft.Json; using System.Timers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceInfo; using PepperDash.Essentials.Core.DeviceInfo;
using System.Timers;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -67,13 +67,20 @@ namespace PepperDash.Essentials.AppServer.Messengers
debounceTimer.Start(); debounceTimer.Start();
}; };
AddAction("/fullStatus", (id, context) => PostStatusMessage(new DeviceInfoStateMessage AddAction("/fullStatus", (id, context) => SendFullStatus(id));
{
DeviceInfo = _deviceInfoProvider.DeviceInfo AddAction("/deviceInfo", (id, content) => SendFullStatus(id));
}));
AddAction("/update", (id, context) => _deviceInfoProvider.UpdateDeviceInfo()); AddAction("/update", (id, context) => _deviceInfoProvider.UpdateDeviceInfo());
} }
private void SendFullStatus(string id = null)
{
PostStatusMessage(new DeviceInfoStateMessage
{
DeviceInfo = _deviceInfoProvider.DeviceInfo
}, id);
}
} }
/// <summary> /// <summary>

View File

@@ -1,11 +1,11 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using PepperDash.Essentials.Core.Presets; using PepperDash.Essentials.Core.Presets;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -16,18 +16,24 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
private readonly ITvPresetsProvider _presetsDevice; private readonly ITvPresetsProvider _presetsDevice;
/// <summary>
/// Constructor for DevicePresetsModelMessenger
/// </summary>
/// <param name="key">The key.</param>
/// <param name="messagePath">The message path.</param>
/// <param name="presetsDevice">The presets device.</param>
public DevicePresetsModelMessenger(string key, string messagePath, ITvPresetsProvider presetsDevice) public DevicePresetsModelMessenger(string key, string messagePath, ITvPresetsProvider presetsDevice)
: base(key, messagePath, presetsDevice as Device) : base(key, messagePath, presetsDevice as Device)
{ {
_presetsDevice = presetsDevice; _presetsDevice = presetsDevice;
} }
private void SendPresets() private void SendPresets(string id = null)
{ {
PostStatusMessage(new PresetStateMessage PostStatusMessage(new PresetStateMessage
{ {
Favorites = _presetsDevice.TvPresets.PresetsList Favorites = _presetsDevice.TvPresets.PresetsList
}); }, id);
} }
private void RecallPreset(ISetTopBoxNumericKeypad device, string channel) private void RecallPreset(ISetTopBoxNumericKeypad device, string channel)
@@ -43,6 +49,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
#region Overrides of MessengerBase #region Overrides of MessengerBase
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
@@ -51,7 +58,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
this.LogInformation("getting full status for client {id}", id); this.LogInformation("getting full status for client {id}", id);
try try
{ {
SendPresets(); SendPresets(id);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -59,6 +66,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
}); });
AddAction("/presetsStatus", (id, content) => SendPresets(id));
AddAction("/recall", (id, content) => AddAction("/recall", (id, content) =>
{ {
var p = content.ToObject<PresetChannelMessage>(); var p = content.ToObject<PresetChannelMessage>();
@@ -91,16 +100,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class PresetChannelMessage public class PresetChannelMessage
{ {
[JsonProperty("preset")]
/// <summary> /// <summary>
/// Gets or sets the Preset /// Gets or sets the Preset
/// </summary> /// </summary>
[JsonProperty("preset")]
public PresetChannel Preset; public PresetChannel Preset;
[JsonProperty("deviceKey")]
/// <summary> /// <summary>
/// Gets or sets the DeviceKey /// Gets or sets the DeviceKey
/// </summary> /// </summary>
[JsonProperty("deviceKey")]
public string DeviceKey; public string DeviceKey;
} }
@@ -109,10 +118,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class PresetStateMessage : DeviceStateMessageBase public class PresetStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("favorites", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Favorites /// Gets or sets the Favorites
/// </summary> /// </summary>
[JsonProperty("favorites", NullValueHandling = NullValueHandling.Ignore)]
public List<PresetChannel> Favorites { get; set; } = new List<PresetChannel>(); public List<PresetChannel> Favorites { get; set; } = new List<PresetChannel>();
} }
} }

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -14,13 +14,19 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
private readonly IBasicVolumeWithFeedback _localDevice; private readonly IBasicVolumeWithFeedback _localDevice;
/// <summary>
/// Initializes a new instance of the <see cref="DeviceVolumeMessenger"/> class.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="messagePath">The message path.</param>
/// <param name="device">The device.</param>
public DeviceVolumeMessenger(string key, string messagePath, IBasicVolumeWithFeedback device) public DeviceVolumeMessenger(string key, string messagePath, IBasicVolumeWithFeedback device)
: base(key, messagePath, device as IKeyName) : base(key, messagePath, device as IKeyName)
{ {
_localDevice = device; _localDevice = device;
} }
private void SendStatus() private void SendStatus(string id = null)
{ {
try try
{ {
@@ -40,7 +46,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
messageObj.Volume.Units = volumeAdvanced.Units; messageObj.Volume.Units = volumeAdvanced.Units;
} }
PostStatusMessage(messageObj); PostStatusMessage(messageObj, id);
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -50,10 +56,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
#region Overrides of MessengerBase #region Overrides of MessengerBase
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/fullStatus", (id, content) => SendStatus()); AddAction("/fullStatus", (id, content) => SendStatus(id));
AddAction("/volumeStatus", (id, content) => SendStatus(id));
AddAction("/level", (id, content) => AddAction("/level", (id, content) =>
{ {

View File

@@ -7,22 +7,29 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class GenericMessenger : MessengerBase public class GenericMessenger : MessengerBase
{ {
/// <summary>
/// Initializes a new instance of the <see cref="GenericMessenger"/> class.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="device">The device.</param>
/// <param name="messagePath">The message path.</param>
public GenericMessenger(string key, EssentialsDevice device, string messagePath) : base(key, messagePath, device) public GenericMessenger(string key, EssentialsDevice device, string messagePath) : base(key, messagePath, device)
{ {
} }
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new DeviceStateMessageBase(); var state = new DeviceStateMessageBase();
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
} }

View File

@@ -1,8 +1,8 @@
using Newtonsoft.Json; using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -13,6 +13,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
private readonly IBasicVideoMuteWithFeedback device; private readonly IBasicVideoMuteWithFeedback device;
/// <summary>
/// Initializes a new instance of the <see cref="IBasicVideoMuteWithFeedbackMessenger"/> class.
/// </summary>
/// <param name="key"></param>
/// <param name="messagePath"></param>
/// <param name="device"></param>
public IBasicVideoMuteWithFeedbackMessenger(string key, string messagePath, IBasicVideoMuteWithFeedback device) public IBasicVideoMuteWithFeedbackMessenger(string key, string messagePath, IBasicVideoMuteWithFeedback device)
: base(key, messagePath, device as IKeyName) : base(key, messagePath, device as IKeyName)
{ {
@@ -22,21 +28,24 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// SendFullStatus method /// SendFullStatus method
/// </summary> /// </summary>
public void SendFullStatus() public void SendFullStatus(string id = null)
{ {
var messageObj = new IBasicVideoMuteWithFeedbackMessage var messageObj = new IBasicVideoMuteWithFeedbackMessage
{ {
VideoMuteState = device.VideoMuteIsOn.BoolValue VideoMuteState = device.VideoMuteIsOn.BoolValue
}; };
PostStatusMessage(messageObj); PostStatusMessage(messageObj, id);
} }
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/videoMuteStatus", (id, content) => SendFullStatus(id));
AddAction("/videoMuteToggle", (id, content) => AddAction("/videoMuteToggle", (id, content) =>
{ {

View File

@@ -24,14 +24,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
AddAction("/fullStatus", (id, content) => AddAction("/fullStatus", (id, content) =>
{ {
PostStatusMessage(new CommunicationMonitorState SendFullStatus(id);
{ });
CommunicationMonitor = new CommunicationMonitorProps
{ AddAction("/commStatus", (id, content) =>
IsOnline = _communicationMonitor.CommunicationMonitor.IsOnline, {
Status = _communicationMonitor.CommunicationMonitor.Status SendFullStatus(id);
}
});
}); });
_communicationMonitor.CommunicationMonitor.StatusChange += (sender, args) => _communicationMonitor.CommunicationMonitor.StatusChange += (sender, args) =>
@@ -46,6 +44,18 @@ namespace PepperDash.Essentials.AppServer.Messengers
})); }));
}; };
} }
private void SendFullStatus(string id = null)
{
PostStatusMessage(new CommunicationMonitorState
{
CommunicationMonitor = new CommunicationMonitorProps
{
IsOnline = _communicationMonitor.CommunicationMonitor.IsOnline,
Status = _communicationMonitor.CommunicationMonitor.Status
}
});
}
} }
/// <summary> /// <summary>

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -22,15 +22,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => AddAction("/fullStatus", (id, content) => SendFullStatus(id));
{
var message = new IHasDspPresetsStateMessage
{
Presets = device.Presets
};
PostStatusMessage(message); AddAction("/dspPresetStatus", (id, content) => SendFullStatus(id));
});
AddAction("/recallPreset", (id, content) => AddAction("/recallPreset", (id, content) =>
{ {
@@ -43,6 +37,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
}); });
} }
private void SendFullStatus(string id = null)
{
var message = new IHasDspPresetsStateMessage
{
Presets = device.Presets
};
PostStatusMessage(message, id);
}
} }
/// <summary> /// <summary>

View File

@@ -1,10 +1,10 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -46,7 +46,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// partition states.</remarks> /// partition states.</remarks>
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/combinerStatus", (id, content) => SendFullStatus(id));
AddAction("/setAutoMode", (id, content) => AddAction("/setAutoMode", (id, content) =>
{ {
@@ -120,7 +122,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
try try
{ {
@@ -141,7 +143,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
Partitions = _roomCombiner.Partitions Partitions = _roomCombiner.Partitions
}; };
PostStatusMessage(message); PostStatusMessage(message, id);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -1,11 +1,11 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Devices.Common.Cameras;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PepperDash.Essentials.Devices.Common.Cameras;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -26,7 +26,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <param name="cameraController"></param> /// <param name="cameraController"></param>
/// <param name="messagePath"></param> /// <param name="messagePath"></param>
/// <exception cref="ArgumentNullException"></exception> /// <exception cref="ArgumentNullException"></exception>
public IHasCamerasMessenger(string key, string messagePath , IHasCameras cameraController) public IHasCamerasMessenger(string key, string messagePath, IHasCameras cameraController)
: base(key, messagePath, cameraController) : base(key, messagePath, cameraController)
{ {
CameraController = cameraController ?? throw new ArgumentNullException("cameraController"); CameraController = cameraController ?? throw new ArgumentNullException("cameraController");
@@ -49,10 +49,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, context) => AddAction("/fullStatus", (id, context) => SendFullStatus(id));
{
SendFullStatus(id); AddAction("/cameraListStatus", (id, content) => SendFullStatus(id));
});
AddAction("/selectCamera", (id, content) => AddAction("/selectCamera", (id, content) =>
{ {

View File

@@ -11,6 +11,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class IHasCurrentSourceInfoMessenger : MessengerBase public class IHasCurrentSourceInfoMessenger : MessengerBase
{ {
private readonly IHasCurrentSourceInfoChange sourceDevice; private readonly IHasCurrentSourceInfoChange sourceDevice;
public IHasCurrentSourceInfoMessenger(string key, string messagePath, IHasCurrentSourceInfoChange device) : base(key, messagePath, device as IKeyName) public IHasCurrentSourceInfoMessenger(string key, string messagePath, IHasCurrentSourceInfoChange device) : base(key, messagePath, device as IKeyName)
{ {
sourceDevice = device; sourceDevice = device;
@@ -20,16 +21,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => AddAction("/fullStatus", (id, content) => SendFullStatus(id));
{
var message = new CurrentSourceStateMessage
{
CurrentSourceKey = sourceDevice.CurrentSourceInfoKey,
CurrentSource = sourceDevice.CurrentSourceInfo
};
PostStatusMessage(message); AddAction("/currentSourceInfoStatus", (id, content) => SendFullStatus(id));
});
sourceDevice.CurrentSourceChange += (sender, e) => sourceDevice.CurrentSourceChange += (sender, e) =>
{ {
@@ -47,6 +41,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
}; };
} }
private void SendFullStatus(string id = null)
{
var message = new CurrentSourceStateMessage
{
CurrentSourceKey = sourceDevice.CurrentSourceInfoKey,
CurrentSource = sourceDevice.CurrentSourceInfo
};
PostStatusMessage(message, id);
}
} }
/// <summary> /// <summary>

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -11,8 +11,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// Represents a IHasInputsMessenger /// Represents a IHasInputsMessenger
/// </summary> /// </summary>
public class IHasInputsMessenger<TKey> : MessengerBase public class IHasInputsMessenger<TKey> : MessengerBase
{ {
private readonly IHasInputs<TKey> itemDevice; private readonly IHasInputs<TKey> itemDevice;
/// <summary> /// <summary>
@@ -23,17 +23,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <param name="device"></param> /// <param name="device"></param>
public IHasInputsMessenger(string key, string messagePath, IHasInputs<TKey> device) : base(key, messagePath, device) public IHasInputsMessenger(string key, string messagePath, IHasInputs<TKey> device) : base(key, messagePath, device)
{ {
itemDevice = device; itemDevice = device;
} }
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, context) => AddAction("/fullStatus", (id, context) => SendFullStatus(id));
{
SendFullStatus(); AddAction("/inputStatus", (id, content) => SendFullStatus(id));
});
itemDevice.Inputs.ItemsUpdated += (sender, args) => itemDevice.Inputs.ItemsUpdated += (sender, args) =>
{ {
@@ -62,7 +61,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
try try
{ {
@@ -77,7 +76,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
}; };
PostStatusMessage(stateObject); PostStatusMessage(stateObject, id);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -12,6 +12,12 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
private readonly IHasPowerControlWithFeedback _powerControl; private readonly IHasPowerControlWithFeedback _powerControl;
/// <summary>
/// Initializes a new instance of the <see cref="IHasPowerControlWithFeedbackMessenger"/> class.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="messagePath">The message path.</param>
/// <param name="powerControl">The power control device</param>
public IHasPowerControlWithFeedbackMessenger(string key, string messagePath, IHasPowerControlWithFeedback powerControl) public IHasPowerControlWithFeedbackMessenger(string key, string messagePath, IHasPowerControlWithFeedback powerControl)
: base(key, messagePath, powerControl as IKeyName) : base(key, messagePath, powerControl as IKeyName)
{ {
@@ -21,7 +27,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// SendFullStatus method /// SendFullStatus method
/// </summary> /// </summary>
public void SendFullStatus() public void SendFullStatus(string id = null)
{ {
var messageObj = new PowerControlWithFeedbackStateMessage var messageObj = new PowerControlWithFeedbackStateMessage
{ {
@@ -31,11 +37,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
PostStatusMessage(messageObj); PostStatusMessage(messageObj);
} }
/// <inheritdoc />
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/powerStatus", (id, content) => SendFullStatus(id));
_powerControl.PowerIsOnFeedback.OutputChange += PowerIsOnFeedback_OutputChange; ; _powerControl.PowerIsOnFeedback.OutputChange += PowerIsOnFeedback_OutputChange; ;
} }
@@ -55,6 +64,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class PowerControlWithFeedbackStateMessage : DeviceStateMessageBase public class PowerControlWithFeedbackStateMessage : DeviceStateMessageBase
{ {
/// <summary>
/// Power State
/// </summary>
[JsonProperty("powerState", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("powerState", NullValueHandling = NullValueHandling.Ignore)]
public bool? PowerState { get; set; } public bool? PowerState { get; set; }
} }

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Devices.Common.Codec; using PepperDash.Essentials.Devices.Common.Codec;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -27,7 +27,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/schedule/fullStatus", (id, content) => SendFullScheduleObject()); AddAction("/schedule/fullStatus", (id, content) => SendFullScheduleObject(id));
AddAction("/schedule/status", (id, content) => SendFullScheduleObject(id));
} }
private void CodecSchedule_MeetingEventChange(object sender, MeetingEventArgs e) private void CodecSchedule_MeetingEventChange(object sender, MeetingEventArgs e)
@@ -51,13 +53,13 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// Helper method to send the full schedule data /// Helper method to send the full schedule data
/// </summary> /// </summary>
private void SendFullScheduleObject() private void SendFullScheduleObject(string id = null)
{ {
PostStatusMessage(new FullScheduleMessage PostStatusMessage(new FullScheduleMessage
{ {
Meetings = ScheduleSource.CodecSchedule.Meetings, Meetings = ScheduleSource.CodecSchedule.Meetings,
MeetingWarningMinutes = ScheduleSource.CodecSchedule.MeetingWarningMinutes MeetingWarningMinutes = ScheduleSource.CodecSchedule.MeetingWarningMinutes
}); }, id);
} }
} }
@@ -66,16 +68,18 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class FullScheduleMessage : DeviceStateMessageBase public class FullScheduleMessage : DeviceStateMessageBase
{ {
[JsonProperty("meetings", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Meetings /// Gets or sets the Meetings
/// </summary> /// </summary>
[JsonProperty("meetings", NullValueHandling = NullValueHandling.Ignore)]
public List<Meeting> Meetings { get; set; } public List<Meeting> Meetings { get; set; }
[JsonProperty("meetingWarningMinutes", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MeetingWarningMinutes /// Gets or sets the MeetingWarningMinutes
/// </summary> /// </summary>
[JsonProperty("meetingWarningMinutes", NullValueHandling = NullValueHandling.Ignore)]
public int MeetingWarningMinutes { get; set; } public int MeetingWarningMinutes { get; set; }
} }
@@ -84,10 +88,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class MeetingChangeMessage public class MeetingChangeMessage
{ {
[JsonProperty("meetingChange", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MeetingChange /// Gets or sets the MeetingChange
/// </summary> /// </summary>
[JsonProperty("meetingChange", NullValueHandling = NullValueHandling.Ignore)]
public MeetingChange MeetingChange { get; set; } public MeetingChange MeetingChange { get; set; }
} }
@@ -96,16 +101,18 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class MeetingChange public class MeetingChange
{ {
[JsonProperty("changeType", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the ChangeType /// Gets or sets the ChangeType
/// </summary> /// </summary>
[JsonProperty("changeType", NullValueHandling = NullValueHandling.Ignore)]
public string ChangeType { get; set; } public string ChangeType { get; set; }
[JsonProperty("meeting", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Meeting /// Gets or sets the Meeting
/// </summary> /// </summary>
[JsonProperty("meeting", NullValueHandling = NullValueHandling.Ignore)]
public Meeting Meeting { get; set; } public Meeting Meeting { get; set; }
} }
} }

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -22,19 +22,21 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/humidityStatus", (id, content) => SendFullStatus(id));
device.HumidityFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus()); device.HumidityFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus());
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new IHumiditySensorStateMessage var state = new IHumiditySensorStateMessage
{ {
Humidity = string.Format("{0}%", device.HumidityFeedback.UShortValue) Humidity = string.Format("{0}%", device.HumidityFeedback.UShortValue)
}; };
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -43,10 +45,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class IHumiditySensorStateMessage : DeviceStateMessageBase public class IHumiditySensorStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("humidity")]
/// <summary> /// <summary>
/// Gets or sets the Humidity /// Gets or sets the Humidity
/// </summary> /// </summary>
[JsonProperty("humidity")]
public string Humidity { get; set; } public string Humidity { get; set; }
} }
} }

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -13,6 +13,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
public class ILevelControlsMessenger : MessengerBase public class ILevelControlsMessenger : MessengerBase
{ {
private ILevelControls levelControlsDevice; private ILevelControls levelControlsDevice;
public ILevelControlsMessenger(string key, string messagePath, ILevelControls device) : base(key, messagePath, device as IKeyName) public ILevelControlsMessenger(string key, string messagePath, ILevelControls device) : base(key, messagePath, device as IKeyName)
{ {
levelControlsDevice = device; levelControlsDevice = device;
@@ -22,15 +23,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, context) => AddAction("/fullStatus", (id, context) => SendFullStatus(id));
{
var message = new LevelControlStateMessage
{
Levels = levelControlsDevice.LevelControlPoints.ToDictionary(kv => kv.Key, kv => new Volume { Level = kv.Value.VolumeLevelFeedback.IntValue, Muted = kv.Value.MuteFeedback.BoolValue })
};
PostStatusMessage(message); AddAction("/levelStats", (id, content) => SendFullStatus(id));
});
foreach (var levelControl in levelControlsDevice.LevelControlPoints) foreach (var levelControl in levelControlsDevice.LevelControlPoints)
{ {
@@ -75,6 +70,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
})); }));
} }
} }
private void SendFullStatus(string id = null)
{
var message = new LevelControlStateMessage
{
Levels = levelControlsDevice.LevelControlPoints.ToDictionary(kv => kv.Key, kv => new Volume { Level = kv.Value.VolumeLevelFeedback.IntValue, Muted = kv.Value.MuteFeedback.BoolValue })
};
PostStatusMessage(message, id);
}
} }
/// <summary> /// <summary>

View File

@@ -1,12 +1,12 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Routing; using PepperDash.Essentials.Core.Routing;
using Serilog.Events; using Serilog.Events;
using System;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -25,25 +25,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => AddAction("/fullStatus", (id, content) => SendFullStatus(id));
{
try
{
Debug.LogMessage(LogEventLevel.Verbose, "InputCount: {inputCount}, OutputCount: {outputCount}", this, matrixDevice.InputSlots.Count, matrixDevice.OutputSlots.Count);
var message = new MatrixStateMessage
{
Outputs = matrixDevice.OutputSlots.ToDictionary(kvp => kvp.Key, kvp => new RoutingOutput(kvp.Value)),
Inputs = matrixDevice.InputSlots.ToDictionary(kvp => kvp.Key, kvp => new RoutingInput(kvp.Value)),
};
AddAction("/matrixStatus", (id, content) => SendFullStatus(id));
PostStatusMessage(message);
}
catch (Exception e)
{
Debug.LogMessage(e, "Exception Getting full status: {@exception}", this, e);
}
});
AddAction("/route", (id, content) => AddAction("/route", (id, content) =>
{ {
@@ -80,6 +64,26 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
} }
} }
private void SendFullStatus(string id = null)
{
try
{
Debug.LogMessage(LogEventLevel.Verbose, "InputCount: {inputCount}, OutputCount: {outputCount}", this, matrixDevice.InputSlots.Count, matrixDevice.OutputSlots.Count);
var message = new MatrixStateMessage
{
Outputs = matrixDevice.OutputSlots.ToDictionary(kvp => kvp.Key, kvp => new RoutingOutput(kvp.Value)),
Inputs = matrixDevice.InputSlots.ToDictionary(kvp => kvp.Key, kvp => new RoutingInput(kvp.Value)),
};
PostStatusMessage(message, id);
}
catch (Exception e)
{
Debug.LogMessage(e, "Exception Getting full status: {@exception}", this, e);
}
}
} }
/// <summary> /// <summary>

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -14,17 +14,28 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
private readonly IProjectorScreenLiftControl device; private readonly IProjectorScreenLiftControl device;
/// <summary>
/// Initializes a new instance of the <see cref="IProjectorScreenLiftControlMessenger"/> class.
/// </summary>
/// <param name="key">message key</param>
/// <param name="messagePath">message path</param>
/// <param name="screenLiftDevice">screen lift device</param>
public IProjectorScreenLiftControlMessenger(string key, string messagePath, IProjectorScreenLiftControl screenLiftDevice) public IProjectorScreenLiftControlMessenger(string key, string messagePath, IProjectorScreenLiftControl screenLiftDevice)
: base(key, messagePath, screenLiftDevice as IKeyName) : base(key, messagePath, screenLiftDevice as IKeyName)
{ {
device = screenLiftDevice; device = screenLiftDevice;
} }
/// <summary>
/// Registers the actions for the messenger.
/// </summary>
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/screenliftStatus", (id, content) => SendFullStatus(id));
AddAction("/raise", (id, content) => AddAction("/raise", (id, content) =>
{ {
@@ -53,7 +64,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
PostStatusMessage(JToken.FromObject(state)); PostStatusMessage(JToken.FromObject(state));
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new ScreenLiftStateMessage var state = new ScreenLiftStateMessage
{ {
@@ -62,7 +73,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
DisplayDeviceKey = device.DisplayDeviceKey DisplayDeviceKey = device.DisplayDeviceKey
}; };
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -71,20 +82,23 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class ScreenLiftStateMessage : DeviceStateMessageBase public class ScreenLiftStateMessage : DeviceStateMessageBase
{ {
/// <summary>
/// Gets or sets the InUpPosition
/// </summary>
[JsonProperty("inUpPosition", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("inUpPosition", NullValueHandling = NullValueHandling.Ignore)]
public bool? InUpPosition { get; set; } public bool? InUpPosition { get; set; }
[JsonProperty("displayDeviceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DisplayDeviceKey /// Gets or sets the DisplayDeviceKey
/// </summary> /// </summary>
[JsonProperty("displayDeviceKey", NullValueHandling = NullValueHandling.Ignore)]
public string DisplayDeviceKey { get; set; } public string DisplayDeviceKey { get; set; }
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Type /// Gets or sets the Type
/// </summary> /// </summary>
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("type", NullValueHandling = NullValueHandling.Ignore)]
public eScreenLiftControlType Type { get; set; } public eScreenLiftControlType Type { get; set; }
} }
} }

View File

@@ -1,8 +1,8 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
@@ -36,7 +36,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/fullStatus", (id, content) => SendRoutingFullMessageObject()); AddAction("/fullStatus", (id, content) => SendRoutingFullMessageObject(id));
AddAction("/routingStatus", (id, content) => SendRoutingFullMessageObject(id));
AddAction("/source", (id, content) => AddAction("/source", (id, content) =>
{ {
@@ -62,7 +64,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// Helper method to update full status of the routing device /// Helper method to update full status of the routing device
/// </summary> /// </summary>
private void SendRoutingFullMessageObject() private void SendRoutingFullMessageObject(string id = null)
{ {
if (RoutingDevice is IRoutingSink sinkDevice) if (RoutingDevice is IRoutingSink sinkDevice)
{ {
@@ -84,10 +86,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class RoutingStateMessage : DeviceStateMessageBase public class RoutingStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("selectedSourceKey")]
/// <summary> /// <summary>
/// Gets or sets the SelectedSourceKey /// Gets or sets the SelectedSourceKey
/// </summary> /// </summary>
[JsonProperty("selectedSourceKey")]
public string SelectedSourceKey { get; set; } public string SelectedSourceKey { get; set; }
} }
} }

View File

@@ -1,9 +1,9 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -11,7 +11,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// Represents a ISelectableItemsMessenger /// Represents a ISelectableItemsMessenger
/// </summary> /// </summary>
public class ISelectableItemsMessenger<TKey> : MessengerBase public class ISelectableItemsMessenger<TKey> : MessengerBase
{ {
private readonly ISelectableItems<TKey> itemDevice; private readonly ISelectableItems<TKey> itemDevice;
private readonly string _propName; private readonly string _propName;
@@ -34,9 +34,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, context) => AddAction("/fullStatus", (id, context) =>
{ SendFullStatus(id)
SendFullStatus(); );
});
AddAction("/itemsStatus", (id, content) => SendFullStatus(id));
itemDevice.ItemsUpdated += (sender, args) => itemDevice.ItemsUpdated += (sender, args) =>
{ {
@@ -65,7 +66,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
try try
{ {
@@ -77,7 +78,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
CurrentItem = itemDevice.CurrentItem CurrentItem = itemDevice.CurrentItem
}; };
PostStatusMessage(stateObject); PostStatusMessage(stateObject, id);
} }
catch (Exception e) catch (Exception e)
{ {
@@ -91,13 +92,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class ISelectableItemsStateMessage<TKey> : DeviceStateMessageBase public class ISelectableItemsStateMessage<TKey> : DeviceStateMessageBase
{ {
/// <summary>
/// Gets or sets the Items
/// </summary>
[JsonProperty("items")] [JsonProperty("items")]
public Dictionary<TKey, ISelectableItem> Items { get; set; } public Dictionary<TKey, ISelectableItem> Items { get; set; }
[JsonProperty("currentItem")]
/// <summary> /// <summary>
/// Gets or sets the CurrentItem /// Gets or sets the CurrentItem
/// </summary> /// </summary>
[JsonProperty("currentItem")]
public TKey CurrentItem { get; set; } public TKey CurrentItem { get; set; }
} }

View File

@@ -21,9 +21,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/status", (id, content) => AddAction("/status", (id, content) =>
{ SendFullStatus(id)
SendFullStatus(); );
});
AddAction("/shutdownPromptStatus", (id, content) => SendFullStatus(id));
AddAction("/setShutdownPromptSeconds", (id, content) => AddAction("/setShutdownPromptSeconds", (id, content) =>
{ {
@@ -68,7 +69,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var status = new IShutdownPromptTimerStateMessage var status = new IShutdownPromptTimerStateMessage
{ {
@@ -77,7 +78,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
PercentageRemaining = _room.ShutdownPromptTimer.PercentFeedback.UShortValue PercentageRemaining = _room.ShutdownPromptTimer.PercentFeedback.UShortValue
}; };
PostStatusMessage(status); PostStatusMessage(status, id);
} }
} }
@@ -87,22 +88,22 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class IShutdownPromptTimerStateMessage : DeviceStateMessageBase public class IShutdownPromptTimerStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("secondsRemaining")]
/// <summary> /// <summary>
/// Gets or sets the SecondsRemaining /// Gets or sets the SecondsRemaining
/// </summary> /// </summary>
[JsonProperty("secondsRemaining")]
public int SecondsRemaining { get; set; } public int SecondsRemaining { get; set; }
[JsonProperty("percentageRemaining")]
/// <summary> /// <summary>
/// Gets or sets the PercentageRemaining /// Gets or sets the PercentageRemaining
/// </summary> /// </summary>
[JsonProperty("percentageRemaining")]
public int PercentageRemaining { get; set; } public int PercentageRemaining { get; set; }
[JsonProperty("shutdownPromptSeconds")]
/// <summary> /// <summary>
/// Gets or sets the ShutdownPromptSeconds /// Gets or sets the ShutdownPromptSeconds
/// </summary> /// </summary>
[JsonProperty("shutdownPromptSeconds")]
public int ShutdownPromptSeconds { get; set; } public int ShutdownPromptSeconds { get; set; }
} }
} }

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.CrestronIO; using PepperDash.Essentials.Core.CrestronIO;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -23,7 +23,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/switchedOutputStatus", (id, content) => SendFullStatus(id));
AddAction("/on", (id, content) => AddAction("/on", (id, content) =>
{ {
@@ -42,14 +44,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
device.OutputIsOnFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus()); device.OutputIsOnFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus());
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new ISwitchedOutputStateMessage var state = new ISwitchedOutputStateMessage
{ {
IsOn = device.OutputIsOnFeedback.BoolValue IsOn = device.OutputIsOnFeedback.BoolValue
}; };
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -58,10 +60,10 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class ISwitchedOutputStateMessage : DeviceStateMessageBase public class ISwitchedOutputStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("isOn")]
/// <summary> /// <summary>
/// Gets or sets the IsOn /// Gets or sets the IsOn
/// </summary> /// </summary>
[JsonProperty("isOn")]
public bool IsOn { get; set; } public bool IsOn { get; set; }
} }
} }

View File

@@ -20,10 +20,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/status", (id, content) => AddAction("/status", (id, content) => SendFullStatus(id));
{
SendFullStatus(); AddAction("/techPasswordStatus", (id, content) => SendFullStatus(id));
});
AddAction("/validateTechPassword", (id, content) => AddAction("/validateTechPassword", (id, content) =>
{ {
@@ -55,14 +54,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var status = new ITechPasswordStateMessage var status = new ITechPasswordStateMessage
{ {
TechPasswordLength = _room.TechPasswordLength TechPasswordLength = _room.TechPasswordLength
}; };
PostStatusMessage(status); PostStatusMessage(status, id);
} }
} }

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -22,7 +22,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/temperatureStatus", (id, content) => SendFullStatus(id));
AddAction("/setTemperatureUnitsToCelcius", (id, content) => AddAction("/setTemperatureUnitsToCelcius", (id, content) =>
{ {
@@ -38,7 +40,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
device.TemperatureInCFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus()); device.TemperatureInCFeedback.OutputChange += new EventHandler<Core.FeedbackEventArgs>((o, a) => SendFullStatus());
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
// format the temperature to a string with one decimal place // format the temperature to a string with one decimal place
var tempString = string.Format("{0}.{1}", device.TemperatureFeedback.UShortValue / 10, device.TemperatureFeedback.UShortValue % 10); var tempString = string.Format("{0}.{1}", device.TemperatureFeedback.UShortValue / 10, device.TemperatureFeedback.UShortValue % 10);
@@ -49,7 +51,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
TemperatureInCelsius = device.TemperatureInCFeedback.BoolValue TemperatureInCelsius = device.TemperatureInCFeedback.BoolValue
}; };
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -58,16 +60,16 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class ITemperatureSensorStateMessage : DeviceStateMessageBase public class ITemperatureSensorStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("temperature")]
/// <summary> /// <summary>
/// Gets or sets the Temperature /// Gets or sets the Temperature
/// </summary> /// </summary>
[JsonProperty("temperature")]
public string Temperature { get; set; } public string Temperature { get; set; }
[JsonProperty("temperatureInCelsius")]
/// <summary> /// <summary>
/// Gets or sets the TemperatureInCelsius /// Gets or sets the TemperatureInCelsius
/// </summary> /// </summary>
[JsonProperty("temperatureInCelsius")]
public bool TemperatureInCelsius { get; set; } public bool TemperatureInCelsius { get; set; }
} }
} }

View File

@@ -1,8 +1,8 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.Lighting; using PepperDash.Essentials.Core.Lighting;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -35,7 +35,9 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/lightingStatus", (id, content) => SendFullStatus(id));
AddAction("/selectScene", (id, content) => AddAction("/selectScene", (id, content) =>
{ {
@@ -43,14 +45,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
lightingScenesDevice.SelectScene(s); lightingScenesDevice.SelectScene(s);
}); });
if(!(lightingScenesDevice is ILightingScenesDynamic lightingScenesDynamic)) if (!(lightingScenesDevice is ILightingScenesDynamic lightingScenesDynamic))
return; return;
lightingScenesDynamic.LightingScenesUpdated += (s, e) => SendFullStatus(); lightingScenesDynamic.LightingScenesUpdated += (s, e) => SendFullStatus();
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new LightingBaseStateMessage var state = new LightingBaseStateMessage
{ {
@@ -58,7 +60,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
CurrentLightingScene = lightingScenesDevice.CurrentLightingScene CurrentLightingScene = lightingScenesDevice.CurrentLightingScene
}; };
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -67,16 +69,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class LightingBaseStateMessage : DeviceStateMessageBase public class LightingBaseStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("scenes", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Scenes /// Gets or sets the Scenes
/// </summary> /// </summary>
[JsonProperty("scenes", NullValueHandling = NullValueHandling.Ignore)]
public List<LightingScene> Scenes { get; set; } public List<LightingScene> Scenes { get; set; }
[JsonProperty("currentLightingScene", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CurrentLightingScene /// Gets or sets the CurrentLightingScene
/// </summary> /// </summary>
[JsonProperty("currentLightingScene", NullValueHandling = NullValueHandling.Ignore)]
public LightingScene CurrentLightingScene { get; set; } public LightingScene CurrentLightingScene { get; set; }
} }
} }

View File

@@ -1,12 +1,12 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Core.DeviceTypeInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -159,13 +159,13 @@ namespace PepperDash.Essentials.AppServer.Messengers
message.Name = _device.Name; message.Name = _device.Name;
var token = JToken.FromObject(message); var token = JToken.FromObject(message);
PostStatusMessage(token, MessagePath, clientId); PostStatusMessage(token, MessagePath, clientId);
} }
catch (Exception ex) catch (Exception ex)
{ {
this.LogError(ex, "Exception posting status message for {messagePath} to {clientId}", MessagePath, clientId ?? "all clients"); this.LogError(ex, "Exception posting status message for {messagePath} to {clientId}", MessagePath, clientId ?? "all clients");
} }
} }
@@ -188,7 +188,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
catch (Exception ex) catch (Exception ex)
{ {
this.LogError(ex, "Exception posting status message for {type} to {clientId}", type, clientId ?? "all clients"); this.LogError(ex, "Exception posting status message for {type} to {clientId}", type, clientId ?? "all clients");
} }
} }

View File

@@ -1,11 +1,14 @@
using Crestron.SimplSharp; using System;
using System.Collections.Generic;
using Crestron.SimplSharp;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
/// <summary>
/// Handler for press/hold/release messages
/// </summary>
public static class PressAndHoldHandler public static class PressAndHoldHandler
{ {
private const long ButtonHeartbeatInterval = 1000; private const long ButtonHeartbeatInterval = 1000;
@@ -26,21 +29,21 @@ namespace PepperDash.Essentials.AppServer.Messengers
private static void AddTimer(string deviceKey, Action<bool> action) private static void AddTimer(string deviceKey, Action<bool> action)
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to add timer for {deviceKey}", deviceKey); Debug.LogDebug("Attempting to add timer for {deviceKey}", deviceKey);
if (_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer)) if (_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer))
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Timer for {deviceKey} already exists", deviceKey); Debug.LogDebug("Timer for {deviceKey} already exists", deviceKey);
return; return;
} }
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Adding timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval); Debug.LogDebug("Adding timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval);
action(true); action(true);
cancelTimer = new CTimer(o => cancelTimer = new CTimer(o =>
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Timer expired for {deviceKey}", deviceKey); Debug.LogDebug("Timer expired for {deviceKey}", deviceKey);
action(false); action(false);
@@ -52,30 +55,30 @@ namespace PepperDash.Essentials.AppServer.Messengers
private static void ResetTimer(string deviceKey, Action<bool> action) private static void ResetTimer(string deviceKey, Action<bool> action)
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to reset timer for {deviceKey}", deviceKey); Debug.LogDebug("Attempting to reset timer for {deviceKey}", deviceKey);
if (!_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer)) if (!_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer))
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Timer for {deviceKey} not found", deviceKey); Debug.LogDebug("Timer for {deviceKey} not found", deviceKey);
return; return;
} }
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Resetting timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval); Debug.LogDebug("Resetting timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval);
cancelTimer.Reset(ButtonHeartbeatInterval); cancelTimer.Reset(ButtonHeartbeatInterval);
} }
private static void StopTimer(string deviceKey, Action<bool> action) private static void StopTimer(string deviceKey, Action<bool> action)
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Attempting to stop timer for {deviceKey}", deviceKey); Debug.LogDebug("Attempting to stop timer for {deviceKey}", deviceKey);
if (!_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer)) if (!_pushedActions.TryGetValue(deviceKey, out CTimer cancelTimer))
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Timer for {deviceKey} not found", deviceKey); Debug.LogDebug("Timer for {deviceKey} not found", deviceKey);
return; return;
} }
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Stopping timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval); Debug.LogDebug("Stopping timer for {deviceKey} with due time {dueTime}", deviceKey, ButtonHeartbeatInterval);
action(false); action(false);
cancelTimer.Stop(); cancelTimer.Stop();
@@ -84,15 +87,15 @@ namespace PepperDash.Essentials.AppServer.Messengers
public static Action<string, Action<bool>> GetPressAndHoldHandler(string value) public static Action<string, Action<bool>> GetPressAndHoldHandler(string value)
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Getting press and hold handler for {value}", value); Debug.LogDebug("Getting press and hold handler for {value}", value);
if (!_pushedActionHandlers.TryGetValue(value, out Action<string, Action<bool>> handler)) if (!_pushedActionHandlers.TryGetValue(value, out Action<string, Action<bool>> handler))
{ {
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Press and hold handler for {value} not found", value); Debug.LogDebug("Press and hold handler for {value} not found", value);
return null; return null;
} }
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Got handler for {value}", value); Debug.LogDebug("Got handler for {value}", value);
return handler; return handler;
} }
@@ -104,7 +107,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
var msg = content.ToObject<MobileControlSimpleContent<string>>(); var msg = content.ToObject<MobileControlSimpleContent<string>>();
Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "Handling press and hold message of {type} for {deviceKey}", msg.Value, deviceKey); Debug.LogDebug("Handling press and hold message of {type} for {deviceKey}", msg.Value, deviceKey);
var timerHandler = GetPressAndHoldHandler(msg.Value); var timerHandler = GetPressAndHoldHandler(msg.Value);

View File

@@ -1,10 +1,10 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Core.Logging; using PepperDash.Core.Logging;
using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
using PepperDash.Essentials.Room.Config; using PepperDash.Essentials.Room.Config;
using System;
using System.Collections.Generic;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -31,7 +31,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
var events = _room.GetScheduledEvents(); var events = _room.GetScheduledEvents();
SendFullStatus(events); SendFullStatus(events, id);
});
AddAction("/scheduledEventsStatus", (id, content) =>
{
var events = _room.GetScheduledEvents();
SendFullStatus(events, id);
}); });
_room.ScheduledEventsChanged += (sender, args) => SendFullStatus(args.ScheduledEvents); _room.ScheduledEventsChanged += (sender, args) => SendFullStatus(args.ScheduledEvents);
@@ -55,11 +62,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
catch (Exception ex) catch (Exception ex)
{ {
this.LogException(ex,"Exception saving event"); this.LogException(ex, "Exception saving event");
} }
} }
private void SendFullStatus(List<ScheduledEventConfig> events) private void SendFullStatus(List<ScheduledEventConfig> events, string id = null)
{ {
var message = new RoomEventScheduleStateMessage var message = new RoomEventScheduleStateMessage
@@ -67,7 +74,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
ScheduleEvents = events, ScheduleEvents = events,
}; };
PostStatusMessage(message); PostStatusMessage(message, id);
} }
} }

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using System;
using Newtonsoft.Json;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.Shades; using PepperDash.Essentials.Core.Shades;
using System;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -22,7 +22,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/shadesStatus", (id, content) => SendFullStatus(id));
AddAction("/shadeUp", (id, content) => AddAction("/shadeUp", (id, content) =>
{ {
@@ -75,7 +76,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
private void SendFullStatus() private void SendFullStatus(string id = null)
{ {
var state = new ShadeBaseStateMessage(); var state = new ShadeBaseStateMessage();
@@ -85,7 +86,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
state.IsClosed = feedbackDevice.ShadeIsClosedFeedback.BoolValue; state.IsClosed = feedbackDevice.ShadeIsClosedFeedback.BoolValue;
} }
PostStatusMessage(state); PostStatusMessage(state, id);
} }
} }
@@ -94,10 +95,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class ShadeBaseStateMessage : DeviceStateMessageBase public class ShadeBaseStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("middleButtonLabel", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MiddleButtonLabel /// Gets or sets the MiddleButtonLabel
/// </summary> /// </summary>
[JsonProperty("middleButtonLabel", NullValueHandling = NullValueHandling.Ignore)]
public string MiddleButtonLabel { get; set; } public string MiddleButtonLabel { get; set; }
[JsonProperty("isOpen", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isOpen", NullValueHandling = NullValueHandling.Ignore)]

View File

@@ -1,10 +1,10 @@
using Crestron.SimplSharp; using System;
using System.Threading.Tasks;
using Crestron.SimplSharp;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
using PepperDash.Essentials.Core.Monitoring; using PepperDash.Essentials.Core.Monitoring;
using System;
using System.Threading.Tasks;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -56,36 +56,37 @@ namespace PepperDash.Essentials.AppServer.Messengers
SendSystemMonitorStatusMessage(); SendSystemMonitorStatusMessage();
} }
private void SendFullStatusMessage() private void SendFullStatusMessage(string id = null)
{ {
SendSystemMonitorStatusMessage(); SendSystemMonitorStatusMessage(id);
foreach (var p in systemMonitor.ProgramStatusFeedbackCollection) foreach (var p in systemMonitor.ProgramStatusFeedbackCollection)
{ {
PostStatusMessage(JToken.FromObject(p.Value.ProgramInfo)); PostStatusMessage(JToken.FromObject(p.Value.ProgramInfo), id);
} }
} }
private void SendSystemMonitorStatusMessage() private void SendSystemMonitorStatusMessage(string id = null)
{ {
// This takes a while, launch a new thread // This takes a while, launch a new thread
Task.Run(() => PostStatusMessage(JToken.FromObject(new SystemMonitorStateMessage Task.Run(() => PostStatusMessage(JToken.FromObject(new SystemMonitorStateMessage
{ {
TimeZone = systemMonitor.TimeZoneFeedback.IntValue, TimeZone = systemMonitor.TimeZoneFeedback.IntValue,
TimeZoneName = systemMonitor.TimeZoneTextFeedback.StringValue, TimeZoneName = systemMonitor.TimeZoneTextFeedback.StringValue,
IoControllerVersion = systemMonitor.IoControllerVersionFeedback.StringValue, IoControllerVersion = systemMonitor.IoControllerVersionFeedback.StringValue,
SnmpVersion = systemMonitor.SnmpVersionFeedback.StringValue, SnmpVersion = systemMonitor.SnmpVersionFeedback.StringValue,
BacnetVersion = systemMonitor.BaCnetAppVersionFeedback.StringValue, BacnetVersion = systemMonitor.BaCnetAppVersionFeedback.StringValue,
ControllerVersion = systemMonitor.ControllerVersionFeedback.StringValue ControllerVersion = systemMonitor.ControllerVersionFeedback.StringValue
}) }), id
)); ));
} }
protected override void RegisterActions() protected override void RegisterActions()
{ {
AddAction("/fullStatus", (id, content) => SendFullStatusMessage()); AddAction("/fullStatus", (id, content) => SendFullStatusMessage(id));
AddAction("/systemStatus", (id, content) => SendFullStatusMessage(id));
} }
} }
@@ -94,40 +95,45 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class SystemMonitorStateMessage public class SystemMonitorStateMessage
{ {
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the TimeZone /// Gets or sets the TimeZone
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public int TimeZone { get; set; } public int TimeZone { get; set; }
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the TimeZoneName /// Gets or sets the TimeZoneName
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string TimeZoneName { get; set; } public string TimeZoneName { get; set; }
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the IoControllerVersion /// Gets or sets the IoControllerVersion
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string IoControllerVersion { get; set; } public string IoControllerVersion { get; set; }
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the SnmpVersion /// Gets or sets the SnmpVersion
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string SnmpVersion { get; set; } public string SnmpVersion { get; set; }
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the BacnetVersion /// Gets or sets the BacnetVersion
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string BacnetVersion { get; set; } public string BacnetVersion { get; set; }
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the ControllerVersion /// Gets or sets the ControllerVersion
/// </summary> /// </summary>
[JsonProperty("timeZone", NullValueHandling = NullValueHandling.Ignore)]
public string ControllerVersion { get; set; } public string ControllerVersion { get; set; }
} }
} }

View File

@@ -23,7 +23,7 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// <summary> /// <summary>
/// SendFullStatus method /// SendFullStatus method
/// </summary> /// </summary>
public void SendFullStatus() public void SendFullStatus(string id = null)
{ {
var messageObj = new TwoWayDisplayBaseStateMessage var messageObj = new TwoWayDisplayBaseStateMessage
{ {
@@ -31,16 +31,17 @@ namespace PepperDash.Essentials.AppServer.Messengers
CurrentInput = _display.CurrentInputFeedback.StringValue CurrentInput = _display.CurrentInputFeedback.StringValue
}; };
PostStatusMessage(messageObj); PostStatusMessage(messageObj, id);
} }
protected override void RegisterActions() protected override void RegisterActions()
{ {
base.RegisterActions(); base.RegisterActions();
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/displayStatus", (id, content) => SendFullStatus(id));
//_display.PowerIsOnFeedback.OutputChange += PowerIsOnFeedbackOnOutputChange;
_display.CurrentInputFeedback.OutputChange += CurrentInputFeedbackOnOutputChange; _display.CurrentInputFeedback.OutputChange += CurrentInputFeedbackOnOutputChange;
_display.IsCoolingDownFeedback.OutputChange += IsCoolingFeedbackOnOutputChange; _display.IsCoolingDownFeedback.OutputChange += IsCoolingFeedbackOnOutputChange;
_display.IsWarmingUpFeedback.OutputChange += IsWarmingFeedbackOnOutputChange; _display.IsWarmingUpFeedback.OutputChange += IsWarmingFeedbackOnOutputChange;
@@ -55,16 +56,6 @@ namespace PepperDash.Essentials.AppServer.Messengers
); );
} }
//private void PowerIsOnFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
//{
// PostStatusMessage(JToken.FromObject(new
// {
// powerState = feedbackEventArgs.BoolValue
// })
// );
//}
private void IsWarmingFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs) private void IsWarmingFeedbackOnOutputChange(object sender, FeedbackEventArgs feedbackEventArgs)
{ {
PostStatusMessage(JToken.FromObject(new PostStatusMessage(JToken.FromObject(new
@@ -96,10 +87,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
//[JsonProperty("powerState", NullValueHandling = NullValueHandling.Ignore)] //[JsonProperty("powerState", NullValueHandling = NullValueHandling.Ignore)]
//public bool? PowerState { get; set; } //public bool? PowerState { get; set; }
[JsonProperty("currentInput", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CurrentInput /// Gets or sets the CurrentInput
/// </summary> /// </summary>
[JsonProperty("currentInput", NullValueHandling = NullValueHandling.Ignore)]
public string CurrentInput { get; set; } public string CurrentInput { get; set; }
} }
} }

View File

@@ -1,4 +1,8 @@
using Crestron.SimplSharp; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Crestron.SimplSharp;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
@@ -9,9 +13,6 @@ using PepperDash.Essentials.Devices.Common.Cameras;
using PepperDash.Essentials.Devices.Common.Codec; using PepperDash.Essentials.Devices.Common.Codec;
using PepperDash.Essentials.Devices.Common.VideoCodec; using PepperDash.Essentials.Devices.Common.VideoCodec;
using PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces; using PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Essentials.AppServer.Messengers namespace PepperDash.Essentials.AppServer.Messengers
{ {
@@ -151,7 +152,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
PostStatusMessage(state); PostStatusMessage(state);
SendFullStatus(); SendFullStatus();
} catch (Exception ex) }
catch (Exception ex)
{ {
this.LogError(ex, "Error sending codec ready status"); this.LogError(ex, "Error sending codec ready status");
} }
@@ -169,7 +171,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
AddAction("/isReady", (id, content) => SendIsReady()); AddAction("/isReady", (id, content) => SendIsReady());
AddAction("/fullStatus", (id, content) => SendFullStatus()); AddAction("/fullStatus", (id, content) => SendFullStatus(id));
AddAction("/codecStatus", (id, content) => SendFullStatus(id));
AddAction("/dial", (id, content) => AddAction("/dial", (id, content) =>
{ {
@@ -369,7 +372,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
PostStatusMessage(state); PostStatusMessage(state);
} catch (Exception ex) }
catch (Exception ex)
{ {
this.LogError(ex, "Error posting sharing source"); this.LogError(ex, "Error posting sharing source");
} }
@@ -385,7 +389,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
PostStatusMessage(state); PostStatusMessage(state);
} catch (Exception ex) }
catch (Exception ex)
{ {
this.LogError(ex, "Error posting sharing content"); this.LogError(ex, "Error posting sharing content");
} }
@@ -435,7 +440,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
{ {
MapCameraActions(); MapCameraActions();
PostSelectedCamera(); PostSelectedCamera();
} catch(Exception ex) }
catch (Exception ex)
{ {
this.LogError(ex, "Exception handling camera selected event"); this.LogError(ex, "Exception handling camera selected event");
} }
@@ -780,14 +786,14 @@ namespace PepperDash.Essentials.AppServer.Messengers
} }
} }
protected virtual void SendFullStatus() protected virtual void SendFullStatus(string id = null)
{ {
if (!Codec.IsReady) if (!Codec.IsReady)
{ {
return; return;
} }
CrestronInvoke.BeginInvoke((o) => PostStatusMessage(GetStatus())); Task.Run(() => PostStatusMessage(GetStatus(), id));
} }
private void PostReceivingContent(bool receivingContent) private void PostReceivingContent(bool receivingContent)
@@ -800,7 +806,8 @@ namespace PepperDash.Essentials.AppServer.Messengers
}; };
PostStatusMessage(state); PostStatusMessage(state);
} catch(Exception ex) }
catch (Exception ex)
{ {
this.LogError(ex, "Error posting receiving content"); this.LogError(ex, "Error posting receiving content");
} }
@@ -949,22 +956,25 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("cameraSupportsOffMode", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("cameraSupportsOffMode", NullValueHandling = NullValueHandling.Ignore)]
public bool? CameraSupportsOffMode { get; set; } public bool? CameraSupportsOffMode { get; set; }
[JsonProperty("currentDialString", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CurrentDialString /// Gets or sets the CurrentDialString
/// </summary> /// </summary>
[JsonProperty("currentDialString", NullValueHandling = NullValueHandling.Ignore)]
public string CurrentDialString { get; set; } public string CurrentDialString { get; set; }
[JsonProperty("currentDirectory", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CurrentDirectory /// Gets or sets the CurrentDirectory
/// </summary> /// </summary>
[JsonProperty("currentDirectory", NullValueHandling = NullValueHandling.Ignore)]
public CodecDirectory CurrentDirectory { get; set; } public CodecDirectory CurrentDirectory { get; set; }
[JsonProperty("directorySelectedFolderName", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DirectorySelectedFolderName /// Gets or sets the DirectorySelectedFolderName
/// </summary> /// </summary>
[JsonProperty("directorySelectedFolderName", NullValueHandling = NullValueHandling.Ignore)]
public string DirectorySelectedFolderName { get; set; } public string DirectorySelectedFolderName { get; set; }
[JsonProperty("hasCameras", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasCameras", NullValueHandling = NullValueHandling.Ignore)]
@@ -985,10 +995,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("initialPhonebookSyncComplete", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("initialPhonebookSyncComplete", NullValueHandling = NullValueHandling.Ignore)]
public bool? InitialPhonebookSyncComplete { get; set; } public bool? InitialPhonebookSyncComplete { get; set; }
[JsonProperty("info", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Info /// Gets or sets the Info
/// </summary> /// </summary>
[JsonProperty("info", NullValueHandling = NullValueHandling.Ignore)]
public VideoCodecInfo Info { get; set; } public VideoCodecInfo Info { get; set; }
[JsonProperty("isInCall", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isInCall", NullValueHandling = NullValueHandling.Ignore)]
@@ -1000,16 +1011,18 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("isZoomRoom", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isZoomRoom", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsZoomRoom { get; set; } public bool? IsZoomRoom { get; set; }
[JsonProperty("meetingInfo", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MeetingInfo /// Gets or sets the MeetingInfo
/// </summary> /// </summary>
[JsonProperty("meetingInfo", NullValueHandling = NullValueHandling.Ignore)]
public MeetingInfo MeetingInfo { get; set; } public MeetingInfo MeetingInfo { get; set; }
[JsonProperty("presets", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Presets /// Gets or sets the Presets
/// </summary> /// </summary>
[JsonProperty("presets", NullValueHandling = NullValueHandling.Ignore)]
public List<CodecRoomPreset> Presets { get; set; } public List<CodecRoomPreset> Presets { get; set; }
[JsonProperty("privacyModeIsOn", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("privacyModeIsOn", NullValueHandling = NullValueHandling.Ignore)]
@@ -1024,10 +1037,11 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("sharingContentIsOn", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("sharingContentIsOn", NullValueHandling = NullValueHandling.Ignore)]
public bool? SharingContentIsOn { get; set; } public bool? SharingContentIsOn { get; set; }
[JsonProperty("sharingSource", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the SharingSource /// Gets or sets the SharingSource
/// </summary> /// </summary>
[JsonProperty("sharingSource", NullValueHandling = NullValueHandling.Ignore)]
public string SharingSource { get; set; } public string SharingSource { get; set; }
[JsonProperty("showCamerasWhenNotInCall", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("showCamerasWhenNotInCall", NullValueHandling = NullValueHandling.Ignore)]
@@ -1057,23 +1071,26 @@ namespace PepperDash.Essentials.AppServer.Messengers
[JsonProperty("cameraOffSupported", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("cameraOffSupported", NullValueHandling = NullValueHandling.Ignore)]
public bool? CameraOffIsSupported { get; set; } public bool? CameraOffIsSupported { get; set; }
[JsonProperty("cameraMode", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CameraMode /// Gets or sets the CameraMode
/// </summary> /// </summary>
[JsonProperty("cameraMode", NullValueHandling = NullValueHandling.Ignore)]
public string CameraMode { get; set; } public string CameraMode { get; set; }
[JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Cameras /// Gets or sets the Cameras
/// </summary> /// </summary>
[JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)]
public List<CameraBase> Cameras { get; set; } public List<CameraBase> Cameras { get; set; }
[JsonProperty("selectedCamera", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the SelectedCamera /// Gets or sets the SelectedCamera
/// </summary> /// </summary>
public Camera SelectedCamera { get; set; } [JsonProperty("selectedCamera", NullValueHandling = NullValueHandling.Ignore)]
public Camera SelectedCamera { get; set; }
} }
/// <summary> /// <summary>
@@ -1081,25 +1098,28 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class Camera public class Camera
{ {
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Key /// Gets or sets the Key
/// </summary> /// </summary>
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
public string Key { get; set; } public string Key { get; set; }
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Name /// Gets or sets the Name
/// </summary> /// </summary>
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
public string Name { get; set; } public string Name { get; set; }
[JsonProperty("isFarEnd", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isFarEnd", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsFarEnd { get; set; } public bool? IsFarEnd { get; set; }
[JsonProperty("capabilities", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Capabilities /// Gets or sets the Capabilities
/// </summary> /// </summary>
[JsonProperty("capabilities", NullValueHandling = NullValueHandling.Ignore)]
public CameraCapabilities Capabilities { get; set; } public CameraCapabilities Capabilities { get; set; }
} }
@@ -1135,27 +1155,31 @@ namespace PepperDash.Essentials.AppServer.Messengers
/// </summary> /// </summary>
public class PasswordPromptEventMessage : VideoCodecBaseEventMessage public class PasswordPromptEventMessage : VideoCodecBaseEventMessage
{ {
[JsonProperty("message", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Message /// Gets or sets the Message
/// </summary> /// </summary>
[JsonProperty("message", NullValueHandling = NullValueHandling.Ignore)]
public string Message { get; set; } public string Message { get; set; }
[JsonProperty("lastAttemptWasIncorrect", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the LastAttemptWasIncorrect /// Gets or sets the LastAttemptWasIncorrect
/// </summary> /// </summary>
[JsonProperty("lastAttemptWasIncorrect", NullValueHandling = NullValueHandling.Ignore)]
public bool LastAttemptWasIncorrect { get; set; } public bool LastAttemptWasIncorrect { get; set; }
[JsonProperty("loginAttemptFailed", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the LoginAttemptFailed /// Gets or sets the LoginAttemptFailed
/// </summary> /// </summary>
[JsonProperty("loginAttemptFailed", NullValueHandling = NullValueHandling.Ignore)]
public bool LoginAttemptFailed { get; set; } public bool LoginAttemptFailed { get; set; }
[JsonProperty("loginAttemptCancelled", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the LoginAttemptCancelled /// Gets or sets the LoginAttemptCancelled
/// </summary> /// </summary>
[JsonProperty("loginAttemptCancelled", NullValueHandling = NullValueHandling.Ignore)]
public bool LoginAttemptCancelled { get; set; } public bool LoginAttemptCancelled { get; set; }
} }
} }

View File

@@ -7,16 +7,18 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class AuthorizationResponse public class AuthorizationResponse
{ {
[JsonProperty("authorized")]
/// <summary> /// <summary>
/// Gets or sets the Authorized /// Gets or sets the Authorized
/// </summary> /// </summary>
[JsonProperty("authorized")]
public bool Authorized { get; set; } public bool Authorized { get; set; }
[JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Reason /// Gets or sets the Reason
/// </summary> /// </summary>
[JsonProperty("reason", NullValueHandling = NullValueHandling.Ignore)]
public string Reason { get; set; } = null; public string Reason { get; set; } = null;
} }
@@ -25,10 +27,11 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class AuthorizationRequest public class AuthorizationRequest
{ {
[JsonProperty("grantCode")]
/// <summary> /// <summary>
/// Gets or sets the GrantCode /// Gets or sets the GrantCode
/// </summary> /// </summary>
[JsonProperty("grantCode")]
public string GrantCode { get; set; } public string GrantCode { get; set; }
} }
} }

View File

@@ -1,6 +1,6 @@
using Newtonsoft.Json; using System.Collections.Generic;
using Newtonsoft.Json;
using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.Config;
using System.Collections.Generic;
namespace PepperDash.Essentials namespace PepperDash.Essentials
@@ -39,10 +39,11 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class MobileControlRuntimeInfo public class MobileControlRuntimeInfo
{ {
[JsonProperty("pluginVersion")]
/// <summary> /// <summary>
/// Gets or sets the PluginVersion /// Gets or sets the PluginVersion
/// </summary> /// </summary>
[JsonProperty("pluginVersion")]
public string PluginVersion { get; set; } public string PluginVersion { get; set; }
[JsonProperty("essentialsVersion")] [JsonProperty("essentialsVersion")]
@@ -51,10 +52,11 @@ namespace PepperDash.Essentials
[JsonProperty("pepperDashCoreVersion")] [JsonProperty("pepperDashCoreVersion")]
public string PepperDashCoreVersion { get; set; } public string PepperDashCoreVersion { get; set; }
[JsonProperty("essentialsPlugins")]
/// <summary> /// <summary>
/// Gets or sets the EssentialsPlugins /// Gets or sets the EssentialsPlugins
/// </summary> /// </summary>
[JsonProperty("essentialsPlugins")]
public List<LoadedAssembly> EssentialsPlugins { get; set; } public List<LoadedAssembly> EssentialsPlugins { get; set; }
} }
} }

View File

@@ -244,7 +244,7 @@ namespace PepperDash.Essentials
CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment.ProgramStatusEventHandler +=
CrestronEnvironment_ProgramStatusEventHandler; CrestronEnvironment_ProgramStatusEventHandler;
ApiOnlineAndAuthorized = new BoolFeedback(() => ApiOnlineAndAuthorized = new BoolFeedback("apiOnlineAndAuthorized", () =>
{ {
if (_wsClient2 == null) if (_wsClient2 == null)
return false; return false;
@@ -1484,7 +1484,7 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// Adds an action to the dictionary /// Adds an action to the dictionary
/// </summary> /// </summary>
/// <param name="key">The path of the API command</param> /// <param name="messenger">The messenger for the API command</param>
/// <param name="action">The action to be triggered by the commmand</param> /// <param name="action">The action to be triggered by the commmand</param>
public void AddAction<T>(T messenger, Action<string, string, JToken> action) public void AddAction<T>(T messenger, Action<string, string, JToken> action)
where T : IMobileControlMessenger where T : IMobileControlMessenger

View File

@@ -1,4 +1,7 @@
using Newtonsoft.Json; using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters; using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using PepperDash.Core; using PepperDash.Core;
@@ -17,9 +20,6 @@ using PepperDash.Essentials.Devices.Common.Room;
using PepperDash.Essentials.Devices.Common.VideoCodec; using PepperDash.Essentials.Devices.Common.VideoCodec;
using PepperDash.Essentials.Room.Config; using PepperDash.Essentials.Room.Config;
using PepperDash.Essentials.WebSocketServer; using PepperDash.Essentials.WebSocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using IShades = PepperDash.Essentials.Core.Shades.IShades; using IShades = PepperDash.Essentials.Core.Shades.IShades;
using ShadeBase = PepperDash.Essentials.Devices.Common.Shades.ShadeBase; using ShadeBase = PepperDash.Essentials.Devices.Common.Shades.ShadeBase;
@@ -485,6 +485,7 @@ namespace PepperDash.Essentials.RoomBridges
/// Sends the full status of the room to the server /// Sends the full status of the room to the server
/// </summary> /// </summary>
/// <param name="room"></param> /// <param name="room"></param>
/// <param name="id"></param>
private void SendFullStatusForClientId(string id, IEssentialsRoom room) private void SendFullStatusForClientId(string id, IEssentialsRoom room)
{ {
//Parent.SendMessageObject(GetFullStatus(room)); //Parent.SendMessageObject(GetFullStatus(room));
@@ -554,6 +555,7 @@ namespace PepperDash.Essentials.RoomBridges
/// <summary> /// <summary>
/// Determines the configuration of the room and the details about the devices associated with the room /// Determines the configuration of the room and the details about the devices associated with the room
/// </summary>
/// <param name="room"></param> /// <param name="room"></param>
/// <returns></returns> /// <returns></returns>
private RoomConfiguration GetRoomConfiguration(IEssentialsRoom room) private RoomConfiguration GetRoomConfiguration(IEssentialsRoom room)
@@ -798,31 +800,38 @@ namespace PepperDash.Essentials.RoomBridges
/// </summary> /// </summary>
public class RoomStateMessage : DeviceStateMessageBase public class RoomStateMessage : DeviceStateMessageBase
{ {
[JsonProperty("configuration", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Configuration /// Gets or sets the Configuration
/// </summary> /// </summary>
[JsonProperty("configuration", NullValueHandling = NullValueHandling.Ignore)]
public RoomConfiguration Configuration { get; set; } public RoomConfiguration Configuration { get; set; }
[JsonProperty("activityMode", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("activityMode", NullValueHandling = NullValueHandling.Ignore)]
public int? ActivityMode { get; set; } public int? ActivityMode { get; set; }
[JsonProperty("advancedSharingActive", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("advancedSharingActive", NullValueHandling = NullValueHandling.Ignore)]
public bool? AdvancedSharingActive { get; set; } public bool? AdvancedSharingActive { get; set; }
[JsonProperty("isOn", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isOn", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsOn { get; set; } public bool? IsOn { get; set; }
[JsonProperty("isWarmingUp", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isWarmingUp", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsWarmingUp { get; set; } public bool? IsWarmingUp { get; set; }
[JsonProperty("isCoolingDown", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isCoolingDown", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsCoolingDown { get; set; } public bool? IsCoolingDown { get; set; }
[JsonProperty("selectedSourceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the SelectedSourceKey /// Gets or sets the SelectedSourceKey
/// </summary> /// </summary>
[JsonProperty("selectedSourceKey", NullValueHandling = NullValueHandling.Ignore)]
public string SelectedSourceKey { get; set; } public string SelectedSourceKey { get; set; }
[JsonProperty("share", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Share /// Gets or sets the Share
/// </summary> /// </summary>
[JsonProperty("share", NullValueHandling = NullValueHandling.Ignore)]
public ShareState Share { get; set; } public ShareState Share { get; set; }
[JsonProperty("volumes", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("volumes", NullValueHandling = NullValueHandling.Ignore)]
@@ -837,13 +846,16 @@ namespace PepperDash.Essentials.RoomBridges
/// </summary> /// </summary>
public class ShareState public class ShareState
{ {
[JsonProperty("currentShareText", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CurrentShareText /// Gets or sets the CurrentShareText
/// </summary> /// </summary>
[JsonProperty("currentShareText", NullValueHandling = NullValueHandling.Ignore)]
public string CurrentShareText { get; set; } public string CurrentShareText { get; set; }
[JsonProperty("enabled", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("enabled", NullValueHandling = NullValueHandling.Ignore)]
public bool? Enabled { get; set; } public bool? Enabled { get; set; }
[JsonProperty("isSharing", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("isSharing", NullValueHandling = NullValueHandling.Ignore)]
public bool? IsSharing { get; set; } public bool? IsSharing { get; set; }
} }
@@ -853,131 +865,156 @@ namespace PepperDash.Essentials.RoomBridges
/// </summary> /// </summary>
public class RoomConfiguration public class RoomConfiguration
{ {
//[JsonProperty("shutdownPromptSeconds", NullValueHandling = NullValueHandling.Ignore)]
//public int? ShutdownPromptSeconds { get; set; }
[JsonProperty("hasVideoConferencing", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasVideoConferencing", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasVideoConferencing { get; set; } public bool? HasVideoConferencing { get; set; }
[JsonProperty("videoCodecIsZoomRoom", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("videoCodecIsZoomRoom", NullValueHandling = NullValueHandling.Ignore)]
public bool? VideoCodecIsZoomRoom { get; set; } public bool? VideoCodecIsZoomRoom { get; set; }
[JsonProperty("hasAudioConferencing", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasAudioConferencing", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasAudioConferencing { get; set; } public bool? HasAudioConferencing { get; set; }
[JsonProperty("hasEnvironmentalControls", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasEnvironmentalControls", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasEnvironmentalControls { get; set; } public bool? HasEnvironmentalControls { get; set; }
[JsonProperty("hasCameraControls", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasCameraControls", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasCameraControls { get; set; } public bool? HasCameraControls { get; set; }
[JsonProperty("hasSetTopBoxControls", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasSetTopBoxControls", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasSetTopBoxControls { get; set; } public bool? HasSetTopBoxControls { get; set; }
[JsonProperty("hasRoutingControls", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasRoutingControls", NullValueHandling = NullValueHandling.Ignore)]
public bool? HasRoutingControls { get; set; } public bool? HasRoutingControls { get; set; }
[JsonProperty("touchpanelKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the TouchpanelKeys /// Gets or sets the TouchpanelKeys
/// </summary> /// </summary>
[JsonProperty("touchpanelKeys", NullValueHandling = NullValueHandling.Ignore)]
public List<string> TouchpanelKeys { get; set; } public List<string> TouchpanelKeys { get; set; }
[JsonProperty("zoomRoomControllerKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the ZoomRoomControllerKey /// Gets or sets the ZoomRoomControllerKey
/// </summary> /// </summary>
[JsonProperty("zoomRoomControllerKey", NullValueHandling = NullValueHandling.Ignore)]
public string ZoomRoomControllerKey { get; set; } public string ZoomRoomControllerKey { get; set; }
[JsonProperty("ciscoNavigatorKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the CiscoNavigatorKey /// Gets or sets the CiscoNavigatorKey
/// </summary> /// </summary>
[JsonProperty("ciscoNavigatorKey", NullValueHandling = NullValueHandling.Ignore)]
public string CiscoNavigatorKey { get; set; } public string CiscoNavigatorKey { get; set; }
[JsonProperty("videoCodecKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the VideoCodecKey /// Gets or sets the VideoCodecKey
/// </summary> /// </summary>
[JsonProperty("videoCodecKey", NullValueHandling = NullValueHandling.Ignore)]
public string VideoCodecKey { get; set; } public string VideoCodecKey { get; set; }
[JsonProperty("audioCodecKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the AudioCodecKey /// Gets or sets the AudioCodecKey
/// </summary> /// </summary>
[JsonProperty("audioCodecKey", NullValueHandling = NullValueHandling.Ignore)]
public string AudioCodecKey { get; set; } public string AudioCodecKey { get; set; }
[JsonProperty("matrixRoutingKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MatrixRoutingKey /// Gets or sets the MatrixRoutingKey
/// </summary> /// </summary>
[JsonProperty("matrixRoutingKey", NullValueHandling = NullValueHandling.Ignore)]
public string MatrixRoutingKey { get; set; } public string MatrixRoutingKey { get; set; }
[JsonProperty("endpointKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the EndpointKeys /// Gets or sets the EndpointKeys
/// </summary> /// </summary>
[JsonProperty("endpointKeys", NullValueHandling = NullValueHandling.Ignore)]
public List<string> EndpointKeys { get; set; } public List<string> EndpointKeys { get; set; }
[JsonProperty("accessoryDeviceKeys", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the AccessoryDeviceKeys /// Gets or sets the AccessoryDeviceKeys
/// </summary> /// </summary>
[JsonProperty("accessoryDeviceKeys", NullValueHandling = NullValueHandling.Ignore)]
public List<string> AccessoryDeviceKeys { get; set; } public List<string> AccessoryDeviceKeys { get; set; }
[JsonProperty("defaultDisplayKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DefaultDisplayKey /// Gets or sets the DefaultDisplayKey
/// </summary> /// </summary>
[JsonProperty("defaultDisplayKey", NullValueHandling = NullValueHandling.Ignore)]
public string DefaultDisplayKey { get; set; } public string DefaultDisplayKey { get; set; }
[JsonProperty("destinations", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("destinations", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<eSourceListItemDestinationTypes, string> Destinations { get; set; } public Dictionary<eSourceListItemDestinationTypes, string> Destinations { get; set; }
[JsonProperty("environmentalDevices", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the EnvironmentalDevices /// Gets or sets the EnvironmentalDevices
/// </summary> /// </summary>
[JsonProperty("environmentalDevices", NullValueHandling = NullValueHandling.Ignore)]
public List<EnvironmentalDeviceConfiguration> EnvironmentalDevices { get; set; } public List<EnvironmentalDeviceConfiguration> EnvironmentalDevices { get; set; }
[JsonProperty("sourceList", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("sourceList", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, SourceListItem> SourceList { get; set; } public Dictionary<string, SourceListItem> SourceList { get; set; }
[JsonProperty("destinationList", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("destinationList", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, DestinationListItem> DestinationList { get; set; } public Dictionary<string, DestinationListItem> DestinationList { get; set; }
[JsonProperty("audioControlPointList", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the AudioControlPointList /// Gets or sets the AudioControlPointList
/// </summary> /// </summary>
[JsonProperty("audioControlPointList", NullValueHandling = NullValueHandling.Ignore)]
public AudioControlPointListItem AudioControlPointList { get; set; } public AudioControlPointListItem AudioControlPointList { get; set; }
[JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("cameraList", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, CameraListItem> CameraList { get; set; } public Dictionary<string, CameraListItem> CameraList { get; set; }
[JsonProperty("defaultPresentationSourceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DefaultPresentationSourceKey /// Gets or sets the DefaultPresentationSourceKey
/// </summary> /// </summary>
[JsonProperty("defaultPresentationSourceKey", NullValueHandling = NullValueHandling.Ignore)]
public string DefaultPresentationSourceKey { get; set; } public string DefaultPresentationSourceKey { get; set; }
[JsonProperty("helpMessage", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the HelpMessage /// Gets or sets the HelpMessage
/// </summary> /// </summary>
[JsonProperty("helpMessage", NullValueHandling = NullValueHandling.Ignore)]
public string HelpMessage { get; set; } public string HelpMessage { get; set; }
[JsonProperty("techPassword", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the TechPassword /// Gets or sets the TechPassword
/// </summary> /// </summary>
[JsonProperty("techPassword", NullValueHandling = NullValueHandling.Ignore)]
public string TechPassword { get; set; } public string TechPassword { get; set; }
[JsonProperty("uiBehavior", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the UiBehavior /// Gets or sets the UiBehavior
/// </summary> /// </summary>
[JsonProperty("uiBehavior", NullValueHandling = NullValueHandling.Ignore)]
public EssentialsRoomUiBehaviorConfig UiBehavior { get; set; } public EssentialsRoomUiBehaviorConfig UiBehavior { get; set; }
[JsonProperty("supportsAdvancedSharing", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("supportsAdvancedSharing", NullValueHandling = NullValueHandling.Ignore)]
public bool? SupportsAdvancedSharing { get; set; } public bool? SupportsAdvancedSharing { get; set; }
[JsonProperty("userCanChangeShareMode", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("userCanChangeShareMode", NullValueHandling = NullValueHandling.Ignore)]
public bool? UserCanChangeShareMode { get; set; } public bool? UserCanChangeShareMode { get; set; }
[JsonProperty("roomCombinerKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the RoomCombinerKey /// Gets or sets the RoomCombinerKey
/// </summary> /// </summary>
[JsonProperty("roomCombinerKey", NullValueHandling = NullValueHandling.Ignore)]
public string RoomCombinerKey { get; set; } public string RoomCombinerKey { get; set; }
public RoomConfiguration() public RoomConfiguration()
@@ -994,17 +1031,19 @@ namespace PepperDash.Essentials.RoomBridges
/// </summary> /// </summary>
public class EnvironmentalDeviceConfiguration public class EnvironmentalDeviceConfiguration
{ {
[JsonProperty("deviceKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DeviceKey /// Gets or sets the DeviceKey
/// </summary> /// </summary>
[JsonProperty("deviceKey", NullValueHandling = NullValueHandling.Ignore)]
public string DeviceKey { get; private set; } public string DeviceKey { get; private set; }
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("deviceType", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the DeviceType /// Gets or sets the DeviceType
/// </summary> /// </summary>
[JsonConverter(typeof(StringEnumConverter))]
[JsonProperty("deviceType", NullValueHandling = NullValueHandling.Ignore)]
public eEnvironmentalDeviceTypes DeviceType { get; private set; } public eEnvironmentalDeviceTypes DeviceType { get; private set; }
public EnvironmentalDeviceConfiguration(string key, eEnvironmentalDeviceTypes type) public EnvironmentalDeviceConfiguration(string key, eEnvironmentalDeviceTypes type)
@@ -1031,57 +1070,18 @@ namespace PepperDash.Essentials.RoomBridges
/// </summary> /// </summary>
public class ApiTouchPanelToken public class ApiTouchPanelToken
{ {
[JsonProperty("touchPanels", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the TouchPanels /// Gets or sets the TouchPanels
/// </summary> /// </summary>
[JsonProperty("touchPanels", NullValueHandling = NullValueHandling.Ignore)]
public List<JoinToken> TouchPanels { get; set; } = new List<JoinToken>(); public List<JoinToken> TouchPanels { get; set; } = new List<JoinToken>();
[JsonProperty("userAppUrl", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the UserAppUrl /// Gets or sets the UserAppUrl
/// </summary> /// </summary>
[JsonProperty("userAppUrl", NullValueHandling = NullValueHandling.Ignore)]
public string UserAppUrl { get; set; } = ""; public string UserAppUrl { get; set; } = "";
} }
#if SERIES3
/// <summary>
/// Represents a SourceSelectMessageContent
/// </summary>
public class SourceSelectMessageContent
{
/// <summary>
/// Gets or sets the SourceListItem
/// </summary>
public string SourceListItem { get; set; }
/// <summary>
/// Gets or sets the SourceListKey
/// </summary>
public string SourceListKey { get; set; }
}
/// <summary>
/// Represents a DirectRoute
/// </summary>
public class DirectRoute
{
/// <summary>
/// Gets or sets the SourceKey
/// </summary>
public string SourceKey { get; set; }
/// <summary>
/// Gets or sets the DestinationKey
/// </summary>
public string DestinationKey { get; set; }
}
/// <summary>
///
/// </summary>
/// <param name="b"></param>
/// <summary>
/// Delegate for PressAndHoldAction
/// </summary>
public delegate void PressAndHoldAction(bool b);
#endif
} }

View File

@@ -8,28 +8,32 @@ namespace PepperDash.Essentials.Touchpanel
/// </summary> /// </summary>
public class MobileControlTouchpanelProperties : CrestronTouchpanelPropertiesConfig public class MobileControlTouchpanelProperties : CrestronTouchpanelPropertiesConfig
{ {
[JsonProperty("useDirectServer")]
/// <summary> /// <summary>
/// Gets or sets the UseDirectServer /// Gets or sets the UseDirectServer
/// </summary> /// </summary>
[JsonProperty("useDirectServer")]
public bool UseDirectServer { get; set; } = false; public bool UseDirectServer { get; set; } = false;
[JsonProperty("zoomRoomController")]
/// <summary> /// <summary>
/// Gets or sets the ZoomRoomController /// Gets or sets the ZoomRoomController
/// </summary> /// </summary>
[JsonProperty("zoomRoomController")]
public bool ZoomRoomController { get; set; } = false; public bool ZoomRoomController { get; set; } = false;
[JsonProperty("buttonToolbarTimeoutInS")]
/// <summary> /// <summary>
/// Gets or sets the ButtonToolbarTimoutInS /// Gets or sets the ButtonToolbarTimoutInS
/// </summary> /// </summary>
[JsonProperty("buttonToolbarTimeoutInS")]
public ushort ButtonToolbarTimoutInS { get; set; } = 0; public ushort ButtonToolbarTimoutInS { get; set; } = 0;
[JsonProperty("theme")]
/// <summary> /// <summary>
/// Gets or sets the Theme /// Gets or sets the Theme
/// </summary> /// </summary>
[JsonProperty("theme")]
public string Theme { get; set; } = "light"; public string Theme { get; set; } = "light";
} }
} }

View File

@@ -42,10 +42,11 @@ namespace PepperDash.Essentials.Touchpanel
/// </summary> /// </summary>
public class ThemeUpdateMessage : DeviceStateMessageBase public class ThemeUpdateMessage : DeviceStateMessageBase
{ {
[JsonProperty("theme")]
/// <summary> /// <summary>
/// Gets or sets the Theme /// Gets or sets the Theme
/// </summary> /// </summary>
[JsonProperty("theme")]
public string Theme { get; set; } public string Theme { get; set; }
} }
} }

View File

@@ -7,16 +7,18 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class UserCodeChangedContent public class UserCodeChangedContent
{ {
[JsonProperty("userCode")]
/// <summary> /// <summary>
/// Gets or sets the UserCode /// Gets or sets the UserCode
/// </summary> /// </summary>
[JsonProperty("userCode")]
public string UserCode { get; set; } public string UserCode { get; set; }
[JsonProperty("qrChecksum", NullValueHandling = NullValueHandling.Include)]
/// <summary> /// <summary>
/// Gets or sets the QrChecksum /// Gets or sets the QrChecksum
/// </summary> /// </summary>
[JsonProperty("qrChecksum", NullValueHandling = NullValueHandling.Include)]
public string QrChecksum { get; set; } public string QrChecksum { get; set; }
} }
} }

View File

@@ -1,5 +1,5 @@
using Newtonsoft.Json; using System.Collections.Generic;
using System.Collections.Generic; using Newtonsoft.Json;
namespace PepperDash.Essentials namespace PepperDash.Essentials
{ {
@@ -8,10 +8,11 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class Volumes public class Volumes
{ {
[JsonProperty("master", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Master /// Gets or sets the Master
/// </summary> /// </summary>
[JsonProperty("master", NullValueHandling = NullValueHandling.Ignore)]
public Volume Master { get; set; } public Volume Master { get; set; }
[JsonProperty("auxFaders", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("auxFaders", NullValueHandling = NullValueHandling.Ignore)]
@@ -30,10 +31,11 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class Volume public class Volume
{ {
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Key /// Gets or sets the Key
/// </summary> /// </summary>
[JsonProperty("key", NullValueHandling = NullValueHandling.Ignore)]
public string Key { get; set; } public string Key { get; set; }
[JsonProperty("level", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("level", NullValueHandling = NullValueHandling.Ignore)]
@@ -42,10 +44,11 @@ namespace PepperDash.Essentials
[JsonProperty("muted", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("muted", NullValueHandling = NullValueHandling.Ignore)]
public bool? Muted { get; set; } public bool? Muted { get; set; }
[JsonProperty("label", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Label /// Gets or sets the Label
/// </summary> /// </summary>
[JsonProperty("label", NullValueHandling = NullValueHandling.Ignore)]
public string Label { get; set; } public string Label { get; set; }
[JsonProperty("hasMute", NullValueHandling = NullValueHandling.Ignore)] [JsonProperty("hasMute", NullValueHandling = NullValueHandling.Ignore)]
@@ -58,10 +61,11 @@ namespace PepperDash.Essentials
public bool? PrivacyMuted { get; set; } public bool? PrivacyMuted { get; set; }
[JsonProperty("muteIcon", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the MuteIcon /// Gets or sets the MuteIcon
/// </summary> /// </summary>
[JsonProperty("muteIcon", NullValueHandling = NullValueHandling.Ignore)]
public string MuteIcon { get; set; } public string MuteIcon { get; set; }
public Volume(string key, int level, bool muted, string label, bool hasMute, string muteIcon) public Volume(string key, int level, bool muted, string label, bool hasMute, string muteIcon)

View File

@@ -1,8 +1,8 @@
using Crestron.SimplSharp.WebScripting; using System.Collections.Generic;
using System.Linq;
using Crestron.SimplSharp.WebScripting;
using Newtonsoft.Json; using Newtonsoft.Json;
using PepperDash.Core.Web.RequestHandlers; using PepperDash.Core.Web.RequestHandlers;
using System.Collections.Generic;
using System.Linq;
namespace PepperDash.Essentials.WebApiHandlers namespace PepperDash.Essentials.WebApiHandlers
{ {
@@ -51,16 +51,18 @@ namespace PepperDash.Essentials.WebApiHandlers
/// </summary> /// </summary>
public class ActionPath public class ActionPath
{ {
[JsonProperty("messengerKey")]
/// <summary> /// <summary>
/// Gets or sets the MessengerKey /// Gets or sets the MessengerKey
/// </summary> /// </summary>
[JsonProperty("messengerKey")]
public string MessengerKey { get; set; } public string MessengerKey { get; set; }
[JsonProperty("path")]
/// <summary> /// <summary>
/// Gets or sets the Path /// Gets or sets the Path
/// </summary> /// </summary>
[JsonProperty("path")]
public string Path { get; set; } public string Path { get; set; }
} }
} }

View File

@@ -148,22 +148,25 @@ namespace PepperDash.Essentials.WebApiHandlers
/// </summary> /// </summary>
public class ClientRequest public class ClientRequest
{ {
[JsonProperty("roomKey", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the RoomKey /// Gets or sets the RoomKey
/// </summary> /// </summary>
[JsonProperty("roomKey", NullValueHandling = NullValueHandling.Ignore)]
public string RoomKey { get; set; } public string RoomKey { get; set; }
[JsonProperty("grantCode", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the GrantCode /// Gets or sets the GrantCode
/// </summary> /// </summary>
[JsonProperty("grantCode", NullValueHandling = NullValueHandling.Ignore)]
public string GrantCode { get; set; } public string GrantCode { get; set; }
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Token /// Gets or sets the Token
/// </summary> /// </summary>
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
public string Token { get; set; } public string Token { get; set; }
} }
@@ -172,22 +175,25 @@ namespace PepperDash.Essentials.WebApiHandlers
/// </summary> /// </summary>
public class ClientResponse public class ClientResponse
{ {
[JsonProperty("error", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Error /// Gets or sets the Error
/// </summary> /// </summary>
[JsonProperty("error", NullValueHandling = NullValueHandling.Ignore)]
public string Error { get; set; } public string Error { get; set; }
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Token /// Gets or sets the Token
/// </summary> /// </summary>
[JsonProperty("token", NullValueHandling = NullValueHandling.Ignore)]
public string Token { get; set; } public string Token { get; set; }
[JsonProperty("path", NullValueHandling = NullValueHandling.Ignore)]
/// <summary> /// <summary>
/// Gets or sets the Path /// Gets or sets the Path
/// </summary> /// </summary>
[JsonProperty("path", NullValueHandling = NullValueHandling.Ignore)]
public string Path { get; set; } public string Path { get; set; }
} }
} }

View File

@@ -1334,10 +1334,11 @@ namespace PepperDash.Essentials.WebSocketServer
/// </summary> /// </summary>
public class JoinResponse public class JoinResponse
{ {
[JsonProperty("clientId")]
/// <summary> /// <summary>
/// Gets or sets the ClientId /// Gets or sets the ClientId
/// </summary> /// </summary>
[JsonProperty("clientId")]
public string ClientId { get; set; } public string ClientId { get; set; }
[JsonProperty("roomKey")] [JsonProperty("roomKey")]
@@ -1346,40 +1347,46 @@ namespace PepperDash.Essentials.WebSocketServer
[JsonProperty("systemUUid")] [JsonProperty("systemUUid")]
public string SystemUuid { get; set; } public string SystemUuid { get; set; }
[JsonProperty("roomUUid")]
/// <summary> /// <summary>
/// Gets or sets the RoomUuid /// Gets or sets the RoomUuid
/// </summary> /// </summary>
[JsonProperty("roomUUid")]
public string RoomUuid { get; set; } public string RoomUuid { get; set; }
[JsonProperty("config")]
/// <summary> /// <summary>
/// Gets or sets the Config /// Gets or sets the Config
/// </summary> /// </summary>
[JsonProperty("config")]
public object Config { get; set; } public object Config { get; set; }
[JsonProperty("codeExpires")]
/// <summary> /// <summary>
/// Gets or sets the CodeExpires /// Gets or sets the CodeExpires
/// </summary> /// </summary>
[JsonProperty("codeExpires")]
public DateTime CodeExpires { get; set; } public DateTime CodeExpires { get; set; }
[JsonProperty("userCode")]
/// <summary> /// <summary>
/// Gets or sets the UserCode /// Gets or sets the UserCode
/// </summary> /// </summary>
[JsonProperty("userCode")]
public string UserCode { get; set; } public string UserCode { get; set; }
[JsonProperty("userAppUrl")]
/// <summary> /// <summary>
/// Gets or sets the UserAppUrl /// Gets or sets the UserAppUrl
/// </summary> /// </summary>
[JsonProperty("userAppUrl")]
public string UserAppUrl { get; set; } public string UserAppUrl { get; set; }
[JsonProperty("enableDebug")]
/// <summary> /// <summary>
/// Gets or sets the EnableDebug /// Gets or sets the EnableDebug
/// </summary> /// </summary>
[JsonProperty("enableDebug")]
public bool EnableDebug { get; set; } public bool EnableDebug { get; set; }
} }
} }