#include "SIM_I2CDevice.h"

/*
  Simulator for the MCP9600 temperature sensor

  DataSheet; https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/DataSheets/MCP960X-Data-Sheet-20005426.pdf

*/

namespace SITL {

class MCP9600DevReg : public I2CRegEnum {
public:
    static constexpr uint8_t HOT_JUNC        { 0x00 };
    static constexpr uint8_t SENSOR_CONFIG   { 0x05 };
    static constexpr uint8_t WHOAMI          { 0x20 };
};

class MCP9600 : public I2CDevice, private I2CRegisters_ConfigurableLength
{
public:

    void init() override;

    void update(const class Aircraft &aircraft) override;

    int rdwr(I2C::i2c_rdwr_ioctl_data *&data) override;

private:

    // should be a call on aircraft:
    float some_temperature = 26.5;
    float last_temperature = -1000.0f;

    uint32_t last_temperature_update_ms;
};

} // namespace SITL