Example #1
0
        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();
                }
            }
        }
Example #2
0
        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();
                        }
                    }
                }
            }
        }
Example #3
0
        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();
                        }
                    }
                }
            }
        }
Example #4
0
        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;
        }
Example #5
0
        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)}");
        }