/// <summary> /// Gets the OverdriveN temperature. /// </summary> /// <param name="type">The type.</param> /// <param name="sensor">The sensor.</param> private void GetODNTemperature(AtiAdlxx.ADLODNTemperatureType type, Sensor sensor) { // If a sensor isn't available, some cards report 54000 degrees C. 110C is expected for Navi, so 100 more than that should be enough to use as a maximum. const int maxTemperature = 210 * 1000; int temperature = 0; if (AtiAdlxx.ADL2_OverdriveN_Temperature_Get(_context, _adapterIndex, type, ref temperature) == AtiAdlxx.ADLStatus.ADL_OK && temperature < maxTemperature) { sensor.Value = 0.001f * temperature; ActivateSensor(sensor); } else { sensor.Value = null; } }
/// <summary> /// Gets the OverdriveN temperature. /// </summary> /// <param name="type">The type.</param> /// <param name="sensor">The sensor.</param> /// <param name="minTemperature">The minimum temperature.</param> /// <param name="scale">The scale.</param> private void GetODNTemperature(AtiAdlxx.ADLODNTemperatureType type, Sensor sensor, double minTemperature = -200, double scale = 1) { // If a sensor isn't available, some cards report 54000 degrees C. 110C is expected for Navi, so 100 more than that should be enough to use as a maximum. int maxTemperature = (int)(210.0 / scale); minTemperature = (int)(minTemperature / scale); int temperature = 0; if (AtiAdlxx.ADL2_OverdriveN_Temperature_Get(_context, _adapterIndex, type, ref temperature) == AtiAdlxx.ADLStatus.ADL_OK && temperature > minTemperature && temperature < maxTemperature) { sensor.Value = (float)(scale * temperature); ActivateSensor(sensor); } else { sensor.Value = null; } }