46#define EX_LPS25H_VERSION "1.1.3"
51#define EX_LPS25H_MAJOR 1
56#define EX_LPS25H_MINOR 1
61#define EX_LPS25H_PATCH 3
72#define LPS25H_BARO_NUMBER_OF_AXES 1U
74#define LPS25H_BARO_SENS 0.00024414f
75#define LPS25H_BARO_BIAS 0.0f
85#define LPS25H_THERMO_NUMBER_OF_AXES 1U
87#define LPS25H_THERMO_SENS 0.00208333f
88#define LPS25H_THERMO_BIAS -42.5f
95#define LPS25H_DI_MASK 0xFF
96#define LPS25H_DI(n) (1 << n)
97#define LPS25H_AD_MASK 0x3F
98#define LPS25H_AD(n) (1 << n)
99#define LPS25H_MS (1 << 6)
100#define LPS25H_RW (1 << 7)
102#define LPS25H_SUB_MS (1 << 7)
109#define LPS25H_AD_REF_P_XL 0x08
110#define LPS25H_AD_REF_P_L 0x09
111#define LPS25H_AD_REF_P_H 0x0A
112#define LPS25H_AD_WHO_AM_I 0x0F
113#define LPS25H_AD_RES_CONF 0x10
114#define LPS25H_AD_CTRL_REG1 0x20
115#define LPS25H_AD_CTRL_REG2 0x21
116#define LPS25H_AD_CTRL_REG3 0x22
117#define LPS25H_AD_CTRL_REG4 0x23
118#define LPS25H_AD_INT_CFG 0x24
119#define LPS25H_AD_INT_SRC 0x25
120#define LPS25H_AD_STATUS_REG 0x27
121#define LPS25H_AD_PRESS_OUT_XL 0x28
122#define LPS25H_AD_PRESS_OUT_L 0x29
123#define LPS25H_AD_PRESS_OUT_H 0x2A
124#define LPS25H_AD_TEMP_OUT_L 0x2B
125#define LPS25H_AD_TEMP_OUT_H 0x2C
126#define LPS25H_AD_FIFO_CTRL 0x2E
127#define LPS25H_AD_FIFO_SRC 0x2F
128#define LPS25H_AD_THS_P_L 0x30
129#define LPS25H_AD_THS_P_H 0x31
130#define LPS25H_AD_RPDS_L 0x39
131#define LPS25H_AD_RPDS_H 0x3A
138#define LPS25H_CTRL_REG1_MASK 0xFF
139#define LPS25H_CTRL_REG1_SIM (1 << 0)
140#define LPS25H_CTRL_REG1_RESET_AZ (1 << 1)
141#define LPS25H_CTRL_REG1_BDU (1 << 2)
142#define LPS25H_CTRL_REG1_DIFF_EN (1 << 3)
143#define LPS25H_CTRL_REG1_ODR0 (1 << 4)
144#define LPS25H_CTRL_REG1_ODR1 (1 << 5)
145#define LPS25H_CTRL_REG1_ODR2 (1 << 6)
146#define LPS25H_CTRL_REG1_PD (1 << 7)
153#define LPS25H_CTRL_REG2_MASK 0xF3
154#define LPS25H_CTRL_REG2_ONE_SHOT (1 << 0)
155#define LPS25H_CTRL_REG2_AUTO_ZERO (1 << 1)
156#define LPS25H_CTRL_REG2_SWRESET (1 << 2)
157#define LPS25H_CTRL_REG2_FIFO_MEAN_DEC (1 << 4)
158#define LPS25H_CTRL_REG2_WTM_EN (1 << 5)
159#define LPS25H_CTRL_REG2_FIFO_EN (1 << 6)
160#define LPS25H_CTRL_REG2_BOOT (1 << 7)
167#define LPS25H_CTRL_REG3_MASK 0xC3
168#define LPS25H_CTRL_REG3_INT_S1 (1 << 0)
169#define LPS25H_CTRL_REG3_INT_S2 (1 << 1)
170#define LPS25H_CTRL_REG3_PP_OD (1 << 6)
171#define LPS25H_CTRL_REG3_INT_H_L (1 << 7)
178#define LPS25H_CTRL_REG4_MASK 0x0F
179#define LPS25H_CTRL_REG4_P1_DRDY (1 << 0)
180#define LPS25H_CTRL_REG4_P1_OVERRUN (1 << 1)
181#define LPS25H_CTRL_REG4_P1_WTM (1 << 2)
182#define LPS25H_CTRL_REG4_P1_EMPTY (1 << 3)
189#define LPS25H_INT1_CFG_MASK 0x07
190#define LPS25H_INT1_CFG_PH_E (1 << 0)
191#define LPS25H_INT1_CFG_PL_E (1 << 1)
192#define LPS25H_INT1_CFG_LIR (1 << 2)
199#define LPS25H_INT1_SRC_MASK 0x07
200#define LPS25H_INT1_SRC_PH (1 << 0)
201#define LPS25H_INT1_SRC_PL (1 << 1)
202#define LPS25H_INT1_SRC_IA (1 << 2)
218#if !defined(LPS25H_USE_SPI) || defined(__DOXYGEN__)
219#define LPS25H_USE_SPI FALSE
228#if !defined(LPS25H_SHARED_SPI) || defined(__DOXYGEN__)
229#define LPS25H_SHARED_SPI FALSE
237#if !defined(LPS25H_USE_I2C) || defined(__DOXYGEN__)
238#define LPS25H_USE_I2C TRUE
247#if !defined(LPS25H_SHARED_I2C) || defined(__DOXYGEN__)
248#define LPS25H_SHARED_I2C FALSE
256#if !defined(LPS25H_USE_ADVANCED) || defined(__DOXYGEN__)
257#define LPS25H_USE_ADVANCED FALSE
265#if !(LPS25H_USE_SPI ^ LPS25H_USE_I2C)
266#error "LPS25H_USE_SPI and LPS25H_USE_I2C cannot be both true or both false"
269#if LPS25H_USE_SPI && !HAL_USE_SPI
270#error "LPS25H_USE_SPI requires HAL_USE_SPI"
273#if LPS25H_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION
274#error "LPS25H_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION"
277#if LPS25H_USE_I2C && !HAL_USE_I2C
278#error "LPS25H_USE_I2C requires HAL_USE_I2C"
281#if LPS25H_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
282#error "LPS25H_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
289#error "LPS25H over SPI still not supported"
366#if LPS25H_USE_SPI || defined(__DOXYGEN__)
376#if LPS25H_USE_I2C || defined(__DOXYGEN__)
410#if LPS25H_USE_ADVANCED || defined(__DOXYGEN__)
430#define _lps25h_methods_alone
435#define _lps25h_methods \
436 _base_object_methods \
437 _lps25h_methods_alone
451#define _lps25h_data \
453 lps25h_state_t state; \
455 const LPS25HConfig *config; \
459 float barosensitivity; \
465 float thermosensitivity; \
496#define lps25hBarometerGetAxesNumber(devp) \
497 barometerGetAxesNumber(&((devp)->baro_if))
517#define lps25hBarometerReadRaw(devp, axes) \
518 barometerReadRaw(&((devp)->baro_if), axes)
539#define lps25hBarometerReadCooked(devp, axes) \
540 barometerReadCooked(&((devp)->baro_if), axes)
556#define lps25hBarometerSetBias(devp, bp) \
557 barometerSetBias(&((devp)->baro_if), bp)
571#define lps25hBarometerResetBias(devp) \
572 barometerResetBias(&((devp)->baro_if))
588#define lps25hBarometerSetSensitivity(devp, sp) \
589 barometerSetSensitivity(&((devp)->baro_if), sp)
602#define lps25hBarometerResetSensitivity(devp) \
603 barometerResetSensitivity(&((devp)->baro_if))
614#define lps25hThermometerGetAxesNumber(devp) \
615 thermometerGetAxesNumber(&((devp)->thermo_if))
635#define lps25hThermometerReadRaw(devp, axes) \
636 thermometerReadRaw(&((devp)->thermo_if), axes)
657#define lps25hThermometerReadCooked(devp, axes) \
658 thermometerReadCooked(&((devp)->thermo_if), axes)
674#define lps25hThermometerSetBias(devp, bp) \
675 thermometerSetBias(&((devp)->thermo_if), bp)
689#define lps25hThermometerResetBias(devp) \
690 thermometerResetBias(&((devp)->thermo_if))
706#define lps25hThermometerSetSensitivity(devp, sp) \
707 thermometerSetSensitivity(&((devp)->thermo_if), sp)
720#define lps25hThermometerResetSensitivity(devp) \
721 thermometerResetSensitivity(&((devp)->thermo_if))
Generic barometer interface header.
Generic thermometer interface header.
struct hal_i2c_config I2CConfig
Type of a structure representing an I2C configuration.
struct hal_i2c_driver I2CDriver
Type of a structure representing an I2C driver.
lps25h_odr_t
LPS25H output data rate and bandwidth.
void lps25hObjectInit(LPS25HDriver *devp)
Initializes an instance.
void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config)
Configures and activates LPS25H Complex Driver peripheral.
lps25h_sad_t
LPS25H slave address.
lps25h_avgt_t
LPS25H temperature resolution.
#define _lps25h_data
LPS25HDriver specific data.
void lps25hStop(LPS25HDriver *devp)
Deactivates the LPS25H Complex Driver peripheral.
#define _lps25h_methods
LPS25H specific methods with inherited ones.
lps25h_avgp_t
LPS25H pressure resolution.
lps25h_state_t
Driver state machine possible states.
lps25h_bdu_t
LPS25H block data update.
struct hal_spi_config SPIConfig
Type of a SPI driver configuration structure.
struct hal_spi_driver SPIDriver
Type of a structure representing an SPI driver.
LPS25H configuration structure.
lps25h_sad_t slaveaddress
LPS25H slave address.
const SPIConfig * spicfg
SPI configuration associated to this LPS25H.
float * barosensitivity
LPS25H barometer subsystem initial sensitivity.
lps25h_bdu_t bdu
LPS25H block data update.
lps25h_odr_t odr
LPS25H output data rate selection.
I2CDriver * i2cp
I2C driver associated to this LPS25H.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS25H.
float * barobias
LPS25H barometer subsystem initial bias.
float * thermosensitivity
LPS25H thermometer subsystem initial sensitivity.
SPIDriver * spip
SPI driver associated to this LPS25H.
lps25h_avgp_t baroresolution
LPS25H barometer subsystem resolution.
lps25h_avgt_t thermoresolution
LPS25H thermometer subsystem resolution.
float * thermobias
LPS25H thermometer subsystem initial bias.
LPS25H 2-axis barometer/thermometer class.
BaseBarometer baro_if
Base barometer interface.
const struct LPS25HVMT * vmt
Virtual Methods Table.
BaseThermometer thermo_if
Base thermometer interface.
LPS25H virtual methods table.