Loading...
Searching...
No Matches
lpsxxx.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Freie Universität Berlin
3 * SPDX-FileCopyrightText: 2018 Inria
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#include <stdint.h>
33#include "periph/i2c.h"
34
48#ifndef CONFIG_LPSXXX_DEFAULT_ADDRESS
49#define CONFIG_LPSXXX_DEFAULT_ADDRESS (0x5d)
50#endif
52
56enum {
60};
61
65typedef enum {
67#if MODULE_LPS331AP
68 LPSXXX_RATE_7HZ = 5,
69 LPSXXX_RATE_12HZ5 = 6,
70 LPSXXX_RATE_25HZ = 7
71#elif MODULE_LPS25HB
72 LPSXXX_RATE_7HZ = 2,
73 LPSXXX_RATE_12HZ5 = 3,
74 LPSXXX_RATE_25HZ = 4
75#elif MODULE_LPS22HB
76 LPSXXX_RATE_10HZ = 2,
77 LPSXXX_RATE_25HZ = 3,
78 LPSXXX_RATE_50HZ = 4,
79 LPSXXX_RATE_75HZ = 5
80#elif MODULE_LPS22HH || MODULE_LPS22CH
81 LPSXXX_RATE_10HZ = 2,
82 LPSXXX_RATE_25HZ = 3,
83 LPSXXX_RATE_50HZ = 4,
84 LPSXXX_RATE_75HZ = 5,
85 LPSXXX_RATE_100HZ = 6,
86 LPSXXX_RATE_200HZ = 7
87#endif
89
93#if MODULE_LPS331AP || MODULE_LPS25HB
94#define LPSXXX_DEFAULT_RATE (LPSXXX_RATE_7HZ)
95#else /* MODULE_LPS22HB || MODULE_LPS22HH || MODULE_LPS22CH */
96#define LPSXXX_DEFAULT_RATE (LPSXXX_RATE_25HZ)
97#endif
98
102typedef struct {
104 uint8_t addr;
107
111typedef struct {
113} lpsxxx_t;
114
125int lpsxxx_init(lpsxxx_t *dev, const lpsxxx_params_t *params);
126
136int lpsxxx_read_temp(const lpsxxx_t *dev, int16_t *temp);
137
147int lpsxxx_read_pres(const lpsxxx_t *dev, uint16_t *pres);
148
157int lpsxxx_enable(const lpsxxx_t *dev);
158
167int lpsxxx_disable(const lpsxxx_t *dev);
168
169#ifdef __cplusplus
170}
171#endif
172
int lpsxxx_read_temp(const lpsxxx_t *dev, int16_t *temp)
Read a temperature value from the given sensor, returned in c°C.
int lpsxxx_disable(const lpsxxx_t *dev)
Disable the given sensor.
int lpsxxx_init(lpsxxx_t *dev, const lpsxxx_params_t *params)
Initialize a given LPSXXX pressure sensor.
lpsxxx_rate_t
Possible sampling rates for LPS331AP sensors.
Definition lpsxxx.h:65
int lpsxxx_read_pres(const lpsxxx_t *dev, uint16_t *pres)
Read a pressure value from the given sensor, returned in hPa.
int lpsxxx_enable(const lpsxxx_t *dev)
Enable the given sensor.
@ LPSXXX_OK
Everything was fine.
Definition lpsxxx.h:57
@ LPSXXX_ERR_NODEV
No valid device found.
Definition lpsxxx.h:58
@ LPSXXX_ERR_I2C
An error occurred on the I2C bus.
Definition lpsxxx.h:59
@ LPSXXX_RATE_1HZ
sample with 1Hz
Definition lpsxxx.h:66
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
Struct holding all parameters needed for device initialization.
Definition lpsxxx.h:102
i2c_t i2c
I2C bus the sensor is connected to.
Definition lpsxxx.h:103
lpsxxx_rate_t rate
tell sensor to sample with this rate
Definition lpsxxx.h:105
uint8_t addr
the devices address on the bus
Definition lpsxxx.h:104
Device descriptor for LPSXXX sensors.
Definition lpsxxx.h:111
lpsxxx_params_t params
device initialization parameters
Definition lpsxxx.h:112