From fcbeecb0d52356c83859fc5c42916d751c2c5d96 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sat, 1 Oct 2022 00:29:40 +0800 Subject: [PATCH] Temps: test & fix temp detection on Intel ( macOS ) --- src/detection/gpu/gpu_apple.c | 2 ++ src/detection/temps/temps_apple.c | 17 ++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/detection/gpu/gpu_apple.c b/src/detection/gpu/gpu_apple.c index b755d292e..bad6747d3 100644 --- a/src/detection/gpu/gpu_apple.c +++ b/src/detection/gpu/gpu_apple.c @@ -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 diff --git a/src/detection/temps/temps_apple.c b/src/detection/temps/temps_apple.c index ef21131b8..b952e720b 100644 --- a/src/detection/temps/temps_apple.c +++ b/src/detection/temps/temps_apple.c @@ -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;