#pragma once // using external voltage reference #include "esphome/core/component.h" #include "esphome/components/spi/spi.h" #include "esphome/components/sensor/sensor.h" namespace esphome { namespace ads131m08 { class ADS131M08Sensor : public sensor::Sensor, public Component { }; class ADS131M08Hub : public Component, public spi::SPIDevice { public: void setup() override; void loop() override; void set_drdy_pin(InternalGPIOPin *pin) { drdy_pin_ = pin; } void register_sensor(int channel, ADS131M08Sensor *s) { sensors_[channel] = s; } void set_reference_voltage(float reference_voltage) { this->reference_voltage_ = reference_voltage; } void dump_config() override; protected: float reference_voltage_; InternalGPIOPin *drdy_pin_; ADS131M08Sensor *sensors_[8] = {nullptr}; volatile bool data_ready_{false}; static void isr(ADS131M08Hub *arg); void read_data_(); }; } // namespace ads131m08 } // namespace esphome