RE: [PATCH 3/8] iio: core: Introduce SPEED channel type

From: Tirdea, Irina
Date: Mon Dec 29 2014 - 13:14:18 EST




> -----Original Message-----
> From: Jonathan Cameron [mailto:jic23@xxxxxxxxxx]
> Sent: 26 December, 2014 15:28
> To: Tirdea, Irina; linux-iio@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx; Dogaru, Vlad; Baluta, Daniel; Hartmut Knaack; Lars-Peter Clausen; Peter Meerwald
> Subject: Re: [PATCH 3/8] iio: core: Introduce SPEED channel type
>
> On 19/12/14 22:57, Irina Tirdea wrote:
> > Some devices export the current speed value of the user.
> >
> > One of this devices is Freescale's MMA9553L
> > (http://www.freescale.com/files/sensors/doc/ref_manual/MMA9553LSWRM.pdf)
> > that computes the speed of the user based on the number of steps and
> > stride length.
> >
> > Introduce a new channel type SPEED to export these values.
> >
> A fun question raised by this is whether we are going to end up with
> both speed and velocity (depending on whether it is signed or not).
> I suppose there isn't much to be done about that though and this looks fine
> to me (as does the previous one).

We might be able to unify speed and velocity if we use modifiers.

I am not sure how a device would export velocity information, but I assume it would be similar to acceleration (since we are talking about a vector as well). In this case we would need one channel type IIO_VELOCITY with modifiers for the 3 axes (IIO_MOD_X, IIO_MOD_Y, IIO_MOD_Z). We can further compute speed as the magnitude or the norm of the velocity vector (root of the sum squared values for x, y, z), so we can export it as an additional modifier IIO_MOD_NORM.

The pedometer only gives speed information without keeping track of the direction, so in this case we will have one channel IIO_VELOCITY with one modifier IIO_MOD_NORM.

Would this be a better approach than just exporting IIO_SPEED?

Thanks,
Irina

> > Signed-off-by: Irina Tirdea <irina.tirdea@xxxxxxxxx>
> > ---
> > Documentation/ABI/testing/sysfs-bus-iio | 9 +++++++++
> > drivers/iio/industrialio-core.c | 1 +
> > include/linux/iio/types.h | 1 +
> > 3 files changed, 11 insertions(+)
> >
> > diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
> > index a5c1dcc..07acef7 100644
> > --- a/Documentation/ABI/testing/sysfs-bus-iio
> > +++ b/Documentation/ABI/testing/sysfs-bus-iio
> > @@ -295,6 +295,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_scale
> > What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale
> > What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale
> > What: /sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale
> > +What: /sys/bus/iio/devices/iio:deviceX/in_speed_scale
> > KernelVersion: 2.6.35
> > Contact: linux-iio@xxxxxxxxxxxxxxx
> > Description:
> > @@ -1146,6 +1147,14 @@ Description:
> > present, output should be considered as processed with the
> > unit in milliamps.
> >
> > +What: /sys/.../iio:deviceX/in_speed_input
> > +What: /sys/.../iio:deviceX/in_speed_raw
> > +KernelVersion: 3.19
> > +Contact: linux-iio@xxxxxxxxxxxxxxx
> > +Description:
> > + This attribute is used to read the current speed value of the user.
> > + Units after application of scale are m/s.
> > +
> > What: /sys/.../iio:deviceX/in_steps_en
> > KernelVersion: 3.19
> > Contact: linux-iio@xxxxxxxxxxxxxxx
> > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> > index 4a10d31..5e50aca 100644
> > --- a/drivers/iio/industrialio-core.c
> > +++ b/drivers/iio/industrialio-core.c
> > @@ -74,6 +74,7 @@ static const char * const iio_chan_type_name_spec[] = {
> > [IIO_STEPS] = "steps",
> > [IIO_CALORIES] = "calories",
> > [IIO_DISTANCE] = "distance",
> > + [IIO_SPEED] = "speed",
> > };
> >
> > static const char * const iio_modifier_names[] = {
> > diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
> > index b98f751..c848f45 100644
> > --- a/include/linux/iio/types.h
> > +++ b/include/linux/iio/types.h
> > @@ -34,6 +34,7 @@ enum iio_chan_type {
> > IIO_STEPS,
> > IIO_CALORIES,
> > IIO_DISTANCE,
> > + IIO_SPEED,
> > };
> >
> > enum iio_modifier {
> >

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/