From acf9514fc50b28ddff5a7ac8e215446a37a2dbdf Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 12:57:31 -0700 Subject: [PATCH 1/7] Adds a flag to the debug context class to save whether or not an application should start after the next boot. --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 12 ++++++++++++ .../Pepperdash Core/Logging/DebugMemory.cs | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index 14da95e..083baa2 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -237,6 +237,18 @@ namespace PepperDash.Core } } + /// + /// Sets the flag to prevent application starting on next boot + /// + /// + public static void SetDoNotStartOnNextBoot(bool state) + { + Contexts.DoNotStartOnNextBoot = state; + CrestronConsole.PrintLine("[Application {0}], Do Not Start on Next Boot set to {1}", + InitialParametersClass.ApplicationNumber, Contexts.DoNotStartOnNextBoot); + SaveMemoryOnTimeout(); + } + /// /// /// diff --git a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs index 82ad51f..d75e3b9 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs @@ -10,6 +10,12 @@ namespace PepperDash.Core.DebugThings { public class DebugContextCollection { + /// + /// Property to tell the program not to intitialize when it boots, if desired + /// + [JsonProperty("doNotStartOnNextBoot")] + public bool DoNotStartOnNextBoot { get; set; } + [JsonProperty("items")] Dictionary Items; @@ -47,6 +53,9 @@ namespace PepperDash.Core.DebugThings public class DebugContextItem { + /// + /// The level of debug messages to print + /// [JsonProperty("level")] public int Level { get; set; } From 7fdbf7c3a13db84cd1239463a81b511aefece64f Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 13:06:37 -0700 Subject: [PATCH 2/7] Exposes DoNotStartOnNextBoot property on the Debug class properly. --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 15 +++++++++++---- .../Pepperdash Core/Logging/DebugMemory.cs | 13 +++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index 083baa2..ab5a3b5 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -28,6 +28,8 @@ namespace PepperDash.Core public static int Level { get; private set; } + public static bool DoNotStartOnNextBoot { get; private set; } + static DebugContextCollection Contexts; static int SaveTimeoutMs = 30000; @@ -81,7 +83,10 @@ namespace PepperDash.Core CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler; LoadMemory(); - Level = Contexts.GetOrCreateItem("DEFAULT").Level; + + var context = Contexts.GetOrCreateItem("DEFAULT"); + Level = context.Level; + DoNotStartOnNextBoot = context.DoNotStartOnNextBoot; try { @@ -243,10 +248,12 @@ namespace PepperDash.Core /// public static void SetDoNotStartOnNextBoot(bool state) { - Contexts.DoNotStartOnNextBoot = state; - CrestronConsole.PrintLine("[Application {0}], Do Not Start on Next Boot set to {1}", - InitialParametersClass.ApplicationNumber, Contexts.DoNotStartOnNextBoot); + DoNotStartOnNextBoot = state; + Contexts.GetOrCreateItem("DEFAULT").DoNotStartOnNextBoot = state; SaveMemoryOnTimeout(); + + CrestronConsole.PrintLine("[Application {0}], Do Not Start on Next Boot set to {1}", + InitialParametersClass.ApplicationNumber, DoNotStartOnNextBoot); } /// diff --git a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs index d75e3b9..2312160 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs @@ -10,12 +10,6 @@ namespace PepperDash.Core.DebugThings { public class DebugContextCollection { - /// - /// Property to tell the program not to intitialize when it boots, if desired - /// - [JsonProperty("doNotStartOnNextBoot")] - public bool DoNotStartOnNextBoot { get; set; } - [JsonProperty("items")] Dictionary Items; @@ -59,6 +53,13 @@ namespace PepperDash.Core.DebugThings [JsonProperty("level")] public int Level { get; set; } + /// + /// Property to tell the program not to intitialize when it boots, if desired + /// + [JsonProperty("doNotStartOnNextBoot")] + public bool DoNotStartOnNextBoot { get; set; } + + public DebugContextItem(DebugContextCollection parent) { From b7c7513a183624880028501611fc624ff8316337 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 16:46:25 -0700 Subject: [PATCH 3/7] Renamed property to DoNotLoadOnNextBoot for more clarity --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 10 +++++----- Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index ab5a3b5..737cf79 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -28,7 +28,7 @@ namespace PepperDash.Core public static int Level { get; private set; } - public static bool DoNotStartOnNextBoot { get; private set; } + public static bool DoNotLoadOnNextBoot { get; private set; } static DebugContextCollection Contexts; @@ -86,7 +86,7 @@ namespace PepperDash.Core var context = Contexts.GetOrCreateItem("DEFAULT"); Level = context.Level; - DoNotStartOnNextBoot = context.DoNotStartOnNextBoot; + DoNotLoadOnNextBoot = context.DoNotLoadOnNextBoot; try { @@ -248,12 +248,12 @@ namespace PepperDash.Core /// public static void SetDoNotStartOnNextBoot(bool state) { - DoNotStartOnNextBoot = state; - Contexts.GetOrCreateItem("DEFAULT").DoNotStartOnNextBoot = state; + DoNotLoadOnNextBoot = state; + Contexts.GetOrCreateItem("DEFAULT").DoNotLoadOnNextBoot = state; SaveMemoryOnTimeout(); CrestronConsole.PrintLine("[Application {0}], Do Not Start on Next Boot set to {1}", - InitialParametersClass.ApplicationNumber, DoNotStartOnNextBoot); + InitialParametersClass.ApplicationNumber, DoNotLoadOnNextBoot); } /// diff --git a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs index 2312160..6dcb65f 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/DebugMemory.cs @@ -56,8 +56,8 @@ namespace PepperDash.Core.DebugThings /// /// Property to tell the program not to intitialize when it boots, if desired /// - [JsonProperty("doNotStartOnNextBoot")] - public bool DoNotStartOnNextBoot { get; set; } + [JsonProperty("doNotLoadOnNextBoot")] + public bool DoNotLoadOnNextBoot { get; set; } public DebugContextItem(DebugContextCollection parent) From d442929453de4571d6ffde5b1e25595565742330 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 17:04:36 -0700 Subject: [PATCH 4/7] Fixed m ehtod name to SetDoNotLoadOnNextBoot --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index 737cf79..9fa9e9f 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -246,7 +246,7 @@ namespace PepperDash.Core /// Sets the flag to prevent application starting on next boot /// /// - public static void SetDoNotStartOnNextBoot(bool state) + public static void SetDoNotLoadOnNextBoot(bool state) { DoNotLoadOnNextBoot = state; Contexts.GetOrCreateItem("DEFAULT").DoNotLoadOnNextBoot = state; From 374ebc8d850123a11956b34f945bb3f2f2fb9a49 Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 18:02:56 -0700 Subject: [PATCH 5/7] Adds console command to get/set DoNotLoadOnNextBoot --- .../Pepperdash Core/Logging/Debug.cs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index 9fa9e9f..fca2b1c 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -67,6 +67,9 @@ namespace PepperDash.Core if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) { // Add command to console + CrestronConsole.AddNewConsoleCommand(SetDoNotLoadOnNextBootFromConsole, "donotloadonnextboot", + "donotloadonnextboot:P [true/false]: Sets whether the application should load config on next boot", ConsoleAccessLevelEnum.AccessOperator); + CrestronConsole.AddNewConsoleCommand(SetDebugFromConsole, "appdebug", "appdebug:P [0-2]: Sets the application's console debug message level", ConsoleAccessLevelEnum.AccessOperator); @@ -145,6 +148,32 @@ namespace PepperDash.Core } } + /// + /// Callback for console command + /// + /// + public static void SetDoNotLoadOnNextBootFromConsole(string stateString) + { + try + { + if (string.IsNullOrEmpty(stateString.Trim())) + { + CrestronConsole.PrintLine("DoNotLoadOnNextBoot = {0}", DoNotLoadOnNextBoot); + return; + } + + SetDoNotLoadOnNextBoot(Boolean.Parse(stateString)); + } + catch + { + CrestronConsole.PrintLine("Usage: donotloadonnextboot:P [true/false]"); + } + } + + /// + /// Callback for console command + /// + /// public static void SetDebugFilterFromConsole(string items) { var str = items.Trim(); From 4f2c059e0cada71bcb085aa9f76412a6dc6edf3c Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Fri, 15 Nov 2019 21:30:43 -0700 Subject: [PATCH 6/7] Reduces length of help tip for new console command --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index fca2b1c..5e83679 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -68,7 +68,7 @@ namespace PepperDash.Core { // Add command to console CrestronConsole.AddNewConsoleCommand(SetDoNotLoadOnNextBootFromConsole, "donotloadonnextboot", - "donotloadonnextboot:P [true/false]: Sets whether the application should load config on next boot", ConsoleAccessLevelEnum.AccessOperator); + "donotloadonnextboot:P [true/false]: Should the application load on next boot", ConsoleAccessLevelEnum.AccessOperator); CrestronConsole.AddNewConsoleCommand(SetDebugFromConsole, "appdebug", "appdebug:P [0-2]: Sets the application's console debug message level", From b701802326fa35a0795bbc806bf575e053d25f5e Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Thu, 12 Dec 2019 10:33:45 -0700 Subject: [PATCH 7/7] Adds console statement to clarify when DoNotStartOnNextBoot is set from console command --- Pepperdash Core/Pepperdash Core/Logging/Debug.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs index 5e83679..14c6b37 100644 --- a/Pepperdash Core/Pepperdash Core/Logging/Debug.cs +++ b/Pepperdash Core/Pepperdash Core/Logging/Debug.cs @@ -91,6 +91,8 @@ namespace PepperDash.Core Level = context.Level; DoNotLoadOnNextBoot = context.DoNotLoadOnNextBoot; + CrestronConsole.PrintLine(string.Format("Program {0} will not load config after next boot. Use console command go:{0} to load the config manually", InitialParametersClass.ApplicationNumber)); + try { if (InitialParametersClass.NumberOfRemovableDrives > 0)