// components/peripherals/include/adc121s021_dma.h
#ifndef ADC_DMA_H_
#define ADC_DMA_H_

#include <stdint.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief Inicializa o ADC121S021 no barramento SPI partilhado.
 *
 * - Garante que o spi_bus_manager foi inicializado.
 * - Regista o dispositivo ADC no bus.
 */
void adc121s021_dma_init(void);

/**
 * @brief Lê uma única amostra (12 bits) do ADC121S021.
 *
 * Esta função faz uma transação SPI bloqueante (polling), suficientemente
 * rápida para uso em burst (100 amostras em ~2–3 ms).
 *
 * @param[out] sample Ponteiro onde será escrito o valor lido (0..4095).
 * @return true em caso de sucesso, false se ocorrer erro.
 */
bool adc121s021_dma_get_sample(uint16_t *sample);

#ifdef __cplusplus
}
#endif

#endif /* ADC_DMA_H_ */
