#ifndef DRILL_DUAL_ADC_H
#define DRILL_DUAL_ADC_H
#include <stdbool.h>
#include <stdint.h>
typedef enum { DU_IDLE,DU_REG,DU_CAL,DU_GAP,DU_ENABLE,DU_READY,DU_WAIT,DU_STOP,DU_DONE,DU_STREAM,DU_FAILED } du_state;
extern volatile du_state drill_dual_state;
extern volatile uint32_t drill_dual_error;
typedef struct {uint16_t ia_raw,ib_raw,timer_count;uint32_t armed_us,observed_us,sequence;bool calibration_verified;} du_sample;
/* Mutually exclusive with A75 sequential ADC. External supply qualification
 * required. No PWM output, DRV_RUN, charging, current limit or FOC permission. */
bool drill_dual_bench_begin(uint32_t now,bool analog_supply_verified);
void drill_dual_poll(uint32_t now);
bool drill_dual_capture_start(uint32_t now);
bool drill_dual_take(du_sample *,uint32_t now);
bool drill_dual_busy(void);
/* Continuous off-state stream uses DMA1 + DMAMUX1 exclusively from reset.
 * A consumed record is uncalibrated; no motor-run permission is implied. */
bool drill_dual_stream_start(uint32_t now);
bool drill_dual_stream_take(du_sample *out,uint32_t now);
void drill_dual_stream_stop(void);
/* Latch a hard-off abort in any acquired dual ADC phase. */
void drill_dual_abort(void);
#endif
