public TemperatureTargetedPowerMode()
        {
            _previousReading  = new CPUReading();
            _currentReading   = new CPUReading();
            _sensorCollection = CPUSensorsFactory.GetCPUZeroSensor();

            _timer          = new Timer();
            _timer.Interval = 500;
            _timer.Tick    += (sender, e) => { DoCycle(); _onTick(_currentReading.ProcessorState); };
        }
Esempio n. 2
0
        private static TemperatureTargetedPowerMode ParseArgs(string[] args)
        {
            TemperatureTargetedPowerModeSettings settings = new TemperatureTargetedPowerModeSettings();

            settings.TargetCPUTemperature   = GetIntValue(args, ProgramArgs.TargetTemperature);
            settings.ProcessorStateSettings = new ProcessorStateSettings(GetIntValue(args, ProgramArgs.MinimumProcessorState), GetIntValue(args, ProgramArgs.MaximumProcessorState));

            if (args.Contains(ProgramArgs.PowerTypeAc))
            {
                settings.PowerWriteType = settings.PowerWriteType | PowerType.AC;
            }

            if (args.Contains(ProgramArgs.PowerTypeDc))
            {
                settings.PowerWriteType = settings.PowerWriteType | PowerType.DC;
            }

            if (args.Contains(ProgramArgs.UseActivePowerScheme))
            {
                settings.PowerScheme = new User32NativeWrapper().GetPowerSchemes().Where(powerScheme => powerScheme.IsActive()).SingleOrDefault();
            }
            else if (args.Contains(ProgramArgs.PowerScheme))
            {
                string powerSchemeValue = GetStringValue(args, ProgramArgs.PowerScheme);
                settings.PowerScheme = new User32NativeWrapper().GetPowerSchemes().Where(powerScheme => powerScheme.FriendlyName.Contains(powerSchemeValue)).SingleOrDefault();
                if (settings.PowerScheme == null)
                {
                    ShowUsage();
                    return(null);
                }
            }
            else
            {
                ShowUsage();
                return(null);
            }

            if (args.Contains(ProgramArgs.CPUSensorIndex))
            {
                int index = GetIntValue(args, ProgramArgs.CPUSensorIndex);
                IEnumerable <CPUSensorCollection> sensors = new CPUSensorsFactory().GetCPUSensors();
                if ((index + 1) > sensors.Count())
                {
                    ShowUsage();
                    return(null);
                }
                settings.SensorCollection = new CPUSensorsFactory().GetCPUSensors().ElementAt(index);
            }
            else
            {
                settings.SensorCollection = new CPUSensorsFactory().GetCPUSensors().FirstOrDefault();
            }

            return(new TemperatureTargetedPowerMode(settings));
        }
Esempio n. 3
0
 private void SetupPeriodicInformationPanel()
 {
     _cpuSensorCollection = CPUSensorsFactory.GetCPUZeroSensor();
     System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
     timer.Interval = 500;
     timer.Tick    += (sender, e) =>
     {
         _cpuSensorCollection.PackageSensor.Hardware.Update();
         cpuPackageTemperatureLabelValue.Text = _cpuSensorCollection.PackageSensor.Value + "C";
     };
     timer.Start();
 }