16#ifndef COMPONENT_HANDLER_BMP581_HANDLER_H_
17#define COMPONENT_HANDLER_BMP581_HANDLER_H_
24#include "base/BaseI2c.h"
25#include "core/hf-core-drivers/external/hf-bmp581-driver/inc/bmp581.hpp"
45 static constexpr bmp581::Interface
kInterface = bmp581::Interface::I2c;
51 bool WriteRegs(std::uint8_t reg,
const std::uint8_t* data, std::size_t len)
noexcept;
52 bool ReadRegs(std::uint8_t reg, std::uint8_t* out, std::size_t len)
noexcept;
53 void DelayUs(std::uint32_t us)
noexcept;
71 bmp581::Config
config{bmp581::BarometricReferencePreset()};
96 RtosMutex* bus_mutex =
nullptr)
noexcept;
126 bmp581::DriverResult<bool>
DataReady() noexcept;
129 bmp581::DriverResult<bmp581::Sample>
ReadSample() noexcept;
132 bmp581::DriverResult<
void>
Configure(const bmp581::Config& cfg) noexcept;
135 bmp581::DriverResult<
void>
Reset() noexcept;
139 std::uint32_t samples{0};
140 std::uint32_t bus_errors{0};
142 [[nodiscard]] Counters
GetCounters() const noexcept;
Handler wrapping one BMP581 on a BaseI2c device.
Definition Bmp581Handler.h:85
bool EnsureInitializedLocked() noexcept
Definition Bmp581Handler.cpp:85
bmp581::DriverResult< bool > DataReady() noexcept
Whether a fresh sample is waiting (INT_STATUS.drdy).
Definition Bmp581Handler.cpp:119
bool EnsureInitialized() noexcept
Probe (chip id + NVM ready), optional soft reset, apply the configured preset. Idempotent.
Definition Bmp581Handler.cpp:77
RtosMutex * bus_mutex_
Definition Bmp581Handler.h:159
bmp581::Driver< HalI2cBmp581Comm > DriverType
Definition Bmp581Handler.h:87
Bmp581Handler(const Bmp581Handler &)=delete
std::atomic< std::uint32_t > samples_
Definition Bmp581Handler.h:155
std::uint8_t ChipId() const noexcept
Chip id read at probe (0 until present).
Definition Bmp581Handler.h:116
RtosMutex private_mutex_
Definition Bmp581Handler.h:158
Bmp581Handler & operator=(Bmp581Handler &&)=delete
bmp581::EffectiveOsr effective_
Definition Bmp581Handler.h:152
Bmp581HandlerConfig config_
Definition Bmp581Handler.h:147
bmp581::DriverResult< void > Reset() noexcept
Soft reset; the handler re-applies the current configuration.
Definition Bmp581Handler.cpp:157
bmp581::DriverResult< void > Configure(const bmp581::Config &cfg) noexcept
Re-apply a new configuration (standby hop handled by the driver).
Definition Bmp581Handler.cpp:141
std::unique_ptr< DriverType > driver_
Definition Bmp581Handler.h:149
Bmp581Handler & operator=(const Bmp581Handler &)=delete
std::atomic< bool > initialized_
Definition Bmp581Handler.h:153
HalI2cBmp581Comm comm_
Definition Bmp581Handler.h:148
std::atomic< std::uint32_t > bus_errors_
Definition Bmp581Handler.h:156
Bmp581Handler(Bmp581Handler &&)=delete
bool IsPresent() const noexcept
True once EnsureInitialized() has succeeded.
Definition Bmp581Handler.h:111
Counters GetCounters() const noexcept
Definition Bmp581Handler.cpp:169
std::uint8_t chip_id_
Definition Bmp581Handler.h:151
const bmp581::EffectiveOsr & EffectiveOsr() const noexcept
Effective OSR / ODR validity captured after configuration.
Definition Bmp581Handler.h:119
bmp581::DriverResult< bmp581::Sample > ReadSample() noexcept
Read pressure [Pa] and temperature [°C].
Definition Bmp581Handler.cpp:127
CRTP register transport bridging bmp581::BusInterface to a BaseI2c device.
Definition Bmp581Handler.h:41
std::uint8_t tx_scratch_[8]
Definition Bmp581Handler.h:59
static constexpr bmp581::Interface kInterface
Definition Bmp581Handler.h:45
void DelayUs(std::uint32_t us) noexcept
Definition Bmp581Handler.cpp:52
bool EnsureInitialized() noexcept
Definition Bmp581Handler.cpp:62
bool WriteRegs(std::uint8_t reg, const std::uint8_t *data, std::size_t len) noexcept
Definition Bmp581Handler.cpp:24
BaseI2c & i2c_device_
Definition Bmp581Handler.h:58
std::uint8_t rx_scratch_[8]
Definition Bmp581Handler.h:60
bool ReadRegs(std::uint8_t reg, std::uint8_t *out, std::size_t len) noexcept
Definition Bmp581Handler.cpp:37
std::uint8_t reg_scratch_
Definition Bmp581Handler.h:61
Diagnostics counters since construction.
Definition Bmp581Handler.h:138
Construction-time configuration for one BMP581.
Definition Bmp581Handler.h:69
std::uint8_t device_index
Logical index for diagnostics.
Definition Bmp581Handler.h:75
bmp581::Config config
Sensor configuration applied by EnsureInitialized().
Definition Bmp581Handler.h:71
bool soft_reset_on_init
Soft reset before configuring (recommended; clears stale IIR / mode).
Definition Bmp581Handler.h:73