Ejemplo n.º 1
0
        public FanSpeedManager(FanConfiguration config, int criticalTemperature)
        {
            this.fanConfig = config;
            this.criticalTemperature = criticalTemperature;
            this.overriddenPercentages = new Dictionary<float, int>();
            this.overriddenValues = new Dictionary<int, float>();

            if (config.TemperatureThresholds != null
                && config.TemperatureThresholds.Count > 0)
            {
                this.threshMan = new TemperatureThresholdManager(config.TemperatureThresholds);
            }
            else
            {
                this.threshMan = new TemperatureThresholdManager(FanConfiguration.DefaultTemperatureThresholds);
            }

            foreach (FanSpeedPercentageOverride o in config.FanSpeedPercentageOverrides)
            {
                if (!this.overriddenPercentages.ContainsKey(o.FanSpeedPercentage))
                {
                    this.overriddenPercentages.Add(o.FanSpeedPercentage, o.FanSpeedValue);
                }

                if (!this.overriddenValues.ContainsKey(o.FanSpeedValue))
                {
                    this.overriddenValues.Add(o.FanSpeedValue, o.FanSpeedPercentage);
                }
            }
        }
Ejemplo n.º 2
0
        public FanSpeedManager(FanConfiguration config, int criticalTemperature)
        {
            this.fanConfig = config;
            this.criticalTemperature = criticalTemperature;
            this.overriddenPercentages = new Dictionary<float, FanSpeedPercentageOverride>();
            this.overriddenValues = new Dictionary<int, FanSpeedPercentageOverride>();

            this.MinSpeedValueWrite = config.MinSpeedValue;
            this.MaxSpeedValueWrite = config.MaxSpeedValue;

            if (config.IndependentReadMinMaxValues)
            {
                this.MinSpeedValueRead = config.MinSpeedValueRead;
                this.MaxSpeedValueRead = config.MaxSpeedValueRead;
            }
            else
            {
                this.MinSpeedValueRead = this.MinSpeedValueWrite;
                this.MaxSpeedValueRead = this.MaxSpeedValueWrite;
            }

            this.MinSpeedValueReadAbs = Math.Min(this.MinSpeedValueRead, this.MaxSpeedValueRead);
            this.MinSpeedValueReadAbs = Math.Max(this.MinSpeedValueRead, this.MaxSpeedValueRead);

            if (config.TemperatureThresholds != null
                && config.TemperatureThresholds.Count > 0)
            {
                this.threshMan = new TemperatureThresholdManager(config.TemperatureThresholds);
            }
            else
            {
                this.threshMan = new TemperatureThresholdManager(FanConfiguration.DefaultTemperatureThresholds);
            }

            foreach (FanSpeedPercentageOverride o in config.FanSpeedPercentageOverrides)
            {
                if (o.TargetOperation.HasFlag(OverrideTargetOperation.Write) 
                    && !this.overriddenPercentages.ContainsKey(o.FanSpeedPercentage))
                {
                    this.overriddenPercentages.Add(o.FanSpeedPercentage, o);
                }

                if (o.TargetOperation.HasFlag(OverrideTargetOperation.Read) 
                    && !this.overriddenValues.ContainsKey(o.FanSpeedValue))
                {
                    this.overriddenValues.Add(o.FanSpeedValue, o);
                }
            }
        }
Ejemplo n.º 3
0
        private int GetFanSpeedValue(FanConfiguration cfg, bool readWriteWords)
        {
            int fanSpeed = 0;
            int min = Math.Min(cfg.MinSpeedValue, cfg.MaxSpeedValue);
            int max = Math.Max(cfg.MinSpeedValue, cfg.MaxSpeedValue);

            // If the value is out of range 3 or more times,
            // minFanSpeed and/or maxFanSpeed are probably wrong.
            for (int i = 0; i <= 2; i++)
            {
                fanSpeed = ReadValue(cfg.ReadRegister, readWriteWords);

                if ((fanSpeed >= min) && (fanSpeed <= max))
                {
                    break;
                }
            }

            return fanSpeed;
        }
Ejemplo n.º 4
0
        private static List<FanConfiguration> ConvertViewModelsToFanConfigs(
            IEnumerable<FanConfigViewModel> viewModels)
        {
            List<FanConfiguration> configs = new List<FanConfiguration>();

            foreach (FanConfigViewModel vm in viewModels)
            {
                var cfg = new FanConfiguration()
                {
                    FanDisplayName = vm.FanDisplayName,
                    ReadRegister = vm.ReadRegister,
                    WriteRegister = vm.WriteRegister,
                    MinSpeedValue = vm.MinSpeedValue,
                    MaxSpeedValue = vm.MaxSpeedValue,
                    IndependentReadMinMaxValues = vm.IndependentReadMinMaxValues,
                    MinSpeedValueRead = vm.MinSpeedValueRead,
                    MaxSpeedValueRead = vm.MaxSpeedValueRead,
                    ResetRequired = vm.ResetRequired,
                    FanSpeedResetValue = vm.ResetValue
                };

                if (vm.FanSpeedOverrides != null)
                {
                    cfg.FanSpeedPercentageOverrides = vm.FanSpeedOverrides.Select(
                        x => new FanSpeedPercentageOverride()
                        {
                            FanSpeedPercentage = x.FanSpeedPercentage,
                            FanSpeedValue = x.FanSpeedValue,
                            TargetOperation = x.TargetOperation
                        }).ToList();
                }

                if (vm.TemperatureThresholds != null)
                {
                    cfg.TemperatureThresholds = vm.TemperatureThresholds.Select(
                        x => new TemperatureThreshold()
                        {
                            DownThreshold = x.DownThreshold,
                            UpThreshold = x.UpThreshold,
                            FanSpeed = x.FanSpeedPercentage
                        }).ToList();
                }

                configs.Add(cfg);
            }

            return configs;
        }