diff --git a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo index d106e601..f1ca8e71 100644 Binary files a/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo and b/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.projectinfo differ diff --git a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo index 0de19ca2..b1abb622 100644 Binary files a/Essentials DM/Essentials_DM/Essentials_DM.projectinfo and b/Essentials DM/Essentials_DM/Essentials_DM.projectinfo differ diff --git a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs index 4da70241..5ce7f3a8 100644 --- a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs +++ b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDsp.cs @@ -1,23 +1,23 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using System.Text.RegularExpressions; - - -namespace PepperDash.Essentials.Devices.Common.DSP -{ - - // QUESTIONS: - // - // When subscribing, just use the Instance ID for Custom Name? - - // Verbose on subscriptions? - - // ! "publishToken":"name" "value":-77.0 +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using System.Text.RegularExpressions; + + +namespace PepperDash.Essentials.Devices.Common.DSP +{ + + // QUESTIONS: + // + // When subscribing, just use the Instance ID for Custom Name? + + // Verbose on subscriptions? + + // ! "publishToken":"name" "value":-77.0 // ! "myLevelName" -77 diff --git a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDspLevel.cs b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDspLevel.cs index c9828e49..31c69528 100644 --- a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDspLevel.cs +++ b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/BiampTesiraForteDspLevel.cs @@ -1,210 +1,210 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using System.Text.RegularExpressions; - - -namespace PepperDash.Essentials.Devices.Common.DSP -{ - - // QUESTIONS: - // - // When subscribing, just use the Instance ID for Custom Name? - - // Verbose on subscriptions? - - // ! "publishToken":"name" "value":-77.0 - // ! "myLevelName" -77 - -#warning Working here when set aside for config editor work - - public class TesiraForteLevelControl : TesiraForteControlPoint, IDspLevelControl, IKeyed - { - bool _IsMuted; - ushort _VolumeLevel; - - public BoolFeedback MuteFeedback { get; private set; } - - public IntFeedback VolumeLevelFeedback { get; private set; } - - - public bool Enabled { get; set; } - public string ControlPointTag { get { return base.InstanceTag; } } - - /// - /// Used for to identify level subscription values - /// - public string LevelCustomName { get; private set; } - - /// - /// Used for to identify mute subscription values - /// - public string MuteCustomName { get; private set; } - - /// - /// Minimum fader level - /// - double MinLevel; - - /// - /// Maximum fader level - /// - double MaxLevel; - - /// - /// Checks if a valid subscription string has been recieved for all subscriptions - /// - public bool IsSubsribed - { - get - { - bool isSubscribed = false; - - if (HasMute && MuteIsSubscribed) - isSubscribed = true; - - if (HasLevel && LevelIsSubscribed) - isSubscribed = true; - - return isSubscribed; - } - } - - public bool AutomaticUnmuteOnVolumeUp { get; private set; } - - public bool HasMute { get; private set; } - - public bool HasLevel { get; private set; } - - bool MuteIsSubscribed; - - bool LevelIsSubscribed; - - //public TesiraForteLevelControl(string label, string id, int index1, int index2, bool hasMute, bool hasLevel, BiampTesiraForteDsp parent) - // : base(id, index1, index2, parent) - //{ - // Initialize(label, hasMute, hasLevel); - //} - - public TesiraForteLevelControl(string key, BiampTesiraForteLevelControlBlockConfig config, BiampTesiraForteDsp parent) - : base(config.InstanceTag, config.Index1, config.Index2, parent) - { - Initialize(key, config.Label, config.HasMute, config.HasLevel); - } - - - /// - /// Initializes this attribute based on config values and generates subscriptions commands and adds commands to the parent's queue. - /// - public void Initialize(string key, string label, bool hasMute, bool hasLevel) - { - Key = string.Format("{0}--{1}", Parent.Key, key); - - DeviceManager.AddDevice(this); - - Debug.Console(2, this, "Adding LevelControl '{0}'", Key); - - this.IsSubscribed = false; - - MuteFeedback = new BoolFeedback(() => _IsMuted); - - VolumeLevelFeedback = new IntFeedback(() => _VolumeLevel); - - HasMute = hasMute; - HasLevel = hasLevel; - } - - public void Subscribe() - { - // Do subscriptions and blah blah - - // Subscribe to mute - if (this.HasMute) - { - MuteCustomName = string.Format("{0}~mute{1}", this.InstanceTag, this.Index1); - - SendSubscriptionCommand(MuteCustomName, "mute", 500); - } - - // Subscribe to level - if (this.HasLevel) - { - LevelCustomName = string.Format("{0}~level{1}", this.InstanceTag, this.Index1); - - SendSubscriptionCommand(LevelCustomName, "level", 250); - - SendFullCommand("get", "minLevel", null); - - SendFullCommand("get", "maxLevel", null); - } - } - - - /// - /// Parses the response from the DspBase - /// - /// - /// - public void ParseSubscriptionMessage(string customName, string value) - { - - // Check for valid subscription response - - if (this.HasMute && customName == MuteCustomName) - { - //if (value.IndexOf("+OK") > -1) - //{ - // int pointer = value.IndexOf(" +OK"); - - // MuteIsSubscribed = true; - - // // Removes the +OK - // value = value.Substring(0, value.Length - (value.Length - (pointer - 1))); - //} - - if (value.IndexOf("true") > -1) - { - _IsMuted = true; - MuteIsSubscribed = true; - - } - else if (value.IndexOf("false") > -1) - { - _IsMuted = false; - MuteIsSubscribed = true; - } - - MuteFeedback.FireUpdate(); - } - else if (this.HasLevel && customName == LevelCustomName) - { - //if (value.IndexOf("+OK") > -1) - //{ - // int pointer = value.IndexOf(" +OK"); - - // LevelIsSubscribed = true; - - //} - - var _value = Double.Parse(value); - - _VolumeLevel = (ushort)Scale(_value, MinLevel, MaxLevel, 0, 65535); - - LevelIsSubscribed = true; - - VolumeLevelFeedback.FireUpdate(); - } - - } - - /// - /// Parses a non subscription response - /// - /// The attribute code of the command +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using System.Text.RegularExpressions; + + +namespace PepperDash.Essentials.Devices.Common.DSP +{ + + // QUESTIONS: + // + // When subscribing, just use the Instance ID for Custom Name? + + // Verbose on subscriptions? + + // ! "publishToken":"name" "value":-77.0 + // ! "myLevelName" -77 + +#warning Working here when set aside for config editor work + + public class TesiraForteLevelControl : TesiraForteControlPoint, IDspLevelControl, IKeyed + { + bool _IsMuted; + ushort _VolumeLevel; + + public BoolFeedback MuteFeedback { get; private set; } + + public IntFeedback VolumeLevelFeedback { get; private set; } + + + public bool Enabled { get; set; } + public string ControlPointTag { get { return base.InstanceTag; } } + + /// + /// Used for to identify level subscription values + /// + public string LevelCustomName { get; private set; } + + /// + /// Used for to identify mute subscription values + /// + public string MuteCustomName { get; private set; } + + /// + /// Minimum fader level + /// + double MinLevel; + + /// + /// Maximum fader level + /// + double MaxLevel; + + /// + /// Checks if a valid subscription string has been recieved for all subscriptions + /// + public bool IsSubsribed + { + get + { + bool isSubscribed = false; + + if (HasMute && MuteIsSubscribed) + isSubscribed = true; + + if (HasLevel && LevelIsSubscribed) + isSubscribed = true; + + return isSubscribed; + } + } + + public bool AutomaticUnmuteOnVolumeUp { get; private set; } + + public bool HasMute { get; private set; } + + public bool HasLevel { get; private set; } + + bool MuteIsSubscribed; + + bool LevelIsSubscribed; + + //public TesiraForteLevelControl(string label, string id, int index1, int index2, bool hasMute, bool hasLevel, BiampTesiraForteDsp parent) + // : base(id, index1, index2, parent) + //{ + // Initialize(label, hasMute, hasLevel); + //} + + public TesiraForteLevelControl(string key, BiampTesiraForteLevelControlBlockConfig config, BiampTesiraForteDsp parent) + : base(config.InstanceTag, config.Index1, config.Index2, parent) + { + Initialize(key, config.Label, config.HasMute, config.HasLevel); + } + + + /// + /// Initializes this attribute based on config values and generates subscriptions commands and adds commands to the parent's queue. + /// + public void Initialize(string key, string label, bool hasMute, bool hasLevel) + { + Key = string.Format("{0}--{1}", Parent.Key, key); + + DeviceManager.AddDevice(this); + + Debug.Console(2, this, "Adding LevelControl '{0}'", Key); + + this.IsSubscribed = false; + + MuteFeedback = new BoolFeedback(() => _IsMuted); + + VolumeLevelFeedback = new IntFeedback(() => _VolumeLevel); + + HasMute = hasMute; + HasLevel = hasLevel; + } + + public void Subscribe() + { + // Do subscriptions and blah blah + + // Subscribe to mute + if (this.HasMute) + { + MuteCustomName = string.Format("{0}~mute{1}", this.InstanceTag, this.Index1); + + SendSubscriptionCommand(MuteCustomName, "mute", 500); + } + + // Subscribe to level + if (this.HasLevel) + { + LevelCustomName = string.Format("{0}~level{1}", this.InstanceTag, this.Index1); + + SendSubscriptionCommand(LevelCustomName, "level", 250); + + SendFullCommand("get", "minLevel", null); + + SendFullCommand("get", "maxLevel", null); + } + } + + + /// + /// Parses the response from the DspBase + /// + /// + /// + public void ParseSubscriptionMessage(string customName, string value) + { + + // Check for valid subscription response + + if (this.HasMute && customName == MuteCustomName) + { + //if (value.IndexOf("+OK") > -1) + //{ + // int pointer = value.IndexOf(" +OK"); + + // MuteIsSubscribed = true; + + // // Removes the +OK + // value = value.Substring(0, value.Length - (value.Length - (pointer - 1))); + //} + + if (value.IndexOf("true") > -1) + { + _IsMuted = true; + MuteIsSubscribed = true; + + } + else if (value.IndexOf("false") > -1) + { + _IsMuted = false; + MuteIsSubscribed = true; + } + + MuteFeedback.FireUpdate(); + } + else if (this.HasLevel && customName == LevelCustomName) + { + //if (value.IndexOf("+OK") > -1) + //{ + // int pointer = value.IndexOf(" +OK"); + + // LevelIsSubscribed = true; + + //} + + var _value = Double.Parse(value); + + _VolumeLevel = (ushort)Scale(_value, MinLevel, MaxLevel, 0, 65535); + + LevelIsSubscribed = true; + + VolumeLevelFeedback.FireUpdate(); + } + + } + + /// + /// Parses a non subscription response + /// + /// The attribute code of the command /// The message to parse public override void ParseGetMessage(string attributeCode, string message) { @@ -257,122 +257,122 @@ namespace PepperDash.Essentials.Devices.Common.DSP Debug.Console(2, "Unable to parse message: '{0}'\n{1}", message, e); } - } - - /// - /// Turns the mute off - /// - public void MuteOff() - { - SendFullCommand("set", "mute", "false"); - } - - /// - /// Turns the mute on - /// - public void MuteOn() - { - SendFullCommand("set", "mute", "true"); - } - - /// - /// Sets the volume to a specified level - /// - /// - public void SetVolume(ushort level) + } + + /// + /// Turns the mute off + /// + public void MuteOff() { - Debug.Console(1, this, "volume: {0}", level); - // Unmute volume if new level is higher than existing - if (level > _VolumeLevel && AutomaticUnmuteOnVolumeUp) - if(!_IsMuted) - MuteOff(); - + SendFullCommand("set", "mute", "false"); + } + + /// + /// Turns the mute on + /// + public void MuteOn() + { + SendFullCommand("set", "mute", "true"); + } + + /// + /// Sets the volume to a specified level + /// + /// + public void SetVolume(ushort level) + { + Debug.Console(1, this, "volume: {0}", level); + // Unmute volume if new level is higher than existing + if (level > _VolumeLevel && AutomaticUnmuteOnVolumeUp) + if(!_IsMuted) + MuteOff(); + double volumeLevel = Scale(level, 0, 65535, MinLevel, MaxLevel); - SendFullCommand("set", "level", string.Format("{0:0.000000}", volumeLevel)); - } - - /// - /// Toggles mute status - /// - public void MuteToggle() - { - SendFullCommand("toggle", "mute", ""); - } - - /// - /// Decrements volume level - /// - /// - public void VolumeDown(bool pressRelease) - { - SendFullCommand("decrement", "level", ""); - } - - /// - /// Increments volume level - /// - /// - public void VolumeUp(bool pressRelease) - { - SendFullCommand("increment", "level", ""); - - if (AutomaticUnmuteOnVolumeUp) - if (!_IsMuted) - MuteOff(); - } - - ///// - ///// Scales the input from the input range to the output range - ///// - ///// - ///// - ///// - ///// - ///// - ///// - //int Scale(int input, int inMin, int inMax, int outMin, int outMax) + SendFullCommand("set", "level", string.Format("{0:0.000000}", volumeLevel)); + } + + /// + /// Toggles mute status + /// + public void MuteToggle() + { + SendFullCommand("toggle", "mute", ""); + } + + /// + /// Decrements volume level + /// + /// + public void VolumeDown(bool pressRelease) + { + SendFullCommand("decrement", "level", ""); + } + + /// + /// Increments volume level + /// + /// + public void VolumeUp(bool pressRelease) + { + SendFullCommand("increment", "level", ""); + + if (AutomaticUnmuteOnVolumeUp) + if (!_IsMuted) + MuteOff(); + } + + ///// + ///// Scales the input from the input range to the output range + ///// + ///// + ///// + ///// + ///// + ///// + ///// + //int Scale(int input, int inMin, int inMax, int outMin, int outMax) //{ - // Debug.Console(1, this, "Scaling (int) input '{0}' with min '{1}'/max '{2}' to output range min '{3}'/max '{4}'", input, inMin, inMax, outMin, outMax); - - // int inputRange = inMax - inMin; - - // int outputRange = outMax - outMin; - + // Debug.Console(1, this, "Scaling (int) input '{0}' with min '{1}'/max '{2}' to output range min '{3}'/max '{4}'", input, inMin, inMax, outMin, outMax); + + // int inputRange = inMax - inMin; + + // int outputRange = outMax - outMin; + // var output = (((input-inMin) * outputRange) / inputRange ) - outMin; - // Debug.Console(1, this, "Scaled output '{0}'", output); - - // return output; - //} - - /// - /// Scales the input from the input range to the output range - /// - /// - /// - /// - /// - /// - /// - double Scale(double input, double inMin, double inMax, double outMin, double outMax) - { - Debug.Console(1, this, "Scaling (double) input '{0}' with min '{1}'/max '{2}' to output range min '{3}'/max '{4}'",input ,inMin ,inMax ,outMin, outMax); - + // Debug.Console(1, this, "Scaled output '{0}'", output); + + // return output; + //} + + /// + /// Scales the input from the input range to the output range + /// + /// + /// + /// + /// + /// + /// + double Scale(double input, double inMin, double inMax, double outMin, double outMax) + { + Debug.Console(1, this, "Scaling (double) input '{0}' with min '{1}'/max '{2}' to output range min '{3}'/max '{4}'",input ,inMin ,inMax ,outMin, outMax); + double inputRange = inMax - inMin; if (inputRange <= 0) { throw new ArithmeticException(string.Format("Invalid Input Range '{0}' for Scaling. Min '{1}' Max '{2}'.", inputRange, inMin, inMax)); - } - - double outputRange = outMax - outMin; - + } + + double outputRange = outMax - outMin; + var output = (((input - inMin) * outputRange) / inputRange) + outMin; - Debug.Console(1, this, "Scaled output '{0}'", output); - - return output; - } - } + Debug.Console(1, this, "Scaled output '{0}'", output); + + return output; + } + } } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/TesiraForteControlPoint.cs b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/TesiraForteControlPoint.cs index d75dffe2..151eb2ad 100644 --- a/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/TesiraForteControlPoint.cs +++ b/Essentials Devices Common/Essentials Devices Common/DSP/BiampTesira/TesiraForteControlPoint.cs @@ -1,75 +1,75 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; - -namespace PepperDash.Essentials.Devices.Common.DSP -{ - public abstract class TesiraForteControlPoint : DspControlPoint - { - public string Key { get; protected set; } - - public string InstanceTag { get; set; } - public int Index1 { get; private set; } - public int Index2 { get; private set; } - public BiampTesiraForteDsp Parent { get; private set; } - - public bool IsSubscribed { get; protected set; } - - protected TesiraForteControlPoint(string id, int index1, int index2, BiampTesiraForteDsp parent) - { - InstanceTag = id; - Index1 = index1; - Index2 = index2; - Parent = parent; - } - - virtual public void Initialize() - { - } - - /// - /// Sends a command to the DSP - /// - /// command - /// attribute code - /// value (use "" if not applicable) - public virtual void SendFullCommand(string command, string attributeCode, string value) - { - // Command Format: InstanceTag get/set/toggle/increment/decrement/subscribe/unsubscribe attributeCode [index] [value] - // Ex: "RoomLevel set level 1.00" - - string cmd; - - if (attributeCode == "level" || attributeCode == "mute" || attributeCode == "minLevel" || attributeCode == "maxLevel" || attributeCode == "label" || attributeCode == "rampInterval" || attributeCode == "rampStep") - { - //Command requires Index - - if (String.IsNullOrEmpty(value)) - { - // format command without value - cmd = string.Format("{0} {1} {2} {3}", InstanceTag, command, attributeCode, Index1); - } - else - { - // format commadn with value - cmd = string.Format("{0} {1} {2} {3} {4}", InstanceTag, command, attributeCode, Index1, value); - } - - } - else - { - //Command does not require Index - - if (String.IsNullOrEmpty(value)) - { - cmd = string.Format("{0} {1} {2} {3}", InstanceTag, command, attributeCode, value); - } - else - { - cmd = string.Format("{0} {1} {2}", InstanceTag, command, attributeCode); - } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +namespace PepperDash.Essentials.Devices.Common.DSP +{ + public abstract class TesiraForteControlPoint : DspControlPoint + { + public string Key { get; protected set; } + + public string InstanceTag { get; set; } + public int Index1 { get; private set; } + public int Index2 { get; private set; } + public BiampTesiraForteDsp Parent { get; private set; } + + public bool IsSubscribed { get; protected set; } + + protected TesiraForteControlPoint(string id, int index1, int index2, BiampTesiraForteDsp parent) + { + InstanceTag = id; + Index1 = index1; + Index2 = index2; + Parent = parent; + } + + virtual public void Initialize() + { + } + + /// + /// Sends a command to the DSP + /// + /// command + /// attribute code + /// value (use "" if not applicable) + public virtual void SendFullCommand(string command, string attributeCode, string value) + { + // Command Format: InstanceTag get/set/toggle/increment/decrement/subscribe/unsubscribe attributeCode [index] [value] + // Ex: "RoomLevel set level 1.00" + + string cmd; + + if (attributeCode == "level" || attributeCode == "mute" || attributeCode == "minLevel" || attributeCode == "maxLevel" || attributeCode == "label" || attributeCode == "rampInterval" || attributeCode == "rampStep") + { + //Command requires Index + + if (String.IsNullOrEmpty(value)) + { + // format command without value + cmd = string.Format("{0} {1} {2} {3}", InstanceTag, command, attributeCode, Index1); + } + else + { + // format commadn with value + cmd = string.Format("{0} {1} {2} {3} {4}", InstanceTag, command, attributeCode, Index1, value); + } + + } + else + { + //Command does not require Index + + if (String.IsNullOrEmpty(value)) + { + cmd = string.Format("{0} {1} {2} {3}", InstanceTag, command, attributeCode, value); + } + else + { + cmd = string.Format("{0} {1} {2}", InstanceTag, command, attributeCode); + } } if (command == "get") @@ -81,35 +81,35 @@ namespace PepperDash.Essentials.Devices.Common.DSP { // This command will generate a simple "+OK" response and doesn't need to be queued Parent.SendLine(cmd); - } - - } - - virtual public void ParseGetMessage(string attributeCode, string message) - { - } - - - - public virtual void SendSubscriptionCommand(string customName, string attributeCode, int responseRate) - { - // Subscription string format: InstanceTag subscribe attributeCode Index1 customName responseRate - // Ex: "RoomLevel subscribe level 1 MyRoomLevel 500" - - string cmd; - - if (responseRate > 0) - { - cmd = string.Format("{0} subscribe {1} {2} {3} {4}", InstanceTag, attributeCode, Index1, customName, responseRate); - } - else - { - cmd = string.Format("{0} subscribe {1} {2} {3}", InstanceTag, attributeCode, Index1, customName); - } - - Parent.SendLine(cmd); - } - - - } + } + + } + + virtual public void ParseGetMessage(string attributeCode, string message) + { + } + + + + public virtual void SendSubscriptionCommand(string customName, string attributeCode, int responseRate) + { + // Subscription string format: InstanceTag subscribe attributeCode Index1 customName responseRate + // Ex: "RoomLevel subscribe level 1 MyRoomLevel 500" + + string cmd; + + if (responseRate > 0) + { + cmd = string.Format("{0} subscribe {1} {2} {3} {4}", InstanceTag, attributeCode, Index1, customName, responseRate); + } + else + { + cmd = string.Format("{0} subscribe {1} {2} {3}", InstanceTag, attributeCode, Index1, customName); + } + + Parent.SendLine(cmd); + } + + + } } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo index a730c6f7..0093d01b 100644 Binary files a/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo and b/Essentials Devices Common/Essentials Devices Common/Essentials Devices Common.projectinfo differ diff --git a/Essentials/PepperDashEssentials/ControlSystem.cs b/Essentials/PepperDashEssentials/ControlSystem.cs index 02441de7..55248214 100644 --- a/Essentials/PepperDashEssentials/ControlSystem.cs +++ b/Essentials/PepperDashEssentials/ControlSystem.cs @@ -57,6 +57,11 @@ namespace PepperDash.Essentials //PortalSync = new PepperDashPortalSyncClient(); + //Temp Cotija testing + //CotijaInterfaceController CotijaInterface = new CotijaInterfaceController("WebClient1"); + + //CotijaInterface.InitializeClient("http://192.168.1.105"); + Debug.Console(0, "Starting Essentials load from configuration"); ConfigReader.LoadConfig2(); LoadDevices(); @@ -154,9 +159,18 @@ namespace PepperDash.Essentials { var room = roomConfig.GetRoomObject(); if (room != null) - { - DeviceManager.AddDevice(room); - //DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemController(room, 0xf1)); + { + if (room is EssentialsHuddleSpaceRoom) + { + Debug.Console(1, "Room is EssentialsHuddleSpaceRoom, attempting to add to DeviceManager with Fusion"); + DeviceManager.AddDevice(new EssentialsHuddleSpaceFusionSystemController((EssentialsHuddleSpaceRoom)room, 0xf1)); + } + else + { + Debug.Console(1, "Room is NOT EssentialsHuddleSpaceRoom, attempting to add to DeviceManager w/o Fusion"); + DeviceManager.AddDevice(room); + } + #warning Add Fusion connector to room factory? } diff --git a/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs b/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs index e128bb94..28f7cf09 100644 --- a/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs +++ b/Essentials/PepperDashEssentials/Fusion/FusionSystemController.cs @@ -26,9 +26,9 @@ namespace PepperDash.Essentials.Fusion StatusMonitorCollection ErrorMessageRollUp; - StringSigData SourceNameSig; - - public EssentialsHuddleSpaceFusionSystemController(EssentialsHuddleSpaceRoom room, uint ipId) + StringSigData SourceNameSig; + + public EssentialsHuddleSpaceFusionSystemController(EssentialsHuddleSpaceRoom room, uint ipId) : base(room.Key + "-fusion") { Room = room; diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj index d3ed2e6f..645eb06b 100644 --- a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj +++ b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj @@ -163,6 +163,7 @@ + diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo index 537afda3..51aeea25 100644 Binary files a/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo and b/Essentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ diff --git a/Essentials/PepperDashEssentials/UI/CotijaInterfaceController.cs b/Essentials/PepperDashEssentials/UI/CotijaInterfaceController.cs new file mode 100644 index 00000000..c105d873 --- /dev/null +++ b/Essentials/PepperDashEssentials/UI/CotijaInterfaceController.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronIO; +using Crestron.SimplSharpPro; +using Crestron.SimplSharp.Net.Http; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.PageManagers; + +namespace PepperDash.Essentials +{ + public class CotijaInterfaceController : Device + { + public CotijaInterfaceController(string key) : base(key) + { + CrestronConsole.AddNewConsoleCommand(InitializeClient, "InitializeHttpClient", "Initializes a new HTTP client connection to a specified URL", ConsoleAccessLevelEnum.AccessOperator); + } + + public void InitializeClient(string url) + { + HttpClient webClient = new HttpClient(); + webClient.Verbose = true; + HttpClientRequest request = new HttpClientRequest(); + request.Url.Parse(url); + request.Header.AddHeader(new HttpHeader("accept", "text/event-stream")); + request.Header.SetHeaderValue("Expect", ""); + webClient.DispatchAsync(request, (resp, err) => + { + CrestronConsole.PrintLine(resp.ContentString); + }); + } + } +} \ No newline at end of file