Temps: test & fix temp detection on Intel ( macOS )

This commit is contained in:
Carter Li
2022-10-01 00:29:40 +08:00
parent b3c501516a
commit fcbeecb0d5
2 changed files with 10 additions and 9 deletions
+2
View File
@@ -15,6 +15,8 @@ static double detectGpuTemp(const FFstrbuf* gpuName)
ffDetectCoreTemps(FF_TEMP_GPU_M1X, &temps);
else if(ffStrbufStartsWithS(gpuName, "Apple M2"))
ffDetectCoreTemps(FF_TEMP_GPU_M2X, &temps);
else if(ffStrbufStartsWithS(gpuName, "Intel"))
ffDetectCoreTemps(FF_TEMP_GPU_INTEL, &temps);
else if(ffStrbufStartsWithS(gpuName, "Radeon") || ffStrbufStartsWithS(gpuName, "AMD"))
ffDetectCoreTemps(FF_TEMP_GPU_AMD, &temps);
else
+8 -9
View File
@@ -196,6 +196,8 @@ static const char *smcReadValue(io_connect_t conn, const UInt32Char_t key, doubl
const char* error = smcReadSmcVal(conn, key, &val);
if (error != NULL)
return error;
if (val.dataSize == 0)
return "Empty SMC result";
if (strcmp(val.dataType, kDataTypeUi8) == 0 ||
strcmp(val.dataType, kDataTypeUi16) == 0 ||
@@ -211,11 +213,11 @@ static const char *smcReadValue(io_connect_t conn, const UInt32Char_t key, doubl
{
*value = *(float *)(val.bytes);
}
else if (strcmp(val.dataType, kDataTypeFp1f) && val.dataSize == 2)
else if (strcmp(val.dataType, kDataTypeFp1f) == 0 && val.dataSize == 2)
{
*value = ntohs(*(uint16_t *)(val.bytes)) / 32768.0;
}
else if (strcmp(val.dataType, kDataTypeFp4c) && val.dataSize == 2)
else if (strcmp(val.dataType, kDataTypeFp4c) == 0 && val.dataSize == 2)
{
*value = ntohs(*(uint16_t *)(val.bytes)) / 4096.0;
}
@@ -337,7 +339,7 @@ const char *ffDetectCoreTemps(enum FFTempType type, FFlist *result)
case FF_TEMP_CPU_X64:
detectTemp(conn, "TC0D", "CPU diode", result);
detectTemp(conn, "TC0E", "CPU diode virtual", result);
detectTemp(conn, "TC0E", "CPU diode filtered", result);
detectTemp(conn, "TC0F", "CPU diode filtered", result);
detectTemp(conn, "TC0P", "CPU proximity", result);
break;
@@ -369,17 +371,14 @@ const char *ffDetectCoreTemps(enum FFTempType type, FFlist *result)
case FF_TEMP_GPU_INTEL:
detectTemp(conn, "TCGC", "GPU Intel Graphics", result);
detectTemp(conn, "TG0D", "GPU diode", result);
detectTemp(conn, "TG0P", "GPU proximity", result);
break;
goto gpu_unknown;
case FF_TEMP_GPU_AMD:
detectTemp(conn, "TGDD", "GPU AMD Radeon", result);
detectTemp(conn, "TG0D", "GPU diode", result);
detectTemp(conn, "TG0P", "GPU proximity", result);
break;
goto gpu_unknown;
case FF_TEMP_GPU_UNKNOWN: // Nvidia?
gpu_unknown:
detectTemp(conn, "TG0D", "GPU diode", result);
detectTemp(conn, "TG0P", "GPU proximity", result);
break;