mirror of
https://github.com/meshtastic/firmware.git
synced 2025-07-31 19:05:44 +00:00
36 lines
778 B
C++
36 lines
778 B
C++
#pragma once
|
|
|
|
#include "TelemetrySensor.h"
|
|
|
|
#define PMSA003I_I2C_CLOCK_SPEED 100000
|
|
#define PMSA003I_FRAME_LENGTH 32
|
|
#define PMSA003I_WARMUP_MS 30000
|
|
|
|
|
|
class PMSA003ISensor : public TelemetrySensor
|
|
{
|
|
public:
|
|
PMSA003ISensor();
|
|
virtual void setup() override;
|
|
virtual int32_t runOnce() override;
|
|
virtual bool restoreClock(uint32_t currentClock);
|
|
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
|
|
virtual bool isActive();
|
|
|
|
#ifdef PMSA003I_ENABLE_PIN
|
|
void sleep();
|
|
uint32_t wakeUp();
|
|
#endif
|
|
|
|
private:
|
|
enum class State { IDLE, ACTIVE };
|
|
State state = State::ACTIVE;
|
|
TwoWire * bus;
|
|
uint8_t address;
|
|
|
|
uint16_t computedChecksum = 0;
|
|
uint16_t receivedChecksum = 0;
|
|
|
|
uint8_t buffer[PMSA003I_FRAME_LENGTH];
|
|
};
|