Skip to content

Commit 1068a27

Browse files
committed
samples: sensor: pressure_polling: Log altitude only if supported
Most pressure sensors provide temperature and pressure data, but only a few support altitude readings. This change adds a check to ensure altitude is logged only when the sensor supports it. Signed-off-by: Tahsin Mutlugun <[email protected]>
1 parent 47b07e5 commit 1068a27

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

samples/sensor/pressure_polling/README.rst

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ Overview
1010
This sample application periodically reads the sensor
1111
temperature and pressure, displaying the
1212
values on the console along with a timestamp since startup.
13-
It also displays the estimated altitude if floating point is supported.
13+
It also displays the estimated altitude if floating point is supported
14+
and the sensor provides altitude data.
1415

1516
Wiring
1617
*******
@@ -47,14 +48,14 @@ Sample Output
4748
## Default configuration
4849

4950
Found device "icp101xx@63", getting sensor data
50-
[00:00:00.266,479] <inf> PRESSURE_POLLING: Starting pressure and altitude polling sample.
51-
[00:00:00.273,803] <inf> PRESSURE_POLLING: temp 25.49 Cel, pressure 96.271438 kPa, altitude 447.208465 m
52-
[00:00:00.280,914] <inf> PRESSURE_POLLING: temp 25.50 Cel, pressure 96.271331 kPa, altitude 447.234161 m
53-
[00:00:00.288,024] <inf> PRESSURE_POLLING: temp 25.49 Cel, pressure 96.266685 kPa, altitude 447.636077 m
54-
[00:00:00.295,135] <inf> PRESSURE_POLLING: temp 25.50 Cel, pressure 96.267951 kPa, altitude 447.537078 m
55-
[00:00:00.302,246] <inf> PRESSURE_POLLING: temp 25.51 Cel, pressure 96.268577 kPa, altitude 447.488281 m
56-
[00:00:00.309,356] <inf> PRESSURE_POLLING: temp 25.50 Cel, pressure 96.269340 kPa, altitude 447.414978 m
57-
[00:00:00.316,467] <inf> PRESSURE_POLLING: temp 25.50 Cel, pressure 96.268562 kPa, altitude 447.473663 m
58-
[00:00:00.323,547] <inf> PRESSURE_POLLING: temp 25.50 Cel, pressure 96.267341 kPa, altitude 447.596496 m
51+
Starting pressure and altitude polling sample.
52+
temp 25.49 Cel, pressure 96.271438 kPa, altitude 447.208465 m
53+
temp 25.50 Cel, pressure 96.271331 kPa, altitude 447.234161 m
54+
temp 25.49 Cel, pressure 96.266685 kPa, altitude 447.636077 m
55+
temp 25.50 Cel, pressure 96.267951 kPa, altitude 447.537078 m
56+
temp 25.51 Cel, pressure 96.268577 kPa, altitude 447.488281 m
57+
temp 25.50 Cel, pressure 96.269340 kPa, altitude 447.414978 m
58+
temp 25.50 Cel, pressure 96.268562 kPa, altitude 447.473663 m
59+
temp 25.50 Cel, pressure 96.267341 kPa, altitude 447.596496 m
5960

6061
<repeats endlessly>

samples/sensor/pressure_polling/src/main.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
#include <zephyr/devicetree.h>
1010
#include <zephyr/drivers/sensor.h>
1111
#include <stdio.h>
12-
#include <zephyr/logging/log.h>
13-
14-
LOG_MODULE_REGISTER(PRESSURE_POLLING, CONFIG_SENSOR_LOG_LEVEL);
1512

1613
/*
1714
* Get a device structure from a devicetree node from alias
@@ -35,6 +32,7 @@ static const struct device *get_pressure_sensor_device(void)
3532
int main(void)
3633
{
3734
const struct device *dev = get_pressure_sensor_device();
35+
int ret;
3836

3937
if (dev == NULL) {
4038
return 0;
@@ -43,18 +41,21 @@ int main(void)
4341
struct sensor_value temperature;
4442
struct sensor_value altitude;
4543

46-
LOG_INF("Starting pressure and altitude polling sample.\n");
44+
printk("Starting pressure, temperature and altitude polling sample.\n");
4745

4846
while (1) {
4947
if (sensor_sample_fetch_chan(dev, SENSOR_CHAN_ALL) == 0) {
5048
sensor_channel_get(dev, SENSOR_CHAN_PRESS, &pressure);
5149
sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temperature);
52-
sensor_channel_get(dev, SENSOR_CHAN_ALTITUDE, &altitude);
53-
54-
LOG_INF("temp %.2f Cel, pressure %f kPa, altitude %f m",
55-
sensor_value_to_double(&temperature),
56-
sensor_value_to_double(&pressure),
57-
sensor_value_to_double(&altitude));
50+
ret = sensor_channel_get(dev, SENSOR_CHAN_ALTITUDE, &altitude);
51+
52+
printk("temp %.2f Cel, pressure %f kPa",
53+
sensor_value_to_double(&temperature),
54+
sensor_value_to_double(&pressure));
55+
if (ret == 0) {
56+
printk(", altitude %f m", sensor_value_to_double(&altitude));
57+
}
58+
printk("\n");
5859
}
5960
}
6061
return 0;

0 commit comments

Comments
 (0)