private void ApplyComputerStateProfile(ComputerStateType state) { if (state == ComputerStateType.Boot) { const string key = "boot-profile-saved"; if (AppSettingsHelper.ReadValue <bool>(key)) { return; } AppSettingsHelper.WriteValue(key, true); } Logger.Info("Applying computer state profile: {0}", state); lock (_deviceManager) { var dirtyControllers = new HashSet <IControllerProxy>(); foreach (var profile in _config.ComputerStateProfiles.Where(p => p.StateType == state)) { foreach (var port in profile.Ports) { var controller = _deviceManager.GetController(port); if (controller == null) { continue; } if (profile.Speed.HasValue) { controller.SetSpeed(port.Id, profile.Speed.Value); } var effectByte = controller.GetEffectByte(profile.EffectType); if (effectByte.HasValue && profile.EffectColors != null) { controller.SetRgb(port.Id, effectByte.Value, profile.EffectColors); } else if (effectByte.HasValue && profile.EffectColor.HasValue) { controller.SetRgb(port.Id, effectByte.Value, Enumerable.Repeat(profile.EffectColor.Value, _cache.GetDeviceConfig(port).LedCount)); } if (state == ComputerStateType.Boot && (profile.Speed.HasValue || effectByte.HasValue)) { dirtyControllers.Add(controller); } } } foreach (var controller in dirtyControllers) { controller.SaveProfile(); } } }
private void ApplyComputerStateProfile(ComputerStateType state) { if (state == ComputerStateType.Boot) { var configManager = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var configCollection = configManager.AppSettings.Settings; var key = "boot-profile-saved"; if (configCollection[key] != null) { return; } configCollection.Add(key, ""); configManager.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configManager.AppSettings.SectionInformation.Name); } lock (_deviceManager) { foreach (var profile in _configManager.CurrentConfig.ComputerStateProfiles.Where(p => p.StateType == state)) { foreach (var port in profile.Ports) { var controller = _deviceManager.GetController(port); if (controller == null) { continue; } if (profile.Speed.HasValue) { controller.SetSpeed(port.Id, profile.Speed.Value); } var effectByte = controller.GetEffectByte(profile.EffectType); if (effectByte.HasValue) { controller.SetRgb(port.Id, effectByte.Value, profile.EffectColors); } if (state == ComputerStateType.Boot && (profile.Speed.HasValue || effectByte.HasValue)) { controller.SaveProfile(); } } } } }
private void ApplyComputerStateProfile(ComputerStateType state) { if (state == ComputerStateType.Boot) { const string key = "boot-profile-saved"; if (AppSettingsHelper.ReadValue <bool>(key)) { return; } AppSettingsHelper.WriteValue(key, true); } Logger.Info("Applying computer state profile: {0}", state); foreach (var profile in _config.ComputerStateProfiles.Where(p => p.StateType == state)) { foreach (var port in profile.Ports) { var controller = _deviceManager.GetController(port); if (controller == null) { continue; } lock (controller) { var isDirty = false; if (profile.Speed.HasValue) { isDirty |= controller.SetSpeed(port.Id, profile.Speed.Value); } if (profile.EffectType != null && profile.Color != null) { isDirty |= controller.SetRgb(port.Id, profile.EffectType, profile.Color.Get(_cache.GetDeviceConfig(port).LedCount)); } if (state == ComputerStateType.Boot && isDirty) { controller.SaveProfile(); } } } } }
public void Dispose(ComputerStateType state) { if (IsDisposed) { return; } _timerManager.Dispose(); ApplyComputerStateProfile(state); _temperatureManager.Dispose(); _sensorManager.Dispose(); _deviceManager.Dispose(); _effectManager.Dispose(); _speedControllerManager.Dispose(); _configManager.Dispose(); _cache.Clear(); Dispose(); IsDisposed = true; }
public void Finalize(ComputerStateType state = ComputerStateType.Shutdown) { if (IsDisposed) { return; } Logger.Info($"{new string('=', 64)}"); Logger.Info("Finalizing..."); _timerManager?.Dispose(); if (_deviceManager != null) { ApplyComputerStateProfile(state); } _sensorManager?.Dispose(); _deviceManager?.Dispose(); _effectManager?.Dispose(); _speedControllerManager?.Dispose(); _configManager?.Dispose(); _cache?.Clear(); _timerManager = null; _deviceManager = null; _sensorManager = null; _deviceManager = null; _effectManager = null; _speedControllerManager = null; _configManager = null; _cache = null; Dispose(); IsDisposed = true; Logger.Info("Finalizing done!"); Logger.Info($"{new string('=', 64)}"); }