> -----Original Message----- > From: linux-iio-owner@xxxxxxxxxxxxxxx [mailto:linux-iio-owner@xxxxxxxxxxxxxxx] On Behalf Of Jonathan Cameron > Sent: 26 December, 2014 15:26 > To: Tirdea, Irina; linux-iio@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx; Dogaru, Vlad; Baluta, Daniel; Hartmut Knaack; Lars-Peter Clausen; Peter Meerwald > Subject: Re: [PATCH 1/8] iio: core: Introduce CALORIES channel type > > On 19/12/14 22:57, Irina Tirdea wrote: > > Some devices compute the number of calories that the user has > > burnt since the last reset. > > > > One of this devices is Freescale's MMA9553L > > (http://www.freescale.com/files/sensors/doc/ref_manual/MMA9553LSWRM.pdf) > > that computes the number of calories based on weight and step rate. > > > > Introduce a new channel type CALORIES to export these values. > > > > Signed-off-by: Irina Tirdea <irina.tirdea@xxxxxxxxx> > hmm.. Ideally we use SI units for everything, but in human energy usage > Calories are the most common unit by a long way. I'm having some trouble > even finding the conversion for this particular for of calorie. > Initially I wanted to use the calorie as unit, but it seemed a little bit confusing because there are 2 different units both called calorie: - The small calorie or gram calorie approximates the energy needed to increase the temperature of 1 gram of water by 1 C. - The kilogram calorie or "large calorie" is an obsolete term used for the kilocalorie, which is the calorie used to express the energy content of foods. However, in practice, the prefix "kilo" is usually omitted. Instead of using cal (small calorie), kcal or Calorie (large calorie) as unit, I think it would be more clear to use Joule since that would eliminate confusion and it is also a SI unit. According to the conversion table from here http://physics.nist.gov/Pubs/SP811/appenB9.html#ENERGY, we could convert nutritional calories to Joules using the following formula: Energy (Joules) = 4 184 * calories_th_nutrition I used this formula in the implementation of the driver. > Now clearly it doesn't matter if the only energy sensors we ever get > are for human activity. However, that's unlikely to be the case. We > already have devices doing instantaneous power and there are plenty > of smart meter chips out there (though of course, they will use the > option of kW Hours just to confuse matters). > > I'd definitely prefer joules if we can do it with out a large amount of > pain. > > Lars - any views on this? (Analog do make plenty of 'energy' measurement > devices after all!) > > --- > > 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 df5e69e..bb9342b 100644 > > --- a/Documentation/ABI/testing/sysfs-bus-iio > > +++ b/Documentation/ABI/testing/sysfs-bus-iio > > @@ -282,6 +282,7 @@ What: /sys/bus/iio/devices/iio:deviceX/in_current_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_accel_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_accel_peak_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_scale > > +What: /sys/bus/iio/devices/iio:deviceX/in_calories_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale > > What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale > > @@ -1049,6 +1050,14 @@ Description: > > For a list of available output power modes read > > in_accel_power_mode_available. > > > > +What: /sys/.../iio:deviceX/in_calories_input > > +What: /sys/.../iio:deviceX/in_calories_raw > > +KernelVersion: 3.17 > > +Contact: linux-iio@xxxxxxxxxxxxxxx > > +Description: > > + This attribute is used to read the number of calories burned since the last > > + reset. Units after application of scale are Joules. > > + > > What: /sys/bus/iio/devices/iio:deviceX/store_eeprom > > KernelVersion: 3.4.0 > > Contact: linux-iio@xxxxxxxxxxxxxxx > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > > index ee442ee..5d95e84 100644 > > --- a/drivers/iio/industrialio-core.c > > +++ b/drivers/iio/industrialio-core.c > > @@ -72,6 +72,7 @@ static const char * const iio_chan_type_name_spec[] = { > > [IIO_HUMIDITYRELATIVE] = "humidityrelative", > > [IIO_ACTIVITY] = "activity", > > [IIO_STEPS] = "steps", > > + [IIO_CALORIES] = "calories", > > }; > > > > static const char * const iio_modifier_names[] = { > > diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h > > index 904dcbb..d2fe930 100644 > > --- a/include/linux/iio/types.h > > +++ b/include/linux/iio/types.h > > @@ -32,6 +32,7 @@ enum iio_chan_type { > > IIO_HUMIDITYRELATIVE, > > IIO_ACTIVITY, > > IIO_STEPS, > > + IIO_CALORIES, > > }; > > > > 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 -- 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