temp: OpenBSD support all temperatures reported by driver.

This commit is contained in:
Alastair Poole 2021-05-25 12:05:19 +01:00
parent 57d3edc3de
commit 37a3dd3dfc
1 changed files with 25 additions and 17 deletions

View File

@ -102,6 +102,7 @@ _sysctl_init(void)
size_t sdlen = sizeof(snsrdev); size_t sdlen = sizeof(snsrdev);
size_t slen = sizeof(snsr); size_t slen = sizeof(snsr);
int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 }; int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
enum sensor_type type;
for (dev = 0;; dev++) for (dev = 0;; dev++)
{ {
@ -113,27 +114,34 @@ _sysctl_init(void)
else else
continue; continue;
} }
for (numt = 0; numt < snsrdev.maxnumt[SENSOR_TEMP]; numt++) for (type = 0; type < SENSOR_MAX_TYPES; type++)
{
mib[3] = type;
for (numt = 0; numt < snsrdev.sensors_count; numt++)
{ {
mib[4] = numt; mib[4] = numt;
slen = sizeof(snsr); slen = sizeof(snsr);
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1) if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
continue; continue;
if (slen > 0 && (snsr.flags & SENSOR_FINVALID) == 0) if ((!slen) || (snsr.flags & SENSOR_FINVALID))
break; continue;
} if (snsr.type != SENSOR_TEMP)
slen = sizeof(snsr);
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
continue; continue;
if (snsr.type != SENSOR_TEMP) continue;
Temp *temp = malloc(sizeof(Temp)); Temp *temp = malloc(sizeof(Temp));
if (temp)
{
char buf[64];
temp->name = eina_stringshare_add(snsrdev.xname); temp->name = eina_stringshare_add(snsrdev.xname);
temp->label = eina_stringshare_add(snsrdev.xname); snprintf(buf, sizeof(buf), "%s.temp%i", snsrdev.xname, numt);
temp->label = eina_stringshare_add(buf);
memcpy(temp->mib, &mib, sizeof(mib)); memcpy(temp->mib, &mib, sizeof(mib));
mons = eina_list_append(mons, temp); mons = eina_list_append(mons, temp);
} }
} }
}
}
}
static void static void
_sysctl_update(void) _sysctl_update(void)