コード例 #1
0
        public byte TempToFanSpeed(double temperature)
        {
            _LastTemperatures.Add(temperature);

            // Calculate average based on some parameters
            double average;

            if (temperature < TEMP_SAFE_MAX)
            {
                average = _LastTemperatures
                          .Where(t => t > 0)   // Ignore possible error readings
                          .DefaultIfEmpty(0.0) // In MSHybrid the dedicated GPU temperature is 0 if not used, so default to this when we're working on an empty list
                          .Average(t1 => t1);  // Average of last x readings
            }
            else
            {
                // Reset avarage to non safe temperature so we can act accordingly
                _LastTemperatures.Clear();
                _LastTemperatures.Add(temperature);
                _LastTemperatures.Add(temperature); // Increase weight for next average calculation
                average = temperature;
            }

            // Stop fans after x iterations below min fan temperature
            if (average <= TEMP_FOR_MIN_FANSPEED)
            {
                _NoFanCounter += 1;
                if (_NoFanCounter >= NOFAN_THRESSHOLD)
                {
                    return(FANSPEED_OFF);
                }
                else
                {
                    return(FANSPEED_MIN);
                }
            }
            else
            {
                _NoFanCounter = 0; // Reset
            }

            // Calculate fanspeed
            var fanSpeed = (FANSPEED_MAX - FANSPEED_MIN) / (TEMP_FOR_MAX_FANSPEED - TEMP_FOR_MIN_FANSPEED) * (average - TEMP_FOR_MIN_FANSPEED) + FANSPEED_MIN; // Linear fan formule

            return((byte)Math.Min(Math.Max(fanSpeed, FANSPEED_MIN), FANSPEED_MAX));
        }
コード例 #2
0
        public void Add_AddsOneByte_Added()
        {
            var buffer = new SlidingBuffer(3);

            buffer.Add(1);

            Assert.AreEqual(1, buffer[1]);
        }
コード例 #3
0
        public void Add_AddsFourBytes_Added()
        {
            var buffer = new SlidingBuffer(3);

            for (int i = 1; i <= 5; i++)
            {
                buffer.Add((byte)i);
            }

            Assert.AreEqual(5, buffer[1]);
            Assert.AreEqual(4, buffer[2]);
            Assert.AreEqual(3, buffer[3]);
        }
コード例 #4
0
 private void WriteConsole(string text)
 {
     Invoke(new MethodInvoker(
                delegate
     {
         _consoleBuffer.Add(text);
         textConsole.Lines = _consoleBuffer.ToArray();
         textConsole.Focus();
         textConsole.SelectionStart  = textConsole.Text.Length;
         textConsole.SelectionLength = 0;
         textConsole.ScrollToCaret();
         textConsole.Refresh();
     }));
 }
コード例 #5
0
        private void WriteRemote(IPAddress source, string text)
        {
            Invoke(new MethodInvoker(
                       delegate
            {
                _remoteBuffer.Add(string.Format("[{0}] {1}", source, text));

                textRemote.Lines = _remoteBuffer.ToArray();
                textRemote.Focus();
                textRemote.SelectionStart  = textRemote.Text.Length;
                textRemote.SelectionLength = 0;
                textRemote.ScrollToCaret();
                textRemote.Refresh();
            }
                       ));
        }