On Fri, 4 Aug 2023 09:45:57 +0300 Ramona Bolboaca <ramona.bolboaca@xxxxxxxxxx> wrote: > The delta angle is defined as a piece-wise integration of angular > velocity data. The delta angle represents the amount of > angular displacement between two consecutive measurements and it > is measured in degrees. That's not consistent with angl and it should be. Hence should be radians, with appropriate changes in the scale exposed by the driver. > > In order to track the total angular displacement during a desired > period of time, simply sum-up the delta angle samples acquired > during that time. > > IIO currently does not offer a suitable channel type for this > type of measurements hence this patch adds it. > > Signed-off-by: Ramona Bolboaca <ramona.bolboaca@xxxxxxxxxx> > --- > Documentation/ABI/testing/sysfs-bus-iio | 14 ++++++++++++++ > drivers/iio/industrialio-core.c | 1 + > include/uapi/linux/iio/types.h | 1 + > tools/iio/iio_event_monitor.c | 2 ++ > 4 files changed, 18 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio > index a2854dc9a839..1561c33b05a1 100644 > --- a/Documentation/ABI/testing/sysfs-bus-iio > +++ b/Documentation/ABI/testing/sysfs-bus-iio > @@ -279,6 +279,20 @@ Description: > but should match other such assignments on device). > Units after application of scale and offset are m/s^2. > > +What: /sys/bus/iio/devices/iio:deviceX/in_deltaangl_x_raw > +What: /sys/bus/iio/devices/iio:deviceX/in_deltaangl_y_raw > +What: /sys/bus/iio/devices/iio:deviceX/in_deltaangl_z_raw > +KernelVersion: 6.5 > +Contact: linux-iio@xxxxxxxxxxxxxxx > +Description: > + Angular displacement between two consecutive samples on x, y or > + z (may be arbitrarily assigned but should match other such > + assignments on device). > + In order to compute the total angular displacement during a > + desired period of time, the application should sum-up the delta > + angle samples acquired during that time. > + Units after application of scale and offset are angles. Units above are degrees, but should be radians. > + > What: /sys/bus/iio/devices/iio:deviceX/in_angl_raw > What: /sys/bus/iio/devices/iio:deviceX/in_anglY_raw > KernelVersion: 4.17 > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index a92b8b6ad647..2e2fd0be2504 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -89,6 +89,7 @@ static const char * const iio_chan_type_name_spec[] = { > [IIO_POSITIONRELATIVE] = "positionrelative", > [IIO_PHASE] = "phase", > [IIO_MASSCONCENTRATION] = "massconcentration", > + [IIO_DELTA_ANGL] = "deltaangl", > }; > > static const char * const iio_modifier_names[] = { > diff --git a/include/uapi/linux/iio/types.h b/include/uapi/linux/iio/types.h > index c79f2f046a0b..55666a17d311 100644 > --- a/include/uapi/linux/iio/types.h > +++ b/include/uapi/linux/iio/types.h > @@ -47,6 +47,7 @@ enum iio_chan_type { > IIO_POSITIONRELATIVE, > IIO_PHASE, > IIO_MASSCONCENTRATION, > + IIO_DELTA_ANGL, > }; > > enum iio_modifier { > diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c > index 0a5c2bb60030..3505450060e6 100644 > --- a/tools/iio/iio_event_monitor.c > +++ b/tools/iio/iio_event_monitor.c > @@ -59,6 +59,7 @@ static const char * const iio_chan_type_name_spec[] = { > [IIO_POSITIONRELATIVE] = "positionrelative", > [IIO_PHASE] = "phase", > [IIO_MASSCONCENTRATION] = "massconcentration", > + [IIO_DELTA_ANGL] = "deltaangl", > }; > > static const char * const iio_ev_type_text[] = { > @@ -173,6 +174,7 @@ static bool event_is_known(struct iio_event_data *event) > case IIO_POSITIONRELATIVE: > case IIO_PHASE: > case IIO_MASSCONCENTRATION: > + case IIO_DELTA_ANGL: > break; > default: > return false;