sdp3x.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 Dirk Ehmen
3  * 2020 Nishchay Agrawal
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser
6  * General Public License v2.1. See the file LICENSE in the top level
7  * directory for more details.
8  */
9 
10 #pragma once
11 
24 #include "saul.h"
25 #include "xtimer.h"
26 #include "mutex.h"
27 #include "periph/i2c.h"
28 #include "periph/gpio.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
38 #define SDP3X_FLAG_MASS_FLOW 0x02
39 #define SDP3X_FLAG_DIFF_PRESS 0x00
40 #define SDP3X_FLAG_AVERAGE 0x01
41 #define SDP3X_FLAG_NO_AVERAGE 0x00
47 typedef struct {
49  uint8_t i2c_addr;
50  gpio_t irq_pin;
52 
56 typedef struct {
60 } sdp3x_t;
61 
65 typedef struct {
68  int32_t temperature;
70 
74 enum {
75  SDP3x_OK = 0,
77  SDP3x_NODATA = -2,
79  SDP3x_WRONGSIZE = -4
80 };
81 
90 int sdp3x_init(sdp3x_t *dev, const sdp3x_params_t *params);
91 
102 int8_t sdp3x_start_continuous(sdp3x_t *dev, uint8_t flags);
103 
114 
125 int32_t sdp3x_read_single_temperature(sdp3x_t *dev, uint8_t flags);
126 
137  uint8_t flags);
138 
149 int8_t sdp3x_read_single_measurement(sdp3x_t *dev, uint8_t flags,
150  sdp3x_measurement_t *result);
151 
162 int8_t sdp3x_stop_continuous(sdp3x_t *dev, xtimer_t *continuous_timer);
163 
171 int8_t sdp3x_soft_reset(const sdp3x_t *dev);
172 
182 int8_t sdp3x_enter_sleep(const sdp3x_t *dev);
183 
191 int8_t sdp3x_exit_sleep(const sdp3x_t *dev);
192 
193 #ifdef __cplusplus
194 }
195 #endif
Low-level GPIO peripheral driver interface definitions.
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition: i2c.h:144
Low-level I2C peripheral driver interface definition.
Mutex for thread synchronization.
int8_t sdp3x_read_continuous(sdp3x_measurement_t *result, sdp3x_t *dev)
read temperature and differential pressure
int32_t sdp3x_read_single_differential_pressure(sdp3x_t *dev, uint8_t flags)
Read current differential_pressure value.
int sdp3x_init(sdp3x_t *dev, const sdp3x_params_t *params)
Initialize SDP3x.
int8_t sdp3x_soft_reset(const sdp3x_t *dev)
Resets all I2C devices.
int32_t sdp3x_read_single_temperature(sdp3x_t *dev, uint8_t flags)
Read current temperature value.
int8_t sdp3x_stop_continuous(sdp3x_t *dev, xtimer_t *continuous_timer)
Stop Continuous Measuring.
int8_t sdp3x_exit_sleep(const sdp3x_t *dev)
Exit sleep mode.
int8_t sdp3x_read_single_measurement(sdp3x_t *dev, uint8_t flags, sdp3x_measurement_t *result)
read temperature and differential pressure
int8_t sdp3x_enter_sleep(const sdp3x_t *dev)
Activates sleep mode.
@ SDP3x_WRONGSIZE
Wrong size of array for method.
Definition: sdp3x.h:79
@ SDP3x_NODATA
No Data available.
Definition: sdp3x.h:77
@ SDP3x_OK
all went as expected
Definition: sdp3x.h:75
@ SDP3x_IOERROR
I/O error.
Definition: sdp3x.h:78
@ SDP3x_CRCERROR
CRC-Check failed.
Definition: sdp3x.h:76
int8_t sdp3x_start_continuous(sdp3x_t *dev, uint8_t flags)
Start Continuous Measuring.
Mutex structure.
Definition: mutex.h:39
Measurement from SDP3x sensor.
Definition: sdp3x.h:65
int32_t temperature
Temperature measured in centi°C.
Definition: sdp3x.h:68
int32_t differential_pressure
Differential Pressure measured in centiPa.
Definition: sdp3x.h:66
Device initialization parameters.
Definition: sdp3x.h:47
gpio_t irq_pin
IRQ pin to check data ready.
Definition: sdp3x.h:50
uint8_t i2c_addr
I2C address.
Definition: sdp3x.h:49
i2c_t i2c_dev
I2C device which is used.
Definition: sdp3x.h:48
Device descriptor for the SDP3x sensor.
Definition: sdp3x.h:56
mutex_t mutex
Mutex for this sdp3x dev.
Definition: sdp3x.h:59
bool continuous_measurement
Device measuring data continuously.
Definition: sdp3x.h:57
sdp3x_params_t params
Device initialization parameters.
Definition: sdp3x.h:58
xtimer timer structure
Definition: xtimer.h:103
Functionality for reading [S]ensor [A]ctuator [U]ber [L]ayer sensors as SenML.
xtimer interface definitions