From 30162aedf103479817faaf26fd7ddb56b6fc60b3 Mon Sep 17 00:00:00 2001 From: Bogdan Davidoaia Date: Thu, 12 Jan 2017 15:28:25 +0200 Subject: 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 --- doc/subsystems/sensor.rst | 12 ++---- drivers/grove/light_sensor.c | 1 - drivers/grove/temperature_sensor.c | 1 - drivers/sensor/ak8975/ak8975.c | 1 - drivers/sensor/bma280/bma280.c | 2 - drivers/sensor/bmc150_magn/bmc150_magn.c | 12 ------ drivers/sensor/bme280/bme280.c | 3 -- drivers/sensor/bmg160/bmg160.c | 10 ----- drivers/sensor/bmg160/bmg160_trigger.c | 8 ---- drivers/sensor/bmi160/bmi160.c | 23 ---------- drivers/sensor/bmi160/bmi160_trigger.c | 8 ---- drivers/sensor/dht/dht.c | 2 - drivers/sensor/fxos8700/fxos8700.c | 2 - drivers/sensor/hdc1008/hdc1008.c | 2 - drivers/sensor/hmc5883l/hmc5883l.c | 1 - drivers/sensor/hp206c/hp206c.c | 6 --- drivers/sensor/hts221/hts221.c | 2 - drivers/sensor/isl29035/isl29035.c | 2 - drivers/sensor/lis3dh/lis3dh.c | 1 - drivers/sensor/lis3mdl/lis3mdl.c | 1 - drivers/sensor/lps25hb/lps25hb.c | 2 - drivers/sensor/lsm6ds0/lsm6ds0.c | 3 -- drivers/sensor/lsm9ds0_gyro/lsm9ds0_gyro.c | 9 ---- drivers/sensor/lsm9ds0_mfd/lsm9ds0_mfd.c | 19 --------- drivers/sensor/max44009/max44009.c | 5 --- drivers/sensor/mcp9808/mcp9808.c | 2 - drivers/sensor/mcp9808/mcp9808_trigger.c | 14 +++---- drivers/sensor/mpu6050/mpu6050.c | 3 -- drivers/sensor/nrf5/temp_nrf5.c | 1 - drivers/sensor/sht3xd/sht3xd.c | 2 - drivers/sensor/sht3xd/sht3xd_trigger.c | 4 -- drivers/sensor/sx9500/sx9500.c | 1 - drivers/sensor/th02/th02.c | 2 - drivers/sensor/tmp007/tmp007.c | 1 - drivers/sensor/tmp112/tmp112.c | 11 ----- include/sensor.h | 38 ++++------------- samples/sensor/bmg160/src/arc_bmg160.c | 2 - samples/sensor/bmi160/src/bmi160.c | 67 ++++++++++++------------------ samples/sensor/mcp9808/src/main.c | 1 - samples/sensor/thermometer/src/main.c | 8 +--- samples/sensor/tmp112/src/main.c | 2 - 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, ®_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 #include -/** @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, -- cgit v1.2.3