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)); }
public void Add_AddsOneByte_Added() { var buffer = new SlidingBuffer(3); buffer.Add(1); Assert.AreEqual(1, buffer[1]); }
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]); }
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(); })); }
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(); } )); }