On Tue, 29 Oct 2024 13:20:06 +0100 Ricardo Ribalda <ribalda@xxxxxxxxxxxx> wrote: > Hi Jonathan > > On Mon, 28 Oct 2024 at 21:34, Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > > > > On Mon, 28 Oct 2024 10:12:23 +0000 > > Ricardo Ribalda <ribalda@xxxxxxxxxxxx> wrote: > > > > > Add a new channel type representing if the user's attention state to the > > > the system. This usually means if the user is looking at the screen or > > > not. > > > > > > Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> > > > --- > > > Documentation/ABI/testing/sysfs-bus-iio | 7 +++++++ > > > drivers/iio/industrialio-core.c | 1 + > > > include/uapi/linux/iio/types.h | 1 + > > > tools/iio/iio_event_monitor.c | 2 ++ > > > 4 files changed, 11 insertions(+) > > > > > > diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio > > > index 89943c2d54e8..d5a2f93bd051 100644 > > > --- a/Documentation/ABI/testing/sysfs-bus-iio > > > +++ b/Documentation/ABI/testing/sysfs-bus-iio > > > @@ -2339,3 +2339,10 @@ KernelVersion: 6.10 > > > Contact: linux-iio@xxxxxxxxxxxxxxx > > > Description: > > > The value of current sense resistor in Ohms. > > > + > > > +What: /sys/.../iio:deviceX/in_attention_raw > > > +KernelVersion: 6.13 > > > +Contact: linux-iio@xxxxxxxxxxxxxxx > > > +Description: > > > + Boolean value representing the user's attention to the system. > > > + This usually means if the user is looking at the screen or not. > > > > Hmm. I should have thought of this when I replied to suggest a new channel type. > > The question is 'units' for a decision. > > > > Last time we hit something like this where processing is used to make a decision > > we decided to at least allow for the concept of 'certainty'. > > > > The idea being that smarter sensors would tell us something about how sure they > > are that the attention is on the device. > > The analogy being with activity detection. See in_activity_walking_input > > in Documentation/ABI/testing/sysfs-bus-iio > > > > Do you think that would be appropriate here as well? For this device > > it would take the values 0 and 100 rather than 0 and 1. > > For the particular device that I want to support, they are giving me a > value of 1 and 0, and the example from usb.org seems to work the same > way (Logical Maximum of 1) > https://www.usb.org/sites/default/files/hutrr107-humanpresenceattention_1.pdf > > I have no problem multiplying my value by 100 if you think there will > be a use case for that. It will not have a major performance impact on > the driver. Same was true (0 or 1) for the activity classification but I'm not keen on certainty :) So lets' copy that precedence and *100 > You decide ;) > > > > > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > > > index 6a6568d4a2cb..bdfb51275b68 100644 > > > --- a/drivers/iio/industrialio-core.c > > > +++ b/drivers/iio/industrialio-core.c > > > @@ -95,6 +95,7 @@ static const char * const iio_chan_type_name_spec[] = { > > > [IIO_DELTA_VELOCITY] = "deltavelocity", > > > [IIO_COLORTEMP] = "colortemp", > > > [IIO_CHROMATICITY] = "chromaticity", > > > + [IIO_ATTENTION] = "attention", > > > }; > > > > > > static const char * const iio_modifier_names[] = { > > > diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h > > > index f2e0b2d50e6b..12886d4465e4 100644 > > > --- a/include/uapi/linux/iio/types.h > > > +++ b/include/uapi/linux/iio/types.h > > > @@ -51,6 +51,7 @@ enum iio_chan_type { > > > IIO_DELTA_VELOCITY, > > > IIO_COLORTEMP, > > > IIO_CHROMATICITY, > > > + IIO_ATTENTION, > > > }; > > > > > > enum iio_modifier { > > > diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c > > > index 8073c9e4fe46..ed9a677f1028 100644 > > > --- a/tools/iio/iio_event_monitor.c > > > +++ b/tools/iio/iio_event_monitor.c > > > @@ -63,6 +63,7 @@ static const char * const iio_chan_type_name_spec[] = { > > > [IIO_DELTA_VELOCITY] = "deltavelocity", > > > [IIO_COLORTEMP] = "colortemp", > > > [IIO_CHROMATICITY] = "chromaticity", > > > + [IIO_ATTENTION] = "attention", > > > }; > > > > > > static const char * const iio_ev_type_text[] = { > > > @@ -183,6 +184,7 @@ static bool event_is_known(struct iio_event_data *event) > > > case IIO_DELTA_VELOCITY: > > > case IIO_COLORTEMP: > > > case IIO_CHROMATICITY: > > > + case IIO_ATTENTION: > > > break; > > > default: > > > return false; > > > > > > >