nuttx/drivers/sensors
Justin Hammond 769862ac6a sensors/tmp112: Add a uORB interface.
The TMP112 driver was character mode only, and carried the warning that
says so: a read returns a bare float, at a size the driver chose, and
nothing but code written for this one part can make sense of it.

Add the sensor framework version beside it, in the shape the tree
already uses for a part that has both.  The old driver is untouched and
still builds by default; the new one replaces it when
SENSORS_TMP112_UORB is set, and the part then appears as a temperature
topic that the common sensor tools can read without knowing what a
TMP112 is.

It reads on the low priority work queue at whatever interval the caller
asks for.  The part converts continuously out of reset, so nothing is
configured and the temperature register always holds the last completed
conversion: a reading is one bus transaction with nothing to wait for.
Reading faster than the part converts repeats a value, which costs bus
traffic and nothing else, so the interval is taken as given: the upper
half treats a lower half that hands back a longer interval than it was
given as a failed request, so clamping here would refuse a fast caller
rather than serve it slowly.

get_info reports what the part is and what its readings mean, so a
consumer need not know it is talking to a TMP112 to know the range and
the resolution.

It also sign extends the reading.  The register holds twelve bits, and
the character mode driver treats them as unsigned, so anything below
freezing comes back as a large positive temperature; the part is
specified down to -40C.  Fixing that in the old driver would change what
existing callers see, so it is fixed here, where there are no callers
yet to surprise.

This driver also covers the TMP102, which differs in accuracy rather
than in its registers: only the two both parts have are touched.

Documented under the sensors section, beside the other parts with a page
of their own, and listed among the uORB drivers.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Justin Hammond <justin@dynam.ac>
2026-08-18 10:35:28 -03:00
..
adt7320.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
adt7320.h drivers/sensors/adt7320 : migrate license to ASF 2024-11-06 19:46:13 +08:00
adxl345.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
adxl345_base.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
adxl345_i2c.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
adxl345_spi.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
adxl362_uorb.c sensors/adxl362_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
adxl372.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
adxl372_uorb.c drivers/sensors/adxl372_uorb.c: fix compilation error 2026-06-10 08:49:14 -03:00
aht10.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ak09912.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
amg88xx.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
apds9922.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
apds9960.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
as726x.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
as5048a.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
as5048b.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
bh1749nuc.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bh1749nuc_base.c drivers/sensors: fix various coding style issues 2025-05-23 11:29:58 -03:00
bh1749nuc_base.h include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
bh1749nuc_uorb.c sensors/bh1749nuc_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bh1750fvi.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bme680_uorb.c sensors/bme680_uorb.c: always allow temperature topic registration 2026-06-10 09:52:00 +08:00
bme688_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
bmg160.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bmi088.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bmi088_base.c drivers/sensors: fix various coding style issues 2025-05-23 11:29:58 -03:00
bmi088_base.h include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
bmi088_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
bmi160.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bmi160_base.c drivers/sensors: fix misplaced endif in bmi160_base.c 2026-04-15 17:47:46 +02:00
bmi160_base.h include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
bmi160_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
bmi270.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bmi270_base.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
bmi270_base.h include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
bmi270_uorb.c sensors/bmi270_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bmm150_uorb.c sensors/bmm150_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bmp180.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
bmp180_base.c sensors/bmp180_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bmp180_base.h sensors/bmp180_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bmp180_uorb.c sensors/bmp180_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
bmp280_uorb.c sensors/bmp280_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
CMakeLists.txt sensors/tmp112: Add a uORB interface. 2026-08-18 10:35:28 -03:00
cxd5602pwbimu.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
dhtxx.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ds18b20_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
fakesensor_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
fs3000_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
fxos8700cq.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
gnss_uorb.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
goldfish_gnss_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
goldfish_sensor_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
hall3ph.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
hc_sr04.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
hdc1008.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
hts221.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
hyt271_uorb.c sensors/hyt271_uorb: support for fixed-point data 2026-05-02 00:56:42 +08:00
ina219.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ina226.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ina3221.c drivers/: Multiple Drivers Are Registered With World Writable Part 3 2026-07-16 09:49:07 -03:00
isl29023.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
Kconfig sensors/tmp112: Add a uORB interface. 2026-08-18 10:35:28 -03:00
kxtj9.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
l3gd20_uorb.c drivers/sensors/l3gd20: always deliver samples with push_event 2026-08-05 12:50:12 +02:00
l86xxx_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
lis2dh.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lis2mdl_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
lis3dh.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lis3dsh.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lis3dsh_uorb.c drivers/sensors: add LIS3DSH accelerometer uORB driver 2026-07-25 14:45:40 +02:00
lis3mdl.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lis331dl.c drivers/sensors: Legacy sensor warning 2026-03-01 16:37:20 -03:00
lm75.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lm92.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lps25h.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lsm6dsl.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lsm6dso32_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
lsm9ds1.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lsm9ds1_base.c drivers/sensors: fix various coding style issues 2025-05-23 11:29:58 -03:00
lsm9ds1_base.h include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
lsm9ds1_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
lsm303agr.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
lsm330_spi.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ltc4151.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
ltr308_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
Make.defs sensors/tmp112: Add a uORB interface. 2026-08-18 10:35:28 -03:00
max6675.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
max31855.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
max31865.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
max44009.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mb7040.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mcp9600_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
mcp9844.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mlx90393.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mlx90614.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mpl115a.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mpu60x0.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mpu6050_uorb.c drivers/sensors/mpu6050: deliver samples from the data ready interrupt 2026-08-04 17:40:28 -03:00
mpu9250_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
ms56xx_uorb.c !nuttx: drop redundant casts on tv_sec/tv_nsec and fix printf formats 2026-05-19 16:21:28 +08:00
ms58xx.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
msa301.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
mt6816.c drivers/sensors: Add support to MT6816 2026-05-03 07:56:38 -03:00
nau7802.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
qencoder.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
qmi8658_uorb.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
scd30.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
scd41.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
sensor.c drivers/sensors/sensor: pace POLLIN at the requested interval 2026-08-05 12:50:12 +02:00
sensor_monitor.c include/debug.h: Move to include/nuttx/debug.h 2026-04-07 07:50:06 -03:00
sensor_rpmsg.c !include/fcntl.h: align open flags with Linux values 2026-06-30 13:43:44 +08:00
sgp30.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
sht3x.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
sht4x_uorb.c !nuttx: drop redundant casts on tv_sec/tv_nsec and fix printf formats 2026-05-19 16:21:28 +08:00
sht21.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
sps30.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
t67xx.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
tmp112.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
tmp112_uorb.c sensors/tmp112: Add a uORB interface. 2026-08-18 10:35:28 -03:00
usensor.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
veml6070.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
vl53l1x.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
wtgahrs2_uorb.c drivers/sensors: add initial support for fixed-point data for sensors 2026-05-02 00:56:42 +08:00
xen1210.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00
xen1210.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
zerocross.c drivers/: Multiple Drivers Are Registered With World Writable - Part 2 2026-07-15 15:27:28 +08:00