12static constexpr uint8_t APC1_HEADER_1 = 0x42;
13static constexpr uint8_t APC1_HEADER_2 = 0x4D;
14static constexpr uint8_t APC1_FRAME_HEADER_SIZE = 4;
15static constexpr uint8_t APC1_FRAME_SIZE_MEASUREMENT = 64;
16static constexpr uint8_t APC1_FRAME_SIZE_DEVICE_INFO = 23;
17static constexpr uint8_t APC1_FRAME_SIZE_COMMAND_RESPONSE = 8;
18static constexpr uint8_t APC1_COMMAND_FRAME_SIZE = 7;
27static constexpr uint16_t APC1_MEASUREMENT_MODE_PASSIVE = 0x0000;
28static constexpr uint16_t APC1_MEASUREMENT_MODE_ACTIVE = 0x0001;
30static constexpr uint16_t APC1_OPERATING_MODE_IDLE = 0x0000;
31static constexpr uint16_t APC1_OPERATING_MODE_STANDARD = 0x0001;
37 SUB_SENSOR(pm_1_0_std)
38 SUB_SENSOR(pm_2_5_std)
39 SUB_SENSOR(pm_10_0_std)
54 SUB_SENSOR(raw_temperature)
55 SUB_SENSOR(raw_humidity)
61 SUB_SENSOR(error_code)
64 void setup()
override;
65 void dump_config()
override;
68 void set_active_mode();
69 void set_passive_mode();
70 void request_measurement();
72 void set_measurement_mode();
91 std::array<uint8_t, APC1_FRAME_SIZE_MEASUREMENT>
rx_buffer_{};
virtual void setup()
Where the component's initialization should happen.
std::array< uint8_t, APC1_FRAME_SIZE_MEASUREMENT > rx_buffer_
uint32_t last_transmission_
uint32_t last_valid_frame_
void parse_device_info_frame_()
void parse_frame_(uint16_t total_len)
void parse_measurement_frame_()
void send_command_(APC1Command cmd, uint16_t data)
uint32_t last_init_attempt_
void arm_watchdog_()
Restarts the no-data watchdog so a mode change gets the same grace period as a cold boot.
void initialize_device_()
@ APC1_COMMAND_OPERATION_MODE
@ APC1_COMMAND_REQUEST_MEASUREMENT
@ APC1_COMMAND_MEASUREMENT_MODE
@ APC1_COMMAND_READ_SENSOR_VERSION