> -----Original Message----- > From: Jonathan Cameron [mailto:jic23@xxxxxxxxxx] > Sent: 01 January, 2015 12:34 > 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 29/12/14 18:13, Tirdea, Irina wrote: > > > > > >> -----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. > Good, except for the last bit. We already have IIO_MOD_ROOT_SUM_SQUARED_X_Y so > should add IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z for 3D devices and use that. A little > confusing perhaps for people just looking for a speed though. Meh. Most > people will use this through a library anyway so that can wrap up the > measurement as speed if it wants to. > Note resulting attribute names will end up as the somewhat convoluted > > in_velocity_sqrt(x^2+y^2+z^2)_* > > I suppose that's clear enough... Yes, IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z would fit better. I will also add ABI documentation to make it easier for people looking for speed. > > > > 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?> > Saves us some confusion later, so yes I prefer this. > > 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-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html