diff --git a/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials.csproj
index a238a4e8..f752ab0a 100644
--- a/PepperDashEssentials/PepperDashEssentials.csproj
+++ b/PepperDashEssentials/PepperDashEssentials.csproj
@@ -108,6 +108,7 @@
+
diff --git a/PepperDashEssentials/Room/Config/EssentialsHuddleRoomPropertiesConfig.cs b/PepperDashEssentials/Room/Config/EssentialsHuddleRoomPropertiesConfig.cs
index 2044484d..528436d6 100644
--- a/PepperDashEssentials/Room/Config/EssentialsHuddleRoomPropertiesConfig.cs
+++ b/PepperDashEssentials/Room/Config/EssentialsHuddleRoomPropertiesConfig.cs
@@ -4,6 +4,10 @@ using System.Linq;
using System.Text;
using Crestron.SimplSharp;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using Newtonsoft.Json.Linq;
+
namespace PepperDash.Essentials.Room.Config
{
///
@@ -11,9 +15,28 @@ namespace PepperDash.Essentials.Room.Config
///
public class EssentialsHuddleRoomPropertiesConfig : EssentialsRoomPropertiesConfig
{
+ ///
+ /// The key of the default display device
+ ///
+ [JsonProperty("defaultDisplayKey")]
public string DefaultDisplayKey { get; set; }
+
+ ///
+ /// The key of the default audio device
+ ///
+ [JsonProperty("defaultAudioKey")]
public string DefaultAudioKey { get; set; }
+
+ ///
+ /// The key of the source list for the room
+ ///
+ [JsonProperty("sourceListKey")]
public string SourceListKey { get; set; }
+
+ ///
+ /// The key of the default source item from the source list
+ ///
+ [JsonProperty("defaultSourceItem")]
public string DefaultSourceItem { get; set; }
}
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/SourceListItem.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/SourceListItem.cs
index efa2b2ad..601d75a7 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/SourceListItem.cs
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Devices/SourceListItem.cs
@@ -67,36 +67,68 @@ namespace PepperDash.Essentials.Core
[JsonProperty("name")]
public string Name { get; set; }
+ ///
+ /// Specifies and icon for the source list item
+ ///
[JsonProperty("icon")]
public string Icon { get; set; }
+ ///
+ /// Alternate icon
+ ///
[JsonProperty("altIcon")]
public string AltIcon { get; set; }
+ ///
+ /// Indicates if the item should be included in the source list
+ ///
[JsonProperty("includeInSourceList")]
public bool IncludeInSourceList { get; set; }
+ ///
+ /// Used to specify the order of the items in the source list when displayed
+ ///
[JsonProperty("order")]
public int Order { get; set; }
+ ///
+ /// The key of the device for volume control
+ ///
[JsonProperty("volumeControlKey")]
public string VolumeControlKey { get; set; }
+ ///
+ /// The type of source list item
+ ///
[JsonProperty("type")]
[JsonConverter(typeof(StringEnumConverter))]
public eSourceListItemType Type { get; set; }
+ ///
+ /// The list of routes to execute for this source list item
+ ///
[JsonProperty("routeList")]
public List RouteList { get; set; }
+ ///
+ /// Indicates if this source should be disabled for sharing to the far end call participants via codec content
+ ///
[JsonProperty("disableCodecSharing")]
public bool DisableCodecSharing { get; set; }
+ ///
+ /// Indicates if this source should be disabled for routing to a shared output
+ ///
[JsonProperty("disableRoutedSharing")]
public bool DisableRoutedSharing { get; set; }
[JsonProperty("destinations")]
public List Destinations { get; set; }
+ ///
+ /// A means to reference a source list for this source item, in the event that this source has an input that can have sources routed to it
+ ///
+ [JsonProperty("sourceListKey")]
+ public string SourceListKey { get; set; }
public SourceListItem()
{
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
index 7c3cd563..ea0a189b 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
@@ -147,6 +147,7 @@
+
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraBase.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraBase.cs
index 8a7dcf03..079338e1 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraBase.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraBase.cs
@@ -2,13 +2,16 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using Crestron.SimplSharp;
-using PepperDash.Core;
-using PepperDash.Essentials.Core;
-using PepperDash.Essentials.Devices.Common.Codec;
using System.Text.RegularExpressions;
+using Crestron.SimplSharp;
using Crestron.SimplSharp.Reflection;
+using PepperDash.Core;
+using PepperDash.Essentials.Core;
+using PepperDash.Essentials.Core.Presets;
+using PepperDash.Essentials.Devices.Common.Codec;
+
+using Newtonsoft.Json;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
@@ -21,8 +24,16 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
Focus = 8
}
- public abstract class CameraBase : Device
+ public abstract class CameraBase : Device, IRoutingOutputs
{
+ public eCameraControlMode ControlMode { get; protected set; }
+
+ #region IRoutingOutputs Members
+
+ public RoutingPortCollection OutputPorts { get; protected set; }
+
+ #endregion
+
public bool CanPan
{
get
@@ -59,14 +70,36 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
protected eCameraCapabilities Capabilities { get; set; }
public CameraBase(string key, string name) :
- base(key, name) { }
+ base(key, name)
+ {
+ OutputPorts = new RoutingPortCollection();
+
+ ControlMode = eCameraControlMode.Manual;
+ }
}
+ public class CameraPreset : PresetBase
+ {
+ public CameraPreset(int id, string description, bool def, bool isDef)
+ : base(id, description, def, isDef)
+ {
+
+ }
+ }
+
public class CameraPropertiesConfig
{
public CommunicationMonitorConfig CommunicationMonitorProperties { get; set; }
public ControlPropertiesConfig Control { get; set; }
+ [JsonProperty("supportsAutoMode")]
+ public bool SupportsAutoMode { get; set; }
+
+ [JsonProperty("supportsOffMode")]
+ public bool SupportsOffMode { get; set; }
+
+ [JsonProperty("presets")]
+ public List Presets { get; set; }
}
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraControl.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraControl.cs
index b17bd325..43788336 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraControl.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraControl.cs
@@ -9,9 +9,9 @@ using PepperDash.Essentials.Core;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
public enum eCameraControlMode
- {
- Off = 0,
- Manual,
+ {
+ Manual = 0,
+ Off,
Auto
}
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraVisca.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraVisca.cs
index 182b560c..bcf6a4f9 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraVisca.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Cameras/CameraVisca.cs
@@ -11,7 +11,7 @@ using Crestron.SimplSharp.Reflection;
namespace PepperDash.Essentials.Devices.Common.Cameras
{
- public class CameraVisca : CameraBase, IHasCameraPtzControl, ICommunicationMonitor
+ public class CameraVisca : CameraBase, IHasCameraPtzControl, ICommunicationMonitor, IHasCameraPresets
{
public IBasicCommunication Communication { get; private set; }
public CommunicationGather PortGather { get; private set; }
@@ -25,11 +25,14 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
public bool PowerIsOn { get; private set; }
byte[] IncomingBuffer = new byte[] { };
- public BoolFeedback PowerIsOnFeedback { get; private set; }
+ public BoolFeedback PowerIsOnFeedback { get; private set; }
public CameraVisca(string key, string name, IBasicCommunication comm, CameraPropertiesConfig props) :
base(key, name)
{
+ Presets = props.Presets;
+
+ OutputPorts.Add(new RoutingOutputPort("videoOut", eRoutingSignalType.Video, eRoutingPortConnectionType.None, null, this, true));
// Default to all capabilties
Capabilities = eCameraCapabilities.Pan | eCameraCapabilities.Tilt | eCameraCapabilities.Zoom | eCameraCapabilities.Focus;
@@ -206,5 +209,22 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
SendBytes(new byte[] { 0x81, 0x01, 0x04, 0x3F, 0x01, (byte)presetNumber, 0xFF });
}
- }
+ #region IHasCameraPresets Members
+
+ public event EventHandler PresetsListHasChanged;
+
+ public List Presets { get; private set; }
+
+ public void PresetSelect(int preset)
+ {
+ RecallPreset(preset);
+ }
+
+ public void PresetStore(int preset, string description)
+ {
+ SavePreset(preset);
+ }
+
+ #endregion
+ }
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
index bed83feb..38250dfc 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.csproj
@@ -102,6 +102,7 @@
+
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/RoomPresets.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/RoomPresets.cs
index 2846674a..1b456774 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/RoomPresets.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/RoomPresets.cs
@@ -7,6 +7,7 @@ using Crestron.SimplSharp;
using Newtonsoft.Json;
using PepperDash.Core;
+using PepperDash.Essentials.Core.Presets;
using PepperDash.Essentials.Devices.Common.VideoCodec.Cisco;
namespace PepperDash.Essentials.Devices.Common.VideoCodec
@@ -67,34 +68,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
///
- /// Represents a room preset on a video coded. Typically stores camera position(s) and video routing. Can be recalled by Far End if enabled.
+ /// Represents a room preset on a video codec. Typically stores camera position(s) and video routing. Can be recalled by Far End if enabled.
///
- public class CodecRoomPreset
+ public class CodecRoomPreset : PresetBase
{
- [JsonProperty("id")]
- public int ID { get; set; }
- ///
- /// Used to store the name of the preset
- ///
- [JsonProperty("description")]
- public string Description { get; set; }
- ///
- /// Indicates if the preset is defined(stored) in the codec
- ///
- [JsonProperty("defined")]
- public bool Defined { get; set; }
- ///
- /// Indicates if the preset has the capability to be defined
- ///
- [JsonProperty("isDefinable")]
- public bool IsDefinable { get; set; }
-
public CodecRoomPreset(int id, string description, bool def, bool isDef)
+ : base(id, description, def, isDef)
{
- ID = id;
- Description = description;
- Defined = def;
- IsDefinable = isDef;
+
}
}
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
index 3a78c5e0..c603ca08 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
@@ -979,8 +979,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
meeting.StartTime = b.StartTime;
if (b.EndTime != null)
meeting.EndTime = b.EndTime;
- if (b.IsPrivate != null)
- meeting.Privacy = b.IsPrivate ? eMeetingPrivacy.Private : eMeetingPrivacy.Public;
+
+ meeting.Privacy = b.IsPrivate ? eMeetingPrivacy.Private : eMeetingPrivacy.Public;
// No meeting.Calls data exists for Zoom Rooms. Leaving out for now.