diff --git a/src/drv-iio-buffer-accel.c b/src/drv-iio-buffer-accel.c index b62c7ac..3972a3c 100644 --- a/src/drv-iio-buffer-accel.c +++ b/src/drv-iio-buffer-accel.c @@ -14,6 +14,10 @@ #include #include +/* 1G (9.81m/s²) corresponds to "256" + * value x scale is in m/s² */ +#define SCALE_TO_FF(scale) (scale * 256 / 9.81) + /** * iio_channel_info - information about a given channel * @name: channel name @@ -507,7 +511,7 @@ process_scan_1 (char *data, *ch_val = (int) val; *ch_present = TRUE; } - *ch_val *= channels[k]->scale; + *ch_val *= SCALE_TO_FF(channels[k]->scale); break; case 2: case 8: diff --git a/src/drv-iio-poll-accel.c b/src/drv-iio-poll-accel.c index ee7a514..1b4cc3a 100644 --- a/src/drv-iio-poll-accel.c +++ b/src/drv-iio-poll-accel.c @@ -14,6 +14,10 @@ #include #include +/* 1G (9.81m/s²) corresponds to "256" + * value x scale is in m/s² */ +#define SCALE_TO_FF(scale) (scale * 256 / 9.81) + typedef struct DrvData { guint timeout_id; ReadingsUpdateFunc callback_func; @@ -61,7 +65,7 @@ iio_poll_accel_open (GUdevDevice *device, drv_data->callback_func = callback_func; drv_data->user_data = user_data; - drv_data->scale = g_udev_device_get_sysfs_attr_as_double (device, "in_accel_scale"); + drv_data->scale = SCALE_TO_FF(g_udev_device_get_sysfs_attr_as_double (device, "in_accel_scale")); if (drv_data->scale == 0.0) drv_data->scale = 1.0;