private static bool CheckOverdriveVersion(DeviceAdapterInfo info, ref string errorMessage) { errorMessage = (info.OverdriveVersion >= 6) ? string.Empty : $"Only Overdrive version 6 or greater is supported, current version {info.OverdriveVersion}."; return(info.OverdriveVersion >= 6); }
private static decimal GetNormalizedPower(DeviceAdapterInfo info, decimal currentPower) { lock (_PowerHistory) { _PowerHistory.RemoveAll(p => p.Item2 < DateTime.Now.AddMinutes(-1)); _PowerHistory.Add(new Tuple <int, DateTime, decimal>(info.Info.BusNumber, DateTime.Now, currentPower)); return(_PowerHistory.Where(p => p.Item1 == info.Info.BusNumber).Average(p => p.Item3)); } }
public static decimal GetAdapterCurrentUtilization(DeviceAdapterInfo info, out string errorMessage) { errorMessage = string.Empty; if (!CheckOverdriveVersion(info, ref errorMessage)) { return(decimal.MinValue); } var pmActivity = new ADL_PM_Activity(); var response = ADL.ADL_Overdrive5_CurrentActivity_Get?.Invoke(info.Info.AdapterIndex, ref pmActivity) ?? -1; if (response == SUCCESS) { return((decimal)pmActivity.iActivityPercent); } errorMessage = $"ADL_Overdrive5_CurrentActivity_Get() returned error code {response}"; return(decimal.MinValue); }
public static decimal GetAdapterCurrentVramClock(DeviceAdapterInfo info, out string errorMessage) { errorMessage = string.Empty; if (!CheckOverdriveVersion(info, ref errorMessage)) { return(decimal.MinValue); } var performanceStatus = new ADL_OverdrivePerformanceStatus(); var response = ADL.ADL2_OverdriveN_PerformanceStatus_Get?.Invoke(IntPtr.Zero, info.Info.AdapterIndex, ref performanceStatus) ?? -1; if (response == SUCCESS) { return((decimal)performanceStatus.iMemoryClock / 100); } errorMessage = $"ADL2_OverdriveN_PerformanceStatus_Get() returned error code {response}"; return(decimal.MinValue); }
public static decimal GetAdapterFanCurrentSpeed(DeviceAdapterInfo info, out string errorMessage) { errorMessage = string.Empty; if (!CheckOverdriveVersion(info, ref errorMessage)) { return(decimal.MinValue); } var fanControl = new ADL_OverdriveFanControl(); var response = ADL.ADL2_OverdriveN_FanControl_Get?.Invoke(IntPtr.Zero, info.Info.AdapterIndex, ref fanControl) ?? -1; if (response != SUCCESS) { errorMessage = $"ADL2_OverdriveN_FanControl_Get() returned error code {response}"; return(decimal.MinValue); } return(fanControl.iCurrentFanSpeed); }
public static decimal GetAdapterTemperature(DeviceAdapterInfo info, out string errorMessage) { errorMessage = string.Empty; if (!CheckOverdriveVersion(info, ref errorMessage)) { return(decimal.MinValue); } var temperature = 0; int response = ADL.ADL2_OverdriveN_Temperature_Get?.Invoke(IntPtr.Zero, info.Info.AdapterIndex, 1, ref temperature) ?? -1; if (response == SUCCESS) { return((decimal)temperature / 1000); } errorMessage = $"ADL2_OverdriveN_Temperature_Get() returned error code {response}"; return(decimal.MinValue); }
public static decimal GetAdapterNormalizedPower(DeviceAdapterInfo info, out string errorMessage) { errorMessage = string.Empty; if (!CheckOverdriveVersion(info, ref errorMessage)) { return(decimal.MinValue); } var powerBits = 0; var response = ADL.ADL2_Overdrive6_CurrentPower_Get?.Invoke(IntPtr.Zero, info.Info.AdapterIndex, 0, ref powerBits) ?? -1; if (response != SUCCESS) { errorMessage = $"ADL2_Overdrive6_CurrentPower_Get() returned error code {response}"; return(decimal.MinValue); } var watt = (decimal)(powerBits >> 8); var mWatt = (decimal)(powerBits & 0xff) / 0xff; return(GetNormalizedPower(info, watt + mWatt)); }