summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBogdan Davidoaia <bogdan.davidoaia@linaro.org>2017-01-12 15:28:25 +0200
committerAnas Nashif <nashif@linux.intel.com>2017-01-15 01:09:33 +0000
commit30162aedf103479817faaf26fd7ddb56b6fc60b3 (patch)
treee66eeaa817e0f9209492ebe6f9a9c118ca7fa64a
parent662a2d64761ae51d094344d48e1f193ded53ef82 (diff)
sensor: remove sensor value type
Remove the type field from the sensor value structure. All values will have the type previously defined by SENSOR_VALUE_TYPE_INT_PLUS_MICRO. This simplifies the interface, as apps will know what value type to expect. Apps that prefer to use double values can optain them using the sensor_value_to_double function. Change-Id: I3588d74258030eb16c3f89d8eead13cca4606b18 Signed-off-by: Bogdan Davidoaia <bogdan.davidoaia@linaro.org>
-rw-r--r--doc/subsystems/sensor.rst12
-rw-r--r--drivers/grove/light_sensor.c1
-rw-r--r--drivers/grove/temperature_sensor.c1
-rw-r--r--drivers/sensor/ak8975/ak8975.c1
-rw-r--r--drivers/sensor/bma280/bma280.c2
-rw-r--r--drivers/sensor/bmc150_magn/bmc150_magn.c12
-rw-r--r--drivers/sensor/bme280/bme280.c3
-rw-r--r--drivers/sensor/bmg160/bmg160.c10
-rw-r--r--drivers/sensor/bmg160/bmg160_trigger.c8
-rw-r--r--drivers/sensor/bmi160/bmi160.c23
-rw-r--r--drivers/sensor/bmi160/bmi160_trigger.c8
-rw-r--r--drivers/sensor/dht/dht.c2
-rw-r--r--drivers/sensor/fxos8700/fxos8700.c2
-rw-r--r--drivers/sensor/hdc1008/hdc1008.c2
-rw-r--r--drivers/sensor/hmc5883l/hmc5883l.c1
-rw-r--r--drivers/sensor/hp206c/hp206c.c6
-rw-r--r--drivers/sensor/hts221/hts221.c2
-rw-r--r--drivers/sensor/isl29035/isl29035.c2
-rw-r--r--drivers/sensor/lis3dh/lis3dh.c1
-rw-r--r--drivers/sensor/lis3mdl/lis3mdl.c1
-rw-r--r--drivers/sensor/lps25hb/lps25hb.c2
-rw-r--r--drivers/sensor/lsm6ds0/lsm6ds0.c3
-rw-r--r--drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c9
-rw-r--r--drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c19
-rw-r--r--drivers/sensor/max44009/max44009.c5
-rw-r--r--drivers/sensor/mcp9808/mcp9808.c2
-rw-r--r--drivers/sensor/mcp9808/mcp9808_trigger.c14
-rw-r--r--drivers/sensor/mpu6050/mpu6050.c3
-rw-r--r--drivers/sensor/nrf5/temp_nrf5.c1
-rw-r--r--drivers/sensor/sht3xd/sht3xd.c2
-rw-r--r--drivers/sensor/sht3xd/sht3xd_trigger.c4
-rw-r--r--drivers/sensor/sx9500/sx9500.c1
-rw-r--r--drivers/sensor/th02/th02.c2
-rw-r--r--drivers/sensor/tmp007/tmp007.c1
-rw-r--r--drivers/sensor/tmp112/tmp112.c11
-rw-r--r--include/sensor.h38
-rw-r--r--samples/sensor/bmg160/src/arc_bmg160.c2
-rw-r--r--samples/sensor/bmi160/src/bmi160.c67
-rw-r--r--samples/sensor/mcp9808/src/main.c1
-rw-r--r--samples/sensor/thermometer/src/main.c8
-rw-r--r--samples/sensor/tmp112/src/main.c2
41 files changed, 44 insertions, 253 deletions
diff --git a/doc/subsystems/sensor.rst b/doc/subsystems/sensor.rst
index cc3a2cc35..82cec4c3e 100644
--- a/doc/subsystems/sensor.rst
+++ b/doc/subsystems/sensor.rst
@@ -31,15 +31,11 @@ Values
======
Sensor devices return results as :c:type:`struct sensor_value`. This
-representation avoids use of floating point operations on setups where they
-are not supported or desired.
+representation avoids use of floating point values as they may not be
+supported on certain setups.
-Most sensor values have a type of :c:macro:`SENSOR_TYPE_INT_PLUS_MICRO`.
-Other possible representations are listed below. Applications are
-responsible for correctly interpreting the :c:data:`type` field of a
-returned value.
-
-.. doxygenenum:: sensor_value_type
+.. doxygenstruct:: sensor_value
+ :members:
Fetching Values
===============
diff --git a/drivers/grove/light_sensor.c b/drivers/grove/light_sensor.c
index f5841cb0d..4872f1046 100644
--- a/drivers/grove/light_sensor.c
+++ b/drivers/grove/light_sensor.c
@@ -59,7 +59,6 @@ static int gls_channel_get(struct device *dev,
ldr_val = (1023.0 - analog_val) * 10.0 / analog_val;
dval = 10000.0 / pow(ldr_val * 15.0, 4.0/3.0);
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
diff --git a/drivers/grove/temperature_sensor.c b/drivers/grove/temperature_sensor.c
index 1b56f1b7d..b978f43ff 100644
--- a/drivers/grove/temperature_sensor.c
+++ b/drivers/grove/temperature_sensor.c
@@ -66,7 +66,6 @@ static int gts_channel_get(struct device *dev,
dval = 1 / (log(1023.0 / analog_val - 1.0) / B_CONST +
1 / 298.15) - 273.15;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
diff --git a/drivers/sensor/ak8975/ak8975.c b/drivers/sensor/ak8975/ak8975.c
index b55a5e565..96f91eb13 100644
--- a/drivers/sensor/ak8975/ak8975.c
+++ b/drivers/sensor/ak8975/ak8975.c
@@ -59,7 +59,6 @@ static void ak8975_convert(struct sensor_value *val, int16_t sample,
conv_val = sample * AK8975_MICRO_GAUSS_PER_BIT *
((uint16_t)adjustment + 128) / 256;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = conv_val / 1000000;
val->val2 = conv_val % 1000000;
}
diff --git a/drivers/sensor/bma280/bma280.c b/drivers/sensor/bma280/bma280.c
index 921dfd12e..4307359eb 100644
--- a/drivers/sensor/bma280/bma280.c
+++ b/drivers/sensor/bma280/bma280.c
@@ -65,7 +65,6 @@ static void bma280_channel_accel_convert(struct sensor_value *val,
* accel_val = (sample * BMA280_PMU_FULL_RAGE) /
* (2^data_width * 10^6)
*/
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
raw_val = (raw_val * BMA280_PMU_FULL_RANGE) /
(1 << (8 + BMA280_ACCEL_LSB_BITS));
val->val1 = raw_val / 1000000;
@@ -100,7 +99,6 @@ static int bma280_channel_get(struct device *dev,
bma280_channel_accel_convert(val + 2, drv_data->z_sample);
} else if (chan == SENSOR_CHAN_TEMP) {
/* temperature_val = 23 + sample / 2 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (drv_data->temp_sample >> 1) + 23;
val->val2 = 500000 * (drv_data->temp_sample & 1);
return 0;
diff --git a/drivers/sensor/bmc150_magn/bmc150_magn.c b/drivers/sensor/bmc150_magn/bmc150_magn.c
index e73fd5921..ba6a51e40 100644
--- a/drivers/sensor/bmc150_magn/bmc150_magn.c
+++ b/drivers/sensor/bmc150_magn/bmc150_magn.c
@@ -332,7 +332,6 @@ static int bmc150_magn_sample_fetch(struct device *dev,
static void bmc150_magn_convert(struct sensor_value *val, int raw_val)
{
/* val = raw_val / 1600 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = raw_val / 1600;
val->val2 = ((int32_t)raw_val * (1000000 / 1600)) % 1000000;
}
@@ -446,11 +445,6 @@ static int bmc150_magn_attr_set(struct device *dev,
switch (attr) {
#if defined(CONFIG_BMC150_MAGN_SAMPLING_RATE_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- SYS_LOG_DBG("invalid parameter type");
- return -ENOTSUP;
- }
-
if (data->max_odr <= 0) {
if (bmc150_magn_compute_max_odr(dev, 0, 0,
&data->max_odr) < 0) {
@@ -470,13 +464,7 @@ static int bmc150_magn_attr_set(struct device *dev,
#endif
#if defined(BMC150_MAGN_SET_ATTR_REP)
case SENSOR_ATTR_OVERSAMPLING:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- SYS_LOG_DBG("invalid parameter type");
- return -ENOTSUP;
- }
-
bmc150_magn_attr_set_rep(dev, chan, val);
-
break;
#endif
default:
diff --git a/drivers/sensor/bme280/bme280.c b/drivers/sensor/bme280/bme280.c
index 293109270..1a3a2a326 100644
--- a/drivers/sensor/bme280/bme280.c
+++ b/drivers/sensor/bme280/bme280.c
@@ -133,7 +133,6 @@ static int bme280_channel_get(struct device *dev,
* data->comp_temp has a resolution of 0.01 degC. So
* 5123 equals 51.23 degC.
*/
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = data->comp_temp / 100;
val->val2 = data->comp_temp % 100 * 10000;
break;
@@ -143,7 +142,6 @@ static int bme280_channel_get(struct device *dev,
* fractional. Output value of 24674867 represents
* 24674867/256 = 96386.2 Pa = 963.862 hPa
*/
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (data->comp_press >> 8) / 1000;
val->val2 = (data->comp_press >> 8) % 1000 * 1000 +
(((data->comp_press & 0xff) * 1000) >> 8);
@@ -154,7 +152,6 @@ static int bme280_channel_get(struct device *dev,
* fractional. Output value of 47445 represents
* 47445/1024 = 46.333 %RH
*/
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (data->comp_humidity >> 10);
val->val2 = (((data->comp_humidity & 0x3ff) * 1000 * 1000) >> 10);
val->val1 = val->val1 * 1000 + (val->val2 * 1000) / 1000000;
diff --git a/drivers/sensor/bmg160/bmg160.c b/drivers/sensor/bmg160/bmg160.c
index 97253b2c3..3104e2d9d 100644
--- a/drivers/sensor/bmg160/bmg160.c
+++ b/drivers/sensor/bmg160/bmg160.c
@@ -149,10 +149,6 @@ static int bmg160_attr_set(struct device *dev, enum sensor_channel chan,
switch (attr) {
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
range_dps = sensor_rad_to_degrees(val);
idx = bmg160_is_val_valid(range_dps,
@@ -171,10 +167,6 @@ static int bmg160_attr_set(struct device *dev, enum sensor_channel chan,
return 0;
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
idx = bmg160_is_val_valid(val->val1,
bmg160_sampling_freq_map,
BMG160_SAMPLING_FREQ_MAP_SIZE);
@@ -233,8 +225,6 @@ static void bmg160_to_fixed_point(struct bmg160_device_data *bmg160,
enum sensor_channel chan, int16_t raw,
struct sensor_value *val)
{
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
-
if (chan == SENSOR_CHAN_TEMP) {
val->val1 = 23 + (raw / 2);
val->val2 = (raw % 2) * 500000;
diff --git a/drivers/sensor/bmg160/bmg160_trigger.c b/drivers/sensor/bmg160/bmg160_trigger.c
index 0e12e99c7..c7061dda4 100644
--- a/drivers/sensor/bmg160/bmg160_trigger.c
+++ b/drivers/sensor/bmg160/bmg160_trigger.c
@@ -87,10 +87,6 @@ int bmg160_slope_config(struct device *dev, enum sensor_attribute attr,
uint16_t any_th_dps, range_dps;
uint8_t any_th_reg_val;
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
any_th_dps = sensor_rad_to_degrees(val);
range_dps = BMG160_SCALE_TO_RANGE(bmg160->scale);
any_th_reg_val = any_th_dps * 2000 / range_dps;
@@ -103,10 +99,6 @@ int bmg160_slope_config(struct device *dev, enum sensor_attribute attr,
return bmg160_write_byte(dev, BMG160_REG_THRES,
any_th_dps & BMG160_THRES_MASK);
} else if (attr == SENSOR_ATTR_SLOPE_DUR) {
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
/* slope duration can be 4, 8, 12 or 16 samples */
if (val->val1 != 4 && val->val1 != 8 &&
val->val1 != 12 && val->val1 != 16) {
diff --git a/drivers/sensor/bmi160/bmi160.c b/drivers/sensor/bmi160/bmi160.c
index 30f706fe3..0bf43ee73 100644
--- a/drivers/sensor/bmi160/bmi160.c
+++ b/drivers/sensor/bmi160/bmi160.c
@@ -369,10 +369,6 @@ static int bmi160_acc_ofs_set(struct device *dev, enum sensor_channel chan,
}
for (i = 0; i < 3; i++, ofs++) {
- if (ofs->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
/* convert ofset to micro m/s^2 */
ofs_u = ofs->val1 * 1000000ULL + ofs->val2;
reg_val = ofs_u / BMI160_ACC_OFS_LSB;
@@ -446,18 +442,10 @@ static int bmi160_acc_config(struct device *dev, enum sensor_channel chan,
switch (attr) {
#if defined(CONFIG_BMI160_ACCEL_RANGE_RUNTIME)
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return bmi160_acc_range_set(dev, sensor_ms2_to_g(val));
#endif
#if defined(CONFIG_BMI160_ACCEL_ODR_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return bmi160_acc_odr_set(dev, val->val1, val->val2 / 1000);
#endif
case SENSOR_ATTR_OFFSET:
@@ -610,18 +598,10 @@ static int bmi160_gyr_config(struct device *dev, enum sensor_channel chan,
switch (attr) {
#if defined(CONFIG_BMI160_GYRO_RANGE_RUNTIME)
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return bmi160_gyr_range_set(dev, sensor_rad_to_degrees(val));
#endif
#if defined(CONFIG_BMI160_GYRO_ODR_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return bmi160_gyr_odr_set(dev, val->val1, val->val2 / 1000);
#endif
case SENSOR_ATTR_OFFSET:
@@ -701,8 +681,6 @@ static void bmi160_to_fixed_point(int16_t raw_val, uint16_t scale,
{
int32_t converted_val;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
-
/*
* maximum converted value we can get is: max(raw_val) * max(scale)
* max(raw_val) = +/- 2^15
@@ -786,7 +764,6 @@ static int bmi160_temp_channel_get(struct device *dev, struct sensor_value *val)
/* the scale is 1/2^9/LSB = 1953 micro degrees */
temp_micro = BMI160_TEMP_OFFSET * 1000000ULL + temp_raw * 1953ULL;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = temp_micro / 1000000ULL;
val->val2 = temp_micro % 1000000ULL;
diff --git a/drivers/sensor/bmi160/bmi160_trigger.c b/drivers/sensor/bmi160/bmi160_trigger.c
index 3537953cd..0f4fa410a 100644
--- a/drivers/sensor/bmi160/bmi160_trigger.c
+++ b/drivers/sensor/bmi160/bmi160_trigger.c
@@ -209,10 +209,6 @@ int bmi160_acc_slope_config(struct device *dev, enum sensor_attribute attr,
uint32_t slope_th_ums2;
if (attr == SENSOR_ATTR_SLOPE_TH) {
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
if (bmi160_byte_read(dev, BMI160_REG_ACC_RANGE, &reg_val) < 0) {
return -EIO;
}
@@ -233,10 +229,6 @@ int bmi160_acc_slope_config(struct device *dev, enum sensor_attribute attr,
return -EIO;
}
} else { /* SENSOR_ATTR_SLOPE_DUR */
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
/* slope duration is measured in number of samples */
if (val->val1 < 1 || val->val1 > 4) {
return -ENOTSUP;
diff --git a/drivers/sensor/dht/dht.c b/drivers/sensor/dht/dht.c
index 7872bb8ba..9774c065d 100644
--- a/drivers/sensor/dht/dht.c
+++ b/drivers/sensor/dht/dht.c
@@ -174,8 +174,6 @@ static int dht_channel_get(struct device *dev,
__ASSERT_NO_MSG(chan == SENSOR_CHAN_TEMP || chan == SENSOR_CHAN_HUMIDITY);
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
-
/* see data calculation example from datasheet */
#if defined(CONFIG_DHT_CHIP_DHT11)
/* use only integral data byte */
diff --git a/drivers/sensor/fxos8700/fxos8700.c b/drivers/sensor/fxos8700/fxos8700.c
index a98b7e3d5..218c59406 100644
--- a/drivers/sensor/fxos8700/fxos8700.c
+++ b/drivers/sensor/fxos8700/fxos8700.c
@@ -95,7 +95,6 @@ static void fxos8700_accel_convert(struct sensor_value *val, int16_t raw,
*/
val->val1 = (int32_t) micro_ms2 / 1000000;
val->val2 = (int32_t) micro_ms2 % 1000000;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
}
static void fxos8700_magn_convert(struct sensor_value *val, int16_t raw)
@@ -109,7 +108,6 @@ static void fxos8700_magn_convert(struct sensor_value *val, int16_t raw)
val->val1 = micro_g / 1000000;
val->val2 = micro_g % 1000000;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
}
static int fxos8700_channel_get(struct device *dev, enum sensor_channel chan,
diff --git a/drivers/sensor/hdc1008/hdc1008.c b/drivers/sensor/hdc1008/hdc1008.c
index bb628c42c..c95e631f3 100644
--- a/drivers/sensor/hdc1008/hdc1008.c
+++ b/drivers/sensor/hdc1008/hdc1008.c
@@ -80,13 +80,11 @@ static int hdc1008_channel_get(struct device *dev,
if (chan == SENSOR_CHAN_TEMP) {
/* val = -40 + 165 * sample / 2^16 */
tmp = 165 * (uint64_t)drv_data->t_sample;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)(tmp >> 16) - 40;
val->val2 = (1000000 * (tmp & 0xFFFF)) >> 16;
} else if (chan == SENSOR_CHAN_HUMIDITY) {
/* val = 100000 * sample / 2^16 */
tmp = 100000 * (uint64_t)drv_data->rh_sample;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = tmp >> 16;
val->val2 = (1000000 * (tmp & 0xFFFF)) >> 16;
} else {
diff --git a/drivers/sensor/hmc5883l/hmc5883l.c b/drivers/sensor/hmc5883l/hmc5883l.c
index 7968d5743..f5178fb68 100644
--- a/drivers/sensor/hmc5883l/hmc5883l.c
+++ b/drivers/sensor/hmc5883l/hmc5883l.c
@@ -27,7 +27,6 @@ static void hmc5883l_convert(struct sensor_value *val, int16_t raw_val,
uint16_t divider)
{
/* val = raw_val / divider */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = raw_val / divider;
val->val2 = (((int64_t)raw_val % divider) * 1000000L) / divider;
}
diff --git a/drivers/sensor/hp206c/hp206c.c b/drivers/sensor/hp206c/hp206c.c
index 8f35efec3..32d964672 100644
--- a/drivers/sensor/hp206c/hp206c.c
+++ b/drivers/sensor/hp206c/hp206c.c
@@ -153,10 +153,6 @@ static int hp206c_attr_set(struct device *dev, enum sensor_channel chan,
enum sensor_attribute attr,
const struct sensor_value *val)
{
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
#ifdef CONFIG_HP206C_OSR_RUNTIME
if (attr == SENSOR_ATTR_OVERSAMPLING) {
return hp206c_osr_set(dev, val->val1);
@@ -238,8 +234,6 @@ static int hp206c_val_get(struct device *dev,
temp = hp206c_buf_convert(buf, false);
}
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
-
if (cmd == HP206C_CMD_READ_P) {
val->val1 = temp / 1000;
val->val2 = temp % 1000 * 1000;
diff --git a/drivers/sensor/hts221/hts221.c b/drivers/sensor/hts221/hts221.c
index dc1d86c85..a53974b0b 100644
--- a/drivers/sensor/hts221/hts221.c
+++ b/drivers/sensor/hts221/hts221.c
@@ -44,7 +44,6 @@ static int hts221_channel_get(struct device *dev,
drv_data->t0_degc_x8;
/* convert temperature x8 to degrees Celsius */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = conv_val / 8;
val->val2 = (conv_val % 8) * (1000000 / 8);
} else { /* SENSOR_CHAN_HUMIDITY */
@@ -54,7 +53,6 @@ static int hts221_channel_get(struct device *dev,
drv_data->h0_rh_x2;
/* convert humidity x2 to mili-percent */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = conv_val * 500;
val->val2 = 0;
}
diff --git a/drivers/sensor/isl29035/isl29035.c b/drivers/sensor/isl29035/isl29035.c
index 4da7eb692..5aeee522c 100644
--- a/drivers/sensor/isl29035/isl29035.c
+++ b/drivers/sensor/isl29035/isl29035.c
@@ -56,13 +56,11 @@ static int isl29035_channel_get(struct device *dev,
#if CONFIG_ISL29035_MODE_ALS
/* val = sample_val * lux_range / (2 ^ adc_data_bits) */
tmp = (uint64_t)drv_data->data_sample * ISL29035_LUX_RANGE;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = tmp >> ISL29035_ADC_DATA_BITS;
tmp = (tmp & ISL29035_ADC_DATA_MASK) * 1000000;
val->val2 = tmp >> ISL29035_ADC_DATA_BITS;
#elif CONFIG_ISL29035_MODE_IR
ARG_UNUSED(tmp);
- val->type = SENSOR_VALUE_TYPE_INT_INT_PLUS_MICRO;
val->val1 = drv_data->data_sample;
val->val2 = 0;
#endif
diff --git a/drivers/sensor/lis3dh/lis3dh.c b/drivers/sensor/lis3dh/lis3dh.c
index de6fe1e98..c00c80ec5 100644
--- a/drivers/sensor/lis3dh/lis3dh.c
+++ b/drivers/sensor/lis3dh/lis3dh.c
@@ -24,7 +24,6 @@
static void lis3dh_convert(struct sensor_value *val, int64_t raw_val)
{
/* val = raw_val * LIS3DH_ACCEL_SCALE / (10^6 * (2^16 - 1)) */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
raw_val = raw_val * LIS3DH_ACCEL_SCALE / 1000000;
val->val1 = raw_val / 0xFFFF;
val->val2 = (raw_val % 0xFFFF) * 1000000 / 0xFFFF;
diff --git a/drivers/sensor/lis3mdl/lis3mdl.c b/drivers/sensor/lis3mdl/lis3mdl.c
index c3c628bd4..f051146df 100644
--- a/drivers/sensor/lis3mdl/lis3mdl.c
+++ b/drivers/sensor/lis3mdl/lis3mdl.c
@@ -27,7 +27,6 @@ static void lis3mdl_convert(struct sensor_value *val, int16_t raw_val,
uint16_t divider)
{
/* val = raw_val / divider */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = raw_val / divider;
val->val2 = (((int64_t)raw_val % divider) * 1000000L) / divider;
}
diff --git a/drivers/sensor/lps25hb/lps25hb.c b/drivers/sensor/lps25hb/lps25hb.c
index 61afa47b0..a0e328542 100644
--- a/drivers/sensor/lps25hb/lps25hb.c
+++ b/drivers/sensor/lps25hb/lps25hb.c
@@ -79,7 +79,6 @@ static inline void lps25hb_press_convert(struct sensor_value *val,
int32_t raw_val)
{
/* val = raw_val / 40960 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = raw_val / 40960;
val->val2 = ((int32_t)raw_val * 1000000 / 40960) % 1000000;
}
@@ -90,7 +89,6 @@ static inline void lps25hb_temp_convert(struct sensor_value *val,
int32_t uval;
/* val = raw_val / 480 + 42.5 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
uval = (int32_t)raw_val * 1000000 / 480 + 42500000;
val->val1 = (raw_val * 10 / 480 + 425) / 10;
val->val2 = uval % 1000000;
diff --git a/drivers/sensor/lsm6ds0/lsm6ds0.c b/drivers/sensor/lsm6ds0/lsm6ds0.c
index 772defed0..5a0cba6a1 100644
--- a/drivers/sensor/lsm6ds0/lsm6ds0.c
+++ b/drivers/sensor/lsm6ds0/lsm6ds0.c
@@ -251,7 +251,6 @@ static inline void lsm6ds0_accel_convert(struct sensor_value *val, int raw_val,
double dval;
dval = (double)(raw_val) * scale / 32767.0;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
}
@@ -309,7 +308,6 @@ static inline void lsm6ds0_gyro_convert(struct sensor_value *val, int raw_val,
double dval;
dval = (double)(raw_val) * numerator / 1000.0 * SENSOR_DEG2RAD_DOUBLE;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
}
@@ -366,7 +364,6 @@ static void lsm6ds0_gyro_channel_get_temp(struct sensor_value *val,
struct lsm6ds0_data *data)
{
/* val = temp_sample / 16 + 25 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = data->temp_sample / 16 + 25;
val->val2 = (data->temp_sample % 16) * (1000000 / 16);
}
diff --git a/drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c b/drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c
index c8c77ff47..4e35c2724 100644
--- a/drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c
+++ b/drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c
@@ -165,7 +165,6 @@ static inline void lsm9ds0_gyro_convert(struct sensor_value *val, int raw_val,
double dval;
dval = (double)(raw_val) * numerator / 1000.0 * DEG2RAD;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
}
@@ -231,10 +230,6 @@ static int lsm9ds0_gyro_attr_set(struct device *dev,
switch (attr) {
#if defined(CONFIG_LSM9DS0_GYRO_FULLSCALE_RUNTIME)
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
if (lsm9ds0_gyro_set_fs(dev, sensor_rad_to_degrees(val)) < 0) {
SYS_LOG_DBG("full-scale value not supported");
return -EIO;
@@ -243,10 +238,6 @@ static int lsm9ds0_gyro_attr_set(struct device *dev,
#endif
#if defined(CONFIG_LSM9DS0_GYRO_SAMPLING_RATE_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
if (lsm9ds0_gyro_set_odr(dev, val->val1) < 0) {
SYS_LOG_DBG("sampling frequency value not supported");
return -EIO;
diff --git a/drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c b/drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c
index 79fdb7ca0..e05d84f80 100644
--- a/drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c
+++ b/drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c
@@ -401,7 +401,6 @@ static inline void lsm9ds0_mfd_convert_accel(struct sensor_value *val,
double dval;
dval = (double)(raw_val) * scale;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
}
@@ -488,7 +487,6 @@ static inline void lsm9ds0_mfd_convert_magn(struct sensor_value *val,
double dval;
dval = (double)(raw_val) * scale;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)dval;
val->val2 = ((int32_t)(dval * 1000000)) % 1000000;
}
@@ -582,7 +580,6 @@ static int lsm9ds0_mfd_channel_get(struct device *dev,
#endif
#if !defined(LSM9DS0_MFD_TEMP_DISABLED)
case SENSOR_CHAN_TEMP:
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = data->sample_temp;
val->val2 = 0;
return 0;
@@ -600,18 +597,10 @@ static inline int lsm9ds0_mfd_attr_set_accel(struct device *dev,
switch (attr) {
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_SAMPLING_RATE_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return lsm9ds0_mfd_accel_set_odr(dev, val);
#endif
#if defined(CONFIG_LSM9DS0_MFD_ACCEL_FULL_SCALE_RUNTIME)
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return lsm9ds0_mfd_accel_set_fs(dev, sensor_ms2_to_g(val));
#endif
default:
@@ -630,18 +619,10 @@ static inline int lsm9ds0_mfd_attr_set_magn(struct device *dev,
switch (attr) {
#if defined(CONFIG_LSM9DS0_MFD_MAGN_SAMPLING_RATE_RUNTIME)
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return lsm9ds0_mfd_magn_set_odr(dev, val);
#endif
#if defined(CONFIG_LSM9DS0_MFD_MAGN_FULL_SCALE_RUNTIME)
case SENSOR_ATTR_FULL_SCALE:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -EINVAL;
- }
-
return lsm9ds0_mfd_magn_set_fs(dev, val);
#endif
default:
diff --git a/drivers/sensor/max44009/max44009.c b/drivers/sensor/max44009/max44009.c
index 7ea3e568a..1ea806892 100644
--- a/drivers/sensor/max44009/max44009.c
+++ b/drivers/sensor/max44009/max44009.c
@@ -87,10 +87,6 @@ static int max44009_attr_set(struct device *dev, enum sensor_channel chan,
switch (attr) {
case SENSOR_ATTR_SAMPLING_FREQUENCY:
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
/* convert rate to mHz */
cr = val->val1 * 1000 + val->val2 / 1000;
@@ -165,7 +161,6 @@ static int max44009_channel_get(struct device *dev, enum sensor_channel chan,
uval = uval << (drv_data->sample >> MAX44009_SAMPLE_EXPONENT_SHIFT);
/* lux is the integer of sample output multiplied by 0.045. */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (uval * 45) / 1000;
val->val2 = ((uval * 45) % 1000) * 1000;
diff --git a/drivers/sensor/mcp9808/mcp9808.c b/drivers/sensor/mcp9808/mcp9808.c
index d8da30a50..9ae45c9cf 100644
--- a/drivers/sensor/mcp9808/mcp9808.c
+++ b/drivers/sensor/mcp9808/mcp9808.c
@@ -69,8 +69,6 @@ static int mcp9808_channel_get(struct device *dev,
__ASSERT_NO_MSG(chan == SENSOR_CHAN_TEMP);
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
-
val->val1 = (data->reg_val & MCP9808_TEMP_INT_MASK) >>
MCP9808_TEMP_INT_SHIFT;
val->val2 = (data->reg_val & MCP9808_TEMP_FRAC_MASK) * 62500;
diff --git a/drivers/sensor/mcp9808/mcp9808_trigger.c b/drivers/sensor/mcp9808/mcp9808_trigger.c
index 05d6e0602..98f28ef43 100644
--- a/drivers/sensor/mcp9808/mcp9808_trigger.c
+++ b/drivers/sensor/mcp9808/mcp9808_trigger.c
@@ -74,16 +74,12 @@ int mcp9808_attr_set(struct device *dev, enum sensor_channel chan,
__ASSERT_NO_MSG(chan == SENSOR_CHAN_TEMP);
- if (val->type == SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- val2 = val->val2;
- while (val2 > 0) {
- reg_val += (1 << 2);
- val2 -= 250000;
- }
- reg_val |= val->val1 << 4;
- } else {
- return -EINVAL;
+ val2 = val->val2;
+ while (val2 > 0) {
+ reg_val += (1 << 2);
+ val2 -= 250000;
}
+ reg_val |= val->val1 << 4;
switch (attr) {
case SENSOR_ATTR_LOWER_THRESH:
diff --git a/drivers/sensor/mpu6050/mpu6050.c b/drivers/sensor/mpu6050/mpu6050.c
index 1c2dcbd9e..75520615c 100644
--- a/drivers/sensor/mpu6050/mpu6050.c
+++ b/drivers/sensor/mpu6050/mpu6050.c
@@ -28,7 +28,6 @@ static void mpu6050_convert_accel(struct sensor_value *val, int16_t raw_val,
int64_t conv_val;
conv_val = ((int64_t)raw_val * SENSOR_G) >> sensitivity_shift;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = conv_val / 1000000;
val->val2 = conv_val % 1000000;
}
@@ -41,7 +40,6 @@ static void mpu6050_convert_gyro(struct sensor_value *val, int16_t raw_val,
conv_val = ((int64_t)raw_val * SENSOR_PI * 10) /
(180 * sensitivity_x10);
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = conv_val / 1000000;
val->val2 = conv_val % 1000000;
}
@@ -50,7 +48,6 @@ static void mpu6050_convert_gyro(struct sensor_value *val, int16_t raw_val,
static inline void mpu6050_convert_temp(struct sensor_value *val,
int16_t raw_val)
{
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = raw_val / 340 + 36;
val->val2 = ((int64_t)(raw_val % 340) * 1000000) / 340 + 530000;
diff --git a/drivers/sensor/nrf5/temp_nrf5.c b/drivers/sensor/nrf5/temp_nrf5.c
index a44fdaa46..88a0cd1e9 100644
--- a/drivers/sensor/nrf5/temp_nrf5.c
+++ b/drivers/sensor/nrf5/temp_nrf5.c
@@ -84,7 +84,6 @@ static int temp_nrf5_channel_get(struct device *dev,
}
uval = data->sample * TEMP_NRF5_TEMP_SCALE;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = uval / 1000000;
val->val2 = uval % 1000000;
diff --git a/drivers/sensor/sht3xd/sht3xd.c b/drivers/sensor/sht3xd/sht3xd.c
index a54c9a079..0f3122505 100644
--- a/drivers/sensor/sht3xd/sht3xd.c
+++ b/drivers/sensor/sht3xd/sht3xd.c
@@ -133,13 +133,11 @@ static int sht3xd_channel_get(struct device *dev,
if (chan == SENSOR_CHAN_TEMP) {
/* val = -45 + 175 * sample / (2^16 -1) */
tmp = 175 * (uint64_t)drv_data->t_sample;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = (int32_t)(tmp / 0xFFFF) - 45;
val->val2 = (1000000 * (tmp % 0xFFFF)) / 0xFFFF;
} else if (chan == SENSOR_CHAN_HUMIDITY) {
/* val = 100000 * sample / (2^16 -1) */
tmp = 100000 * (uint64_t)drv_data->rh_sample;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = tmp / 0xFFFF;
val->val2 = (1000000 * (tmp % 0xFFFF)) / 0xFFFF;
} else {
diff --git a/drivers/sensor/sht3xd/sht3xd_trigger.c b/drivers/sensor/sht3xd/sht3xd_trigger.c
index 493e11914..c0c2262dc 100644
--- a/drivers/sensor/sht3xd/sht3xd_trigger.c
+++ b/drivers/sensor/sht3xd/sht3xd_trigger.c
@@ -47,10 +47,6 @@ int sht3xd_attr_set(struct device *dev,
struct sht3xd_data *drv_data = dev->driver_data;
uint16_t set_cmd, clear_cmd, reg_val, temp, rh;
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
if (attr == SENSOR_ATTR_LOWER_THRESH) {
if (chan == SENSOR_CHAN_TEMP) {
drv_data->t_low = sht3xd_temp_processed_to_raw(val);
diff --git a/drivers/sensor/sx9500/sx9500.c b/drivers/sensor/sx9500/sx9500.c
index 25a3f84f2..b00db8a69 100644
--- a/drivers/sensor/sx9500/sx9500.c
+++ b/drivers/sensor/sx9500/sx9500.c
@@ -68,7 +68,6 @@ static int sx9500_channel_get(struct device *dev,
__ASSERT_NO_MSG(chan == SENSOR_CHAN_PROX);
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = !!(data->prox_stat &
(1 << (4 + CONFIG_SX9500_PROX_CHANNEL)));
val->val2 = 0;
diff --git a/drivers/sensor/th02/th02.c b/drivers/sensor/th02/th02.c
index f57a1317d..8783cb0f8 100644
--- a/drivers/sensor/th02/th02.c
+++ b/drivers/sensor/th02/th02.c
@@ -115,12 +115,10 @@ static int th02_channel_get(struct device *dev, enum sensor_channel chan,
if (chan == SENSOR_CHAN_TEMP) {
/* val = sample / 32 - 50 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = drv_data->t_sample / 32 - 50;
val->val2 = (drv_data->t_sample % 32) * (1000000 / 32);
} else {
/* val = sample / 16 -24 */
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = drv_data->rh_sample / 16 - 24;
val->val2 = (drv_data->rh_sample % 16) * (1000000 / 16);
}
diff --git a/drivers/sensor/tmp007/tmp007.c b/drivers/sensor/tmp007/tmp007.c
index 2388aa0fc..45378db05 100644
--- a/drivers/sensor/tmp007/tmp007.c
+++ b/drivers/sensor/tmp007/tmp007.c
@@ -105,7 +105,6 @@ static int tmp007_channel_get(struct device *dev,
}
uval = (int32_t)drv_data->sample * TMP007_TEMP_SCALE;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = uval / 1000000;
val->val2 = uval % 1000000;
diff --git a/drivers/sensor/tmp112/tmp112.c b/drivers/sensor/tmp112/tmp112.c
index ee203dbad..e4a16ac93 100644
--- a/drivers/sensor/tmp112/tmp112.c
+++ b/drivers/sensor/tmp112/tmp112.c
@@ -109,11 +109,6 @@ static int tmp112_attr_set(struct device *dev,
switch (attr) {
case SENSOR_ATTR_FULL_SCALE:
-
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
/* the sensor supports two ranges -55 to 128 and -55 to 150 */
/* the value contains the upper limit */
if (val->val1 == 128) {
@@ -133,11 +128,6 @@ static int tmp112_attr_set(struct device *dev,
return 0;
case SENSOR_ATTR_SAMPLING_FREQUENCY:
-
- if (val->type != SENSOR_VALUE_TYPE_INT_PLUS_MICRO) {
- return -ENOTSUP;
- }
-
/* conversion rate in mHz */
cr = val->val1 * 1000 + val->val2 / 1000;
@@ -212,7 +202,6 @@ static int tmp112_channel_get(struct device *dev,
}
uval = (int32_t)drv_data->sample * TMP112_TEMP_SCALE;
- val->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val->val1 = uval / 1000000;
val->val2 = uval % 1000000;
diff --git a/include/sensor.h b/include/sensor.h
index 4005c3a54..c57fd8a18 100644
--- a/include/sensor.h
+++ b/include/sensor.h
@@ -37,32 +37,17 @@ extern "C" {
#include <device.h>
#include <errno.h>
-/** @brief Sensor value types. */
-enum sensor_value_type {
- /**
- * val1 contains an integer value, val2 is the fractional value.
- * To obtain the final value, use the formula: val1 + val2 *
- * 10^(-6).
- */
- SENSOR_VALUE_TYPE_INT_PLUS_MICRO,
- /** @brief dval contains a floating point value. */
- SENSOR_VALUE_TYPE_DOUBLE,
-};
-
/**
* @brief Representation of a sensor readout value.
*
- * The meaning of the fields is dictated by the type field.
+ * The value is represented as having an integer and a fractional part,
+ * and can be obtained using the formula val1 + val2 * 10^(-6).
*/
struct sensor_value {
- enum sensor_value_type type;
- union {
- struct {
- int32_t val1;
- int32_t val2;
- };
- double dval;
- };
+ /** Integer part of the value. */
+ int32_t val1;
+ /** Fractional part of the value. */
+ int32_t val2;
};
/**
@@ -422,7 +407,6 @@ static inline int32_t sensor_ms2_to_g(const struct sensor_value *ms2)
*/
static inline void sensor_g_to_ms2(int32_t g, struct sensor_value *ms2)
{
- ms2->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
ms2->val1 = ((int64_t)g * SENSOR_G) / 1000000LL;
ms2->val2 = ((int64_t)g * SENSOR_G) % 1000000LL;
}
@@ -453,7 +437,6 @@ static inline int32_t sensor_rad_to_degrees(const struct sensor_value *rad)
*/
static inline void sensor_degrees_to_rad(int32_t d, struct sensor_value *rad)
{
- rad->type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
rad->val1 = ((int64_t)d * SENSOR_PI / 180LL) / 1000000LL;
rad->val2 = ((int64_t)d * SENSOR_PI / 180LL) % 1000000LL;
}
@@ -466,14 +449,7 @@ static inline void sensor_degrees_to_rad(int32_t d, struct sensor_value *rad)
*/
static inline double sensor_value_to_double(struct sensor_value *val)
{
- switch (val->type) {
- case SENSOR_VALUE_TYPE_INT_PLUS_MICRO:
- return (double)val->val1 + (double)val->val2 / 1000000;
- case SENSOR_VALUE_TYPE_DOUBLE:
- return val->dval;
- }
-
- return 0.0;
+ return (double)val->val1 + (double)val->val2 / 1000000;
}
/**
diff --git a/samples/sensor/bmg160/src/arc_bmg160.c b/samples/sensor/bmg160/src/arc_bmg160.c
index e22662e73..c9455460a 100644
--- a/samples/sensor/bmg160/src/arc_bmg160.c
+++ b/samples/sensor/bmg160/src/arc_bmg160.c
@@ -114,7 +114,6 @@ static void test_trigger_mode(struct device *bmg160)
}
/* set slope duration to 4 samples */
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 4;
attr.val2 = 0;
@@ -144,7 +143,6 @@ static void test_trigger_mode(struct device *bmg160)
printf("Gyro: Testing data ready trigger.\n");
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 100;
attr.val2 = 0;
diff --git a/samples/sensor/bmi160/src/bmi160.c b/samples/sensor/bmi160/src/bmi160.c
index e8c058814..5e82e2468 100644
--- a/samples/sensor/bmi160/src/bmi160.c
+++ b/samples/sensor/bmi160/src/bmi160.c
@@ -45,9 +45,9 @@
* X = +2.349435, Y = +0.488070. Z = -1.351970
*/
static struct sensor_value accel_offsets[] = {
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {2, 349435} } }, /* X */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, 488070} } }, /* Y */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {-1, -351970} } }, /* Z */
+ {2, 349435}, /* X */
+ {0, 488070}, /* Y */
+ {-1, -351970}, /* Z */
};
/*
@@ -55,9 +55,9 @@ static struct sensor_value accel_offsets[] = {
* converge to 0 (with the device standing still).
*/
static struct sensor_value gyro_offsets[] = {
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, 3195} } }, /* X */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, 3195} } }, /* Y */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, -4260} } },/* Z */
+ {0, 3195}, /* X */
+ {0, 3195}, /* Y */
+ {0, -4260},/* Z */
};
static int manual_calibration(struct device *bmi160)
@@ -89,9 +89,9 @@ static int manual_calibration(struct device *bmi160)
* device has to stay still for about 500ms = 250ms(accel) + 250ms(gyro).
*/
struct sensor_value acc_calib[] = {
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, 0} } }, /* X */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {0, 0} } }, /* Y */
- {SENSOR_VALUE_TYPE_INT_PLUS_MICRO, { {9, 806650} } }, /* Z */
+ {0, 0}, /* X */
+ {0, 0}, /* Y */
+ {9, 806650}, /* Z */
};
static int auto_calibration(struct device *bmi160)
{
@@ -134,33 +134,26 @@ static inline int sensor_value_snprintf(char *buf, size_t len,
{
int32_t val1, val2;
- switch (val->type) {
- case SENSOR_VALUE_TYPE_INT_PLUS_MICRO:
- if (val->val2 == 0) {
- return snprintf(buf, len, "%d", val->val1);
- }
+ if (val->val2 == 0) {
+ return snprintf(buf, len, "%d", val->val1);
+ }
- /* normalize value */
- if (val->val1 < 0 && val->val2 > 0) {
- val1 = val->val1 + 1;
- val2 = val->val2 - 1000000;
- } else {
- val1 = val->val1;
- val2 = val->val2;
- }
+ /* normalize value */
+ if (val->val1 < 0 && val->val2 > 0) {
+ val1 = val->val1 + 1;
+ val2 = val->val2 - 1000000;
+ } else {
+ val1 = val->val1;
+ val2 = val->val2;
+ }
- /* print value to buffer */
- if (val1 > 0 || (val1 == 0 && val2 > 0)) {
- return snprintf(buf, len, "%d.%06d", val1, val2);
- } else if (val1 == 0 && val2 < 0) {
- return snprintf(buf, len, "-0.%06d", -val2);
- } else {
- return snprintf(buf, len, "%d.%06d", val1, -val2);
- }
- case SENSOR_VALUE_TYPE_DOUBLE:
- return snprintf(buf, len, "%f", val->dval);
- default:
- return 0;
+ /* print value to buffer */
+ if (val1 > 0 || (val1 == 0 && val2 > 0)) {
+ return snprintf(buf, len, "%d.%06d", val1, val2);
+ } else if (val1 == 0 && val2 < 0) {
+ return snprintf(buf, len, "-0.%06d", -val2);
+ } else {
+ return snprintf(buf, len, "%d.%06d", val1, -val2);
}
}
@@ -225,7 +218,6 @@ static void test_polling_mode(struct device *bmi160)
#if defined(CONFIG_BMI160_ACCEL_ODR_RUNTIME)
/* set sampling frequency to 800Hz for accel */
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 800;
attr.val2 = 0;
@@ -238,7 +230,6 @@ static void test_polling_mode(struct device *bmi160)
#if defined(CONFIG_BMI160_GYRO_ODR_RUNTIME)
/* set sampling frequency to 3200Hz for gyro */
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 3200;
attr.val2 = 0;
@@ -312,7 +303,6 @@ static void test_anymotion_trigger(struct device *bmi160)
* bigger than half the range. For example, for a 16G range, the
* threshold must not exceed 8G.
*/
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 0;
attr.val2 = 980665;
if (sensor_attr_set(bmi160, SENSOR_CHAN_ACCEL_ANY,
@@ -327,7 +317,6 @@ static void test_anymotion_trigger(struct device *bmi160)
*
* Allowed values are from 1 to 4.
*/
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 2;
attr.val2 = 0;
if (sensor_attr_set(bmi160, SENSOR_CHAN_ACCEL_ANY,
@@ -397,7 +386,6 @@ static void test_trigger_mode(struct device *bmi160)
#if defined(CONFIG_BMI160_ACCEL_ODR_RUNTIME)
/* set sampling frequency to 100Hz for accel */
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 100;
attr.val2 = 0;
@@ -410,7 +398,6 @@ static void test_trigger_mode(struct device *bmi160)
#if defined(CONFIG_BMI160_GYRO_ODR_RUNTIME)
/* set sampling frequency to 100Hz for gyro */
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 100;
attr.val2 = 0;
diff --git a/samples/sensor/mcp9808/src/main.c b/samples/sensor/mcp9808/src/main.c
index 76dfb928e..c84726f9a 100644
--- a/samples/sensor/mcp9808/src/main.c
+++ b/samples/sensor/mcp9808/src/main.c
@@ -49,7 +49,6 @@ void main(void)
struct sensor_value val;
struct sensor_trigger trig;
- val.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
val.val1 = 26;
val.val2 = 0;
diff --git a/samples/sensor/thermometer/src/main.c b/samples/sensor/thermometer/src/main.c
index e368978cc..560c4fc60 100644
--- a/samples/sensor/thermometer/src/main.c
+++ b/samples/sensor/thermometer/src/main.c
@@ -20,13 +20,7 @@
static double convert_to_double(struct sensor_value *v)
{
- switch (v->type) {
- case SENSOR_VALUE_TYPE_INT_PLUS_MICRO:
- return v->val1 + ((double)v->val2 / 1000000);
- case SENSOR_VALUE_TYPE_DOUBLE:
- return v->dval;
- }
- return 0;
+ return v->val1 + ((double)v->val2 / 1000000);
}
void main(void)
diff --git a/samples/sensor/tmp112/src/main.c b/samples/sensor/tmp112/src/main.c
index 0a6cccea8..465ea61fa 100644
--- a/samples/sensor/tmp112/src/main.c
+++ b/samples/sensor/tmp112/src/main.c
@@ -26,7 +26,6 @@ static void do_main(struct device *dev)
struct sensor_value temp_value;
struct sensor_value attr;
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 150;
attr.val2 = 0;
ret = sensor_attr_set(dev, SENSOR_CHAN_TEMP,
@@ -36,7 +35,6 @@ static void do_main(struct device *dev)
return;
}
- attr.type = SENSOR_VALUE_TYPE_INT_PLUS_MICRO;
attr.val1 = 8;
attr.val2 = 0;
ret = sensor_attr_set(dev, SENSOR_CHAN_TEMP,