#pragma once #include #include "esp_adc/adc_continuous.h" #include "esp_adc/adc_cali.h" typedef struct { unsigned int channel; unsigned int gain; unsigned int real_gain; } measurement_input; typedef struct { uint32_t *raw_volt; uint32_t *amperes; uint32_t amperes_f; } measurements; typedef struct { adc_continuous_handle_t handle; measurement_input* inputs; int nb_inputs; } measurements_ctxt; #define ADC_STORE_BUFFER_SIZE 100 // in number of samples / nb of inputs adc_continuous_handle_t init_measurement_inputs(measurement_input inputs[], int inputs_num); void init_conv_driver(measurement_input inputs[], int inputs_num, adc_cali_handle_t* out); void start_zero_cali(measurements_ctxt* ctxt, unsigned int nb_samples, uint32_t offsets[]); int get_input_index_from_channel(adc_channel_t channel);