/// <summary> /// Get start time of build. /// </summary> /// <param name="database"></param> /// <returns></returns> /// <remarks> /// Returns the first occurance of one of the following: /// 1. Play is pressed /// 2. ProcessManagerState is Running /// 3. InternalProcessManagerState is Running /// 4. Temperature has a logged value above 600 deg. /// </remarks> public static DateTime GetBuildStart(IItemDatabase database) { LogRowData startProcess = database.GetFirstItem("Process.ProcessManager.StartProcess", x => x.Value == "True"); LogRowData processmanagerState = database.GetFirstItem("Process.ProcessManager.ProcessManagerState", x => x.Value == "Running"); LogRowData internalProcessmanagerState = database.GetFirstItem("Process.ProcessManager.InternalProcessManagerState", x => x.Value == "Running"); if (startProcess == null && processmanagerState == null && internalProcessmanagerState == null) { throw new ApplicationException("Start of process not found."); } List <LogRowData> data = new List <LogRowData>() { startProcess, processmanagerState, internalProcessmanagerState }; DateTime result = data.Where(t => t != null).Min(p => p.TimeStamp); return(result); }
private bool IsBooleanItem(string itemName) { var item = m_ItemDatabase?.GetFirstItem(itemName, x => x.Value != null); return(item != null && bool.TryParse(item.Value, out bool value)); }