From 4e9f7474a1c5bcbc11a93100f96711af2f04743f Mon Sep 17 00:00:00 2001 From: Heath Volmer Date: Mon, 28 Nov 2016 14:07:53 -0700 Subject: [PATCH] Changed debug class to write to file rather than use datastore --- Pepperdash Core/Pepperdash Core/Debug.cs | 150 ----------- .../Pepperdash Core/Debug/Debug.cs | 239 ++++++++++++++++++ .../Pepperdash Core/Debug/DebugContext.cs | 26 ++ .../Pepperdash Core/Debug/DebugMemory.cs | 53 ++++ .../Pepperdash Core/PepperDash_Core.csproj | 4 +- .../PepperDash_Core.projectinfo | Bin 1015 -> 1016 bytes .../Pepperdash Core/bin/PepperDash_Core.clz | Bin 878539 -> 879568 bytes .../bin/PepperDash_Core.config | 4 +- .../Pepperdash Core/bin/PepperDash_Core.dll | Bin 30392 -> 32440 bytes .../Pepperdash Core/bin/manifest.info | 2 +- .../Pepperdash Core/bin/manifest.ser | Bin 768 -> 767 bytes 11 files changed, 324 insertions(+), 154 deletions(-) delete mode 100644 Pepperdash Core/Pepperdash Core/Debug.cs create mode 100644 Pepperdash Core/Pepperdash Core/Debug/Debug.cs create mode 100644 Pepperdash Core/Pepperdash Core/Debug/DebugContext.cs create mode 100644 Pepperdash Core/Pepperdash Core/Debug/DebugMemory.cs diff --git a/Pepperdash Core/Pepperdash Core/Debug.cs b/Pepperdash Core/Pepperdash Core/Debug.cs deleted file mode 100644 index d6567c6..0000000 --- a/Pepperdash Core/Pepperdash Core/Debug.cs +++ /dev/null @@ -1,150 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Crestron.SimplSharp; -using Crestron.SimplSharp.CrestronDataStore; - - -namespace PepperDash.Core -{ - public static class Debug - { - - - public static uint Level { get; private set; } - - /// - /// This should called from the ControlSystem Initiailize method. It is only valid - /// in #pro environments because of direct console access and CrestronDataStoreStatic - /// - public static void Initialize() - { - if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) - { - // Add command to console - CrestronConsole.AddNewConsoleCommand(SetDebugFromConsole, "appdebug", - "appdebug:P [0-2]: Sets the application's console debug message level", - ConsoleAccessLevelEnum.AccessOperator); - - uint level = 0; - var err = CrestronDataStoreStatic.GetGlobalUintValue("DebugLevel", out level); - if (err == CrestronDataStore.CDS_ERROR.CDS_SUCCESS) - SetDebugLevel(level); - else if (err == CrestronDataStore.CDS_ERROR.CDS_RECORD_NOT_FOUND) - CrestronDataStoreStatic.SetGlobalUintValue("DebugLevel", 0); - else - CrestronConsole.PrintLine("Error restoring console debug level setting: {0}", err); - } - } - - /// - /// Callback for console command - /// - /// - public static void SetDebugFromConsole(string levelString) - { - try - { - if (string.IsNullOrEmpty(levelString.Trim())) - { - CrestronConsole.PrintLine("AppDebug level = {0}", Level); - return; - } - - SetDebugLevel(Convert.ToUInt32(levelString)); - } - catch - { - CrestronConsole.PrintLine("Usage: appdebug:P [0-2]"); - } - } - - /// - /// Sets the debug level - /// - /// Valid values 0 (no debug), 1 (critical), 2 (all messages) - public static void SetDebugLevel(uint level) - { - if (level <= 2) - { - Level = level; - CrestronConsole.PrintLine("[Application {0}], Debug level set to {1}", - InitialParametersClass.ApplicationNumber, Level); - if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) - { - var err = CrestronDataStoreStatic.SetGlobalUintValue("DebugLevel", level); - if (err != CrestronDataStore.CDS_ERROR.CDS_SUCCESS) - CrestronConsole.PrintLine("Error saving console debug level setting: {0}", err); - } - } - } - - /// - /// Prints message to console if current debug level is equal to or higher than the level of this message. - /// Uses CrestronConsole.PrintLine. - /// - /// - /// Console format string - /// Object parameters - public static void Console(uint level, string format, params object[] items) - { - if (Level >= level) - CrestronConsole.PrintLine("App {0}:{1}", InitialParametersClass.ApplicationNumber, - string.Format(format, items)); - } - - /// - /// Appends a device Key to the beginning of a message - /// - public static void Console(uint level, IKeyed dev, string format, params object[] items) - { - if (Level >= level) - Console(level, "[{0}] {1}", dev.Key, string.Format(format, items)); - } - - public static void Console(uint level, IKeyed dev, ErrorLogLevel errorLogLevel, - string format, params object[] items) - { - if (Level >= level) - { - var str = string.Format("[{0}] {1}", dev.Key, string.Format(format, items)); - Console(level, str); - LogError(errorLogLevel, str); - } - } - - public static void Console(uint level, ErrorLogLevel errorLogLevel, - string format, params object[] items) - { - if (Level >= level) - { - var str = string.Format(format, items); - Console(level, str); - LogError(errorLogLevel, str); - } - } - - public static void LogError(ErrorLogLevel errorLogLevel, string str) - { - string msg = string.Format("App {0}:{1}", InitialParametersClass.ApplicationNumber, str); - switch (errorLogLevel) - { - case ErrorLogLevel.Error: - ErrorLog.Error(msg); - break; - case ErrorLogLevel.Warning: - ErrorLog.Warn(msg); - break; - case ErrorLogLevel.Notice: - ErrorLog.Notice(msg); - break; - } - } - - public enum ErrorLogLevel - { - Error, Warning, Notice, None - } - } -} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Debug/Debug.cs b/Pepperdash Core/Pepperdash Core/Debug/Debug.cs new file mode 100644 index 0000000..fe59717 --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Debug/Debug.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharp.CrestronDataStore; +using Crestron.SimplSharp.CrestronIO; +using Newtonsoft.Json; +using PepperDash.Core.DebugThings; + + +namespace PepperDash.Core +{ + public static class Debug + { + /// + /// Describes the folder location where a given program stores it's debug level memory. By default, the + /// file written will be named appNdebug where N is 1-10. + /// + public static string FilePathPrefix = @"\nvram\debug\"; + + /// + /// The name of the file containing the current debug settings. + /// + public static string FileName = string.Format(@"app{0}Debug.json", InitialParametersClass.ApplicationNumber); + + public static int Level { get; private set; } + + static DebugContextCollection Contexts; + + static int SaveTimeoutMs = 30000; + + static CTimer SaveTimer; + + /// + /// This should called from the ControlSystem Initiailize method. Will attempt to call + /// CrestronDataStoreStatic.InitCrestronDataStore which may have been called elsewhere. + /// + public static void Initialize() + { + CrestronDataStoreStatic.InitCrestronDataStore(); + if (CrestronEnvironment.RuntimeEnvironment == eRuntimeEnvironment.SimplSharpPro) + { + // Add command to console + CrestronConsole.AddNewConsoleCommand(SetDebugFromConsole, "appdebug", + "appdebug:P [0-2]: Sets the application's console debug message level", + ConsoleAccessLevelEnum.AccessOperator); + } + + CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler; + + LoadMemory(); + Level = Contexts.GetOrCreateItem("DEFAULT").Level; + } + + /// + /// Used to save memory when shutting down + /// + /// + static void CrestronEnvironment_ProgramStatusEventHandler(eProgramStatusEventType programEventType) + { + if (programEventType == eProgramStatusEventType.Stopping) + { + if (SaveTimer != null) + { + SaveTimer.Stop(); + SaveTimer = null; + } + Console(0, "Saving debug settings"); + SaveMemory(); + } + } + + /// + /// Callback for console command + /// + /// + public static void SetDebugFromConsole(string levelString) + { + try + { + if (string.IsNullOrEmpty(levelString.Trim())) + { + CrestronConsole.PrintLine("AppDebug level = {0}", Level); + return; + } + + SetDebugLevel(Convert.ToInt32(levelString)); + } + catch + { + CrestronConsole.PrintLine("Usage: appdebug:P [0-2]"); + } + } + + /// + /// Sets the debug level + /// + /// Valid values 0 (no debug), 1 (critical), 2 (all messages) + public static void SetDebugLevel(int level) + { + if (level <= 2) + { + Level = level; + Contexts.GetOrCreateItem("DEFAULT").Level = level; + SaveMemoryOnTimeout(); + + CrestronConsole.PrintLine("[Application {0}], Debug level set to {1}", + InitialParametersClass.ApplicationNumber, Level); + + //var err = CrestronDataStoreStatic.SetLocalUintValue("DebugLevel", level); + //if (err != CrestronDataStore.CDS_ERROR.CDS_SUCCESS) + // CrestronConsole.PrintLine("Error saving console debug level setting: {0}", err); + } + } + + /// + /// Prints message to console if current debug level is equal to or higher than the level of this message. + /// Uses CrestronConsole.PrintLine. + /// + /// + /// Console format string + /// Object parameters + public static void Console(uint level, string format, params object[] items) + { + if (Level >= level) + CrestronConsole.PrintLine("App {0}:{1}", InitialParametersClass.ApplicationNumber, + string.Format(format, items)); + } + + /// + /// Appends a device Key to the beginning of a message + /// + public static void Console(uint level, IKeyed dev, string format, params object[] items) + { + if (Level >= level) + Console(level, "[{0}] {1}", dev.Key, string.Format(format, items)); + } + + public static void Console(uint level, IKeyed dev, ErrorLogLevel errorLogLevel, + string format, params object[] items) + { + if (Level >= level) + { + var str = string.Format("[{0}] {1}", dev.Key, string.Format(format, items)); + Console(level, str); + LogError(errorLogLevel, str); + } + } + + public static void Console(uint level, ErrorLogLevel errorLogLevel, + string format, params object[] items) + { + if (Level >= level) + { + var str = string.Format(format, items); + Console(level, str); + LogError(errorLogLevel, str); + } + } + + public static void LogError(ErrorLogLevel errorLogLevel, string str) + { + string msg = string.Format("App {0}:{1}", InitialParametersClass.ApplicationNumber, str); + switch (errorLogLevel) + { + case ErrorLogLevel.Error: + ErrorLog.Error(msg); + break; + case ErrorLogLevel.Warning: + ErrorLog.Warn(msg); + break; + case ErrorLogLevel.Notice: + ErrorLog.Notice(msg); + break; + } + } + + public enum ErrorLogLevel + { + Error, Warning, Notice, None + } + + + /// + /// Writes the memory object after timeout + /// + static void SaveMemoryOnTimeout() + { + if (SaveTimer == null) + SaveTimer = new CTimer(o => + { + SaveTimer = null; + SaveMemory(); + }, SaveTimeoutMs); + else + SaveTimer.Reset(SaveTimeoutMs); + } + + /// + /// Writes the memory - use SaveMemoryOnTimeout + /// + static void SaveMemory() + { + //var dir = @"\NVRAM\debug"; + //if (!Directory.Exists(dir)) + // Directory.Create(dir); + + using (StreamWriter sw = new StreamWriter(GetMemoryFileName())) + { + var json = JsonConvert.SerializeObject(Contexts); + sw.Write(json); + sw.Flush(); + } + } + + static void LoadMemory() + { + if (File.Exists(GetMemoryFileName())) + { + using (StreamReader sr = new StreamReader(GetMemoryFileName())) + { + var json = sr.ReadToEnd(); + Contexts = JsonConvert.DeserializeObject(json); + } + } + else + Contexts = new DebugContextCollection(); + } + + /// + /// Helper to get the file path for this app's debug memory + /// + static string GetMemoryFileName() + { + return string.Format(@"\NVRAM\debugSettings\program{0}", InitialParametersClass.ApplicationNumber); + } + } +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Debug/DebugContext.cs b/Pepperdash Core/Pepperdash Core/Debug/DebugContext.cs new file mode 100644 index 0000000..ce3c773 --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Debug/DebugContext.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +namespace PepperDash_Core.Debug +{ + public class DebugContext + { + public string Name { get; private set; } + + public int Level { get; private set; } + + public List Keys { get; private set; } + + + + public DebugContext(string name) + { + + } + + + } +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Debug/DebugMemory.cs b/Pepperdash Core/Pepperdash Core/Debug/DebugMemory.cs new file mode 100644 index 0000000..9d1b741 --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Debug/DebugMemory.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; + +using Newtonsoft.Json; + +namespace PepperDash.Core.DebugThings +{ + public class DebugContextCollection + { + [JsonProperty("items")] + Dictionary Items; + + public DebugContextCollection() + { + Items = new Dictionary(); + } + + /// + /// Sets the level of a given context item, and adds that item if it does not + /// exist + /// + /// + /// + /// True if the 0 <= level <= 2 and the conte + public void SetLevel(string contextKey, int level) + { + if (level < 0 || level > 2) + return; + GetOrCreateItem(contextKey).Level = level; + } + + /// + /// Gets a level or creates it if not existing + /// + /// + /// + public DebugContextItem GetOrCreateItem(string contextKey) + { + if (!Items.ContainsKey(contextKey)) + Items[contextKey] = new DebugContextItem() { Level = 0 }; + return Items[contextKey]; + } + } + + public class DebugContextItem + { + [JsonProperty("level")] + public int Level { get; set; } + } +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index d4a5872..cbbd678 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -67,7 +67,9 @@ - + + + diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index 32a3ec341a64ea70c979d3ed9c3eccca45b61207..aa26281089db7a40166ee550dea6da82be790fe1 100644 GIT binary patch delta 850 zcmV-Y1Fih`2lxk&vwwH+X7}Es`wt)8-y46rcd&b~_i%gX!K0lWYB#5LCy##L-}kE~ zubbcZ_nlu><>L4KeV^vd+qPQ$zQ6BPRlhBk7r*cCyW;+4)ZcbfELLSR&+66ol)C3B9P+M-%!CB`kEom7hz z5n%S^@|KfmUihJsZNr?NE++Zxb+xXi`Efm+7nix6s{8f09}dWgs2not+2t|J?@!{L6K_TDLE=_J_f`)ZZ7`vN+G1 z)**Y3K8s>J3l|jXOl^Gus@y7 z9_-$~KY94@U_bx#!T!O)WG_Ak!(fBSxCQWAO~!C{|F52vheNaS`X`=m)K2F+)B8L3 zXR~}dJIEd!+?(xB9^BvCeQ|C0~;yr49(Ef ztV_+tv#fPx2Ko&E00}|rwEzGB delta 849 zcmV-X1Frn|2loe%vwwU4&FsOl25AD^_%KhRn7>vj~*HR-}~s7 zj6V9JSQd-*;(u9DFRrpW|4C{=l!0`NcXl4o|92k{@GsZxYTdrf+8+k%Qh#4$%i=t5 zT8HdC`ZUe~I{q)RVtL#&`C?LDyVv&V8*hfXug=Pn8U%x;|Mu?f-N&dqwCNJ%+XMz= z%qO2t@9#aF?LV9y%=WVf`KR|jJ->G^KX@?NrLU-^On=KD>Ppx6m(QzdR{oGEKfqu@ zrKkBSU(WL7w8)8xzGo z7N4Cs$Y4%x0r*yP67TB&)id#6XeM6dS8cUys`IuhB0CSK_hh!FX4Yw%K<^i@136?{nJJ_F2 zXAgGo-=B~}u%CbWVE^D?vKOC&VX(nu+yeNmCS$m}|5wk-!=YJu{S(hOYNzv^>HVGi zvspf!9b^v3-0sB^SGT7Vy8>gi6fsK@QhGyt# z)=FmMS=PEaxkt>q_h~jEBm3!eme2MdoKJS95AN^o?0xzvIY<7Se4slNLF1Qv|Cjs{ bcIb-pVwyn`Xguq(mErwAZXnKE`V9a89Vh9h diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index 80a2c3ef02bea55e72359454f8d31c62085941cb..89cf368c1f44e3176937b91e5b3a60c9246d502a 100644 GIT binary patch delta 16056 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 RN^`J8)Pzd0MEuw3{|kI#8Rq~1 delta 14972 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 diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config index d4d0cb4..33a2e5b 100644 --- a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config +++ b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config @@ -10,8 +10,8 @@ - 11/15/2016 12:55:16 PM - 1.0.0.23257 + 11/28/2016 1:59:52 PM + 1.0.0.25195 Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll index c42c718de656a248be054a3b914b52f1c923b4a9..f038257d4c0a9d9fc25d62e710696d6c93b0e6e4 100644 GIT binary patch delta 10854 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 MZ~pf5(^jtj56Mmr)c^nh diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.info b/Pepperdash Core/Pepperdash Core/bin/manifest.info index 09c4f6c..5d87102 100644 --- a/Pepperdash Core/Pepperdash Core/bin/manifest.info +++ b/Pepperdash Core/Pepperdash Core/bin/manifest.info @@ -1,4 +1,4 @@ -MainAssembly=PepperDash_Core.dll:2eb6c529d49d8d4a7e636f33e87b1b6c +MainAssembly=PepperDash_Core.dll:91882e81937f6bb6c3592368dedeea09 MainAssemblyMinFirmwareVersion=1.007.0017 MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e ü diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.ser b/Pepperdash Core/Pepperdash Core/bin/manifest.ser index 9c0682b27e3236c3e8ae1e203a62696b7fb28d87..9b266a9aa99985da433746a3225bdf468997d427 100644 GIT binary patch delta 574 zcmV-E0>S-&2LA<+y##k3-UpGv6Mua`Uw@mx&}R>K4-WS7gWZSs9-MzVnS46EcmLtu zy-yEj`7F<~orl!&b+xXi!>GT^+WFv@&#P%xYKxOczwht+RYTbRzQ6DMvMLw9@9+CG zZ{D`m>i7M9ud4cOvApD7u88bBoZg?^+nEv7X0!8yhxe!VKFy{R zjCf~uKRyXPXdRij5$3Jv-|OZ7)ujJ)i1e@W^D>{dWCaEUA-{Kiet(e9CX?)7e>$B# z*u8&$^6=roe*Wo${ey$aUVILQ!3L9Y3*fh!jN$J7Up*@ihGymUPdwkKoz8cr_jm5k zX8Ck>kUcoKH`|{)xWBji;Qr3;bTWA`Fe!sjgE_ec>|4#rU~m6#oRZE5W`YieCg^F_ zX5(4bx+%Fwyu0^lHZLI?`{|Tip#2Bulbz{<`@1`PpMIJ>$o(n#KyN65#xME)FZm_^ M4+CW2!7>T}0M}GcfdBvi delta 575 zcmV-F0>J(M1%L*Sy#)5|KLC-z6Mx0m-zG5VBAdsWqMi{-`d`}?jK%8a0FH^pLAHuJ1rZBGf{@B90{wBMyC@ed}&(tmu~rP9-U zl`m)ca$4lgM~}W|D10xZ@N4w>8hxIuo3>gUw{2Za)@|OLE!(_4&!z^RlJDVkf3iQ@ zpWfenIQjJc{p|c9k@wSlHqG{CpME-d=#%gEz~zZw*Y>t$r$eL|JAedU}#oe|HSi++Ua~}dVlBs zY?e=F2ib#zd$aw?gZq2C5AN^mPA8KG1CufcHJFoIz`oU-4EFZ_#wqE1U?%8bXo8+* zZ8n}|t(%g2#JhW+W-t@7v7b(7`E38e`DADM;QsE;-lw0EZ{$zO2YN#hG=9nVf5|WT Ne*j(Qs#r1#0084RP1gVb