Anyone?
Op Mon, 20 Jan 2020 12:22:07 +0100 schreef Boudewijn Dijkstra
<[email protected]>:
Some upd(4) devices use -1 for "On" and some use 1. sysctl(8) and
sensorsd(8) hide this detail from the user, which makes it difficult to
define low and high values in sensorsd.conf(5).
Also see https://marc.info/?l=openbsd-misc&m=144529176814155&w=2
I'd like to suggest a diff like the following:
RCS file: /cvs/src/sys/dev/usb/upd.c,v
retrieving revision 1.26
diff -u -p -u -p -d -r1.26 upd.c
--- upd.c 8 Apr 2017 02:57:25 -0000 1.26
+++ upd.c 20 Jan 2020 10:18:41 -0000
@@ -406,26 +406,30 @@ upd_sensor_update(struct upd_softc *sc,
struct upd_sensor *child;
int64_t hdata, adjust;
- switch (HID_GET_USAGE(sensor->hitem.usage)) {
- case HUB_REL_STATEOF_CHARGE:
- case HUB_ABS_STATEOF_CHARGE:
- case HUB_REM_CAPACITY:
- case HUB_FULLCHARGE_CAPACITY:
- adjust = 1000; /* scale adjust */
- break;
- case HUB_ATRATE_TIMETOFULL:
- case HUB_ATRATE_TIMETOEMPTY:
- case HUB_RUNTIMETO_EMPTY:
- /* spec says minutes, not seconds */
- adjust = 1000000000LL;
- break;
- default:
- adjust = 1; /* no scale adjust */
- break;
+ hdata = hid_get_data(buf, len, &sensor->hitem.loc);
+ if (sensor->ksensor.type == SENSOR_INDICATOR)
+ sensor->ksensor.value = hdata ? 1 : 0;
+ else {
+ switch (HID_GET_USAGE(sensor->hitem.usage)) {
+ case HUB_REL_STATEOF_CHARGE:
+ case HUB_ABS_STATEOF_CHARGE:
+ case HUB_REM_CAPACITY:
+ case HUB_FULLCHARGE_CAPACITY:
+ adjust = 1000; /* scale adjust */
+ break;
+ case HUB_ATRATE_TIMETOFULL:
+ case HUB_ATRATE_TIMETOEMPTY:
+ case HUB_RUNTIMETO_EMPTY:
+ /* spec says minutes, not seconds */
+ adjust = 1000000000LL;
+ break;
+ default:
+ adjust = 1; /* no scale adjust */
+ break;
+ }
+ sensor->ksensor.value = hdata * adjust;
}
- hdata = hid_get_data(buf, len, &sensor->hitem.loc);
- sensor->ksensor.value = hdata * adjust;
sensor->ksensor.status = SENSOR_S_OK;
sensor->ksensor.flags &= ~SENSOR_FINVALID;
Note that this will break some configurations.
--
Gemaakt met Opera's e-mailprogramma: http://www.opera.com/mail/