/ firmware / src / sensors / carbon_dioxide.h
carbon_dioxide.h
 1  #pragma once
 2  #include <stdbool.h>
 3  #include <stdint.h>
 4  
 5  struct CO2SensorData {
 6    float co2_ppm;
 7    float temperature_celsius;
 8    float relative_humidity_percent;
 9    const char *model;
10    bool ok;
11  };
12  
13  struct Co2Config {
14    const char *model;
15    bool measuring;
16    uint16_t measurement_interval_seconds;
17    bool auto_calibration_enabled;
18    float temperature_offset_celsius;
19    uint16_t altitude_meters;
20  };
21  
22  namespace sensors::carbon_dioxide {
23  
24  bool initialize();
25  bool access(CO2SensorData *sensor_data);
26  bool accessConfig(Co2Config *config);
27  bool isAvailable();
28  bool enable();
29  bool disable();
30  bool configureInterval(uint16_t seconds);
31  bool configureAutoCalibration(bool enabled);
32  bool configureTemperatureOffset(float celsius);
33  bool configureAltitude(uint16_t meters);
34  bool configureRecalibration(uint16_t co2_reference_ppm);
35  
36  #ifdef PIO_UNIT_TESTING
37  void test();
38  #endif
39  
40  }
41