iio: ABI: Add quaternion axis modifier

This modifier applies to the IIO_ROT channel type, and indicates a data
representation that specifies the {x, y, z} components of the normalized
quaternion vector.

Signed-off-by: Francesco Lavra <flavra@baylibre.com>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Francesco Lavra 2026-03-24 09:47:59 +01:00 committed by Jonathan Cameron
parent b29f00ef08
commit dd59392a3e
4 changed files with 18 additions and 0 deletions

View File

@ -1755,6 +1755,21 @@ Description:
measurement from channel Y. Units after application of scale and
offset are milliamps.
What: /sys/bus/iio/devices/iio:deviceX/in_rot_quaternionaxis_raw
KernelVersion: 7.1
Contact: linux-iio@vger.kernel.org
Description:
Raw value of {x, y, z} components of the quaternion vector. These
components represent the axis about which a rotation occurs, and are
subject to the following constraints:
- the quaternion vector is normalized, i.e. w^2 + x^2 + y^2 + z^2 = 1
- the rotation angle is within the [-pi, pi] range, i.e. the w
component (which represents the amount of rotation) is non-negative
These constraints allow the w value to be calculated from the other
components: w = sqrt(1 - (x^2 + y^2 + z^2)).
What: /sys/.../iio:deviceX/in_energy_en
What: /sys/.../iio:deviceX/in_distance_en
What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_en

View File

@ -157,6 +157,7 @@ static const char * const iio_modifier_names[] = {
[IIO_MOD_ACTIVE] = "active",
[IIO_MOD_REACTIVE] = "reactive",
[IIO_MOD_APPARENT] = "apparent",
[IIO_MOD_QUATERNION_AXIS] = "quaternionaxis",
};
/* relies on pairs of these shared then separate */

View File

@ -113,6 +113,7 @@ enum iio_modifier {
IIO_MOD_ACTIVE,
IIO_MOD_REACTIVE,
IIO_MOD_APPARENT,
IIO_MOD_QUATERNION_AXIS,
};
enum iio_event_type {

View File

@ -145,6 +145,7 @@ static const char * const iio_modifier_names[] = {
[IIO_MOD_ACTIVE] = "active",
[IIO_MOD_REACTIVE] = "reactive",
[IIO_MOD_APPARENT] = "apparent",
[IIO_MOD_QUATERNION_AXIS] = "quaternionaxis",
};
static bool event_is_known(struct iio_event_data *event)