46#define EX_LPS22HB_VERSION "1.0.2"
51#define EX_LPS22HB_MAJOR 1
56#define EX_LPS22HB_MINOR 0
61#define EX_LPS22HB_PATCH 2
72#define LPS22HB_BARO_NUMBER_OF_AXES 1U
74#define LPS22HB_BARO_SENS 0.00024414f
75#define LPS22HB_BARO_BIAS 0.0f
85#define LPS22HB_THERMO_NUMBER_OF_AXES 1U
87#define LPS22HB_THERMO_SENS 0.01f
88#define LPS22HB_THERMO_BIAS 0.0f
95#define LPS22HB_DI_MASK 0xFF
96#define LPS22HB_DI(n) (1 << n)
97#define LPS22HB_AD_MASK 0x3F
98#define LPS22HB_AD(n) (1 << n)
99#define LPS22HB_MS (1 << 6)
100#define LPS22HB_RW (1 << 7)
102#define LPS22HB_SUB_MS (1 << 7)
109#define LPS22HB_AD_INT_CFG 0x0B
110#define LPS22HB_AD_THS_P_L 0x0C
111#define LPS22HB_AD_THS_P_H 0x0D
112#define LPS22HB_AD_WHO_AM_I 0x0F
113#define LPS22HB_AD_CTRL_REG1 0x10
114#define LPS22HB_AD_CTRL_REG2 0x11
115#define LPS22HB_AD_CTRL_REG3 0x12
116#define LPS22HB_AD_FIFO_CTRL 0x14
117#define LPS22HB_AD_REF_P_XL 0x15
118#define LPS22HB_AD_REF_P_L 0x16
119#define LPS22HB_AD_REF_P_H 0x17
120#define LPS22HB_AD_RPDS_L 0x18
121#define LPS22HB_AD_RPDS_H 0x19
122#define LPS22HB_AD_RES_CONF 0x1A
123#define LPS22HB_AD_INT_SRC 0x25
124#define LPS22HB_AD_FIFO_SRC 0x26
125#define LPS22HB_AD_STATUS_REG 0x27
126#define LPS22HB_AD_PRESS_OUT_XL 0x28
127#define LPS22HB_AD_PRESS_OUT_L 0x29
128#define LPS22HB_AD_PRESS_OUT_H 0x2A
129#define LPS22HB_AD_TEMP_OUT_L 0x2B
130#define LPS22HB_AD_TEMP_OUT_H 0x2C
131#define LPS22HB_AD_LPFP_RES 0x33
138#define LPS22HB_INT_CFG_MASK 0xFF
139#define LPS22HB_INT_CFG_PHE (1 << 0)
140#define LPS22HB_INT_CFG_PLE (1 << 1)
141#define LPS22HB_INT_CFG_LIR (1 << 2)
142#define LPS22HB_INT_CFG_DIFF_EN (1 << 3)
143#define LPS22HB_INT_CFG_RESET_AZ (1 << 4)
144#define LPS22HB_INT_CFG_AUTOZERO (1 << 5)
145#define LPS22HB_INT_CFG_RESET_ARP (1 << 6)
146#define LPS22HB_INT_CFG_AUTORIFP (1 << 7)
153#define LPS22HB_CTRL_REG1_MASK 0x7F
154#define LPS22HB_CTRL_REG1_SIM (1 << 0)
155#define LPS22HB_CTRL_REG1_BDU (1 << 1)
156#define LPS22HB_CTRL_REG1_LPFP_CFG (1 << 2)
157#define LPS22HB_CTRL_REG1_LPFP_EN (1 << 3)
158#define LPS22HB_CTRL_REG1_ODR0 (1 << 4)
159#define LPS22HB_CTRL_REG1_ODR1 (1 << 5)
160#define LPS22HB_CTRL_REG1_ODR2 (1 << 6)
167#define LPS22HB_CTRL_REG2_MASK 0xFD
168#define LPS22HB_CTRL_REG2_ONE_SHOT (1 << 0)
169#define LPS22HB_CTRL_REG2_SWRESET (1 << 2)
170#define LPS22HB_CTRL_REG2_I2C_DIS (1 << 3)
171#define LPS22HB_CTRL_REG2_IF_ADD_INC (1 << 4)
172#define LPS22HB_CTRL_REG2_STOP_ON_FTH (1 << 5)
173#define LPS22HB_CTRL_REG2_FIFO_EN (1 << 6)
174#define LPS22HB_CTRL_REG2_BOOT (1 << 7)
181#define LPS22HB_CTRL_REG3_MASK 0xFF
182#define LPS22HB_CTRL_REG3_INT_S1 (1 << 0)
183#define LPS22HB_CTRL_REG3_INT_S2 (1 << 1)
184#define LPS22HB_CTRL_REG3_DRDY (1 << 2)
185#define LPS22HB_CTRL_REG3_F_OVR (1 << 3)
186#define LPS22HB_CTRL_REG3_F_FTH (1 << 4)
187#define LPS22HB_CTRL_REG3_F_FSS5 (1 << 5)
188#define LPS22HB_CTRL_REG3_PP_OD (1 << 6)
189#define LPS22HB_CTRL_REG3_INT_H_L (1 << 7)
196#define LPS22HB_INT_SRC_MASK 0x87
197#define LPS22HB_INT_SRC_PH (1 << 0)
198#define LPS22HB_INT_SRC_PL (1 << 1)
199#define LPS22HB_INT_SRC_IA (1 << 2)
200#define LPS22HB_INT_SRC_BOOT_STATUS (1 << 8)
216#if !defined(LPS22HB_USE_SPI) || defined(__DOXYGEN__)
217#define LPS22HB_USE_SPI FALSE
226#if !defined(LPS22HB_SHARED_SPI) || defined(__DOXYGEN__)
227#define LPS22HB_SHARED_SPI FALSE
235#if !defined(LPS22HB_USE_I2C) || defined(__DOXYGEN__)
236#define LPS22HB_USE_I2C TRUE
245#if !defined(LPS22HB_SHARED_I2C) || defined(__DOXYGEN__)
246#define LPS22HB_SHARED_I2C FALSE
254#if !defined(LPS22HB_USE_ADVANCED) || defined(__DOXYGEN__)
255#define LPS22HB_USE_ADVANCED FALSE
263#if !(LPS22HB_USE_SPI ^ LPS22HB_USE_I2C)
264#error "LPS22HB_USE_SPI and LPS22HB_USE_I2C cannot be both true or both false"
267#if LPS22HB_USE_SPI && !HAL_USE_SPI
268#error "LPS22HB_USE_SPI requires HAL_USE_SPI"
271#if LPS22HB_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION
272#error "LPS22HB_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION"
275#if LPS22HB_USE_I2C && !HAL_USE_I2C
276#error "LPS22HB_USE_I2C requires HAL_USE_I2C"
279#if LPS22HB_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
280#error "LPS22HB_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
287#error "LPS22HB over SPI still not supported"
354#if LPS22HB_USE_SPI || defined(__DOXYGEN__)
364#if LPS22HB_USE_I2C || defined(__DOXYGEN__)
398#if LPS22HB_USE_ADVANCED || defined(__DOXYGEN__)
414#define _lps22hb_methods_alone
419#define _lps22hb_methods \
420 _base_object_methods \
421 _lps22hb_methods_alone
435#define _lps22hb_data \
437 lps22hb_state_t state; \
439 const LPS22HBConfig *config; \
443 float barosensitivity; \
449 float thermosensitivity; \
480#define lps22hbBarometerGetAxesNumber(devp) \
481 barometerGetAxesNumber(&((devp)->baro_if))
501#define lps22hbBarometerReadRaw(devp, axes) \
502 barometerReadRaw(&((devp)->baro_if), axes)
523#define lps22hbBarometerReadCooked(devp, axes) \
524 barometerReadCooked(&((devp)->baro_if), axes)
540#define lps22hbBarometerSetBias(devp, bp) \
541 barometerSetBias(&((devp)->baro_if), bp)
555#define lps22hbBarometerResetBias(devp) \
556 barometerResetBias(&((devp)->baro_if))
572#define lps22hbBarometerSetSensitivity(devp, sp) \
573 barometerSetSensitivity(&((devp)->baro_if), sp)
586#define lps22hbBarometerResetSensitivity(devp) \
587 barometerResetSensitivity(&((devp)->baro_if))
598#define lps22hbThermometerGetAxesNumber(devp) \
599 thermometerGetAxesNumber(&((devp)->thermo_if))
619#define lps22hbThermometerReadRaw(devp, axes) \
620 thermometerReadRaw(&((devp)->thermo_if), axes)
641#define lps22hbThermometerReadCooked(devp, axes) \
642 thermometerReadCooked(&((devp)->thermo_if), axes)
658#define lps22hbThermometerSetBias(devp, bp) \
659 thermometerSetBias(&((devp)->thermo_if), bp)
673#define lps22hbThermometerResetBias(devp) \
674 thermometerResetBias(&((devp)->thermo_if))
690#define lps22hbThermometerSetSensitivity(devp, sp) \
691 thermometerSetSensitivity(&((devp)->thermo_if), sp)
704#define lps22hbThermometerResetSensitivity(devp) \
705 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.
lps22hb_lp_t
LPS22HB pressure resolution.
void lps22hbObjectInit(LPS22HBDriver *devp)
Initializes an instance.
lps22hb_sad_t
LPS22HB slave address.
#define _lps22hb_data
LPS22HBDriver specific data.
void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config)
Configures and activates LPS22HB Complex Driver peripheral.
lps22hb_bdu_t
LPS22HB block data update.
#define _lps22hb_methods
LPS22HB specific methods with inherited ones.
lps22hb_odr_t
LPS22HB output data rate and bandwidth.
lps22hb_state_t
Driver state machine possible states.
void lps22hbStop(LPS22HBDriver *devp)
Deactivates the LPS22HB Complex Driver peripheral.
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.
LPS22HB configuration structure.
float * barosensitivity
LPS22HB barometer subsystem initial sensitivity.
const SPIConfig * spicfg
SPI configuration associated to this LPS22HB.
lps22hb_odr_t outputdatarate
LPS22HB output data rate selection.
float * barobias
LPS22HB barometer subsystem initial bias.
float * thermosensitivity
LPS22HB thermometer subsystem initial sensitivity.
float * thermobias
LPS22HB thermometer subsystem initial bias.
SPIDriver * spip
SPI driver associated to this LPS22HB.
lps22hb_sad_t slaveaddress
LPS22HB slave address.
lps22hb_bdu_t blockdataupdate
LPS22HB block data update.
I2CDriver * i2cp
I2C driver associated to this LPS22HB.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS22HB.
lps22hb_lp_t lowpass_filter
LPS22HB barometer subsystem resolution.
LPS22HB 2-axis barometer/thermometer class.
const struct LPS22HBVMT * vmt
Virtual Methods Table.
BaseBarometer baro_if
Base barometer interface.
BaseThermometer thermo_if
Base thermometer interface.
LPS22HB virtual methods table.