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. > 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; >