21#if __has_include("bmv080.h")
23#include "bmv080_defs.h"
26 "BOSCH BMV080 SDK Must be installed. See instructions at www.github.com/sparkfun/SparkFun_BMV080_Arduino_Library - ERROR: bmv080.h not found"
31#include <sfTk/sfTkIBus.h>
32#include <sfTk/sfToolkit.h>
35#define SF_BMV080_DEFAULT_ADDRESS 0x57
36#define SF_BMV080_DEFAULT_IRQ_PIN 14
38#define SF_BMV080_MODE_CONTINUOUS 0
39#define SF_BMV080_MODE_DUTY_CYCLE 1
65 sfTkError_t
begin(sfTkIBus *theBus =
nullptr);
105 bool driverVersion(uint16_t &major, uint16_t &minor, uint16_t &patch);
306 bool readSensor(bmv080_output_t *bmv080_output =
nullptr);
559 static int8_t device_read_16bit_CB(bmv080_sercom_handle_t, uint16_t, uint16_t *, uint16_t);
580 static int8_t device_write_16bit_CB(bmv080_sercom_handle_t, uint16_t,
const uint16_t *, uint16_t);
599 static int8_t device_delay_CB(uint32_t);
616 static void set_sensor_value(bmv080_output_t,
void *);
634 bool sensorServiceRoutine(
void);
637 bmv080_handle_t _bmv080_handle_class = NULL;
640 bool _dataAvailable =
false;
643 bmv080_output_t _sensorValue;
Definition: sfDevBMV080.h:42
void setSensorValue(bmv080_output_t bmv080_output)
Internal method to set sensor values from callback.
Definition: sfDevBMV080.cpp:168
bool setMode(uint8_t mode)
Sets the operational mode of the BMV080 sensor.
Definition: sfDevBMV080.cpp:195
float PM10(void)
Gets the PM10 (particulate matter ≤10 µm) concentration.
Definition: sfDevBMV080.cpp:144
bool close(void)
Closes communication with the BMV080 sensor.
Definition: sfDevBMV080.cpp:264
bool isObstructed()
Checks if the BMV080 sensor is obstructed.
Definition: sfDevBMV080.cpp:162
static const size_t kBMV800IDLength
Length of the BMV080 sensor ID string buffer.
Definition: sfDevBMV080.h:160
bool ID(char idOut[kBMV800IDLength])
Gets the unique identifier of the BMV080 sensor.
Definition: sfDevBMV080.cpp:297
bool init(void)
Initializes the BMV080 sensor.
Definition: sfDevBMV080.cpp:232
bool driverVersion(uint16_t &major, uint16_t &minor, uint16_t &patch)
Gets the version information of the BMV080 sensor driver.
Definition: sfDevBMV080.cpp:284
bool setMeasurementAlgorithm(uint8_t measurement_algorithm)
Sets the measurement algorithm for particle analysis.
Definition: sfDevBMV080.cpp:431
bool setDistributionId(uint32_t distribution_id)
Sets the distribution ID for particle size classification.
Definition: sfDevBMV080.cpp:374
bool open(void)
Opens and initializes communication with the BMV080 sensor.
Definition: sfDevBMV080.cpp:248
sfTkIBus * _theBus
Definition: sfDevBMV080.h:647
bool setDoObstructionDetection(bool do_obstruction_detection)
Enables or disables the sensor's obstruction detection feature.
Definition: sfDevBMV080.cpp:393
bool setVolumetricMassDensity(float volumetric_mass_density)
Sets the volumetric mass density for particle concentration calculations.
Definition: sfDevBMV080.cpp:335
float PM1(void)
Gets the PM1 (particulate matter ≤1.0 µm) concentration.
Definition: sfDevBMV080.cpp:156
uint16_t dutyCyclingPeriod()
Gets the current duty cycling period setting.
Definition: sfDevBMV080.cpp:306
bool setDoVibrationFiltering(bool do_vibration_filtering)
Enables or disables vibration filtering.
Definition: sfDevBMV080.cpp:412
float PM25(void)
Gets the PM2.5 (particulate matter ≤2.5 µm) concentration.
Definition: sfDevBMV080.cpp:150
uint8_t measurementAlgorithm()
Gets the current measurement algorithm setting.
Definition: sfDevBMV080.cpp:421
bool doVibrationFiltering()
Gets the vibration filtering setting.
Definition: sfDevBMV080.cpp:402
sfDevBMV080()
Default constructor.
Definition: sfDevBMV080.h:45
sfTkError_t begin(sfTkIBus *theBus=nullptr)
Begins communication with the BMV080 sensor.
Definition: sfDevBMV080.cpp:131
float integrationTime()
Gets the sensor's integration time setting.
Definition: sfDevBMV080.cpp:344
bool setDutyCyclingPeriod(uint16_t duty_cycling_period)
Sets the time interval between measurements in duty cycle mode.
Definition: sfDevBMV080.cpp:316
float volumetricMassDensity()
Gets the volumetric mass density setting.
Definition: sfDevBMV080.cpp:325
bool doObstructionDetection()
Gets the obstruction detection setting.
Definition: sfDevBMV080.cpp:383
uint32_t distributionId()
Gets the current distribution ID setting.
Definition: sfDevBMV080.cpp:363
bool setIntegrationTime(float integration_time)
Sets the sensor's integration time for measurements.
Definition: sfDevBMV080.cpp:354
bool readSensor(bmv080_output_t *bmv080_output=nullptr)
Reads the latest sensor values from the BMV080.
Definition: sfDevBMV080.cpp:182
bool reset(void)
Resets the BMV080 sensor to its default state.
Definition: sfDevBMV080.cpp:277