aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios/os/ex/devices/ST/lps25h.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chibios/os/ex/devices/ST/lps25h.h')
-rw-r--r--lib/chibios/os/ex/devices/ST/lps25h.h740
1 files changed, 740 insertions, 0 deletions
diff --git a/lib/chibios/os/ex/devices/ST/lps25h.h b/lib/chibios/os/ex/devices/ST/lps25h.h
new file mode 100644
index 000000000..333a97bc0
--- /dev/null
+++ b/lib/chibios/os/ex/devices/ST/lps25h.h
@@ -0,0 +1,740 @@
1/*
2 ChibiOS - Copyright (C) 2016..2019 Rocco Marco Guglielmi
3
4 This file is part of ChibiOS.
5
6 ChibiOS is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 ChibiOS is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19*/
20
21/**
22 * @file lps25h.h
23 * @brief LPS25H MEMS interface module header.
24 *
25 * @addtogroup LPS25H
26 * @ingroup EX_ST
27 * @{
28 */
29#ifndef _LPS25H_H_
30#define _LPS25H_H_
31
32#include "ex_barometer.h"
33#include "ex_thermometer.h"
34
35/*===========================================================================*/
36/* Driver constants. */
37/*===========================================================================*/
38
39/**
40 * @name Version identification
41 * @{
42 */
43/**
44 * @brief LPS25H driver version string.
45 */
46#define EX_LPS25H_VERSION "1.1.2"
47
48/**
49 * @brief LPS25H driver version major number.
50 */
51#define EX_LPS25H_MAJOR 1
52
53/**
54 * @brief LPS25H driver version minor number.
55 */
56#define EX_LPS25H_MINOR 1
57
58/**
59 * @brief LPS25H driver version patch number.
60 */
61#define EX_LPS25H_PATCH 2
62/** @} */
63
64/**
65 * @brief LPS25H barometer subsystem characteristics.
66 * @note Sensitivity is expressed as hPa/LSB whereas hPa stand for
67 * hectopascal.
68 * @note Bias is expressed as hPa.
69 *
70 * @{
71 */
72#define LPS25H_BARO_NUMBER_OF_AXES 1U
73
74#define LPS25H_BARO_SENS 0.00024414f
75#define LPS25H_BARO_BIAS 0.0f
76/** @} */
77
78/**
79 * @brief LPS25H thermometer subsystem characteristics.
80 * @note Sensitivity is expressed as �C/LSB.
81 * @note Bias is expressed as �C.
82 *
83 * @{
84 */
85#define LPS25H_THERMO_NUMBER_OF_AXES 1U
86
87#define LPS25H_THERMO_SENS 0.00208333f
88#define LPS25H_THERMO_BIAS -42.5f
89/** @} */
90
91/**
92 * @name LPS25H communication interfaces related bit masks
93 * @{
94 */
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)
101
102#define LPS25H_SUB_MS (1 << 7)
103/** @} */
104
105/**
106 * @name LPS25H register addresses
107 * @{
108 */
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
132/** @} */
133
134/**
135 * @name LPS25H_CTRL_REG1 register bits definitions
136 * @{
137 */
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)
147/** @} */
148
149/**
150 * @name LPS25H_CTRL_REG2 register bits definitions
151 * @{
152 */
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)
161/** @} */
162
163/**
164 * @name LPS25H_CTRL_REG3 register bits definitions
165 * @{
166 */
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)
172/** @} */
173
174/**
175 * @name LPS25H_CTRL_REG4 register bits definitions
176 * @{
177 */
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)
183/** @} */
184
185/**
186 * @name LPS25H_INT1_CFG register bits definitions
187 * @{
188 */
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)
193/** @} */
194
195/**
196 * @name LPS25H_INT1_SRC register bits definitions
197 * @{
198 */
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)
203/** @} */
204
205/*===========================================================================*/
206/* Driver pre-compile time settings. */
207/*===========================================================================*/
208
209/**
210 * @name Configuration options
211 * @{
212 */
213/**
214 * @brief LPS25H SPI interface switch.
215 * @details If set to @p TRUE the support for SPI is included.
216 * @note The default is @p FALSE.
217 */
218#if !defined(LPS25H_USE_SPI) || defined(__DOXYGEN__)
219#define LPS25H_USE_SPI FALSE
220#endif
221
222/**
223 * @brief LPS25H shared SPI switch.
224 * @details If set to @p TRUE the device acquires SPI bus ownership
225 * on each transaction.
226 * @note The default is @p FALSE. Requires SPI_USE_MUTUAL_EXCLUSION.
227 */
228#if !defined(LPS25H_SHARED_SPI) || defined(__DOXYGEN__)
229#define LPS25H_SHARED_SPI FALSE
230#endif
231
232/**
233 * @brief LPS25H I2C interface switch.
234 * @details If set to @p TRUE the support for I2C is included.
235 * @note The default is @p TRUE.
236 */
237#if !defined(LPS25H_USE_I2C) || defined(__DOXYGEN__)
238#define LPS25H_USE_I2C TRUE
239#endif
240
241/**
242 * @brief LPS25H shared I2C switch.
243 * @details If set to @p TRUE the device acquires I2C bus ownership
244 * on each transaction.
245 * @note The default is @p FALSE. Requires I2C_USE_MUTUAL_EXCLUSION.
246 */
247#if !defined(LPS25H_SHARED_I2C) || defined(__DOXYGEN__)
248#define LPS25H_SHARED_I2C FALSE
249#endif
250
251/**
252 * @brief LPS25H advanced configurations switch.
253 * @details If set to @p TRUE more configurations are available.
254 * @note The default is @p FALSE.
255 */
256#if !defined(LPS25H_USE_ADVANCED) || defined(__DOXYGEN__)
257#define LPS25H_USE_ADVANCED FALSE
258#endif
259/** @} */
260
261/*===========================================================================*/
262/* Derived constants and error checks. */
263/*===========================================================================*/
264
265#if !(LPS25H_USE_SPI ^ LPS25H_USE_I2C)
266#error "LPS25H_USE_SPI and LPS25H_USE_I2C cannot be both true or both false"
267#endif
268
269#if LPS25H_USE_SPI && !HAL_USE_SPI
270#error "LPS25H_USE_SPI requires HAL_USE_SPI"
271#endif
272
273#if LPS25H_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION
274#error "LPS25H_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION"
275#endif
276
277#if LPS25H_USE_I2C && !HAL_USE_I2C
278#error "LPS25H_USE_I2C requires HAL_USE_I2C"
279#endif
280
281#if LPS25H_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
282#error "LPS25H_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
283#endif
284
285/*
286 * CHTODO: Add support for LPS25H over SPI.
287 */
288#if LPS25H_USE_SPI
289#error "LPS25H over SPI still not supported"
290#endif
291
292/*===========================================================================*/
293/* Driver data structures and types. */
294/*===========================================================================*/
295
296/**
297 * @name LPS25H data structures and types.
298 * @{
299 */
300/**
301 * @brief Structure representing a LPS25H driver.
302 */
303typedef struct LPS25HDriver LPS25HDriver;
304
305/**
306 * @brief LPS25H slave address
307 */
308typedef enum {
309 LPS25H_SAD_GND = 0x5C, /**< Slave Address when SA0 is to GND */
310 LPS25H_SAD_VCC = 0x5D /**< Slave Address when SA0 is to VCC */
311}lps25h_sad_t;
312
313/**
314 * @brief LPS25H output data rate and bandwidth.
315 */
316typedef enum {
317 LPS25H_ODR_ONE_SHOT = 0x00, /**< One shot. */
318 LPS25H_ODR_1HZ = 0x10, /**< Output data rate 1 Hz. */
319 LPS25H_ODR_7HZ = 0x20, /**< Output data rate 7 Hz. */
320 LPS25H_ODR_12P5HZ = 0x30, /**< Output data rate 12.5 Hz. */
321 LPS25H_ODR_25HZ = 0x40 /**< Output data rate 25 Hz. */
322}lps25h_odr_t;
323
324/**
325 * @brief LPS25H pressure resolution.
326 */
327typedef enum {
328 LPS25H_AVGP_8 = 0x00, /**< Number of internal average is 8. */
329 LPS25H_AVGP_32 = 0x01, /**< Number of internal average is 32. */
330 LPS25H_AVGP_128 = 0x02, /**< Number of internal average is 128. */
331 LPS25H_AVGP_512 = 0x03, /**< Number of internal average is 512. */
332}lps25h_avgp_t;
333
334/**
335 * @brief LPS25H temperature resolution.
336 */
337typedef enum {
338 LPS25H_AVGT_8 = 0x00, /**< Number of internal average is 8. */
339 LPS25H_AVGT_32 = 0x04, /**< Number of internal average is 32. */
340 LPS25H_AVGT_128 = 0x08, /**< Number of internal average is 128. */
341 LPS25H_AVGT_512 = 0x0C, /**< Number of internal average is 512. */
342}lps25h_avgt_t;
343
344/**
345 * @brief LPS25H block data update.
346 */
347typedef enum {
348 LPS25H_BDU_CONTINUOUS = 0x00, /**< Block data continuously updated. */
349 LPS25H_BDU_BLOCKED = 0x40 /**< Block data updated after reading. */
350}lps25h_bdu_t;
351
352/**
353 * @brief Driver state machine possible states.
354 */
355typedef enum {
356 LPS25H_UNINIT = 0, /**< Not initialized. */
357 LPS25H_STOP = 1, /**< Stopped. */
358 LPS25H_READY = 2, /**< Ready. */
359} lps25h_state_t;
360
361/**
362 * @brief LPS25H configuration structure.
363 */
364typedef struct {
365
366#if LPS25H_USE_SPI || defined(__DOXYGEN__)
367 /**
368 * @brief SPI driver associated to this LPS25H.
369 */
370 SPIDriver *spip;
371 /**
372 * @brief SPI configuration associated to this LPS25H.
373 */
374 const SPIConfig *spicfg;
375#endif /* LPS25H_USE_SPI */
376#if LPS25H_USE_I2C || defined(__DOXYGEN__)
377 /**
378 * @brief I2C driver associated to this LPS25H.
379 */
380 I2CDriver *i2cp;
381 /**
382 * @brief I2C configuration associated to this LPS25H.
383 */
384 const I2CConfig *i2ccfg;
385 /**
386 * @brief LPS25H slave address
387 */
388 lps25h_sad_t slaveaddress;
389#endif /* LPS25H_USE_I2C */
390 /**
391 * @brief LPS25H barometer subsystem initial sensitivity.
392 */
393 float *barosensitivity;
394 /**
395 * @brief LPS25H barometer subsystem initial bias.
396 */
397 float *barobias;
398 /**
399 * @brief LPS25H thermometer subsystem initial sensitivity.
400 */
401 float *thermosensitivity;
402 /**
403 * @brief LPS25H thermometer subsystem initial bias.
404 */
405 float *thermobias;
406 /**
407 * @brief LPS25H output data rate selection.
408 */
409 lps25h_odr_t outputdatarate;
410#if LPS25H_USE_ADVANCED || defined(__DOXYGEN__)
411 /**
412 * @brief LPS25H block data update.
413 */
414 lps25h_bdu_t blockdataupdate;
415 /**
416 * @brief LPS25H barometer subsystem resolution.
417 */
418 lps25h_avgp_t baroresolution;
419 /**
420 * @brief LPS25H thermometer subsystem resolution.
421 */
422 lps25h_avgt_t thermoresolution;
423#endif
424} LPS25HConfig;
425
426/**
427 * @brief @p LPS25H specific methods.
428 * @note No methods so far, just a common ancestor interface.
429 */
430#define _lps25h_methods_alone
431
432/**
433 * @brief @p LPS25H specific methods with inherited ones.
434 */
435#define _lps25h_methods \
436 _base_object_methods \
437 _lps25h_methods_alone
438
439/**
440 * @extends BaseObjectVMT
441 *
442 * @brief @p LPS25H virtual methods table.
443 */
444struct LPS25HVMT {
445 _lps25h_methods
446};
447
448/**
449 * @brief @p LPS25HDriver specific data.
450 */
451#define _lps25h_data \
452 /* Driver state.*/ \
453 lps25h_state_t state; \
454 /* Current configuration data.*/ \
455 const LPS25HConfig *config; \
456 /* Barometer subsystem axes number.*/ \
457 size_t baroaxes; \
458 /* Barometer subsystem current sensitivity.*/ \
459 float barosensitivity; \
460 /* Barometer subsystem current bias .*/ \
461 float barobias; \
462 /* Thermometer subsystem axes number.*/ \
463 size_t thermoaxes; \
464 /* Thermometer subsystem current sensitivity.*/ \
465 float thermosensitivity; \
466 /* Thermometer subsystem current bias.*/ \
467 float thermobias;
468
469/**
470 * @brief LPS25H 2-axis barometer/thermometer class.
471 */
472struct LPS25HDriver {
473 /** @brief Virtual Methods Table.*/
474 const struct LPS25HVMT *vmt;
475 /** @brief Base barometer interface.*/
476 BaseBarometer baro_if;
477 /** @brief Base thermometer interface.*/
478 BaseThermometer thermo_if;
479 _lps25h_data
480};
481/** @} */
482
483/*===========================================================================*/
484/* Driver macros. */
485/*===========================================================================*/
486
487/**
488 * @brief Return the number of axes of the BaseBarometer.
489 *
490 * @param[in] devp pointer to @p LPS25HDriver.
491 *
492 * @return the number of axes.
493 *
494 * @api
495 */
496#define lps25hBarometerGetAxesNumber(devp) \
497 barometerGetAxesNumber(&((devp)->baro_if))
498
499/**
500 * @brief Retrieves raw data from the BaseBarometer.
501 * @note This data is retrieved from MEMS register without any algebraical
502 * manipulation.
503 * @note The axes array must be at least the same size of the
504 * BaseBarometer axes number.
505 *
506 * @param[in] devp pointer to @p LPS25HDriver.
507 * @param[out] axes a buffer which would be filled with raw data.
508 *
509 * @return The operation status.
510 * @retval MSG_OK if the function succeeded.
511 * @retval MSG_RESET if one or more I2C errors occurred, the errors can
512 * be retrieved using @p i2cGetErrors().
513 * @retval MSG_TIMEOUT if a timeout occurred before operation end.
514 *
515 * @api
516 */
517#define lps25hBarometerReadRaw(devp, axes) \
518 barometerReadRaw(&((devp)->baro_if), axes)
519
520/**
521 * @brief Retrieves cooked data from the BaseBarometer.
522 * @note This data is manipulated according to the formula
523 * cooked = (raw * sensitivity) - bias.
524 * @note Final data is expressed as hPa.
525 * @note The axes array must be at least the same size of the
526 * BaseBarometer axes number.
527 *
528 * @param[in] devp pointer to @p LPS25HDriver.
529 * @param[out] axes a buffer which would be filled with cooked data.
530 *
531 * @return The operation status.
532 * @retval MSG_OK if the function succeeded.
533 * @retval MSG_RESET if one or more I2C errors occurred, the errors can
534 * be retrieved using @p i2cGetErrors().
535 * @retval MSG_TIMEOUT if a timeout occurred before operation end.
536 *
537 * @api
538 */
539#define lps25hBarometerReadCooked(devp, axes) \
540 barometerReadCooked(&((devp)->baro_if), axes)
541
542/**
543 * @brief Set bias values for the BaseBarometer.
544 * @note Bias must be expressed as hPa.
545 * @note The bias buffer must be at least the same size of the
546 * BaseBarometer axes number.
547 *
548 * @param[in] devp pointer to @p LPS25HDriver.
549 * @param[in] bp a buffer which contains biases.
550 *
551 * @return The operation status.
552 * @retval MSG_OK if the function succeeded.
553 *
554 * @api
555 */
556#define lps25hBarometerSetBias(devp, bp) \
557 barometerSetBias(&((devp)->baro_if), bp)
558
559/**
560 * @brief Reset bias values for the BaseBarometer.
561 * @note Default biases value are obtained from device datasheet when
562 * available otherwise they are considered zero.
563 *
564 * @param[in] devp pointer to @p LPS25HDriver.
565 *
566 * @return The operation status.
567 * @retval MSG_OK if the function succeeded.
568 *
569 * @api
570 */
571#define lps25hBarometerResetBias(devp) \
572 barometerResetBias(&((devp)->baro_if))
573
574/**
575 * @brief Set sensitivity values for the BaseBarometer.
576 * @note Sensitivity must be expressed as hPa/LSB.
577 * @note The sensitivity buffer must be at least the same size of the
578 * BaseBarometer axes number.
579 *
580 * @param[in] devp pointer to @p LPS25HDriver.
581 * @param[in] sp a buffer which contains sensitivities.
582 *
583 * @return The operation status.
584 * @retval MSG_OK if the function succeeded.
585 *
586 * @api
587 */
588#define lps25hBarometerSetSensitivity(devp, sp) \
589 barometerSetSensitivity(&((devp)->baro_if), sp)
590
591/**
592 * @brief Reset sensitivity values for the BaseBarometer.
593 * @note Default sensitivities value are obtained from device datasheet.
594 *
595 * @param[in] devp pointer to @p LPS25HDriver.
596 *
597 * @return The operation status.
598 * @retval MSG_OK if the function succeeded.
599 *
600 * @api
601 */
602#define lps25hBarometerResetSensitivity(devp) \
603 barometerResetSensitivity(&((devp)->baro_if))
604
605/**
606 * @brief Return the number of axes of the BaseThermometer.
607 *
608 * @param[in] devp pointer to @p LPS25HDriver.
609 *
610 * @return the number of axes.
611 *
612 * @api
613 */
614#define lps25hThermometerGetAxesNumber(devp) \
615 thermometerGetAxesNumber(&((devp)->thermo_if))
616
617/**
618 * @brief Retrieves raw data from the BaseThermometer.
619 * @note This data is retrieved from MEMS register without any algebraical
620 * manipulation.
621 * @note The axes array must be at least the same size of the
622 * BaseThermometer axes number.
623 *
624 * @param[in] devp pointer to @p LPS25HDriver.
625 * @param[out] axes a buffer which would be filled with raw data.
626 *
627 * @return The operation status.
628 * @retval MSG_OK if the function succeeded.
629 * @retval MSG_RESET if one or more I2C errors occurred, the errors can
630 * be retrieved using @p i2cGetErrors().
631 * @retval MSG_TIMEOUT if a timeout occurred before operation end.
632 *
633 * @api
634 */
635#define lps25hThermometerReadRaw(devp, axes) \
636 thermometerReadRaw(&((devp)->thermo_if), axes)
637
638/**
639 * @brief Retrieves cooked data from the BaseThermometer.
640 * @note This data is manipulated according to the formula
641 * cooked = (raw * sensitivity) - bias.
642 * @note Final data is expressed as °C.
643 * @note The axes array must be at least the same size of the
644 * BaseThermometer axes number.
645 *
646 * @param[in] devp pointer to @p LPS25HDriver.
647 * @param[out] axes a buffer which would be filled with cooked data.
648 *
649 * @return The operation status.
650 * @retval MSG_OK if the function succeeded.
651 * @retval MSG_RESET if one or more I2C errors occurred, the errors can
652 * be retrieved using @p i2cGetErrors().
653 * @retval MSG_TIMEOUT if a timeout occurred before operation end.
654 *
655 * @api
656 */
657#define lps25hThermometerReadCooked(devp, axes) \
658 thermometerReadCooked(&((devp)->thermo_if), axes)
659
660/**
661 * @brief Set bias values for the BaseThermometer.
662 * @note Bias must be expressed as °C.
663 * @note The bias buffer must be at least the same size of the
664 * BaseThermometer axes number.
665 *
666 * @param[in] devp pointer to @p LPS25HDriver.
667 * @param[in] bp a buffer which contains biases.
668 *
669 * @return The operation status.
670 * @retval MSG_OK if the function succeeded.
671 *
672 * @api
673 */
674#define lps25hThermometerSetBias(devp, bp) \
675 thermometerSetBias(&((devp)->thermo_if), bp)
676
677/**
678 * @brief Reset bias values for the BaseThermometer.
679 * @note Default biases value are obtained from device datasheet when
680 * available otherwise they are considered zero.
681 *
682 * @param[in] devp pointer to @p LPS25HDriver.
683 *
684 * @return The operation status.
685 * @retval MSG_OK if the function succeeded.
686 *
687 * @api
688 */
689#define lps25hThermometerResetBias(devp) \
690 thermometerResetBias(&((devp)->thermo_if))
691
692/**
693 * @brief Set sensitivity values for the BaseThermometer.
694 * @note Sensitivity must be expressed as °C/LSB.
695 * @note The sensitivity buffer must be at least the same size of the
696 * BaseThermometer axes number.
697 *
698 * @param[in] devp pointer to @p LPS25HDriver.
699 * @param[in] sp a buffer which contains sensitivities.
700 *
701 * @return The operation status.
702 * @retval MSG_OK if the function succeeded.
703 *
704 * @api
705 */
706#define lps25hThermometerSetSensitivity(devp, sp) \
707 thermometerSetSensitivity(&((devp)->thermo_if), sp)
708
709/**
710 * @brief Reset sensitivity values for the BaseThermometer.
711 * @note Default sensitivities value are obtained from device datasheet.
712 *
713 * @param[in] devp pointer to @p LPS25HDriver.
714 *
715 * @return The operation status.
716 * @retval MSG_OK if the function succeeded.
717 *
718 * @api
719 */
720#define lps25hThermometerResetSensitivity(devp) \
721 thermometerResetSensitivity(&((devp)->thermo_if))
722
723/*===========================================================================*/
724/* External declarations. */
725/*===========================================================================*/
726
727#ifdef __cplusplus
728extern "C" {
729#endif
730 void lps25hObjectInit(LPS25HDriver *devp);
731 void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config);
732 void lps25hStop(LPS25HDriver *devp);
733#ifdef __cplusplus
734}
735#endif
736
737#endif /* _LPS25H_H_ */
738
739/** @} */
740