#ifndef MPC3550_COMPONENT
#define MPC3550_COMPONENT

#include "driver/spi_master.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "buscfg.h"

#define MCP3550_SPS 3.75f
#define MCP3550_CONVERSION_MS ((int)(1000.0f / MCP3550_SPS)) // ~267ms


extern spi_device_handle_t mcp3550_handle;

void mcp3550_spi_init();
int32_t mcp3550_read(uint8_t cs_pin);
float mcp3550_to_voltage(int32_t value, float vref);

typedef struct {
    int32_t raw_nh3;
    int32_t raw_co;
    int32_t raw_no2;
    int32_t raw_uvc;
    float volts_nh3;
    float volts_co;
    float volts_no2;
    float volts_uvc;
} mics_adc_data_t;

extern spi_device_handle_t mcp3550_handle;

void log_mics_adc_values(mics_adc_data_t *data);
mics_adc_data_t mcp3550_read_all(float vref);

#endif