From 43fd263ea1d6f865e7aaec928eaf6f5c63403487 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 13 Mar 2019 16:33:51 -0600 Subject: [PATCH] Config Update Working --- .../AppServer/CotijaSystemController.cs | 13 ++++- .../AppServer/Messengers/ConfigMessenger.cs | 47 ++++++++++++++++++- .../CotijaEssentialsHuddleSpaceRoomBridge.cs | 1 + .../PepperDashEssentials.csproj | 1 + .../VC/EssentialsVideoCodecUiDriver.cs | 20 +++----- 5 files changed, 66 insertions(+), 16 deletions(-) diff --git a/PepperDashEssentials/AppServer/CotijaSystemController.cs b/PepperDashEssentials/AppServer/CotijaSystemController.cs index 4417debf..44b007ef 100644 --- a/PepperDashEssentials/AppServer/CotijaSystemController.cs +++ b/PepperDashEssentials/AppServer/CotijaSystemController.cs @@ -17,6 +17,7 @@ using PepperDash.Core; using PepperDash.Essentials.Core; using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Room.Cotija; +using PepperDash.Essentials.AppServer.Messengers; namespace PepperDash.Essentials { @@ -39,6 +40,8 @@ namespace PepperDash.Essentials Dictionary PushedActions = new Dictionary(); + public ConfigMessenger ConfigMessenger { get; private set; } + CTimer ServerHeartbeatCheckTimer; long ServerHeartbeatInterval = 20000; @@ -49,7 +52,7 @@ namespace PepperDash.Essentials DateTime LastAckMessage; - string SystemUuid; + public string SystemUuid; List RoomBridges = new List(); @@ -97,9 +100,15 @@ namespace PepperDash.Essentials CrestronConsole.AddNewConsoleCommand(s => CleanUpWebsocketClient(), "mobiledisco", "Disconnects websocket", ConsoleAccessLevelEnum.AccessOperator); + CrestronConsole.AddNewConsoleCommand(s => ParseStreamRx(s), "mobilesimulateaction", "Simulates a message from the server", ConsoleAccessLevelEnum.AccessOperator); + CrestronEnvironment.ProgramStatusEventHandler += new ProgramStatusEventHandler(CrestronEnvironment_ProgramStatusEventHandler); CrestronEnvironment.EthernetEventHandler += new EthernetEventHandler(CrestronEnvironment_EthernetEventHandler); - + + // Config Messenger + var cmKey = Key + "-config"; + ConfigMessenger = new ConfigMessenger(cmKey, "/config"); + ConfigMessenger.RegisterWithAppServer(this); } /// diff --git a/PepperDashEssentials/AppServer/Messengers/ConfigMessenger.cs b/PepperDashEssentials/AppServer/Messengers/ConfigMessenger.cs index e4fd18fe..549bf17b 100644 --- a/PepperDashEssentials/AppServer/Messengers/ConfigMessenger.cs +++ b/PepperDashEssentials/AppServer/Messengers/ConfigMessenger.cs @@ -4,9 +4,54 @@ using System.Linq; using System.Text; using Crestron.SimplSharp; +using PepperDash.Core; +using PepperDash.Essentials.Core.Config; + namespace PepperDash.Essentials.AppServer.Messengers { - public class ConfigMessenger + + /// + /// Handles interactions with the app server to update the config + /// + public class ConfigMessenger : MessengerBase { + public ConfigMessenger(string key, string messagePath) + : base(key, messagePath) + { + ConfigUpdater.ConfigStatusChanged -= ConfigUpdater_ConfigStatusChanged; + ConfigUpdater.ConfigStatusChanged += new EventHandler(ConfigUpdater_ConfigStatusChanged); + } + + void ConfigUpdater_ConfigStatusChanged(object sender, ConfigStatusEventArgs e) + { + PostUpdateStatus(e.UpdateStatus.ToString()); + } + + protected override void CustomRegisterWithAppServer(CotijaSystemController appServerController) + { + appServerController.AddAction(MessagePath + "/updateConfig", new Action(s => GetConfigFile(s))); + } + + void GetConfigFile(string url) + { + url = string.Format("http://{0}/api/system/{1}/config", AppServerController.Config.ServerUrl, AppServerController.SystemUuid); + + ConfigUpdater.GetConfigFromServer(url); + } + + /// + /// Posts a message with the current status of the config update + /// + /// + void PostUpdateStatus(string status) + { + PostStatusMessage(new + { + updateStatus = status + }); + } + } + + } \ No newline at end of file diff --git a/PepperDashEssentials/AppServer/RoomBridges/CotijaEssentialsHuddleSpaceRoomBridge.cs b/PepperDashEssentials/AppServer/RoomBridges/CotijaEssentialsHuddleSpaceRoomBridge.cs index 976cb484..eef8e167 100644 --- a/PepperDashEssentials/AppServer/RoomBridges/CotijaEssentialsHuddleSpaceRoomBridge.cs +++ b/PepperDashEssentials/AppServer/RoomBridges/CotijaEssentialsHuddleSpaceRoomBridge.cs @@ -25,6 +25,7 @@ namespace PepperDash.Essentials public AudioCodecBaseMessenger ACMessenger { get; private set; } + /// /// /// diff --git a/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials.csproj index 10fad395..a4072766 100644 --- a/PepperDashEssentials/PepperDashEssentials.csproj +++ b/PepperDashEssentials/PepperDashEssentials.csproj @@ -108,6 +108,7 @@ + diff --git a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs index b035523e..704a42d3 100644 --- a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs +++ b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs @@ -102,7 +102,6 @@ namespace PepperDash.Essentials.UIDrivers.VC SetupCallStagingPopover(); SetupDialKeypad(); ActiveCallsSRL = new SubpageReferenceList(triList, UISmartObjectJoin.CodecActiveCallsHeaderList, 5,5,5); - SetupDirectoryList(); SetupRecentCallsList(); SetupFavorites(); SetupLayoutControls(); @@ -160,6 +159,8 @@ namespace PepperDash.Essentials.UIDrivers.VC }); SearchStringFeedback.LinkInputSig(triList.StringInput[UIStringJoin.CodecDirectorySearchEntryText]); + SetupDirectoryList(); + SearchStringBackspaceVisibleFeedback = new BoolFeedback(() => SearchStringBuilder.Length > 0); SearchStringBackspaceVisibleFeedback.LinkInputSig(triList.BooleanInput[UIBoolJoin.VCDirectoryBackspaceVisible]); @@ -1065,19 +1066,12 @@ namespace PepperDash.Essentials.UIDrivers.VC /// void SearchKeypadClear() { - try - { - SearchStringBuilder.Remove(0, SearchStringBuilder.Length); - SearchStringFeedback.FireUpdate(); - SearchStringKeypadCheckEnables(); + SearchStringBuilder.Remove(0, SearchStringBuilder.Length); + SearchStringFeedback.FireUpdate(); + SearchStringKeypadCheckEnables(); - if ((Codec as IHasDirectory).CurrentDirectoryResultIsNotDirectoryRoot.BoolValue) - SetCurrentDirectoryToRoot(); - } - catch (Exception e) - { - Debug.Console(1, "SearchKeypadClear() blew up!: {0}", e); - } + if ((Codec as IHasDirectory).CurrentDirectoryResultIsNotDirectoryRoot.BoolValue) + SetCurrentDirectoryToRoot(); } ///