#ifndef VACUUM_TELEMETRY_H
#define VACUUM_TELEMETRY_H

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

#define VACUUM_ADC_MAX_COUNT 4095u
#define VACUUM_VREFINT_CAL_VREF_MV 3000u
#define VACUUM_VDDA_MIN_MV 2000u
#define VACUUM_VDDA_MAX_MV 3600u
#define VACUUM_VBUS_DIVIDER_TOP_OHM 330000u
#define VACUUM_VBUS_DIVIDER_BOTTOM_OHM 56000u
#define VACUUM_SHUNT_UOHM 10000u
#define VACUUM_CURRENT_AMP_GAIN 20u

bool vacuum_adc_count_to_mv(uint16_t raw, uint16_t vref_mv, uint32_t *millivolts);
bool vacuum_vdda_from_vrefint(uint16_t vrefint_raw, uint16_t vrefint_cal_raw,
                              uint32_t *vdda_mv);
bool vacuum_vbus_count_to_mv(uint16_t raw, uint16_t vref_mv, uint32_t *vbus_mv);
bool vacuum_current_count_to_ma(uint16_t raw, uint16_t vref_mv, uint32_t *current_ma);
bool vacuum_timer_autoreload(uint32_t timer_clock_hz, uint32_t requested_hz,
                             uint16_t *auto_reload);

#endif
