10#ifndef M5_UNIT_ENV_UNIT_BME688_HPP
11#define M5_UNIT_ENV_UNIT_BME688_HPP
13#include <M5UnitComponent.hpp>
14#include <m5_utility/stl/extension.hpp>
17#include <bme68xLibrary.h>
19#include <bme68x/bme68x.h>
26#if __has_include(<bsec2.h>) && \
27 (defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3))
28#define UNIT_BME688_USING_BSEC2
30#elif __has_include(<inc/bsec_interface.h>)
31#define UNIT_BME688_USING_BSEC2
34#if defined(UNIT_BME688_USING_BSEC2)
38#include <inc/bsec_datatypes.h>
42#ifndef BSEC_CHECK_INPUT
43#define BSEC_CHECK_INPUT(x, shift) (x & (1 << (shift - 1)))
45typedef bsec_output_t bsecData;
47 bsecData output[BSEC_NUMBER_OUTPUTS];
55#include <initializer_list>
101 uint16_t temp_prof[10]{};
102 uint16_t dur_prof[10]{};
105 heatr_temp_prof = temp_prof;
106 heatr_dur_prof = dur_prof;
191 inline void step(
const uint8_t s)
198 value = (
value & ~(0x03 << 6)) | (m5::stl::to_underlying(f) << 6);
204 static uint8_t
from(
const uint16_t duration)
207 uint16_t d{duration};
212 return (f <= 0x03) ? ((uint8_t)d | (f << 6)) : 0xFF;
216 static uint16_t
to(
const uint8_t v)
218 constexpr uint16_t tbl[] = {1, 4, 16, 64};
219 return (v & 0x3F) * tbl[(v >> 6) & 0x03];
225#if defined(UNIT_BME688_USING_BSEC2)
232enum class SampleRate : uint8_t {
236 UltraLowPowerMeasurementOnDemand,
244void is_bsec_virtual_sensor_t()
246 static_assert(std::is_same<T, bsec_virtual_sensor_t>::value,
"Argument must be of type bsec_virtual_sensor_t");
256inline uint32_t virtual_sensor_array_to_bits(
const bsec_virtual_sensor_t* ss,
const size_t len)
259 for (
size_t i = 0; i < len; ++i) {
260 ret |= ((uint32_t)1U) << ss[i];
270template <
typename... Args>
271uint32_t subscribe_to_bits(Args... args)
276 int discard[] = {(is_bsec_virtual_sensor_t<Args>(), 0)...};
279 bsec_virtual_sensor_t tmp[] = {args...};
280 constexpr size_t n =
sizeof...(args);
281 return virtual_sensor_array_to_bits(tmp, n);
293#if defined(UNIT_BME688_USING_BSEC2)
294 bsecOutputs raw_outputs{};
297 float get(
const bsec_virtual_sensor_t vs)
const;
299 inline float iaq()
const
301 return get(BSEC_OUTPUT_IAQ);
304 inline float static_iaq()
const
306 return get(BSEC_OUTPUT_STATIC_IAQ);
309 inline float co2()
const
311 return get(BSEC_OUTPUT_CO2_EQUIVALENT);
314 inline float voc()
const
316 return get(BSEC_OUTPUT_BREATH_VOC_EQUIVALENT);
319 inline float temperature()
const
321 return get(BSEC_OUTPUT_RAW_TEMPERATURE);
324 inline float pressure()
const
326 return get(BSEC_OUTPUT_RAW_PRESSURE);
329 inline float humidity()
const
331 return get(BSEC_OUTPUT_RAW_HUMIDITY);
334 inline float gas()
const
336 return get(BSEC_OUTPUT_RAW_GAS);
339 inline bool gas_stabilization()
const
341 return get(BSEC_OUTPUT_STABILIZATION_STATUS) == 1.0f;
344 inline bool gas_run_in_status()
const
346 return get(BSEC_OUTPUT_RUN_IN_STATUS) == 1.0f;
349 inline float heat_compensated_temperature()
const
351 return get(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE);
354 inline float heat_compensated_humidity()
const
356 return get(BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY);
359 inline float gas_percentage()
const
361 return get(BSEC_OUTPUT_GAS_PERCENTAGE);
364 inline float gas_estimate_1()
const
366 return get(BSEC_OUTPUT_GAS_ESTIMATE_1);
369 inline float gas_estimate_2()
const
371 return get(BSEC_OUTPUT_GAS_ESTIMATE_2);
374 inline float gas_estimate_3()
const
376 return get(BSEC_OUTPUT_GAS_ESTIMATE_3);
379 inline float gas_estimate_4()
const
381 return get(BSEC_OUTPUT_GAS_ESTIMATE_4);
384 inline uint32_t gas_index()
const
386 return get(BSEC_OUTPUT_RAW_GAS_INDEX);
389 inline float regression_estimate_1()
const
391 return get(BSEC_OUTPUT_REGRESSION_ESTIMATE_1);
394 inline float regression_estimate_2()
const
396 return get(BSEC_OUTPUT_REGRESSION_ESTIMATE_2);
399 inline float regression_estimate_3()
const
401 return get(BSEC_OUTPUT_REGRESSION_ESTIMATE_3);
404 inline float regression_estimate_4()
const
406 return get(BSEC_OUTPUT_REGRESSION_ESTIMATE_4);
412 return raw.temperature;
427 return raw.gas_resistance;
439class UnitBME688 :
public Component,
public PeriodicMeasurementAdapter<UnitBME688, bme688::Data> {
440 M5_UNIT_COMPONENT_HPP_BUILDER(
UnitBME688, 0x77);
452#if defined(UNIT_BME688_USING_BSEC2) || defined(DOXYGEN_PROCESS)
456 uint32_t
subscribe_bits{1U << BSEC_OUTPUT_IAQ | 1U << BSEC_OUTPUT_RAW_TEMPERATURE |
457 1U << BSEC_OUTPUT_RAW_PRESSURE | 1U << BSEC_OUTPUT_RAW_HUMIDITY |
458 1U << BSEC_OUTPUT_RAW_GAS | 1U << BSEC_OUTPUT_STABILIZATION_STATUS |
459 1U << BSEC_OUTPUT_RUN_IN_STATUS};
465 bme688::bsec2::SampleRate
sample_rate{bme688::bsec2::SampleRate::LowPower};
468#if !defined(UNIT_BME688_USING_BSEC2) || defined(DOXYGEN_PROCESS)
507 explicit UnitBME688(
const uint8_t addr = DEFAULT_ADDRESS);
512 virtual bool begin()
override;
513 virtual void update(
const bool force =
false)
override;
540 return _dev.amb_temp;
546#if defined(UNIT_BME688_USING_BSEC2)
551 inline float iaq()
const
553 return !empty() ? oldest().iaq() : std::numeric_limits<float>::quiet_NaN();
558 return !empty() ? oldest().temperature() : std::numeric_limits<float>::quiet_NaN();
563 return !empty() ? oldest().pressure() : std::numeric_limits<float>::quiet_NaN();
568 return !empty() ? oldest().humidity() : std::numeric_limits<float>::quiet_NaN();
571 inline float gas()
const
573 return !empty() ? oldest().gas() : std::numeric_limits<float>::quiet_NaN();
579 return !empty() ? oldest().raw_temperature() : std::numeric_limits<float>::quiet_NaN();
584 return !empty() ? oldest().raw_pressure() : std::numeric_limits<float>::quiet_NaN();
589 return !empty() ? oldest().raw_humidity() : std::numeric_limits<float>::quiet_NaN();
594 return !empty() ? oldest().raw_gas() : std::numeric_limits<float>::quiet_NaN();
605 inline uint8_t numberOfRawData()
const
616 inline const bme688::bme68xData* data(
const uint8_t idx)
618 return (idx < _num_of_data) ? &_raw_data[idx] :
nullptr;
625 _dev.amb_temp = temp;
782 return PeriodicMeasurementAdapter<UnitBME688, bme688::Data>::startPeriodicMeasurement(m);
784#if defined(UNIT_BME688_USING_BSEC2) || defined(DOXYGEN_PROCESS)
793 const bme688::bsec2::SampleRate sr = bme688::bsec2::SampleRate::LowPower)
795 return PeriodicMeasurementAdapter<UnitBME688, bme688::Data>::startPeriodicMeasurement(subscribe_bits, sr);
806 const bme688::bsec2::SampleRate sr = bme688::bsec2::SampleRate::LowPower)
818 return PeriodicMeasurementAdapter<UnitBME688, bme688::Data>::stopPeriodicMeasurement();
841#if defined(UNIT_BME688_USING_BSEC2) || defined(DOXYGEN_PROCESS)
851 return _temperatureOffset;
859 _temperatureOffset = offset;
868 return _bsec2_version;
878 bool bsec2SetConfig(
const uint8_t* cfg,
const size_t sz = BSEC_MAX_PROPERTY_BLOB_SIZE);
920 const bme688::bsec2::SampleRate sr)
931 return _bsec2_subscription & (1U << id);
940 return _bsec2_subscription;
964 static int8_t read_function(uint8_t reg_addr, uint8_t* reg_data, uint32_t length,
void* intf_ptr);
965 static int8_t write_function(uint8_t reg_addr,
const uint8_t* reg_data, uint32_t length,
void* intf_ptr);
968 bool stop_periodic_measurement();
969#if defined(UNIT_BME688_USING_BSEC2)
970 bool start_periodic_measurement(
const uint32_t subscribe_bits,
const bme688::bsec2::SampleRate sr);
973 bool write_mode_forced();
974 bool write_mode_parallel();
977 void update_bme688(
const bool force);
978 bool read_measurement();
979#if defined(UNIT_BME688_USING_BSEC2)
980 bool process_data(bsecOutputs& outputs,
const int64_t ns,
const bme688::bme68xData& data);
981 void update_bsec2(
const bool force);
984 inline virtual bool in_periodic()
const override
986 return _periodic || (_bsec2_subscription != 0);
995 bme688::bme68xData _raw_data[3]{};
996 uint8_t _num_of_data{};
997 bme688::bme68xDev _dev{};
998 bme688::bme68xConf _tphConf{};
999 bme688::bme68xHeatrConf _heaterConf{};
1002 uint32_t _bsec2_subscription{};
1004#if defined(UNIT_BME688_USING_BSEC2)
1005 bsec_version_t _bsec2_version{};
1006 std::unique_ptr<uint8_t> _bsec2_work{};
1007 bsec_bme_settings_t _bsec2_settings{};
1009 bme688::Mode _bsec2_mode{};
1010 bme688::bsec2::SampleRate _bsec2_sr{};
1012 bsecOutputs _outputs{};
1013 float _temperatureOffset{};
1016 std::unique_ptr<m5::container::CircularBuffer<bme688::Data>> _data{};
1019 types::elapsed_time_t _can_measure_time{};
1027constexpr uint8_t CHIP_ID{0xD0};
1028constexpr uint8_t RESET{0xE0};
1029constexpr uint8_t VARIANT_ID{0xF0};
1031constexpr uint8_t IDAC_HEATER_0{0x50};
1032constexpr uint8_t RES_HEAT_0{0x5A};
1033constexpr uint8_t GAS_WAIT_0{0x64};
1034constexpr uint8_t GAS_WAIT_SHARED{0x6E};
1036constexpr uint8_t CTRL_GAS_0{0x70};
1037constexpr uint8_t CTRL_GAS_1{0x71};
1038constexpr uint8_t CTRL_HUMIDITY{0x72};
1039constexpr uint8_t CTRL_MEASUREMENT{0x74};
1040constexpr uint8_t CONFIG{0x75};
1042constexpr uint8_t MEASUREMENT_STATUS_0{0x1D};
1043constexpr uint8_t MEASUREMENT_STATUS_1{0x2E};
1044constexpr uint8_t MEASUREMENT_STATUS_2{0x3F};
1046constexpr uint8_t MEASUREMENT_GROUP_INDEX_0{0x1F};
1047constexpr uint8_t MEASUREMENT_GROUP_INDEX_1{0x30};
1048constexpr uint8_t MEASUREMENT_GROUP_INDEX_2{0x41};
1050constexpr uint8_t UNIQUE_ID{0x83};
1053constexpr uint8_t CALIBRATION_GROUP_0{0x8A};
1054constexpr uint8_t CALIBRATION_GROUP_1{0xE1};
1055constexpr uint8_t CALIBRATION_GROUP_2{0x00};
1056constexpr uint8_t CALIBRATION_TEMPERATURE_1_LOW{0xE9};
1057constexpr uint8_t CALIBRATION_TEMPERATURE_2_LOW{0x8A};
1058constexpr uint8_t CALIBRATION_TEMPERATURE_3{0x8C};
1059constexpr uint8_t CALIBRATION_PRESSURE_1_LOW{0x8E};
1060constexpr uint8_t CALIBRATION_PRESSURE_2_LOW{0x90};
1061constexpr uint8_t CALIBRATION_PRESSURE_3{0x92};
1062constexpr uint8_t CALIBRATION_PRESSURE_4_LOW{0x94};
1063constexpr uint8_t CALIBRATION_PRESSURE_5_LOW{0x96};
1064constexpr uint8_t CALIBRATION_PRESSURE_6{0x99};
1065constexpr uint8_t CALIBRATION_PRESSURE_7{0x98};
1066constexpr uint8_t CALIBRATION_PRESSURE_8_LOW{0x9C};
1067constexpr uint8_t CALIBRATION_PRESSURE_9_LOW{0x9E};
1068constexpr uint8_t CALIBRATION_PRESSURE_10{0xA0};
1069constexpr uint8_t CALIBRATION_HUMIDITY_12{0xE2};
1070constexpr uint8_t CALIBRATION_HUMIDITY_1_HIGH{0xE3};
1071constexpr uint8_t CALIBRATION_HUMIDITY_2_HIGH{0xE1};
1072constexpr uint8_t CALIBRATION_HUMIDITY_3{0xE4};
1073constexpr uint8_t CALIBRATION_HUMIDITY_4{0xE5};
1074constexpr uint8_t CALIBRATION_HUMIDITY_5{0xE6};
1075constexpr uint8_t CALIBRATION_HUMIDITY_6{0xE7};
1076constexpr uint8_t CALIBRATION_HUMIDITY_7{0xE8};
1077constexpr uint8_t CALIBRATION_GAS_1{0xED};
1078constexpr uint8_t CALIBRATION_GAS_2_LOW{0xEB};
1079constexpr uint8_t CALIBRATION_GAS_3{0xEE};
1080constexpr uint8_t CALIBRATION_RES_HEAT_RANGE{0x02};
1081constexpr uint8_t CALIBRATION_RES_HEAT_VAL{0x00};
BME688 unit.
Definition unit_BME688.hpp:439
void config(const config_t &cfg)
Set the configuration.
Definition unit_BME688.hpp:501
bool bsec2Unsubscribe(const bsec_virtual_sensor_t id)
Unsubscribe virtual sensor.
bool writeIIRFilter(const bme688::Filter f)
Write IIRFilter.
Definition unit_BME688.cpp:669
bool bsec2UpdateSubscription(const bsec_virtual_sensor_t *ss, const size_t len, const bme688::bsec2::SampleRate sr)
Subscribe to library virtual sensors outputs.
Definition unit_BME688.hpp:919
bool readHeaterSetting(bme688::bme68xHeatrConf &hs)
Read heater setting.
Definition unit_BME688.cpp:682
bool bsec2SetState(const uint8_t *state)
Restore the internal state.
bool readOversamplingPressure(bme688::Oversampling &os)
Read pressure oversampling.
Definition unit_BME688.cpp:580
const bsec_version_t & bsec2Version() const
Gets the BSEC2 library version.
Definition unit_BME688.hpp:866
void setAambientTemperature(const int8_t temp)
Sets the ambient temperature.
Definition unit_BME688.hpp:629
bool readIIRFilter(bme688::Filter &f)
Read IIRFilter.
Definition unit_BME688.cpp:602
bool writeCalibration(const bme688::bme68xCalibration &c)
write calibration
Definition unit_BME688.cpp:503
bool readUniqueID(uint32_t &id)
Read unique ID.
Definition unit_BME688.cpp:430
float bsec2GetTemperatureOffset() const
Gets the temperature offset(Celsius)
Definition unit_BME688.hpp:849
bool measureSingleShot(bme688::bme68xData &data)
Take a single measurement.
Definition unit_BME688.hpp:835
bool bsec2GetState(uint8_t *state, uint32_t &actualSize)
Retrieve the current internal library state.
void setAmbientTemperature(const int8_t temp)
Sets the ambient temperature.
Definition unit_BME688.hpp:623
float gas() const
Oldest measured gas (Ohm)
Definition unit_BME688.hpp:592
bool softReset()
Software reset.
Definition unit_BME688.cpp:444
bool startPeriodicMeasurement(const bsec_virtual_sensor_t *ss, const size_t len, const bme688::bsec2::SampleRate sr=bme688::bsec2::SampleRate::LowPower)
Start periodic measurement using BSEC2.
Definition unit_BME688.hpp:805
bool bsec2IsSubscribed(const bsec_virtual_sensor_t id)
is virtual sensor Subscribed?
Definition unit_BME688.hpp:929
const bme688::bme68xConf & tphSetting() const
Gets the TPH setting.
Definition unit_BME688.hpp:528
bool readMode(bme688::Mode &m)
Read operation mode.
Definition unit_BME688.cpp:705
bool bsec2UpdateSubscription(const uint32_t sensorBits, const bme688::bsec2::SampleRate sr)
Subscribe to library virtual sensors outputs.
bool measureSingleshot(bme688::bme68xData &data)
Take a single measurement.
Definition unit_BME688.cpp:716
bool selfTest()
Self-test.
Definition unit_BME688.cpp:451
bme688::Mode mode() const
Current mode.
Definition unit_BME688.hpp:518
bool readOversamplingHumidity(bme688::Oversampling &os)
Read humidity oversampling.
Definition unit_BME688.cpp:591
bool readOversamplingTemperature(bme688::Oversampling &os)
Read temperature oversampling.
Definition unit_BME688.cpp:569
bool writeOversamplingTemperature(const bme688::Oversampling os)
Write temperature oversampling.
Definition unit_BME688.cpp:630
bool writeTPHSetting(const bme688::bme68xConf &s)
Write TPH setting.
Definition unit_BME688.cpp:559
bool bsec2GetConfig(uint8_t *cfg, uint32_t &actualSize)
Retrieve the current library configuration.
bool writeMode(const bme688::Mode m)
Write operation mode.
Definition unit_BME688.cpp:696
void bsec2SetTemperatureOffset(const float offset)
Set the temperature offset(Celsius)
Definition unit_BME688.hpp:857
bool bsec2SetConfig(const uint8_t *cfg, const size_t sz=BSEC_MAX_PROPERTY_BLOB_SIZE)
Update algorithm configuration parameters Update bsec2 configuration settings.
bool writeOversamplingHumidity(const bme688::Oversampling os)
Write humidity oversampling.
Definition unit_BME688.cpp:656
bool writeOversamplingPressure(const bme688::Oversampling os)
Write pressure oversampling.
Definition unit_BME688.cpp:643
bool bsec2Subscribe(const bsec_virtual_sensor_t id)
Subscribe virtual sensor.
bool startPeriodicMeasurement(const bme688::Mode m)
Start periodic measurement without BSEC2.
Definition unit_BME688.hpp:780
bool writeHeaterSetting(const bme688::Mode mode, const bme688::bme68xHeatrConf &hs)
Write heater setting.
Definition unit_BME688.cpp:687
bool startPeriodicMeasurement(const uint32_t subscribe_bits, const bme688::bsec2::SampleRate sr=bme688::bsec2::SampleRate::LowPower)
Start periodic measurement using BSEC2.
Definition unit_BME688.hpp:792
const bme688::bme68xCalibration & calibration() const
Gets the Calibration.
Definition unit_BME688.hpp:523
bool readCalibration(bme688::bme68xCalibration &c)
Read calibration.
Definition unit_BME688.cpp:456
bool bsec2UnsubscribeAll()
Unsubscribe current all sensors.
uint32_t bsec2Subscription() const
Gets the subscription bits.
Definition unit_BME688.hpp:938
float pressure() const
Oldest measured pressure (Pa)
Definition unit_BME688.hpp:582
const bme688::bme68xHeatrConf & heaterSetting() const
Gets the heater setting.
Definition unit_BME688.hpp:533
bool stopPeriodicMeasurement()
Stop periodic measurement.
Definition unit_BME688.hpp:816
int8_t ambientTemperature() const
Gets the ambient temperature.
Definition unit_BME688.hpp:538
uint32_t calculateMeasurementInterval(const bme688::Mode mode, const bme688::bme68xConf &s)
Calculation of measurement intervals without heater.
Definition unit_BME688.cpp:711
bool writeOversampling(const bme688::Oversampling t, const bme688::Oversampling p, const bme688::Oversampling h)
Write oversamplings.
Definition unit_BME688.cpp:613
config_t config() const
Gets the configuration.
Definition unit_BME688.hpp:496
float humidity() const
Oldest measured humidity (%)
Definition unit_BME688.hpp:587
float temperature() const
Oldest measured temperature (Celsius)
Definition unit_BME688.hpp:577
bool readTPHSetting(bme688::bme68xConf &s)
Read TPH setting.
Definition unit_BME688.cpp:554
Top level namespace of M5Stack.
Settings for begin.
Definition unit_BME688.hpp:447
uint32_t subscribe_bits
Subscribe BSEC2 sensors bits if start on begin.
Definition unit_BME688.hpp:456
bme688::ODR odr
Standby time between sequential mode measurement profiles if start on begin.
Definition unit_BME688.hpp:482
bme688::Oversampling oversampling_pressure
Pressure oversampling if start on begin.
Definition unit_BME688.hpp:476
bme688::Oversampling oversampling_temperature
Temperature oversampling if start on begin.
Definition unit_BME688.hpp:474
uint16_t heater_temperature
The heater temperature for forced mode degree Celsius if start on begin.
Definition unit_BME688.hpp:486
bme688::Mode mode
Measurement mode if start on begin.
Definition unit_BME688.hpp:472
bool start_periodic
Start periodic measurement on begin?
Definition unit_BME688.hpp:449
int8_t ambient_temperature
ambient temperature
Definition unit_BME688.hpp:451
bme688::Filter filter
Filter coefficient if start on begin.
Definition unit_BME688.hpp:480
bool heater_enable
Enable gas measurement if start on begin.
Definition unit_BME688.hpp:484
bme688::bsec2::SampleRate sample_rate
Sampling rate for BSEC2 if start on begin.
Definition unit_BME688.hpp:465
bme688::Oversampling oversampling_humidity
Humidity oversampling if start on begin.
Definition unit_BME688.hpp:478
uint16_t heater_duration
The heating duration for forced mode in milliseconds if start on begin.
Definition unit_BME688.hpp:488
Measurement data group.
Definition unit_BME688.hpp:291
float raw_temperature() const
Gets the raw temperature from bme68xData.
Definition unit_BME688.hpp:410
float raw_gas() const
Gets the raw gas resistance from bme68xData.
Definition unit_BME688.hpp:425
float raw_humidity() const
Gets the raw humidity from bme68xData.
Definition unit_BME688.hpp:420
float raw_pressure() const
Gets the raw pressure from bme68xData.
Definition unit_BME688.hpp:415
GasSensor heater-on time.
Definition unit_BME688.hpp:165
Factor factor() const
Gets the multiplication factor.
Definition unit_BME688.hpp:182
void factor(const Factor f)
Sets the multiplication factor.
Definition unit_BME688.hpp:196
uint8_t value
Use the value as it is in parallel mode.
Definition unit_BME688.hpp:222
static uint16_t to(const uint8_t v)
Conversion from register value to duration for Force/Sequential mode.
Definition unit_BME688.hpp:216
Factor
Multiplier in Forced mode.
Definition unit_BME688.hpp:173
uint8_t step() const
Gets the step value (0-63)
Definition unit_BME688.hpp:177
static uint8_t from(const uint16_t duration)
Conversion from duration to register value for Force/Sequential mode.
Definition unit_BME688.hpp:204
void step(const uint8_t s)
Sets the step value (0-63)
Definition unit_BME688.hpp:191
Setting for gas heater.
Definition unit_BME688.hpp:100
struct bme68x_data bme68xData
Raw data.
Definition unit_BME688.hpp:84
struct bme68x_conf bme68xConf
Setting for temperature, pressure, humidity...
Definition unit_BME688.hpp:94
Mode
Operation mode same as BME68X_xxx_MODE.
Definition unit_BME688.hpp:70
@ Sleep
No measurements are performed.
@ Parallel
Multiple TPHG cycles are performed.
@ Forced
Single TPHG cycle is performed.
struct bme68x_calib_data bme68xCalibration
Calibration parameters.
Definition unit_BME688.hpp:113
Filter
IIR Filter setting.
Definition unit_BME688.hpp:133
@ Coeff_15
co-efficient 15
@ Coeff_31
co-efficient 31
@ Coeff_63
co-efficient 63
@ Coeff_127
co-efficient 127
ODR
bme68xConf::odr settings (standbytime Unit:ms)
Definition unit_BME688.hpp:148
Oversampling
Sampling setting.
Definition unit_BME688.hpp:120
struct bme68x_dev bme68xDev
bme68x device
Definition unit_BME688.hpp:89