iio: Add IIO_DELTA_VELOCITY channel type
authorRamona Bolboaca <ramona.bolboaca@analog.com>
Tue, 8 Aug 2023 07:50:58 +0000 (10:50 +0300)
committerJonathan Cameron <jonathan.cameron@huawei.com>
Tue, 12 Sep 2023 09:42:03 +0000 (10:42 +0100)
The delta velocity is defined as a piece-wise integration of
acceleration data. The delta velocity represents the linear velocity
change between two consecutive measurements and it
is measured in m / s (meters per second).

In order to track the total linear velocity change during a desired
period of time, simply sum-up the delta velocity 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@analog.com>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20230808075059.645525-3-ramona.bolboaca@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Documentation/ABI/testing/sysfs-bus-iio
drivers/iio/industrialio-core.c
include/uapi/linux/iio/types.h
tools/iio/iio_event_monitor.c

index 363dd4b09930420d792f147c43084c01783a7b23..59968b745518e83e8ddd24271f09aa3a029835ba 100644 (file)
@@ -293,6 +293,21 @@ Description:
                angle samples acquired during that time.
                Units after application of scale and offset are radians.
 
+What:          /sys/bus/iio/devices/iio:deviceX/in_deltavelocity_x_raw
+What:          /sys/bus/iio/devices/iio:deviceX/in_deltavelocity_y_raw
+What:          /sys/bus/iio/devices/iio:deviceX/in_deltavelocity_z_raw
+KernelVersion: 6.5
+Contact:       linux-iio@vger.kernel.org
+Description:
+               The linear velocity change 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 linear velocity change during a
+               desired period of time, the application should sum-up the delta
+               velocity samples acquired during that time.
+               Units after application of scale and offset are meters per
+               second.
+
 What:          /sys/bus/iio/devices/iio:deviceX/in_angl_raw
 What:          /sys/bus/iio/devices/iio:deviceX/in_anglY_raw
 KernelVersion: 4.17
@@ -476,6 +491,7 @@ What:               /sys/bus/iio/devices/iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_illuminance_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_countY_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_deltaangl_scale
+What:          /sys/bus/iio/devices/iio:deviceX/in_deltavelocity_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_angl_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_intensity_x_scale
 What:          /sys/bus/iio/devices/iio:deviceX/in_intensity_y_scale
@@ -1350,6 +1366,9 @@ What:             /sys/.../iio:deviceX/bufferY/in_accel_z_en
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_x_en
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_y_en
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_z_en
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_x_en
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_y_en
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_z_en
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_x_en
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_y_en
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_z_en
@@ -1381,6 +1400,7 @@ Description:
 
 What:          /sys/.../iio:deviceX/bufferY/in_accel_type
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_type
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_type
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_type
 What:          /sys/.../iio:deviceX/bufferY/in_magn_type
 What:          /sys/.../iio:deviceX/bufferY/in_incli_type
@@ -1438,6 +1458,9 @@ What:             /sys/.../iio:deviceX/bufferY/in_accel_z_index
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_x_index
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_y_index
 What:          /sys/.../iio:deviceX/bufferY/in_deltaangl_z_index
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_x_index
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_y_index
+What:          /sys/.../iio:deviceX/bufferY/in_deltavelocity_z_index
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_x_index
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_y_index
 What:          /sys/.../iio:deviceX/bufferY/in_anglvel_z_index
index 11a65030186de5f912d44092ca77d5287d256d92..2ea0bf08caf39b83a1ceff7cc0379d8482280ec3 100644 (file)
@@ -91,6 +91,7 @@ static const char * const iio_chan_type_name_spec[] = {
        [IIO_PHASE] = "phase",
        [IIO_MASSCONCENTRATION] = "massconcentration",
        [IIO_DELTA_ANGL] = "deltaangl",
+       [IIO_DELTA_VELOCITY] = "deltavelocity",
 };
 
 static const char * const iio_modifier_names[] = {
index 55666a17d311cef3002ab51f216ea01e71e9288c..9a341bd0770234e5d13a987e07a623c78324131b 100644 (file)
@@ -48,6 +48,7 @@ enum iio_chan_type {
        IIO_PHASE,
        IIO_MASSCONCENTRATION,
        IIO_DELTA_ANGL,
+       IIO_DELTA_VELOCITY,
 };
 
 enum iio_modifier {
index 3505450060e6f07e93f4f736621cce02f4b46a31..7e6761612246ebb1db9345486a5c29438885cfd9 100644 (file)
@@ -60,6 +60,7 @@ static const char * const iio_chan_type_name_spec[] = {
        [IIO_PHASE] = "phase",
        [IIO_MASSCONCENTRATION] = "massconcentration",
        [IIO_DELTA_ANGL] = "deltaangl",
+       [IIO_DELTA_VELOCITY] = "deltavelocity",
 };
 
 static const char * const iio_ev_type_text[] = {
@@ -175,6 +176,7 @@ static bool event_is_known(struct iio_event_data *event)
        case IIO_PHASE:
        case IIO_MASSCONCENTRATION:
        case IIO_DELTA_ANGL:
+       case IIO_DELTA_VELOCITY:
                break;
        default:
                return false;