38#define SDS011_DEVID_WILDCARD (0xFFFF)
99 uint8_t rx_mem[SDS011_FRAME_RECV_LEN];
Low-level GPIO peripheral driver interface definitions.
Low-level UART peripheral driver interface definition.
uint_fast8_t uart_t
Define default UART type identifier.
sds011_working_mode
Work/sleep mode of the SDS011 sensor.
enum sds011_reporting_mode sds011_reporting_mode_t
Report mode of the SDS011 sensor.
void sds011_power_on(const sds011_t *dev)
Enable power supply of SDS011 laser dust sensor.
int sds011_get_fw_version(sds011_t *dev, uint8_t *year, uint8_t *mon, uint8_t *day)
Get firmware version of the sensor.
sds011_reporting_mode
Report mode of the SDS011 sensor.
int sds011_get_working_period(sds011_t *dev, uint8_t *minutes)
Get current working period of the sensor.
int sds011_get_reporting_mode(sds011_t *dev, sds011_reporting_mode_t *mode)
Get the current reporting mode of the sensor.
int sds011_init(sds011_t *dev, const sds011_params_t *params)
Initialize SDS011 Laser Dust Sensor.
int sds011_read(sds011_t *dev, sds011_data_t *data)
Read measurement values from SDS011 laser dust sensor.
int sds011_set_working_period(sds011_t *dev, uint8_t minutes)
Set working period of the sensor.
int sds011_set_working_mode(sds011_t *dev, sds011_working_mode_t mode)
Set working mode of the sensor.
int sds011_set_reporting_mode(sds011_t *dev, sds011_reporting_mode_t mode)
Set the reporting mode of the sensor.
void(* sds011_callback_t)(sds011_data_t *data, void *ctx)
callback for measurements actively reported by the SDS011 sensor
int sds011_set_dev_id(sds011_t *dev, uint16_t sens_dev_id)
Set device ID of the sensor.
enum sds011_working_mode sds011_working_mode_t
Work/sleep mode of the SDS011 sensor.
void sds011_power_off(const sds011_t *dev)
Disable power supply of SDS011 laser dust sensor.
int sds011_register_callback(sds011_t *dev, sds011_callback_t cb, void *ctx)
Register measurement callback.
int sds011_get_working_mode(sds011_t *dev, sds011_working_mode_t *mode)
Get current working mode of the sensor.
@ SDS011_WMODE_SLEEP
laser & fan are disabled
@ SDS011_WMODE_WORK
laser & fan are enabled
@ SDS011_RMODE_ACTIVE
continuously reporting values
@ SDS011_RMODE_QUERY
sensor needs to be queried
@ SDS011_INVALID_RESPONSE
invalid response
@ SDS011_INVALID_CHKSUM
invalid checksum
@ SDS011_ERROR
internal error
Mutex for thread synchronization.
Data type for storing SDS011 sensor readings.
uint16_t pm_2_5
Particulate Matter 2.5 concentration [0.1µg/m^3].
uint16_t pm_10
Particulate Matter 10 concentration [0.1µg/m^3].
Configuration parameters for SDS011 Laser Dust Sensor.
uart_t uart
UART device the sensor is connected to.
gpio_t pwr_pin
GPIO pin for disabling supply voltage for the sensor.
uint16_t dev_id
Unique sensor device ID.
bool pwr_ah
Logic level of the power pin (true for active high)
Device descriptor definition for SDS011 Laser Dust Sensor.
mutex_t cb_lock
mutex to synchronize callbacks
mutex_t dev_lock
mutex to synchronize device access
sds011_params_t params
parameters for SDS011 device
uint16_t checksum
iteratively calculated checksum
void * cbctx
user context for the callback
uint8_t pos
receive buffer position counter
sds011_callback_t cb
callback deliver values async