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