diff --git a/PepperDashEssentials/AppServer/CotijaSystemController.cs b/PepperDashEssentials/AppServer/CotijaSystemController.cs index 338d325b..1785163e 100644 --- a/PepperDashEssentials/AppServer/CotijaSystemController.cs +++ b/PepperDashEssentials/AppServer/CotijaSystemController.cs @@ -14,7 +14,8 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PepperDash.Core; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Room.Cotija; namespace PepperDash.Essentials diff --git a/PepperDashEssentials/AppServer/RoomBridges/CotijaDdvc01RoomBridge.cs b/PepperDashEssentials/AppServer/RoomBridges/CotijaDdvc01RoomBridge.cs index c47d11b3..2ccb03d9 100644 --- a/PepperDashEssentials/AppServer/RoomBridges/CotijaDdvc01RoomBridge.cs +++ b/PepperDashEssentials/AppServer/RoomBridges/CotijaDdvc01RoomBridge.cs @@ -348,8 +348,8 @@ namespace PepperDash.Essentials.Room.Cotija //Room if (co.Rooms == null) - co.Rooms = new List(); - var rm = new EssentialsRoomConfig(); + co.Rooms = new List(); + var rm = new DeviceConfig(); if (co.Rooms.Count == 0) { Debug.Console(0, this, "Adding room to config"); diff --git a/PepperDashEssentials/Config/ConfigReader.cs b/PepperDashEssentials/Config/ConfigReader.cs deleted file mode 100644 index 158bd679..00000000 --- a/PepperDashEssentials/Config/ConfigReader.cs +++ /dev/null @@ -1,223 +0,0 @@ -using System; -using System.Linq; -using Crestron.SimplSharp; -using Crestron.SimplSharp.CrestronIO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.Config; - -namespace PepperDash.Essentials -{ - /// - /// Loads the ConfigObject from the file - /// - public class ConfigReader - { - public static EssentialsConfig ConfigObject { get; private set; } - - public static bool LoadConfig2() - { - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Loading unmerged system/template portal configuration file."); - try - { - // Check for local config file first - var filePath = Global.FilePathPrefix + ConfigWriter.LocalConfigFolder + Global.DirectorySeparator + "configurationFile.json"; - - bool localConfigFound = false; - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Attempting to load Local config file: '{0}'", filePath); - - // Check for local config directory first - if (Directory.Exists(Global.FilePathPrefix + ConfigWriter.LocalConfigFolder)) - { - if (!File.Exists(filePath)) - { - Debug.Console(0, Debug.ErrorLogLevel.Notice, - "Local Configuration file not present.", filePath); - } - else - localConfigFound = true; - } - - // Check for Portal Config - if(!localConfigFound) - { - filePath = Global.FilePathPrefix + "configurationFile.json"; - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Attempting to load Portal config file: '{0}'", filePath); - - if (!File.Exists(filePath)) - { - Debug.Console(0, Debug.ErrorLogLevel.Notice, - "ERROR: Local Configuration file not present. Please load file to {0} and reset program", filePath); - return false; - } - } - - // Read the file - using (StreamReader fs = new StreamReader(filePath)) - { - if (localConfigFound) - { - ConfigObject = JObject.Parse(fs.ReadToEnd()).ToObject(); - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Successfully Loaded Local Config"); - - return true; - } - else - { - var doubleObj = JObject.Parse(fs.ReadToEnd()); - ConfigObject = MergeConfigs(doubleObj).ToObject(); - - // Extract SystemUrl and TemplateUrl into final config output - - if (doubleObj["system_url"] != null) - { - ConfigObject.SystemUrl = doubleObj["system_url"].Value(); - } - - if (doubleObj["template_url"] != null) - { - ConfigObject.TemplateUrl = doubleObj["template_url"].Value(); - } - } - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Successfully Loaded Merged Config"); - - return true; - } - } - catch (Exception e) - { - Debug.Console(0, Debug.ErrorLogLevel.Error, "ERROR: Config load failed: \r{0}", e); - return false; - } - } - - - static JObject MergeConfigs(JObject doubleConfig) - { - var system = JObject.FromObject(doubleConfig["system"]); - var template = JObject.FromObject(doubleConfig["template"]); - var merged = new JObject(); - - // Put together top-level objects - // skip any objects that don't have template objects - - if (system["info"] != null) - merged.Add("info", Merge(template["info"], system["info"])); - else - merged.Add("info", template["info"]); - - merged.Add("devices", MergeArraysOnTopLevelProperty(template["devices"] as JArray, - system["devices"] as JArray, "uid")); - - if (template["rooms"] != null) - { - if (system["rooms"] == null) - merged.Add("rooms", template["rooms"]); - else - merged.Add("rooms", MergeArraysOnTopLevelProperty(template["rooms"] as JArray, - system["rooms"] as JArray, "key")); - } - - if (template["sourceLists"] != null) - { - if (system["sourceLists"] == null) - merged.Add("sourceLists", template["sourceLists"]); - else - merged.Add("sourceLists", Merge(template["sourceLists"], system["sourceLists"])); - } - - // Template tie lines take precdence. Config tool doesn't do them at system - // level anyway... - if (template["tieLines"] != null) - merged.Add("tieLines", template["tieLines"]); - //else if (system["tieLines"] != null) - // merged.Add("tieLines", system["tieLines"]); - //else - // merged.Add("tieLines", new JArray()); - - Debug.Console(2, "MERGED CONFIG RESULT: \x0d\x0a{0}", merged); - return merged; - } - - /// - /// Merges the contents of a base and a delta array, matching the entries on a top-level property - /// given by propertyName. Returns a merge of them. Items in the delta array that do not have - /// a matched item in base array will not be merged. - /// - static JArray MergeArraysOnTopLevelProperty(JArray a1, JArray a2, string propertyName) - { - var result = new JArray(); - if (a2 == null) - result = a1; - else if (a1 != null) - { - for (int i = 0; i < a1.Count(); i++) - { - var a1Dev = a1[i]; - // Try to get a system device and if found, merge it onto template - var a2Match = a2.FirstOrDefault(t => t[propertyName].Equals(a1Dev[propertyName]));// t.Value("uid") == tmplDev.Value("uid")); - if (a2Match != null) - { - var mergedItem = Merge(a1Dev, a2Match);// Merge(JObject.FromObject(a1Dev), JObject.FromObject(a2Match)); - result.Add(mergedItem); - } - else - result.Add(a1Dev); - } - } - return result; - } - - - /// - /// Helper for using with JTokens. Converts to JObject - /// - static JObject Merge(JToken t1, JToken t2) - { - return Merge(JObject.FromObject(t1), JObject.FromObject(t2)); - } - - /// - /// Merge b ONTO a - /// - /// - /// - static JObject Merge(JObject o1, JObject o2) - { - foreach (var o2Prop in o2) - { - var o1Value = o1[o2Prop.Key]; - if (o1Value == null) - o1.Add(o2Prop.Key, o2Prop.Value); - else - { - JToken replacement = null; - if (o2Prop.Value.HasValues && o1Value.HasValues) // Drill down - replacement = Merge(JObject.FromObject(o1Value), JObject.FromObject(o2Prop.Value)); - else - replacement = o2Prop.Value; - o1[o2Prop.Key].Replace(replacement); - } - } - return o1; - } - - /// - /// Returns the group for a given device key in config - /// - /// - /// - public static string GetGroupForDeviceKey(string key) - { - var dev = ConfigObject.Devices.FirstOrDefault(d => d.Key.Equals(key, StringComparison.OrdinalIgnoreCase)); - return dev == null ? null : dev.Group; - } - - } -} \ No newline at end of file diff --git a/PepperDashEssentials/Config/ConfigWriter.cs b/PepperDashEssentials/Config/ConfigWriter.cs deleted file mode 100644 index f9830f8b..00000000 --- a/PepperDashEssentials/Config/ConfigWriter.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; -using Crestron.SimplSharp.CrestronIO; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using PepperDash.Core; -using PepperDash.Essentials.Core; -using PepperDash.Essentials.Core.Config; - -namespace PepperDash.Essentials -{ - public class ConfigWriter - { - public const string LocalConfigFolder = "LocalConfig"; - - public static bool WriteConfig() - { - bool success = false; - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Writing Configuration to file"); - - var fileLock = new CCriticalSection(); - - - var filePath = Global.FilePathPrefix + LocalConfigFolder + Global.DirectorySeparator + "configurationFile.json"; - - Debug.Console(0, Debug.ErrorLogLevel.Notice, "Attempting to write config file: '{0}'", filePath); - - var configData = JsonConvert.SerializeObject(ConfigReader.ConfigObject); - - try - { - - if (fileLock.TryEnter()) - { - using (StreamWriter sw = new StreamWriter(filePath)) - { - sw.Write(configData); - sw.Flush(); - } - - success = true; - } - else - { - Debug.Console(0, Debug.ErrorLogLevel.Error, "Unable to enter FileLock"); - success = false; - } - } - catch (Exception e) - { - Debug.Console(0, Debug.ErrorLogLevel.Error, "Error: Config write failed: \r{0}", e); - success = false; - } - finally - { - if (fileLock != null && !fileLock.Disposed) - fileLock.Leave(); - - } - - return success; - } - } -} \ No newline at end of file diff --git a/PepperDashEssentials/Config/EssentialsConfig.cs b/PepperDashEssentials/Config/EssentialsConfig.cs deleted file mode 100644 index fdd6e837..00000000 --- a/PepperDashEssentials/Config/EssentialsConfig.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text.RegularExpressions; - -using Crestron.SimplSharp.CrestronIO; -using Newtonsoft.Json; - -using PepperDash.Core; -using PepperDash.Essentials.Core.Config; -using PepperDash.Essentials.Room.Config; - -namespace PepperDash.Essentials -{ - /// - /// Loads the ConfigObject from the file - /// - public class EssentialsConfig : BasicConfig - { - [JsonProperty("system_url")] - public string SystemUrl { get; set; } - - [JsonProperty("template_url")] - public string TemplateUrl { get; set; } - - - //public CotijaConfig Cotija { get; private set; } - - [JsonProperty("systemUuid")] - public string SystemUuid - { - get - { - if (string.IsNullOrEmpty(SystemUrl)) - return "missing url"; - - var result = Regex.Match(SystemUrl, @"https?:\/\/.*\/systems\/(.*)\/#.*"); - string uuid = result.Groups[1].Value; - return uuid; - } - } - - [JsonProperty("templateUuid")] - public string TemplateUuid - { - get - { - if (string.IsNullOrEmpty(TemplateUrl)) - return "missing template url"; - - var result = Regex.Match(TemplateUrl, @"https?:\/\/.*\/templates\/(.*)\/#.*"); - string uuid = result.Groups[1].Value; - return uuid; - } - } - - [JsonProperty("rooms")] - public List Rooms { get; set; } - } - - /// - /// - /// - public class SystemTemplateConfigs - { - public EssentialsConfig System { get; set; } - - public EssentialsConfig Template { get; set; } - } -} \ No newline at end of file diff --git a/PepperDashEssentials/ControlSystem.cs b/PepperDashEssentials/ControlSystem.cs index ed07033d..4a5f720e 100644 --- a/PepperDashEssentials/ControlSystem.cs +++ b/PepperDashEssentials/ControlSystem.cs @@ -6,9 +6,11 @@ using Crestron.SimplSharpPro; using Crestron.SimplSharpPro.CrestronThread; using PepperDash.Core; using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Devices.Common; using PepperDash.Essentials.DM; using PepperDash.Essentials.Fusion; +using PepperDash.Essentials.Room.Config; using PepperDash.Essentials.Room.Cotija; namespace PepperDash.Essentials @@ -35,7 +37,7 @@ namespace PepperDash.Essentials //CrestronConsole.AddNewConsoleCommand(s => GoWithLoad(), "go", "Loads configuration file", // ConsoleAccessLevelEnum.AccessOperator); - CrestronConsole.AddNewConsoleCommand(S => { ConfigWriter.WriteConfig(); }, "writeconfig", "writes the current config to a file", ConsoleAccessLevelEnum.AccessOperator); + CrestronConsole.AddNewConsoleCommand(S => { ConfigWriter.WriteConfigFile(null); }, "writeconfig", "writes the current config to a file", ConsoleAccessLevelEnum.AccessOperator); CrestronConsole.AddNewConsoleCommand(s => { @@ -293,7 +295,7 @@ namespace PepperDash.Essentials foreach (var roomConfig in ConfigReader.ConfigObject.Rooms) { - var room = roomConfig.GetRoomObject() as EssentialsRoomBase; + var room = EssentialsRoomConfigHelper.GetRoomObject(roomConfig) as EssentialsRoomBase; if (room != null) { if (room is EssentialsHuddleSpaceRoom) diff --git a/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs b/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs index a463fa50..7f2cd609 100644 --- a/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs +++ b/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleSpaceFusionSystemControllerBase.cs @@ -16,7 +16,8 @@ using Newtonsoft.Json.Linq; using PepperDash.Core; using PepperDash.Essentials; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Devices.Common; using PepperDash.Essentials.Devices.Common.Occupancy; diff --git a/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleVtc1FusionController.cs b/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleVtc1FusionController.cs index 214e3537..e1f3e8a4 100644 --- a/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleVtc1FusionController.cs +++ b/PepperDashEssentials/OTHER/Fusion/EssentialsHuddleVtc1FusionController.cs @@ -12,7 +12,8 @@ using Crestron.SimplSharpPro.Fusion; using PepperDash.Core; using PepperDash.Essentials; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Devices.Common; using PepperDash.Essentials.Devices.Common.Occupancy; diff --git a/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials.csproj index e10ed1eb..86d9cde3 100644 --- a/PepperDashEssentials/PepperDashEssentials.csproj +++ b/PepperDashEssentials/PepperDashEssentials.csproj @@ -126,9 +126,6 @@ - - - diff --git a/PepperDashEssentials/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs b/PepperDashEssentials/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs index 05213622..706ebca1 100644 --- a/PepperDashEssentials/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs +++ b/PepperDashEssentials/Room/Behaviours/RoomOnToDefaultSourceWhenOccupied.cs @@ -6,6 +6,7 @@ using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharp.Scheduler; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using PepperDash.Core; using PepperDash.Essentials.Core; @@ -112,11 +113,11 @@ namespace PepperDash.Essentials.Room.Behaviours AddDisableEventToGroup(); - FeatureEnabled = CheckIfFeatureShouldBeEnabled(); - FeatureEventGroup.UserGroupCallBack += new ScheduledEventGroup.UserEventGroupCallBack(FeatureEventGroup_UserGroupCallBack); FeatureEventGroup.EnableAllEvents(); + + FeatureEnabled = CheckIfFeatureShouldBeEnabled(); } else Debug.Console(1, this, "Unable to get room from Device Manager with key: {0}", Config.RoomKey); @@ -124,6 +125,15 @@ namespace PepperDash.Essentials.Room.Behaviours return base.CustomActivate(); } + /// + /// Returns a JObject of the device config properties as they currently exist at runtime + /// + /// + public JToken GetLocalConfigProperties() + { + return JToken.FromObject(Config); + } + /// /// Subscribe to feedback from RoomIsOccupiedFeedback on Room /// @@ -173,7 +183,7 @@ namespace PepperDash.Essentials.Room.Behaviours if (DateTime.Now.TimeOfDay.CompareTo(FeatureEnabledTime.TimeOfDay) >= 0 && FeatureDisabledTime.TimeOfDay.CompareTo(DateTime.Now.TimeOfDay) > 0) { - if (SchedulerUtilities.CheckIfDayOfWeekMatchesRecurrenceDays(DateTime.Now, FeatureEnableEvent.Recurrence.RecurrenceDays)) + if (SchedulerUtilities.CheckIfDayOfWeekMatchesRecurrenceDays(DateTime.Now, CalculateDaysOfWeekRecurrence())) { Debug.Console(1, this, "*****Feature Enabled by startup check.*****"); enabled = true; diff --git a/PepperDashEssentials/Room/Config/EssentialsRoomConfig.cs b/PepperDashEssentials/Room/Config/EssentialsRoomConfig.cs index 35a23de0..049c15dc 100644 --- a/PepperDashEssentials/Room/Config/EssentialsRoomConfig.cs +++ b/PepperDashEssentials/Room/Config/EssentialsRoomConfig.cs @@ -13,22 +13,22 @@ using PepperDash.Essentials.Core.Config; namespace PepperDash.Essentials.Room.Config { - public class EssentialsRoomConfig : DeviceConfig + public class EssentialsRoomConfigHelper { /// /// Returns a room object from this config data /// /// - public Device GetRoomObject() + public static Device GetRoomObject(DeviceConfig roomConfig) { - var typeName = Type.ToLower(); + var typeName = roomConfig.Type.ToLower(); if (typeName == "huddle") { var props = JsonConvert.DeserializeObject - (this.Properties.ToString()); + (roomConfig.Properties.ToString()); var disp = DeviceManager.GetDeviceForKey(props.DefaultDisplayKey) as IRoutingSinkWithSwitching; var audio = DeviceManager.GetDeviceForKey(props.DefaultAudioKey) as IRoutingSinkNoSwitching; - var huddle = new EssentialsHuddleSpaceRoom(Key, Name, disp, audio, props); + var huddle = new EssentialsHuddleSpaceRoom(roomConfig.Key, roomConfig.Name, disp, audio, props); if (props.Occupancy != null) huddle.SetRoomOccupancy(DeviceManager.GetDeviceForKey(props.Occupancy.DeviceKey) as @@ -61,13 +61,13 @@ namespace PepperDash.Essentials.Room.Config else if (typeName == "huddlevtc1") { var props = JsonConvert.DeserializeObject - (this.Properties.ToString()); + (roomConfig.Properties.ToString()); var disp = DeviceManager.GetDeviceForKey(props.DefaultDisplayKey) as IRoutingSinkWithSwitching; var codec = DeviceManager.GetDeviceForKey(props.VideoCodecKey) as PepperDash.Essentials.Devices.Common.VideoCodec.VideoCodecBase; - var rm = new EssentialsHuddleVtc1Room(Key, Name, disp, codec, codec, props); + var rm = new EssentialsHuddleVtc1Room(roomConfig.Key, roomConfig.Name, disp, codec, codec, props); // Add Occupancy object from config if (props.Occupancy != null) @@ -86,7 +86,7 @@ namespace PepperDash.Essentials.Room.Config } else if (typeName == "ddvc01Bridge") { - return new Device(Key, Name); // placeholder device that does nothing. + return new Device(roomConfig.Key, roomConfig.Name); // placeholder device that does nothing. } return null; @@ -96,7 +96,7 @@ namespace PepperDash.Essentials.Room.Config /// Gets and operating, standalone emergegncy object that can be plugged into a room. /// Returns null if there is no emergency defined /// - EssentialsRoomEmergencyBase GetEmergency(EssentialsRoomPropertiesConfig props, EssentialsRoomBase room) + static EssentialsRoomEmergencyBase GetEmergency(EssentialsRoomPropertiesConfig props, EssentialsRoomBase room) { // This emergency var emergency = props.Emergency; @@ -115,7 +115,7 @@ namespace PepperDash.Essentials.Room.Config /// /// /// - PepperDash.Essentials.Devices.Common.Microphones.MicrophonePrivacyController GetMicrophonePrivacy( + static PepperDash.Essentials.Devices.Common.Microphones.MicrophonePrivacyController GetMicrophonePrivacy( EssentialsRoomPropertiesConfig props, EssentialsHuddleVtc1Room room) { var microphonePrivacy = props.MicrophonePrivacy; diff --git a/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs b/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs index 15a81527..a1a821d4 100644 --- a/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs +++ b/PepperDashEssentials/Room/Types/EssentialsHuddleSpaceRoom.cs @@ -6,6 +6,7 @@ using Crestron.SimplSharp; using PepperDash.Core; using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Room.Config; namespace PepperDash.Essentials diff --git a/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs b/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs index ac63067c..12a54592 100644 --- a/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs +++ b/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs @@ -5,7 +5,8 @@ using System.Text; using Crestron.SimplSharp; using PepperDash.Core; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Room.Config; using PepperDash.Essentials.Devices.Common.Codec; using PepperDash.Essentials.Devices.Common.VideoCodec; diff --git a/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddlePanelAvFunctionsDriver.cs b/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddlePanelAvFunctionsDriver.cs index 523a2912..48d81997 100644 --- a/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddlePanelAvFunctionsDriver.cs +++ b/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddlePanelAvFunctionsDriver.cs @@ -6,6 +6,7 @@ using Crestron.SimplSharpPro.UI; using PepperDash.Core; using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.SmartObjects; using PepperDash.Essentials.Core.PageManagers; diff --git a/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddleTechPageDriver.cs b/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddleTechPageDriver.cs index 02221d52..b8e1dfd6 100644 --- a/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddleTechPageDriver.cs +++ b/PepperDashEssentials/UIDrivers/EssentialsHuddle/EssentialsHuddleTechPageDriver.cs @@ -8,7 +8,8 @@ using Crestron.SimplSharpPro.DeviceSupport; using PepperDash.Core; using PepperDash.Essentials; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.SmartObjects; using PepperDash.Essentials.Core.Touchpanels.Keyboards; using PepperDash.Essentials.Devices.Displays; diff --git a/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs b/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs index 50fa3601..7b3aa686 100644 --- a/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs +++ b/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs @@ -6,7 +6,8 @@ using Crestron.SimplSharpPro; using Crestron.SimplSharpPro.UI; using PepperDash.Core; -using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.SmartObjects; using PepperDash.Essentials.Core.PageManagers; using PepperDash.Essentials.Room.Config; diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index 2ca1e7da..3f2a0e7d 100644 Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll index a818be1b..e29bf02f 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ diff --git a/essentials-framework b/essentials-framework index bf9115f1..a8c1e17b 160000 --- a/essentials-framework +++ b/essentials-framework @@ -1 +1 @@ -Subproject commit bf9115f17b481c8a1a65128ba02c6da90523ac17 +Subproject commit a8c1e17b127640400091a750c505b6cfa6f84e39