public async Task SetPowerSettingsAsync(PowerSettings settings, OnSetPowerSettingsDelegate onSetPowerSettings) { _powerSettingsToSet = settings ?? throw new ArgumentNullException(nameof(settings)); _onSetPowerSettings = onSetPowerSettings ?? throw new ArgumentNullException(nameof(onSetPowerSettings)); // Checking if power changed await LoadPowerSettingsAsync(OnGetPowerSettings_SetPowerSettingsPathway); }
private void OnGetPowerResponse(float power) { var settings = new PowerSettings { Power = power }; _onGetPowerSettings(settings); }
/// <summary> /// Handles PowerScheduler event messages. /// Used to keep track of changes to the idle timeout /// </summary> /// <param name="args">PowerSchedulerEventArgs for a specific message</param> private void GenericStandbyHandler_OnPowerSchedulerEvent(PowerSchedulerEventArgs args) { switch (args.EventType) { case PowerSchedulerEventType.SettingsChanged: PowerSettings settings = args.GetData<PowerSettings>(); if (settings != null) _timeout = settings.IdleTimeout; break; } }
private void OnGetPowerSettings_SetPowerSettingsPathway(PowerSettings settings) { if (Math.Abs(settings.Power - _powerSettingsToSet.Power) <= PowerSigma) { _onSetPowerSettings(); return; } _setPowerCommand.SetResponseDelegate(OnSetPowerResponse); _setPowerCommand.SendSetPowerCommand(_powerSettingsToSet.Power); }
/// <summary> /// Handles settings changed events /// </summary> /// <param name="args">PowerScheduler event arguments</param> private void ScheduledRecordingsHandler_OnPowerSchedulerEvent(PowerSchedulerEventArgs args) { switch (args.EventType) { case PowerSchedulerEventType.SettingsChanged: PowerSettings settings = args.GetData <PowerSettings>(); if (settings != null) { _idleTimeout = settings.IdleTimeout; } break; } }
/// <summary> /// Send a power command to a server /// </summary> /// <param name="serverId">the server id</param> /// <param name="signal">the signal</param> /// <returns>the result of the command</returns> /// <exception cref="MissingCredentialsException"></exception> public async Task <bool> SendSignal(string serverId, PowerSettings signal) { if (_web == null) { throw new MissingCredentialsException(MissingCredentials); } var data = new NameValueCollection { ["signal"] = signal.ToString() }; var result = await _web.Post($"client/servers/{serverId}/power", data); return(string.IsNullOrEmpty(result)); }
public bool SendSignal(string ServerId, PowerSettings signal) { var data = new NameValueCollection(); data["signal"] = signal.ToString(); if (Post("client/servers/" + ServerId + "/power", data) != "") { return(false); } else { return(true); } }
public float GetBrightness() { uint percentage; if (PowerSettings.GetPowerSource() == PowerLineStatus.Offline) { percentage = ReadDCBrightness(); } else { percentage = ReadACBrightness(); } return(((float)percentage) / 100); }
/// <summary> /// Loads the standby configuration /// </summary> private void LoadSettings() { bool changed = false; bool boolSetting; int intSetting; string stringSetting; PowerSetting powerSetting; Log.Debug("PS: LoadSettings()"); // Load initial settings only once if (_settings == null) { using (Settings reader = new MPSettings()) { // Check if update of old PS settings is necessary if (reader.GetValue("psclientplugin", "ExpertMode") == "") { // Initialise list of old and new settings names to update List<String[]> settingNames = new List<String[]>(); settingNames.Add(new String[] { "homeonly", "HomeOnly" }); settingNames.Add(new String[] { "idletimeout", "IdleTimeout" }); settingNames.Add(new String[] { "shutdownenabled", "ShutdownEnabled" }); settingNames.Add(new String[] { "shutdownmode", "ShutdownMode" }); // Update settings names foreach (String[] settingName in settingNames) { String settingValue = reader.GetValue("psclientplugin", settingName[0]); if (settingValue != "") { reader.RemoveEntry("psclientplugin", settingName[0]); reader.SetValue("psclientplugin", settingName[1], settingValue); } } } _settings = new PowerSettings(); changed = true; // Set constant values (needed for backward compatibility) _settings.ForceShutdown = false; _settings.ExtensiveLogging = false; _settings.PreNoShutdownTime = 300; _settings.CheckInterval = 15; // Check if we only should suspend in MP's home window boolSetting = reader.GetValueAsBool("psclientplugin", "HomeOnly", false); powerSetting = _settings.GetSetting("HomeOnly"); powerSetting.Set<bool>(boolSetting); Log.Debug("PS: Only allow standby when on home window: {0}", boolSetting); // Get external command stringSetting = reader.GetValueAsString("psclientplugin", "Command", String.Empty); powerSetting = _settings.GetSetting("Command"); powerSetting.Set<string>(stringSetting); Log.Debug("PS: Run command on power state change: {0}", stringSetting); // Check if we should unmute the master volume boolSetting = reader.GetValueAsBool("psclientplugin", "UnmuteMasterVolume", true); powerSetting = _settings.GetSetting("UnmuteMasterVolume"); powerSetting.Set<bool>(boolSetting); Log.Debug("PS: Unmute master volume: {0}", boolSetting); // Detect single-seat string tvPluginDll = Config.GetSubFolder(Config.Dir.Plugins, "windows") + @"\" + "TvPlugin.dll"; if (File.Exists(tvPluginDll)) { string hostName = reader.GetValueAsString("tvservice", "hostname", String.Empty); if (hostName != String.Empty && PowerManager.IsLocal(hostName)) { _singleSeat = true; Log.Info("PS: Detected single-seat setup - TV-Server on local system"); } else if (hostName == String.Empty) { _singleSeat = false; Log.Info("PS: Detected standalone client setup - no TV-Server configured"); } else { _singleSeat = false; Log.Info("PS: Detected remote client setup - TV-Server on \"{0}\"", hostName); RemotePowerControl.HostName = hostName; Log.Debug("PS: Set RemotePowerControl.HostName: {0}", hostName); } } else { _singleSeat = false; Log.Info("PS: Detected standalone client setup - no TV-Plugin installed"); } // Standalone client has local standby / wakeup settings if (!_singleSeat) { // Check if PowerScheduler should actively put the system into standby boolSetting = reader.GetValueAsBool("psclientplugin", "ShutdownEnabled", false); _settings.ShutdownEnabled = boolSetting; Log.Debug("PS: PowerScheduler forces system to go to standby when idle: {0}", boolSetting); if (_settings.ShutdownEnabled) { // Check configured shutdown mode intSetting = reader.GetValueAsInt("psclientplugin", "ShutdownMode", 0); _settings.ShutdownMode = (ShutdownMode)intSetting; Log.Debug("PS: Shutdown mode: {0}", _settings.ShutdownMode.ToString()); } // Get idle timeout if (_settings.ShutdownEnabled) { intSetting = reader.GetValueAsInt("psclientplugin", "IdleTimeout", 30); _settings.IdleTimeout = intSetting; Log.Debug("PS: Standby after: {0} minutes", intSetting); } // Check configured pre-wakeup time (can only be configured by editing MediaPortal.xml) intSetting = reader.GetValueAsInt("psclientplugin", "PreWakeupTime", 60); _settings.PreWakeupTime = intSetting; Log.Debug("PS: Pre-wakeup time: {0} seconds", intSetting); // Check configured pre-no-standby time (can only be configured by editing MediaPortal.xml) intSetting = reader.GetValueAsInt("psclientplugin", "PreNoStandbyTime", 300); _settings.PreNoShutdownTime = intSetting; Log.Debug("PS: Pre-no-standby time: {0} seconds", intSetting); // Check if PowerScheduler should wakeup the system automatically intSetting = reader.GetValueAsInt("psclientplugin", "Profile", 0); if (intSetting == 2) boolSetting = false; // Notebook else boolSetting = true; // HTPC, Desktop _settings.WakeupEnabled = boolSetting; Log.Debug("PS: Wakeup system for various events: {0}", boolSetting); } } } // (Re-)Load settings every check interval if (_singleSeat) { // Connect to local tvservice (RemotePowerControl) if (RemotePowerControl.Instance != null && RemotePowerControl.Isconnected) { // Check if PowerScheduler should actively put the system into standby boolSetting = RemotePowerControl.Instance.PowerSettings.ShutdownEnabled; if (_settings.ShutdownEnabled != boolSetting) { _settings.ShutdownEnabled = boolSetting; Log.Debug("PS: Server plugin setting - PowerScheduler forces system to go to standby when idle: {0}", boolSetting); changed = true; } if (_settings.ShutdownEnabled) { // Get configured shutdown mode from local tvservice intSetting = (int)RemotePowerControl.Instance.PowerSettings.ShutdownMode; if ((int)_settings.ShutdownMode != intSetting) { _settings.ShutdownMode = (ShutdownMode)intSetting; Log.Debug("PS: Server plugin setting - Shutdown mode: {0}", _settings.ShutdownMode.ToString()); changed = true; } } // Get idle timeout from local tvservice intSetting = RemotePowerControl.Instance.PowerSettings.IdleTimeout; if (_settings.IdleTimeout != intSetting) { _settings.IdleTimeout = intSetting; Log.Debug("PS: Server plugin setting - {0}: {1} minutes", (_settings.ShutdownEnabled ? "Standby after" : "System idle timeout"), intSetting); changed = true; } // Get configured pre-wakeup time from local tvservice intSetting = RemotePowerControl.Instance.PowerSettings.PreWakeupTime; if (_settings.PreWakeupTime != intSetting) { _settings.PreWakeupTime = intSetting; Log.Debug("PS: Pre-wakeup time: {0} seconds", intSetting); changed = true; } // Check if PowerScheduler should wakeup the system automatically boolSetting = RemotePowerControl.Instance.PowerSettings.WakeupEnabled; if (_settings.WakeupEnabled != boolSetting) { _settings.WakeupEnabled = boolSetting; Log.Debug("PS: Server plugin setting - Wakeup system for various events: {0}", boolSetting); changed = true; } } else { Log.Error("PS: Cannot connect to local tvservice to load settings"); } } else { // Get active idle timeout for standalone client if standby is handled by Windows if (!_settings.ShutdownEnabled) { intSetting = (int)PowerManager.GetActivePowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE) / 60; if (_settings.IdleTimeout != intSetting) { _settings.IdleTimeout = intSetting; Log.Debug("PS: System idle timeout: {0} minutes", intSetting); changed = true; } } } // Send message in case any setting has changed if (changed) { PowerSchedulerEventArgs args = new PowerSchedulerEventArgs(PowerSchedulerEventType.SettingsChanged); args.SetData<PowerSettings>(_settings.Clone()); SendPowerSchedulerEvent(args); } }
private bool LoadSettings() { bool changed = false; PowerSetting setting; PowerSchedulerEventArgs args; if (_settings == null) { _settings = new PowerSettings(); _settings.ExtensiveLogging = true; _settings.ShutdownEnabled = true; _settings.WakeupEnabled = true; } using (Settings reader = new MPSettings()) { // Only detect singleseat/multiseat once if (!_refreshSettings) { setting = _settings.GetSetting("SingleSeat"); string stringSetting = reader.GetValueAsString("tvservice", "hostname", String.Empty); if (stringSetting == String.Empty) { Log.Info("Detected client-only setup - using local methods to suspend/hibernate system"); setting.Set<bool>(false); } else if (Network.IsSingleSeat()) { Log.Info("PowerScheduler: detected a singleseat setup - delegating suspend/hibernate requests to tvserver"); setting.Set<bool>(true); } else { Log.Info("PowerScheduler: detected a multiseat setup - using local methods to suspend/hibernate system"); setting.Set<bool>(false); stringSetting = reader.GetValueAsString("tvservice", "hostname", String.Empty); RemotePowerControl.HostName = stringSetting; Log.Info("PowerScheduler: set hostname to {0}", stringSetting); } changed = true; // From now on, only refresh the required settings on subsequent LoadSettings() calls _refreshSettings = true; } // Check if logging should be verbose bool boolSetting = reader.GetValueAsBool("psclientplugin", "extensivelogging", false); if (_settings.ExtensiveLogging != boolSetting) { _settings.ExtensiveLogging = boolSetting; Log.Debug("Extensive logging enabled: {0}", boolSetting); changed = true; } // Check if we only should suspend in MP's home window boolSetting = reader.GetValueAsBool("psclientplugin", "homeonly", true); setting = _settings.GetSetting("HomeOnly"); if (setting.Get<bool>() != boolSetting) { setting.Set<bool>(boolSetting); LogVerbose("Only allow standby when in home screen: {0}", boolSetting); changed = true; } // Check if we should force the system into standby boolSetting = reader.GetValueAsBool("psclientplugin", "forceshutdown", false); if (_settings.ForceShutdown != boolSetting) { _settings.ForceShutdown = boolSetting; LogVerbose("Force system into standby: {0}", boolSetting); changed = true; } // Check configured PowerScheduler shutdown enabled boolSetting = reader.GetValueAsBool("psclientplugin", "shutdownenabled", false); if (_settings.ShutdownEnabled != boolSetting) { _settings.ShutdownEnabled = boolSetting; LogVerbose("shutdown enabled locally set to: {0}", boolSetting); changed = true; } // Check configured PowerScheduler idle timeout int intSetting = reader.GetValueAsInt("psclientplugin", "idletimeout", 5); if (_settings.IdleTimeout != intSetting) { _settings.IdleTimeout = intSetting; LogVerbose("idle timeout locally set to: {0} minutes", intSetting); changed = true; } // Check configured pre-wakeup time intSetting = reader.GetValueAsInt("psclientplugin", "prewakeup", 60); if (_settings.PreWakeupTime != intSetting) { _settings.PreWakeupTime = intSetting; LogVerbose("pre-wakeup time set to: {0} seconds", intSetting); changed = true; } // Check configured pre-wakeup time intSetting = reader.GetValueAsInt("psclientplugin", "prenoshutdown", 120); if (_settings.PreNoShutdownTime != intSetting) { _settings.PreNoShutdownTime = intSetting; LogVerbose("pre-shutdown time set to: {0} seconds", intSetting); changed = true; } // Check with what interval the system status should be checked intSetting = reader.GetValueAsInt("psclientplugin", "checkinterval", 25); if (_settings.CheckInterval != intSetting) { _settings.CheckInterval = intSetting; LogVerbose("Check interval is set to {0} seconds", intSetting); _timer.Interval = intSetting * 1000; changed = true; } // Check configured shutdown mode intSetting = reader.GetValueAsInt("psclientplugin", "shutdownmode", 2); if ((int)_settings.ShutdownMode != intSetting) { _settings.ShutdownMode = (ShutdownMode)intSetting; LogVerbose("Shutdown mode set to {0}", _settings.ShutdownMode); changed = true; } // Send message in case any setting has changed if (changed) { args = new PowerSchedulerEventArgs(PowerSchedulerEventType.SettingsChanged); args.SetData<PowerSettings>(_settings.Clone()); SendPowerSchedulerEvent(args); } } return true; }
/// <summary> /// Init power settings form /// </summary> /// <param name="selectedProfile"></param> public PowerSettingsForm(PowerSettings recommendedSettingsAC, PowerSettings recommendedSettingsDC) { InitializeComponent(); // Show DC settings only if there is a DC power source if (PowerManager.HasDCPowerSource) { this.Width = 656; // needs more space for DC options checkBoxAllowAwayModeAC.Text += " on AC"; checkBoxRequirePasswordAC.Text += " on AC"; checkBoxHybridSleepAC.Text += " on AC"; labelIdleTimeoutAC2.Text += " on AC"; labelHibernateAfterAC2.Text += " on AC"; checkBoxAllowWakeTimersAC.Text += " on AC"; labelLidCloseActionAC.Text += " on AC"; labelPowerButtonActionAC.Text += " on AC"; labelSleepButtonActionAC.Text += " on AC"; labelWhenSharingMediaAC.Text += " on AC"; checkBoxAllowAwayModeDC.Visible = true; checkBoxRequirePasswordDC.Visible = true; checkBoxHybridSleepDC.Visible = true; labelIdleTimeoutDC1.Visible = true; numericUpDownIdleTimeoutDC.Visible = true; labelIdleTimeoutDC2.Visible = true; labelHibernateAfterDC1.Visible = true; numericUpDownHibernateAfterDC.Visible = true; labelHibernateAfterDC2.Visible = true; checkBoxAllowWakeTimersDC.Visible = true; labelLidCloseActionDC.Visible = true; comboBoxLidCloseActionDC.Visible = true; labelPowerButtonActionDC.Visible = true; comboBoxPowerButtonActionDC.Visible = true; labelSleepButtonActionDC.Visible = true; comboBoxSleepButtonActionDC.Visible = true; labelWhenSharingMediaDC.Visible = true; comboBoxWhenSharingMediaDC.Visible = true; } // Show lid close options only if there is a lid if (!PowerManager.HasLid) { labelLidCloseActionAC.Visible = false; comboBoxLidCloseActionAC.Visible = false; labelLidCloseActionDC.Visible = false; comboBoxLidCloseActionDC.Visible = false; } // Show hibernate options only if system can hibernate if (!PowerManager.CanHibernate) { labelHibernateAfterAC1.Visible = false; numericUpDownHibernateAfterAC.Visible = false; labelHibernateAfterAC2.Visible = false; labelHibernateAfterDC1.Visible = false; numericUpDownHibernateAfterDC.Visible = false; labelHibernateAfterDC2.Visible = false; checkBoxHybridSleepAC.Visible = false; checkBoxHybridSleepDC.Visible = false; } // Hide unused options and modify button actions for Windows XP if (Environment.OSVersion.Version.Major < 6) { checkBoxAllowAwayModeAC.Visible = false; checkBoxAllowAwayModeDC.Visible = false; checkBoxRequirePasswordAC.Visible = false; checkBoxRequirePasswordDC.Visible = false; checkBoxHybridSleepAC.Visible = false; checkBoxHybridSleepDC.Visible = false; checkBoxAllowWakeTimersAC.Visible = false; checkBoxAllowWakeTimersDC.Visible = false; comboBoxLidCloseActionAC.Items.Add("Ask User"); comboBoxLidCloseActionDC.Items.Add("Ask User"); comboBoxPowerButtonActionAC.Items.Add("Ask User"); comboBoxPowerButtonActionDC.Items.Add("Ask User"); comboBoxSleepButtonActionAC.Items.Add("Ask User"); comboBoxSleepButtonActionDC.Items.Add("Ask User"); labelWhenSharingMediaAC.Visible = false; comboBoxWhenSharingMediaAC.Visible = false; labelWhenSharingMediaDC.Visible = false; comboBoxWhenSharingMediaDC.Visible = false; } _recommendedSettingsAC = recommendedSettingsAC; _recommendedSettingsDC = recommendedSettingsDC; LoadSystemSettings(); }
public LCDDataReader() { brightness = new BrightnessData(); this.currentPowerScheme = PowerSettings.GetActivePowerScheme(); }
private void OnEnable() { t = target as PowerSettings; }
/// <summary> /// Refreshes the standby configuration /// </summary> private void LoadSettings() { int setting; bool changed = false; if (_settings == null) _settings = new PowerSettings(); TvBusinessLayer layer = new TvBusinessLayer(); // Check if PowerScheduler should log verbose debug messages if (_settings.ExtensiveLogging != Convert.ToBoolean(layer.GetSetting("PowerSchedulerExtensiveLogging", "false").Value)) { _settings.ExtensiveLogging = !_settings.ExtensiveLogging; Log.Debug("PowerScheduler: extensive logging enabled: {0}", _settings.ExtensiveLogging); changed = true; } // Check if PowerScheduler should actively put the system into standby if (_settings.ShutdownEnabled != Convert.ToBoolean(layer.GetSetting("PowerSchedulerShutdownActive", "false").Value)) { _settings.ShutdownEnabled = !_settings.ShutdownEnabled; LogVerbose("PowerScheduler: entering standby is enabled: {0}", _settings.ShutdownEnabled); changed = true; } // Check if PowerScheduler should wakeup the system automatically if (_settings.WakeupEnabled != Convert.ToBoolean(layer.GetSetting("PowerSchedulerWakeupActive", "false").Value)) { _settings.WakeupEnabled = !_settings.WakeupEnabled; LogVerbose("PowerScheduler: automatic wakeup is enabled: {0}", _settings.WakeupEnabled); changed = true; } // Check if PowerScheduler should force the system into suspend/hibernate if (_settings.ForceShutdown != Convert.ToBoolean(layer.GetSetting("PowerSchedulerForceShutdown", "false").Value)) { _settings.ForceShutdown = !_settings.ForceShutdown; LogVerbose("PowerScheduler: force shutdown enabled: {0}", _settings.ForceShutdown); changed = true; } // Check if PowerScheduler should reinitialize the TVController after wakeup if (_settings.ReinitializeController != Convert.ToBoolean(layer.GetSetting("PowerSchedulerReinitializeController", "false").Value)) { _settings.ReinitializeController = !_settings.ReinitializeController; LogVerbose("PowerScheduler: Reinitialize controller on wakeup: {0}", _settings.ReinitializeController); changed = true; } PowerSetting pSetting = _settings.GetSetting("ExternalCommand"); string sSetting = layer.GetSetting("PowerSchedulerCommand", String.Empty).Value; if (!sSetting.Equals(pSetting.Get<string>())) { pSetting.Set<string>(sSetting); LogVerbose("PowerScheduler: Run external command before standby / after resume: {0}", sSetting); changed = true; } // Check configured PowerScheduler idle timeout setting = Int32.Parse(layer.GetSetting("PowerSchedulerIdleTimeout", "5").Value); if (_settings.IdleTimeout != setting) { _settings.IdleTimeout = setting; LogVerbose("PowerScheduler: idle timeout set to: {0} minutes", _settings.IdleTimeout); changed = true; } // Check configured pre-wakeup time setting = Int32.Parse(layer.GetSetting("PowerSchedulerPreWakeupTime", "60").Value); if (_settings.PreWakeupTime != setting) { _settings.PreWakeupTime = setting; LogVerbose("PowerScheduler: pre-wakeup time set to: {0} seconds", _settings.PreWakeupTime); changed = true; } // Check configured pre-no-shutdown time setting = Int32.Parse(layer.GetSetting("PowerSchedulerPreNoShutdownTime", "120").Value); if (_settings.PreNoShutdownTime != setting) { _settings.PreNoShutdownTime = setting; LogVerbose("PowerScheduler: pre-no-shutdown time set to: {0} seconds", _settings.PreNoShutdownTime); changed = true; } // Check if check interval needs to be updated setting = Int32.Parse(layer.GetSetting("PowerSchedulerCheckInterval", "60").Value); if (_settings.CheckInterval != setting) { _settings.CheckInterval = setting; LogVerbose("PowerScheduler: Check interval set to {0} seconds", _settings.CheckInterval); _reloadInterval = setting; changed = true; } // Check configured shutdown mode setting = Int32.Parse(layer.GetSetting("PowerSchedulerShutdownMode", "2").Value); if ((int)_settings.ShutdownMode != setting) { _settings.ShutdownMode = (ShutdownMode)setting; LogVerbose("PowerScheduler: Shutdown mode set to {0}", _settings.ShutdownMode); changed = true; } // Check allowed stop time setting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyAllowedEnd", "24").Value); if (_settings.AllowedSleepStopTime != setting) { _settings.AllowedSleepStopTime = setting; LogVerbose("PowerScheduler: Standby allowed until {0} o' clock", _settings.AllowedSleepStopTime); changed = true; } // Check configured allowed start time setting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyAllowedStart", "0").Value); if (_settings.AllowedSleepStartTime != setting) { _settings.AllowedSleepStartTime = setting; LogVerbose("PowerScheduler: Standby allowed starting at {0} o' clock", _settings.AllowedSleepStartTime); changed = true; } // Send message in case any setting has changed if (changed) { PowerSchedulerEventArgs args = new PowerSchedulerEventArgs(PowerSchedulerEventType.SettingsChanged); args.SetData<PowerSettings>(_settings.Clone()); SendPowerSchedulerEvent(args); } }
/// <summary> /// Init power settings form /// </summary> /// <param name="selectedProfile"></param> public PowerSettingsForm(PowerSettings recommendedSettingsAC, PowerSettings recommendedSettingsDC) { InitializeComponent(); // Show DC settings only if there is a DC power source if (PowerManager.HasDCPowerSource) { this.Width = 656; // needs more space for DC options checkBoxAllowAwayModeAC.Text += " on AC"; checkBoxRequirePasswordAC.Text += " on AC"; checkBoxHybridSleepAC.Text += " on AC"; labelIdleTimeoutAC2.Text += " on AC"; labelHibernateAfterAC2.Text += " on AC"; checkBoxAllowWakeTimersAC.Text += " on AC"; labelLidCloseActionAC.Text += " on AC"; labelPowerButtonActionAC.Text += " on AC"; labelSleepButtonActionAC.Text += " on AC"; labelWhenSharingMediaAC.Text += " on AC"; checkBoxAllowAwayModeDC.Visible = true; checkBoxRequirePasswordDC.Visible = true; checkBoxHybridSleepDC.Visible = true; labelIdleTimeoutDC1.Visible = true; numericUpDownIdleTimeoutDC.Visible = true; labelIdleTimeoutDC2.Visible = true; labelHibernateAfterDC1.Visible = true; numericUpDownHibernateAfterDC.Visible = true; labelHibernateAfterDC2.Visible = true; checkBoxAllowWakeTimersDC.Visible = true; labelLidCloseActionDC.Visible = true; comboBoxLidCloseActionDC.Visible = true; labelPowerButtonActionDC.Visible = true; comboBoxPowerButtonActionDC.Visible = true; labelSleepButtonActionDC.Visible = true; comboBoxSleepButtonActionDC.Visible = true; labelWhenSharingMediaDC.Visible = true; comboBoxWhenSharingMediaDC.Visible = true; } // Show lid close options only if there is a lid if (!PowerManager.HasLid) { labelLidCloseActionAC.Visible = false; comboBoxLidCloseActionAC.Visible = false; labelLidCloseActionDC.Visible = false; comboBoxLidCloseActionDC.Visible = false; } // Show hibernate options only if system can hibernate if (!PowerManager.CanHibernate) { labelHibernateAfterAC1.Visible = false; numericUpDownHibernateAfterAC.Visible = false; labelHibernateAfterAC2.Visible = false; labelHibernateAfterDC1.Visible = false; numericUpDownHibernateAfterDC.Visible = false; labelHibernateAfterDC2.Visible = false; checkBoxHybridSleepAC.Visible = false; checkBoxHybridSleepDC.Visible = false; } // Hide unused options and modify button actions for Windows XP if (Environment.OSVersion.Version.Major < 6) { checkBoxAllowAwayModeAC.Visible = false; checkBoxAllowAwayModeDC.Visible = false; checkBoxRequirePasswordAC.Visible = false; checkBoxRequirePasswordDC.Visible = false; checkBoxHybridSleepAC.Visible = false; checkBoxHybridSleepDC.Visible = false; checkBoxAllowWakeTimersAC.Visible = false; checkBoxAllowWakeTimersDC.Visible = false; comboBoxLidCloseActionAC.Items.Add("Ask User"); comboBoxLidCloseActionDC.Items.Add("Ask User"); comboBoxPowerButtonActionAC.Items.Add("Ask User"); comboBoxPowerButtonActionDC.Items.Add("Ask User"); comboBoxSleepButtonActionAC.Items.Add("Ask User"); comboBoxSleepButtonActionDC.Items.Add("Ask User"); labelWhenSharingMediaAC.Visible = false; comboBoxWhenSharingMediaAC.Visible = false; labelWhenSharingMediaDC.Visible = false; comboBoxWhenSharingMediaDC.Visible = false; } _recommendedSettingsAC = recommendedSettingsAC; _recommendedSettingsDC = recommendedSettingsDC; LoadSystemSettings(); }
public static extern PowerSettings.EXECUTION_STATE SetThreadExecutionState(PowerSettings.EXECUTION_STATE esFlags);
/// <summary> /// Loads the standby configuration /// </summary> private void LoadSettings() { bool changed = false; bool boolSetting; int intSetting; string stringSetting; PowerSetting powerSetting; Log.Debug("PS: LoadSettings()"); TvBusinessLayer layer = new TvBusinessLayer(); // Load initial settings only once if (_settings == null) { // Check if update of old PS settings is necessary Setting setting = layer.GetSetting("PowerSchedulerExpertMode"); if (setting.Value == "") { setting.Remove(); // Initialise list of old and new settings to update List<String[]> settingNames = new List<String[]>(); settingNames.Add(new String[] { "PreventStandybyWhenSpecificSharesInUse", "PowerSchedulerActiveShares" }); settingNames.Add(new String[] { "PreventStandybyWhenSharesInUse", "PowerSchedulerActiveSharesEnabled" }); settingNames.Add(new String[] { "PowerSchedulerEpgCommand", "PowerSchedulerEPGCommand" }); settingNames.Add(new String[] { "PreventStandbyWhenGrabbingEPG", "PowerSchedulerEPGPreventStandby" }); settingNames.Add(new String[] { "WakeupSystemForEPGGrabbing", "PowerSchedulerEPGWakeup" }); settingNames.Add(new String[] { "EPGWakeupConfig", "PowerSchedulerEPGWakeupConfig" }); settingNames.Add(new String[] { "NetworkMonitorEnabled", "PowerSchedulerNetworkMonitorEnabled" }); settingNames.Add(new String[] { "NetworkMonitorIdleLimit", "PowerSchedulerNetworkMonitorIdleLimit" }); settingNames.Add(new String[] { "PowerSchedulerPreNoShutdownTime", "PowerSchedulerPreNoStandbyTime" }); settingNames.Add(new String[] { "PowerSchedulerShutdownActive", "PowerSchedulerShutdownEnabled" }); settingNames.Add(new String[] { "PowerSchedulerStandbyAllowedStart", "PowerSchedulerStandbyHoursFrom" }); settingNames.Add(new String[] { "PowerSchedulerStandbyAllowedEnd", "PowerSchedulerStandbyHoursTo" }); // Update settings names foreach (String[] settingName in settingNames) { setting = layer.GetSetting(settingName[0], "---"); if (setting.Value != "---") { setting.Tag = settingName[1]; setting.Persist(); } else { setting.Remove(); } } } _settings = new PowerSettings(); changed = true; // Set constant values (needed for backward compatibility) _settings.ForceShutdown = false; _settings.ExtensiveLogging = false; _settings.CheckInterval = 15; } // Check if PowerScheduler should actively put the system into standby boolSetting = Convert.ToBoolean(layer.GetSetting("PowerSchedulerShutdownEnabled", "false").Value); if (_settings.ShutdownEnabled != boolSetting) { _settings.ShutdownEnabled = boolSetting; Log.Debug("PS: PowerScheduler forces system to go to standby when idle: {0}", boolSetting); changed = true; } if (_settings.ShutdownEnabled) { // Check configured shutdown mode intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerShutdownMode", "0").Value); if ((int)_settings.ShutdownMode != intSetting) { _settings.ShutdownMode = (ShutdownMode)intSetting; Log.Debug("PS: Shutdown mode: {0}", _settings.ShutdownMode.ToString()); changed = true; } } // Get idle timeout if (_settings.ShutdownEnabled) intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerIdleTimeout", "30").Value); else intSetting = (int)PowerManager.GetActivePowerSetting(PowerManager.SystemPowerSettingType.STANDBYIDLE) / 60; if (_settings.IdleTimeout != intSetting) { _settings.IdleTimeout = intSetting; Log.Debug("PS: {0}: {1} minutes", (_settings.ShutdownEnabled ? "Standby after" : "System idle timeout"), intSetting); changed = true; } // Check configured pre-wakeup time intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerPreWakeupTime", "60").Value); if (_settings.PreWakeupTime != intSetting) { _settings.PreWakeupTime = intSetting; Log.Debug("PS: Pre-wakeup time: {0} seconds", intSetting); changed = true; } // Check configured pre-no-standby time intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerPreNoStandbyTime", "300").Value); if (_settings.PreNoShutdownTime != intSetting) { _settings.PreNoShutdownTime = intSetting; Log.Debug("PS: Pre-no-standby time: {0} seconds", intSetting); changed = true; } // Check allowed start time intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyHoursFrom", "0").Value); if (_settings.AllowedSleepStartTime != intSetting) { _settings.AllowedSleepStartTime = intSetting; Log.Debug("PS: Standby allowed from {0} o' clock", _settings.AllowedSleepStartTime); changed = true; } // Check allowed stop time intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyHoursTo", "24").Value); if (_settings.AllowedSleepStopTime != intSetting) { _settings.AllowedSleepStopTime = intSetting; Log.Debug("PS: Standby allowed until {0} o' clock", _settings.AllowedSleepStopTime); changed = true; } // Check allowed start time on weekend intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyHoursOnWeekendFrom", "0").Value); if (_settings.AllowedSleepStartTimeOnWeekend != intSetting) { _settings.AllowedSleepStartTimeOnWeekend = intSetting; Log.Debug("PS: Standby allowed from {0} o' clock on weekend", _settings.AllowedSleepStartTimeOnWeekend); changed = true; } // Check allowed stop time on weekend intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerStandbyHoursOnWeekendTo", "24").Value); if (_settings.AllowedSleepStopTimeOnWeekend != intSetting) { _settings.AllowedSleepStopTimeOnWeekend = intSetting; Log.Debug("PS: Standby allowed until {0} o' clock on weekend", _settings.AllowedSleepStopTimeOnWeekend); changed = true; } // Check if PowerScheduler should wakeup the system automatically intSetting = Int32.Parse(layer.GetSetting("PowerSchedulerProfile", "0").Value); if (intSetting == 2) boolSetting = false; // Notebook else boolSetting = true; // HTPC, Desktop, Server if (_settings.WakeupEnabled != boolSetting) { _settings.WakeupEnabled = boolSetting; Log.Debug("PS: Wakeup system for varios events: {0}", boolSetting); changed = true; } // Check if PowerScheduler should reinitialize the TVService after wakeup boolSetting = Convert.ToBoolean(layer.GetSetting("PowerSchedulerReinitializeController", "false").Value); if (_settings.ReinitializeController != boolSetting) { _settings.ReinitializeController = boolSetting; Log.Debug("PS: Reinitialize TVService on wakeup: {0}", boolSetting); changed = true; } // Get external command powerSetting = _settings.GetSetting("Command"); stringSetting = layer.GetSetting("PowerSchedulerCommand", String.Empty).Value; if (!stringSetting.Equals(powerSetting.Get<string>())) { powerSetting.Set<string>(stringSetting); Log.Debug("PS: Run command on power state change: {0}", stringSetting); changed = true; } // Send message in case any setting has changed if (changed) { PowerSchedulerEventArgs args = new PowerSchedulerEventArgs(PowerSchedulerEventType.SettingsChanged); args.SetData<PowerSettings>(_settings.Clone()); SendPowerSchedulerEvent(args); } }