nrfcxx
0.1.0
C++-17 Framework for Nordic nRF5 Devices
|
Abstraction around BME280 temperature/humidity/pressure sensor. More...
#include <nrfcxx/sensor/bme280.hpp>
Data Structures | |
struct | observations_type |
Structure used to return sampled values. More... | |
Public Member Functions | |
bme280 (notifier_type notify, nrfcxx::periph::SPI &spi, int csn_psel) | |
Construct an instance that controls through the SPI interface. More... | |
bme280 (notifier_type notify, nrfcxx::periph::TWI &twi, bool addr_sec=false) | |
Construct an instance that controls through the I2C interface. More... | |
int | initialize () |
Initialize the BME280. More... | |
int | sample () |
Request a new sample from the device. More... | |
int | fetch (observations_type &obs) |
Retrieve the results from the most recent observation. More... | |
const observations_type & | observations () const |
Retrieve the most recent observations calculated through the LPM infrastructure. | |
Public Member Functions inherited from nrfcxx::lpm::lpsm_capable | |
virtual int | lpsm_start () |
Validate and prepare to initiate an LPM collection. More... | |
virtual int | lpsm_sample () |
Ask the LPM infrastructure to initiate a new sample. More... | |
lpm::state_machine::process_flags_type | lpsm_process () |
Make progress on an LPM collection. More... | |
int | lpsm_stop () |
int | lpsm_reset () |
int | lpsm_process_rc () const |
Get the internal result code from the last invocation of lpsm_process_(). More... | |
const lpm::state_machine & | machine () const |
Gain read-only access to the LPM machine state. | |
Static Public Attributes | |
static constexpr unsigned int | SAMPLE_DELAY_utt = clock::uptime::from_ms(10) |
Lower bound for wait after sample() before get_sensor_data(). More... | |
static constexpr uint16_t | INVALID_TEMPHUMID = 30000 |
Value used for invalid temperature and humidity observations. | |
static constexpr unsigned int | INVALID_PRESSURE = 0x00C00000 |
Value used for invalid pressure observations. More... | |
Additional Inherited Members | |
Protected Types inherited from nrfcxx::lpm::lpsm_capable | |
using | state_type = state_machine::state_type |
using | process_flags_type = state_machine::process_flags_type |
Protected Member Functions inherited from nrfcxx::lpm::lpsm_capable | |
lpsm_capable (notifier_type notify) | |
Create a state machine that records state and supports delayed transitions. More... | |
virtual int | lpsm_process_ (int &delay, process_flags_type &pf) |
Override to implement machine-specific operations of lpsm_process(). More... | |
virtual void | lpsm_reset_ () |
Override to reset state that is held outside the machine. | |
Protected Attributes inherited from nrfcxx::lpm::lpsm_capable | |
state_machine | machine_ |
Abstraction around BME280 temperature/humidity/pressure sensor.
Interface to the Bosch Sensortec BME280 sensor, wrapping the vendor-supplied library.
This uses forced (one-shot) sampling only, hard-coded with the parameters recommended for weather monitoring.
lpm::lpsm_capable::lpsm_process() for this sensor returns the following flags in addition to the diagnostic flags:
nrfcxx::sensor::bme280::bme280 | ( | notifier_type | notify, |
nrfcxx::periph::SPI & | spi, | ||
int | csn_psel | ||
) |
Construct an instance that controls through the SPI interface.
notify | the notifier to inform the application of LPM processing needs. |
spi | reference to the SPI peripheral to use. |
csn_psel | GPIO pin selector (index) identifying the GPIo connected to the BME280 CSn signal. |
nrfcxx::sensor::bme280::bme280 | ( | notifier_type | notify, |
nrfcxx::periph::TWI & | twi, | ||
bool | addr_sec = false |
||
) |
Construct an instance that controls through the I2C interface.
notify | the notifier to inform the application of LPM processing needs. |
twi | reference to the TWI peripheral to use. |
addr_sec | false to use the primary I2C address, true to use the secondary I2C address. |
int nrfcxx::sensor::bme280::fetch | ( | observations_type & | obs | ) |
Retrieve the results from the most recent observation.
int nrfcxx::sensor::bme280::initialize | ( | ) |
Initialize the BME280.
Issue this only once for each instance. This confirms communication with the device and configures the sample options.
|
inline |
Request a new sample from the device.
|
staticconstexpr |
Value used for invalid pressure observations.
This is sized to fit in a 24-bit unsigned integer, with a maximum representable value of 1258.2911 hPa.
|
staticconstexpr |
Lower bound for wait after sample() before get_sensor_data().
This value is designed for the weather monitoring configuration hard-coded into the implementation. Nominal maximum 9.3 ms.