public override bool Equals(object obj) { if (obj is EPGWakeupConfig) { EPGWakeupConfig cfg = (EPGWakeupConfig)obj; if (cfg.Hour == Hour && cfg.Minutes == Minutes) { foreach (EPGGrabDays day in cfg.Days) { if (!Days.Contains(day)) { return(false); } } foreach (EPGGrabDays day in Days) { if (!cfg.Days.Contains(day)) { return(false); } } return(true); } } return(false); }
private void CheckDay(EPGWakeupConfig cfg, EPGGrabDays day, bool enabled) { if (enabled) { cfg.Days.Add(day); } }
public EPGWakeupConfig(string serializedConfig) { EPGWakeupConfig cfg = new EPGWakeupConfig(); try { BinaryFormatter formatter = new BinaryFormatter(); byte[] buffer = Convert.FromBase64String(serializedConfig); using (MemoryStream stream = new MemoryStream(buffer, 0, buffer.Length)) { cfg = (EPGWakeupConfig)formatter.Deserialize(stream); } } catch (Exception) {} Hour = cfg.Hour; Minutes = cfg.Minutes; Days = cfg.Days; LastRun = cfg.LastRun; }
public override void SaveSettings() { Setting setting; setting = _layer.GetSetting("PowerSchedulerShutdownActive", "false"); setting.Value = checkBox1.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5"); setting.Value = numericUpDown1.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0"); setting.Value = numUpDownStandbyAllowedStartHour.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24"); setting.Value = numUpDownStandbyAllowedEndHour.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerWakeupActive", "false"); setting.Value = checkBox2.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2"); setting.Value = comboBox1.SelectedIndex.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerForceShutdown", "false"); setting.Value = checkBox3.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false"); setting.Value = checkBox4.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60"); setting.Value = numericUpDown2.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300"); setting.Value = numericUpDown4.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60"); setting.Value = numericUpDown3.Value.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerReinitializeController", "false"); setting.Value = checkBox5.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PowerSchedulerCommand", string.Empty); setting.Value = textBox2.Text; setting.Persist(); setting = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false"); setting.Value = checkBox6.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false"); setting.Value = checkBox7.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("EPGWakeupConfig", String.Empty); EPGWakeupConfig cfg = new EPGWakeupConfig(setting.Value); EPGWakeupConfig newcfg = new EPGWakeupConfig(); newcfg.Hour = cfg.Hour; newcfg.Minutes = cfg.Minutes; // newcfg.Days = cfg.Days; newcfg.LastRun = cfg.LastRun; string[] time = maskedTextBox1.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]); newcfg.Hour = Convert.ToInt32(time[0]); newcfg.Minutes = Convert.ToInt32(time[1]); CheckDay(newcfg, EPGGrabDays.Monday, checkBox8.Checked); CheckDay(newcfg, EPGGrabDays.Tuesday, checkBox9.Checked); CheckDay(newcfg, EPGGrabDays.Wednesday, checkBox10.Checked); CheckDay(newcfg, EPGGrabDays.Thursday, checkBox11.Checked); CheckDay(newcfg, EPGGrabDays.Friday, checkBox12.Checked); CheckDay(newcfg, EPGGrabDays.Saturday, checkBox13.Checked); CheckDay(newcfg, EPGGrabDays.Sunday, checkBox14.Checked); if (!cfg.Equals(newcfg)) { setting.Value = newcfg.SerializeAsString(); setting.Persist(); } setting = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty); setting.Value = tbEpgCmd.Text; setting.Persist(); setting = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration"); setting.Value = textBox1.Text; setting.Persist(); // Persist share monitoring configuration for standby prevention setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true"); setting.Value = shareMonitoring.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", ""); StringBuilder shares = new StringBuilder(); foreach (DataGridViewRow row in inhibitStandbyShares.Rows) { shares.AppendFormat("{0},{1},{2};", row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value); } setting.Value = shares.ToString(); setting.Persist(); setting = _layer.GetSetting("NetworkMonitorEnabled", "false"); setting.Value = checkBox15.Checked.ToString(); setting.Persist(); setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2"); setting.Value = numericUpDown5.Value.ToString(); setting.Persist(); }
/// <summary> /// Thread to perform reboot /// </summary> private void RebootThread() { using (Settings reader = new MPSettings()) { EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty)); Log.Debug("RebootHandler: Reboot schedule {0:00}:{1:00} is due", config.Hour, config.Minutes); // Start external command RunExternalCommand("reboot"); // Trigger reboot Log.Info("RebootHandler: Reboot system"); IPowerScheduler ps = GlobalServiceProvider.Instance.Get<IPowerScheduler>(); ps.SuspendSystem("RebootHandler", (int)RestartOptions.Reboot, false); } }
private void _scheduleTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { TvBusinessLayer layer = new TvBusinessLayer(); bool scheduleEnabled = Convert.ToBoolean(layer.GetSetting("webepgScheduleEnabled", "true").Value); if (scheduleEnabled) { Setting configSetting = layer.GetSetting("webepgSchedule", String.Empty); EPGWakeupConfig config = new EPGWakeupConfig(configSetting.Value); if (ShouldRunNow()) { Log.Info("WebEPGImporter: WebEPG schedule {0}:{1} is due: {2}:{3}", config.Hour, config.Minutes, DateTime.Now.Hour, DateTime.Now.Minute); StartImport(null); config.LastRun = DateTime.Now; configSetting.Value = config.SerializeAsString(); configSetting.Persist(); } } }
private void SaveSettings() { using (_settings = new MPSettings()) { if (_singleSeat) { SetSetting("HomeOnly", checkBoxHomeOnly.Checked.ToString()); SetSetting("Command", textBoxCommand.Text); return; } #endif // General SetSetting("Profile", comboBoxProfile.SelectedIndex.ToString()); SetSetting("IdleTimeout", numericUpDownIdleTimeout.Value.ToString()); SetSetting("ExpertMode", (labelExpertMode.Text == "Expert Mode").ToString()); #if CLIENT // Client SetSetting("HomeOnly", checkBoxHomeOnly.Checked.ToString()); SetSetting("Command", textBoxCommand.Text); #endif #if SERVER // EPG { EPGWakeupConfig cfg = new EPGWakeupConfig(GetSetting("EPGWakeupConfig", String.Empty)); EPGWakeupConfig newcfg = new EPGWakeupConfig(); newcfg.Hour = cfg.Hour; newcfg.Minutes = cfg.Minutes; // newcfg.Days = cfg.Days; newcfg.LastRun = cfg.LastRun; string[] time = textBoxEPG.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]); newcfg.Hour = Convert.ToInt32(time[0]); newcfg.Minutes = Convert.ToInt32(time[1]); CheckDay(newcfg, EPGGrabDays.Monday, checkBoxEPGMonday.Checked); CheckDay(newcfg, EPGGrabDays.Tuesday, checkBoxEPGTuesday.Checked); CheckDay(newcfg, EPGGrabDays.Wednesday, checkBoxEPGWednesday.Checked); CheckDay(newcfg, EPGGrabDays.Thursday, checkBoxEPGThursday.Checked); CheckDay(newcfg, EPGGrabDays.Friday, checkBoxEPGFriday.Checked); CheckDay(newcfg, EPGGrabDays.Saturday, checkBoxEPGSaturday.Checked); CheckDay(newcfg, EPGGrabDays.Sunday, checkBoxEPGSunday.Checked); if (!cfg.Equals(newcfg)) { SetSetting("EPGWakeupConfig", newcfg.SerializeAsString()); } } SetSetting("EPGPreventStandby", checkBoxEPGPreventStandby.Checked.ToString()); SetSetting("EPGAwayMode", checkBoxEPGAwayMode.Checked.ToString()); SetSetting("EPGWakeup", checkBoxEPGWakeup.Checked.ToString()); SetSetting("EPGCommand", textBoxEPGCommand.Text); #endif // Reboot { EPGWakeupConfig cfg = new EPGWakeupConfig(GetSetting("RebootConfig", String.Empty)); EPGWakeupConfig newcfg = new EPGWakeupConfig(); newcfg.Hour = cfg.Hour; newcfg.Minutes = cfg.Minutes; // newcfg.Days = cfg.Days; newcfg.LastRun = cfg.LastRun; string[] time = textBoxReboot.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]); newcfg.Hour = Convert.ToInt32(time[0]); newcfg.Minutes = Convert.ToInt32(time[1]); CheckDay(newcfg, EPGGrabDays.Monday, checkBoxRebootMonday.Checked); CheckDay(newcfg, EPGGrabDays.Tuesday, checkBoxRebootTuesday.Checked); CheckDay(newcfg, EPGGrabDays.Wednesday, checkBoxRebootWednesday.Checked); CheckDay(newcfg, EPGGrabDays.Thursday, checkBoxRebootThursday.Checked); CheckDay(newcfg, EPGGrabDays.Friday, checkBoxRebootFriday.Checked); CheckDay(newcfg, EPGGrabDays.Saturday, checkBoxRebootSaturday.Checked); CheckDay(newcfg, EPGGrabDays.Sunday, checkBoxRebootSunday.Checked); if (!cfg.Equals(newcfg)) { SetSetting("RebootConfig", newcfg.SerializeAsString()); } } SetSetting("RebootWakeup", checkBoxRebootWakeup.Checked.ToString()); SetSetting("RebootCommand", textBoxRebootCommand.Text); // Processes SetSetting("Processes", textBoxProcesses.Text); SetSetting("ProcessesAwayMode", checkBoxProcessesAwayMode.Checked.ToString()); #if SERVER SetSetting("CheckForMPClientRunning", checkBoxMPClientRunning.Checked.ToString()); #endif // Active Shares SetSetting("ActiveSharesEnabled", checkBoxSharesEnabled.Checked.ToString()); SetSetting("ActiveSharesAwayMode", checkBoxSharesAwayMode.Checked.ToString()); StringBuilder shares = new StringBuilder(); foreach (DataGridViewRow row in dataGridShares.Rows) { shares.AppendFormat("{0},{1},{2};", row.Cells[0].Value, row.Cells[1].Value, row.Cells[2].Value); } SetSetting("ActiveShares", shares.ToString()); // Network Monitor SetSetting("NetworkMonitorEnabled", checkBoxNetworkEnabled.Checked.ToString()); SetSetting("NetworkMonitorIdleLimit", numericUpDownNetworkIdleLimit.Value.ToString()); SetSetting("NetworkMonitorAwayMode", checkBoxNetworkAwayMode.Checked.ToString()); // Ping Monitor SetSetting("PingMonitorEnabled", checkBoxPingMonitorEnable.Checked.ToString()); SetSetting("PingMonitorAwayMode", checkBoxPingMonitorAwayMode.Checked.ToString()); string str = ""; for (int i = 0; i < this.listBoxHosts.Items.Count; i++) { str = str + this.listBoxHosts.Items[i].ToString() + ";"; } str = str.TrimEnd(";".ToCharArray()); SetSetting("PingMonitorHosts", str); // Advanced #if SERVER SetSetting("ReinitializeController", checkBoxReinitializeController.Checked.ToString()); SetSetting("Command", textBoxCommand.Text); #endif SetSetting("AutoPowerSettings", checkBoxAutoPowerSettings.Checked.ToString()); SetSetting("ShutdownEnabled", checkBoxShutdownEnabled.Checked.ToString()); SetSetting("ShutdownMode", comboBoxShutdownMode.SelectedIndex.ToString()); // Legacy SetSetting("PreWakeupTime", numericUpDownPreWakeupTime.Value.ToString()); SetSetting("PreNoStandbyTime", numericUpDownPreNoStandbyTime.Value.ToString()); SetSetting("StandbyHoursFrom", numericUpDownStandbyHoursFrom.Value.ToString()); SetSetting("StandbyHoursTo", numericUpDownStandbyHoursTo.Value.ToString()); SetSetting("StandbyHoursOnWeekendFrom", numericUpDownStandbyHoursOnWeekendFrom.Value.ToString()); SetSetting("StandbyHoursOnWeekendTo", numericUpDownStandbyHoursOnWeekendTo.Value.ToString()); // Power settings if (checkBoxAutoPowerSettings.Checked) { PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_AWAY_MODE, AC, (uint)(_recommendedSettingsAC.allowAwayMode ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LOCK_CONSOLE_ON_WAKE, AC, (uint)(_recommendedSettingsAC.requirePassword ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_HYBRID_SLEEP, AC, (uint)(_recommendedSettingsAC.hybridSleep ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_RTC_WAKE, AC, (uint)(_recommendedSettingsAC.allowWakeTimers ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE, AC, _recommendedSettingsAC.idleTimeout * 60); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.HIBERNATE_AFTER, AC, _recommendedSettingsAC.hibernateAfter * 60); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LID_CLOSE_ACTION, AC, _recommendedSettingsAC.lidCloseAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.POWER_BUTTON_ACTION, AC, _recommendedSettingsAC.powerButtonAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.SLEEP_BUTTON_ACTION, AC, _recommendedSettingsAC.sleepButtonAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.WHEN_SHARING_MEDIA, AC, _recommendedSettingsAC.whenSharingMedia); if (PowerManager.HasDCPowerSource) { PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_AWAY_MODE, DC, (uint)(_recommendedSettingsDC.allowAwayMode ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LOCK_CONSOLE_ON_WAKE, DC, (uint)(_recommendedSettingsDC.requirePassword ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_HYBRID_SLEEP, DC, (uint)(_recommendedSettingsDC.hybridSleep ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.ALLOW_RTC_WAKE, DC, (uint)(_recommendedSettingsDC.allowWakeTimers ? 1 : 0)); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE, DC, _recommendedSettingsDC.idleTimeout * 60); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.HIBERNATE_AFTER, DC, _recommendedSettingsDC.hibernateAfter * 60); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.LID_CLOSE_ACTION, DC, _recommendedSettingsDC.lidCloseAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.POWER_BUTTON_ACTION, DC, _recommendedSettingsDC.powerButtonAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.SLEEP_BUTTON_ACTION, DC, _recommendedSettingsDC.sleepButtonAction); PowerManager.SetPowerSetting(PowerManager.SystemPowerSettingType.WHEN_SHARING_MEDIA, DC, _recommendedSettingsDC.whenSharingMedia); } } } #if SERVER RefreshStatus(); #endif }
public override void LoadSettings() { Setting setting; setting = _layer.GetSetting("PowerSchedulerShutdownActive", "false"); checkBox1.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5"); numericUpDown1.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0"); numUpDownStandbyAllowedStartHour.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24"); numUpDownStandbyAllowedEndHour.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerWakeupActive", "false"); checkBox2.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2"); comboBox1.SelectedIndex = Convert.ToInt32(setting.Value); setting = _layer.GetSetting("PowerSchedulerForceShutdown", "false"); checkBox3.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false"); checkBox4.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60"); numericUpDown2.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300"); numericUpDown4.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60"); numericUpDown3.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerReinitializeController", "false"); checkBox5.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerCommand", string.Empty); textBox2.Text = setting.Value; setting = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false"); checkBox6.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false"); checkBox7.Checked = Convert.ToBoolean(setting.Value); EPGWakeupConfig config = new EPGWakeupConfig(_layer.GetSetting("EPGWakeupConfig", String.Empty).Value); foreach (EPGGrabDays day in config.Days) { switch (day) { case EPGGrabDays.Monday: checkBox8.Checked = true; break; case EPGGrabDays.Tuesday: checkBox9.Checked = true; break; case EPGGrabDays.Wednesday: checkBox10.Checked = true; break; case EPGGrabDays.Thursday: checkBox11.Checked = true; break; case EPGGrabDays.Friday: checkBox12.Checked = true; break; case EPGGrabDays.Saturday: checkBox13.Checked = true; break; case EPGGrabDays.Sunday: checkBox14.Checked = true; break; } } string hFormat, mFormat; if (config.Hour < 10) hFormat = "0{0}"; else hFormat = "{0}"; if (config.Minutes < 10) mFormat = "0{0}"; else mFormat = "{0}"; maskedTextBox1.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes); setting = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty); tbEpgCmd.Text = setting.Value; setting = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration"); textBox1.Text = setting.Value; // Load share monitoring configuration for standby prevention setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true"); shareMonitoring.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", ""); inhibitStandbyShares.Rows.Clear(); string[] shares = setting.Value.Split(';'); foreach (string share in shares) { string[] shareItem = share.Split(','); if ((shareItem.Length.Equals(3)) && ((shareItem[0].Trim().Length > 0) || (shareItem[1].Trim().Length > 0) || (shareItem[2].Trim().Length > 0))) { inhibitStandbyShares.Rows.Add(shareItem); } } setting = _layer.GetSetting("NetworkMonitorEnabled", "false"); checkBox15.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2"); numericUpDown5.Value = Convert.ToDecimal(setting.Value); }
public override void SaveSettings() { base.SaveSettings(); _configFile.Info.GrabDays = (int)nMaxGrab.Value; _configFile.Channels = new List<ChannelMap>(); _configFile.RadioChannels = new List<ChannelMap>(); foreach (ChannelMap channel in TvMappings.ChannelMapping.Values) { _configFile.Channels.Add(channel); } foreach (ChannelMap channel in RadioMappings.ChannelMapping.Values) { _configFile.RadioChannels.Add(channel); } Log.Info("WebEPG Config: Button: Save"); string confFile = _configFileDir + "\\WebEPG.xml"; FileInfo config = new FileInfo(confFile); if (config.Exists) { File.Delete(confFile.Replace(".xml", ".bak")); File.Move(confFile, confFile.Replace(".xml", ".bak")); } XmlSerializer s = new XmlSerializer(typeof (WebepgConfigFile)); TextWriter w = new StreamWriter(confFile); s.Serialize(w, _configFile); w.Close(); TvBusinessLayer layer = new TvBusinessLayer(); Setting setting = layer.GetSetting("webepgDestination", "db"); switch (DestinationComboBox.SelectedIndex) { case 0: setting.Value = "db"; break; case 1: setting.Value = "defxmltv"; break; case 2: setting.Value = "xmltv"; break; } setting.Persist(); setting = layer.GetSetting("webepgDestinationFolder"); setting.Value = textBoxFolder.Text; setting.Persist(); setting = layer.GetSetting("webepgDeleteBeforeImport", "true"); setting.Value = checkBoxDeleteBeforeImport.Checked ? "true" : "false"; setting.Persist(); setting = layer.GetSetting("webepgScheduleEnabled", "true"); setting.Value = ScheduleGrabCheckBox.Checked ? "true" : "false"; setting.Persist(); setting = layer.GetSetting("webepgSchedule", String.Empty); EPGWakeupConfig cfg = new EPGWakeupConfig(setting.Value); EPGWakeupConfig newcfg = new EPGWakeupConfig(); newcfg.Hour = cfg.Hour; newcfg.Minutes = cfg.Minutes; // newcfg.Days = cfg.Days; newcfg.LastRun = cfg.LastRun; string[] time = grabTimeTextBox.Text.Split(System.Globalization.DateTimeFormatInfo.CurrentInfo.TimeSeparator[0]); newcfg.Hour = Convert.ToInt32(time[0]); newcfg.Minutes = Convert.ToInt32(time[1]); CheckDay(newcfg, EPGGrabDays.Monday, MondayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Tuesday, TuesdayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Wednesday, WednesdayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Thursday, ThursdayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Friday, FridayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Saturday, SaturdayCheckBox.Checked); CheckDay(newcfg, EPGGrabDays.Sunday, SundayCheckBox.Checked); if (!cfg.Equals(newcfg)) { setting.Value = newcfg.SerializeAsString(); setting.Persist(); } }
public override void LoadSettings() { base.LoadSettings(); Initialize(); TvBusinessLayer layer = new TvBusinessLayer(); switch (layer.GetSetting("webepgDestination", "db").Value) { case "db": DestinationComboBox.SelectedIndex = 0; break; case "defxmltv": DestinationComboBox.SelectedIndex = 1; break; case "xmltv": DestinationComboBox.SelectedIndex = 2; break; default: DestinationComboBox.SelectedIndex = 0; break; } textBoxFolder.Text = layer.GetSetting("webepgDestinationFolder").Value; checkBoxDeleteBeforeImport.Checked = Convert.ToBoolean(layer.GetSetting("webepgDeleteBeforeImport", "true").Value); LoadWebepgConfigFile(); //RedrawList(null); // Schedule ScheduleGrabCheckBox.Checked = Convert.ToBoolean(layer.GetSetting("webepgScheduleEnabled", "true").Value); EPGWakeupConfig config = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value); foreach (EPGGrabDays day in config.Days) { switch (day) { case EPGGrabDays.Monday: MondayCheckBox.Checked = true; break; case EPGGrabDays.Tuesday: TuesdayCheckBox.Checked = true; break; case EPGGrabDays.Wednesday: WednesdayCheckBox.Checked = true; break; case EPGGrabDays.Thursday: ThursdayCheckBox.Checked = true; break; case EPGGrabDays.Friday: FridayCheckBox.Checked = true; break; case EPGGrabDays.Saturday: SaturdayCheckBox.Checked = true; break; case EPGGrabDays.Sunday: SundayCheckBox.Checked = true; break; } } grabTimeTextBox.Text = String.Format("{0:00}:{1:00}", config.Hour, config.Minutes); }
/// <summary> /// Check if a reboot is due /// </summary> /// <returns>Returns whether the system should reboot now</returns> private bool ShouldRunNow() { using (Settings reader = new MPSettings()) { EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty)); // Check if this day is configured for reboot and there was no reboot yet DateTime now = DateTime.Now; if (ShouldRun(config.Days, now.DayOfWeek) && config.LastRun.Date < now.Date) { // Check if schedule is due if (now >= new DateTime(now.Year, now.Month, now.Day, config.Hour, config.Minutes, 0)) return true; } } return false; }
public override void LoadSettings() { Setting setting; setting = _layer.GetSetting("PowerSchedulerShutdownActive", "false"); checkBox1.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerIdleTimeout", "5"); numericUpDown1.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0"); numUpDownStandbyAllowedStartHour.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24"); numUpDownStandbyAllowedEndHour.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerWakeupActive", "false"); checkBox2.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerShutdownMode", "2"); comboBox1.SelectedIndex = Convert.ToInt32(setting.Value); setting = _layer.GetSetting("PowerSchedulerForceShutdown", "false"); checkBox3.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerExtensiveLogging", "false"); checkBox4.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerPreWakeupTime", "60"); numericUpDown2.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerPreNoShutdownTime", "300"); numericUpDown4.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerCheckInterval", "60"); numericUpDown3.Value = Convert.ToDecimal(setting.Value); setting = _layer.GetSetting("PowerSchedulerReinitializeController", "false"); checkBox5.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PowerSchedulerCommand", string.Empty); textBox2.Text = setting.Value; setting = _layer.GetSetting("PreventStandbyWhenGrabbingEPG", "false"); checkBox6.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("WakeupSystemForEPGGrabbing", "false"); checkBox7.Checked = Convert.ToBoolean(setting.Value); EPGWakeupConfig config = new EPGWakeupConfig(_layer.GetSetting("EPGWakeupConfig", String.Empty).Value); foreach (EPGGrabDays day in config.Days) { switch (day) { case EPGGrabDays.Monday: checkBox8.Checked = true; break; case EPGGrabDays.Tuesday: checkBox9.Checked = true; break; case EPGGrabDays.Wednesday: checkBox10.Checked = true; break; case EPGGrabDays.Thursday: checkBox11.Checked = true; break; case EPGGrabDays.Friday: checkBox12.Checked = true; break; case EPGGrabDays.Saturday: checkBox13.Checked = true; break; case EPGGrabDays.Sunday: checkBox14.Checked = true; break; } } string hFormat, mFormat; if (config.Hour < 10) { hFormat = "0{0}"; } else { hFormat = "{0}"; } if (config.Minutes < 10) { mFormat = "0{0}"; } else { mFormat = "{0}"; } maskedTextBox1.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes); setting = _layer.GetSetting("PowerSchedulerEpgCommand", String.Empty); tbEpgCmd.Text = setting.Value; setting = _layer.GetSetting("PowerSchedulerProcesses", "SetupTv, Configuration"); textBox1.Text = setting.Value; // Load share monitoring configuration for standby prevention setting = _layer.GetSetting("PreventStandybyWhenSharesInUse", "true"); shareMonitoring.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("PreventStandybyWhenSpecificSharesInUse", ""); inhibitStandbyShares.Rows.Clear(); string[] shares = setting.Value.Split(';'); foreach (string share in shares) { string[] shareItem = share.Split(','); if ((shareItem.Length.Equals(3)) && ((shareItem[0].Trim().Length > 0) || (shareItem[1].Trim().Length > 0) || (shareItem[2].Trim().Length > 0))) { inhibitStandbyShares.Rows.Add(shareItem); } } setting = _layer.GetSetting("NetworkMonitorEnabled", "false"); checkBox15.Checked = Convert.ToBoolean(setting.Value); setting = _layer.GetSetting("NetworkMonitorIdleLimit", "2"); numericUpDown5.Value = Convert.ToDecimal(setting.Value); }
/// <summary> /// Returns whether a schedule is due, and the EPG should run now. /// </summary> /// <returns></returns> private bool ShouldRunNow() { TvBusinessLayer layer = new TvBusinessLayer(); EPGWakeupConfig config = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value); // check if schedule is due // check if we've already run today if (config.LastRun.Day != DateTime.Now.Day) { // check if we should run today if (ShouldRun(config.Days, DateTime.Now.DayOfWeek)) { // check if schedule is due DateTime now = DateTime.Now; if (now.Hour > config.Hour || (now.Hour == config.Hour && now.Minute >= config.Minutes)) { return true; } } } return false; }
private void LoadSettings() { buttonApply.Enabled = false; using (_settings = new MPSettings()) { // Detect singleseat/multiseat string tvPluginDll; string hostName; tvPluginDll = Config.GetSubFolder(Config.Dir.Plugins, "windows") + @"\" + "TvPlugin.dll"; if (File.Exists(tvPluginDll)) { hostName = _settings.GetValueAsString("tvservice", "hostname", String.Empty); if (hostName != String.Empty && PowerManager.IsLocal(hostName)) { _singleSeat = true; Text = "PowerScheduler Client Plugin (TV-Server on local system)"; } else if (hostName == String.Empty) { _singleSeat = false; Text = "PowerScheduler Client Plugin (No TV-Server configured)"; } else { _singleSeat = false; Text = "PowerScheduler Client Plugin (TV-Server on " + hostName + ")"; } } else { _singleSeat = false; Text = "PowerScheduler Client Plugin (No TV-plugin installed)"; } if (_singleSeat) { textBoxProfile.Text = "Standby / wakeup settings have to be made in the TV-Server Configuration"; comboBoxProfile.Visible = false; flowLayoutPanelIdleTimeout.Visible = false; buttonExpertMode.Visible = false; labelExpertMode.Visible = false; tabControl.Controls.Remove(tabPageReboot); tabControl.Controls.Remove(tabPageProcesses); tabControl.Controls.Remove(tabPageNetwork); tabControl.Controls.Remove(tabPageShares); tabControl.Controls.Remove(tabPageAdvanced); checkBoxHomeOnly.Checked = Convert.ToBoolean(GetSetting("HomeOnly", "false")); textBoxCommand.Text = GetSetting("Command", string.Empty); return; } #endif // Update settings of old PS versions UpdateSettings(); bool buttonApplyEnabled = false; // General int profile = Convert.ToInt32(GetSetting("Profile", "-1")); #if SERVER if (profile < 0 || profile > 3) #else if (profile < 0 || profile > 2) #endif { profile = GetSystemProfile(); buttonApplyEnabled = true; } comboBoxProfile.SelectedIndex = profile; int idleTimeout = Convert.ToInt32(GetSetting("IdleTimeout", "-1")); if (idleTimeout == -1) { idleTimeout = (int)(PowerManager.RunningOnAC ? _defaultSettingsDesktopAC.idleTimeout : _defaultSettingsDesktopDC.idleTimeout); buttonApplyEnabled = true; } numericUpDownIdleTimeout.Value = idleTimeout; labelExpertMode.Text = Convert.ToBoolean(GetSetting("ExpertMode", "false")) ? "Expert Mode" : "Plug&&Play Mode"; if (labelExpertMode.Text == "Expert Mode") { comboBoxProfile.ForeColor = SystemColors.GrayText; buttonExpertMode.Text = "-> Plug&&Play Mode"; } else { checkBoxEPGPreventStandby.Visible = false; checkBoxEPGAwayMode.Visible = false; labelEPGCommand.Visible = false; textBoxEPGCommand.Visible = false; buttonEPGCommand.Visible = false; labelRebootCommand.Visible = false; textBoxRebootCommand.Visible = false; buttonRebootCommand.Visible = false; checkBoxAutoPowerSettings.Checked = true; tabControl.Controls.Remove(tabPageProcesses); tabControl.Controls.Remove(tabPageShares); tabControl.Controls.Remove(tabPageNetwork); tabControl.Controls.Remove(tabPageAdvanced); tabControl.Controls.Remove(tabPageLegacy); buttonExpertMode.Text = "-> Expert Mode"; } #if CLIENT // Client checkBoxHomeOnly.Checked = Convert.ToBoolean(GetSetting("HomeOnly", "false")); textBoxCommand.Text = GetSetting("Command", string.Empty); #endif #if SERVER // EPG { EPGWakeupConfig config = new EPGWakeupConfig(GetSetting("EPGWakeupConfig", String.Empty)); foreach (EPGGrabDays day in config.Days) { switch (day) { case EPGGrabDays.Monday: checkBoxEPGMonday.Checked = true; break; case EPGGrabDays.Tuesday: checkBoxEPGTuesday.Checked = true; break; case EPGGrabDays.Wednesday: checkBoxEPGWednesday.Checked = true; break; case EPGGrabDays.Thursday: checkBoxEPGThursday.Checked = true; break; case EPGGrabDays.Friday: checkBoxEPGFriday.Checked = true; break; case EPGGrabDays.Saturday: checkBoxEPGSaturday.Checked = true; break; case EPGGrabDays.Sunday: checkBoxEPGSunday.Checked = true; break; } } string hFormat, mFormat; if (config.Hour < 10) hFormat = "0{0}"; else hFormat = "{0}"; if (config.Minutes < 10) mFormat = "0{0}"; else mFormat = "{0}"; textBoxEPG.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes); checkBoxEPGPreventStandby.Checked = Convert.ToBoolean(GetSetting("EPGPreventStandby", "false")); if (!checkBoxEPGPreventStandby.Checked) checkBoxEPGAwayMode.Enabled = false; checkBoxEPGAwayMode.Checked = Convert.ToBoolean(GetSetting("EPGAwayMode", "false")); checkBoxEPGWakeup.Checked = Convert.ToBoolean(GetSetting("EPGWakeup", "false")); textBoxEPGCommand.Text = GetSetting("EPGCommand", String.Empty); } #endif // Reboot { EPGWakeupConfig config = new EPGWakeupConfig(GetSetting("RebootConfig", String.Empty)); foreach (EPGGrabDays day in config.Days) { switch (day) { case EPGGrabDays.Monday: checkBoxRebootMonday.Checked = true; break; case EPGGrabDays.Tuesday: checkBoxRebootTuesday.Checked = true; break; case EPGGrabDays.Wednesday: checkBoxRebootWednesday.Checked = true; break; case EPGGrabDays.Thursday: checkBoxRebootThursday.Checked = true; break; case EPGGrabDays.Friday: checkBoxRebootFriday.Checked = true; break; case EPGGrabDays.Saturday: checkBoxRebootSaturday.Checked = true; break; case EPGGrabDays.Sunday: checkBoxRebootSunday.Checked = true; break; } } string hFormat, mFormat; if (config.Hour < 10) hFormat = "0{0}"; else hFormat = "{0}"; if (config.Minutes < 10) mFormat = "0{0}"; else mFormat = "{0}"; textBoxReboot.Text = String.Format(hFormat, config.Hour) + ":" + String.Format(mFormat, config.Minutes); checkBoxRebootWakeup.Checked = Convert.ToBoolean(GetSetting("RebootWakeup", "false")); textBoxRebootCommand.Text = GetSetting("RebootCommand", String.Empty); } // Processes textBoxProcesses.Text = GetSetting("Processes", String.Empty); #if SERVER checkBoxMPClientRunning.Checked = Convert.ToBoolean(GetSetting("CheckForMPClientRunning", "false")); #endif if (!checkBoxMPClientRunning.Checked && textBoxProcesses.Text == String.Empty) checkBoxProcessesAwayMode.Enabled = false; checkBoxProcessesAwayMode.Checked = Convert.ToBoolean(GetSetting("ProcessesAwayMode", "false")); // Active Shares checkBoxSharesEnabled.Checked = Convert.ToBoolean(GetSetting("ActiveSharesEnabled", "false")); if (!checkBoxSharesEnabled.Checked) { checkBoxSharesAwayMode.Enabled = false; labelShares.ForeColor = SystemColors.GrayText; dataGridShares.Enabled = false; dataGridShares.ColumnHeadersDefaultCellStyle.ForeColor = SystemColors.GrayText; dataGridShares.RowHeadersDefaultCellStyle.ForeColor = SystemColors.GrayText; dataGridShares.DefaultCellStyle.ForeColor = SystemColors.GrayText; buttonSelectShare.Enabled = false; } checkBoxSharesAwayMode.Checked = Convert.ToBoolean(GetSetting("ActiveSharesAwayMode", "false")); dataGridShares.Rows.Clear(); string[] shares = GetSetting("ActiveShares", String.Empty).Split(';'); foreach (string share in shares) { string[] shareItem = share.Split(','); if ((shareItem.Length.Equals(3)) && ((shareItem[0].Trim().Length > 0) || (shareItem[1].Trim().Length > 0) || (shareItem[2].Trim().Length > 0))) { dataGridShares.Rows.Add(shareItem); } } if (dataGridShares.Rows.Count == 1) { string[] shareItem = { "", "", "" }; dataGridShares.Rows.Add(shareItem); } // Network Monitor checkBoxNetworkEnabled.Checked = Convert.ToBoolean(GetSetting("NetworkMonitorEnabled", "false")); if (!checkBoxNetworkEnabled.Checked) checkBoxNetworkAwayMode.Enabled = false; numericUpDownNetworkIdleLimit.Value = Convert.ToDecimal(GetSetting("NetworkMonitorIdleLimit", "0")); checkBoxNetworkAwayMode.Checked = Convert.ToBoolean(GetSetting("NetworkMonitorAwayMode", "false")); // Advanced #if SERVER checkBoxReinitializeController.Checked = Convert.ToBoolean(GetSetting("ReinitializeController", "false")); textBoxCommand.Text = GetSetting("Command", string.Empty); #endif checkBoxAutoPowerSettings.Checked = Convert.ToBoolean(GetSetting("AutoPowerSettings", "true")); checkBoxShutdownEnabled.Checked = Convert.ToBoolean(GetSetting("ShutdownEnabled", "false")); if (!checkBoxShutdownEnabled.Checked) { labelShutdownMode.ForeColor = SystemColors.GrayText; comboBoxShutdownMode.Enabled = false; numericUpDownIdleTimeout.Enabled = checkBoxAutoPowerSettings.Checked; } int shutdownMode = Convert.ToInt32(GetSetting("ShutdownMode", "0")); if (shutdownMode < 0 || shutdownMode > 3) shutdownMode = 0; comboBoxShutdownMode.SelectedIndex = shutdownMode; // Legacy numericUpDownPreWakeupTime.Value = Convert.ToInt32(GetSetting("PreWakeupTime", "60")); numericUpDownPreNoStandbyTime.Value = Convert.ToInt32(GetSetting("PreNoStandbyTime", "300")); numericUpDownStandbyHoursFrom.Value = Convert.ToInt32(GetSetting("StandbyHoursFrom", "0")); numericUpDownStandbyHoursTo.Value = Convert.ToInt32(GetSetting("StandbyHoursTo", "24")); numericUpDownStandbyHoursOnWeekendFrom.Value = Convert.ToInt32(GetSetting("StandbyHoursOnWeekendFrom", "0")); numericUpDownStandbyHoursOnWeekendTo.Value = Convert.ToInt32(GetSetting("StandbyHoursOnWeekendTo", "24")); buttonApply.Enabled = buttonApplyEnabled; #if SERVER // Ping Monitor bool _pingMonitorEnabled = Convert.ToBoolean(GetSetting("PingMonitorEnabled", "false")); checkBoxPingMonitorAwayMode.Checked = Convert.ToBoolean(GetSetting("PingMonitorAwayMode", "false")); if (_pingMonitorEnabled) { checkBoxPingMonitorEnable.Checked = true; checkBoxPingMonitorAwayMode.Enabled = true; buttonAdd.Enabled = true; buttonDelete.Enabled = true; } else { checkBoxPingMonitorEnable.Checked = false; checkBoxPingMonitorAwayMode.Enabled = false; buttonAdd.Enabled = false; buttonDelete.Enabled = false; } listBoxHosts.Items.Clear(); string str = GetSetting("PingMonitorHosts", ""); if (str != "") { foreach (string str2 in str.Split(";".ToCharArray())) { this.listBoxHosts.Items.Add(str2); } } #endif #if CLIENT tabControl.Controls.Remove(tabPagePingMonitor); #endif } #if SERVER // Start the RefeshStatusThread responsible for refreshing status information _setupTvThread = Thread.CurrentThread; _refreshStatusThread = new Thread(RefreshStatusThread); _refreshStatusThread.Name = "RefreshStatusThread"; _refreshStatusThread.IsBackground = true; _refreshStatusThread.Start(); #endif }
private DateTime GetNextWakeupSchedule(DateTime earliestWakeupTime) { TvBusinessLayer layer = new TvBusinessLayer(); EPGWakeupConfig cfg = new EPGWakeupConfig(layer.GetSetting("webepgSchedule", String.Empty).Value); // Start by thinking we should run today DateTime nextRun = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, cfg.Hour, cfg.Minutes, 0); // check if we should run today or some other day in the future if (cfg.LastRun.Day == DateTime.Now.Day || nextRun < earliestWakeupTime) { // determine first next day to run EPG grabber for (int i = 1; i < 8; i++) { if (ShouldRun(cfg.Days, nextRun.AddDays(i).DayOfWeek)) { nextRun = nextRun.AddDays(i); break; } } if (DateTime.Now.Day == nextRun.Day) { Log.Error("WebEPG: no valid next wakeup date for EPG grabbing found!"); nextRun = DateTime.MaxValue; } } return nextRun; }
private void CheckDay(EPGWakeupConfig cfg, EPGGrabDays day, bool enabled) { if (enabled) cfg.Days.Add(day); }
private void OnPowerSchedulerEvent(PowerSchedulerEventArgs args) { switch (args.EventType) { case PowerSchedulerEventType.Started: case PowerSchedulerEventType.Elapsed: IPowerScheduler ps = GlobalServiceProvider.Instance.Get<IPowerScheduler>(); if (ps == null) return; PowerSetting setting; bool enabled; using (Settings reader = new MPSettings()) { EPGWakeupConfig config = new EPGWakeupConfig(reader.GetValueAsString("psclientplugin", "RebootConfig", String.Empty)); if (args.EventType == PowerSchedulerEventType.Started) { // Get time of last reboot if (config.LastRun == DateTime.MinValue) config.LastRun = DateTime.Now; else config.LastRun = DateTime.Now.AddMilliseconds(-Environment.TickCount); // Save last reboot status reader.SetValue("psclientplugin", "RebootConfig", config.SerializeAsString()); Log.Debug("RebootHandler: Set time of last reboot: {0}", config.LastRun); } // Check if system should wakeup for reboot setting = ps.Settings.GetSetting("RebootWakeup"); enabled = reader.GetValueAsBool("psclientplugin", "RebootWakeup", false); if (setting.Get<bool>() != enabled) { setting.Set<bool>(enabled); if (enabled) { if (ps.IsRegistered(this as IWakeupHandler)) ps.Unregister(this as IWakeupHandler); ps.Register(this as IWakeupHandler); } else { ps.Unregister(this as IWakeupHandler); } Log.Debug("RebootHandler: Wakeup system for reboot: {0}", enabled ? "enabled" : "disabled"); } // Check if a reboot time is set setting = ps.Settings.GetSetting("RebootConfig"); if (!config.Equals(setting.Get<EPGWakeupConfig>())) { setting.Set<EPGWakeupConfig>(config); Log.Debug("RebootHandler: Reboot system at {0:00}:{1:00}", config.Hour, config.Minutes); if (config.Days != null) { String days = ""; foreach (EPGGrabDays day in config.Days) { if (days == "") days = day.ToString(); else days = days + ", " + day.ToString(); } Log.Debug("RebootHandler: Reboot system on: {0}", days); } } if (args.EventType == PowerSchedulerEventType.Elapsed) { // Check if reboot is due if (ShouldRunNow()) { // See if system is idle bool unattended, disAllowShutdown; String disAllowShutdownHandler, nextWakeupHandler; DateTime nextWakeupTime; // Reboot only if all other handlers allow standby ps.GetCurrentState(false, out unattended, out disAllowShutdown, out disAllowShutdownHandler, out nextWakeupTime, out nextWakeupHandler); if (!disAllowShutdown) { // Kick off reboot thread Log.Debug("RebootHandler: Reboot is due - reboot now"); Thread workerThread = new Thread(new ThreadStart(RebootThread)); workerThread.Name = "RebootHandler"; workerThread.IsBackground = true; workerThread.Priority = ThreadPriority.Lowest; workerThread.Start(); } else Log.Debug("RebootHandler: Reboot is due - reboot when standby is allowed"); } } break; } } }