Program Listing for File pas-co2-ino.hpp

Return to documentation for file (src/pas-co2-ino.hpp)

#ifndef PAS_CO2_INO_HPP_
#define PAS_CO2_INO_HPP_

#include <Arduino.h>
#include <Wire.h>
#include <HardwareSerial.h>
#include "pas-co2-platf-ino.hpp"
#include "xensiv_pasco2.h"

typedef int32_t Error_t;
typedef xensiv_pasco2_status_t Diag_t;
typedef xensiv_pasco2_boc_cfg_t ABOC_t;

class PASCO2Ino
{
    public:

        static constexpr uint8_t       unusedPin = 0xFFU;
                PASCO2Ino (TwoWire * wire = &Wire, uint8_t intPin = unusedPin);
                PASCO2Ino (HardwareSerial * serial, uint8_t intPin = unusedPin);
                ~PASCO2Ino();
        Error_t begin           ();
        Error_t end             ();
        Error_t startMeasure    (int16_t  periodInSec = 0, int16_t alarmTh = 0, void (*cback) (void *) = nullptr, bool earlyNotification = false);
        Error_t stopMeasure     ();
        Error_t getCO2          (int16_t & CO2PPM);
        Error_t getDiagnosis    (Diag_t & diagnosis);
        Error_t setABOC         (ABOC_t aboc, int16_t abocRef);
        Error_t setPressRef     (uint16_t pressRef);
        Error_t performForcedCompensation(uint16_t co2Ref);
        Error_t clearForcedCompensation  ();
        Error_t reset           ();
        Error_t getDeviceID     (uint8_t & prodID, uint8_t & revID);

        Error_t getRegister     (uint8_t regAddr, uint8_t * data, uint8_t len);
        Error_t setRegister     (uint8_t regAddr, const uint8_t * data, uint8_t len);

    private:

        TwoWire         * i2c;
        HardwareSerial  * uart;
        uint8_t           intPin;
        static constexpr uint16_t baudrateBps = 9600;
        static constexpr uint32_t freqHz      = 100000;
        xensiv_pasco2_t   dev;
};

#endif