/************************************************************************/
/* Summary  : Definitions for A/D (Analog) Module for BEDS		*/
/* Filename : adc.h							*/
/* Author   : Robert Herlien (rah)					*/
/* Project  : BEDS (Benthic Event Detection System)			*/
/* Revision : 1.0							*/
/* Created  : 10/11/2012						*/
/************************************************************************/
/* Modification History:						*/
/* 11oct2012 rah - created						*/
/************************************************************************/

#ifndef ADC_H
#define ADC_H

#define VREF			2.50
#define RAW_TO_VOLTS(n)		((float)(n) * VREF / 65536.0)
#define RAW_TO_BATTVOLTS(n)	((float)(n) * 12.11* VREF / 65536.0)
#define VOLTS_TO_BATTVOLTS(f)	(12.11*f)
#define VOLTS_TO_TEMP(f)	(100.0*(f-0.5))
#define VOLTS_TO_RH(f)		(50.0*(f-0.5))


/* ADC Channels	*/
#define NUM_ADC_CHANS	8

typedef enum
{BATT_CHAN, MODEM_MIN_CHAN, EXT_PRESS_CHAN, INT_PRESS_CHAN, TEMP_CHAN, HUMIDITY_CHAN
} ADC_Chans;

MBool	adcInit(void);
Nat16	adcSample(Nat16 chan);
Nat16	adcSampleAvg(Nat16 chan, Nat16 nsamples);
Void	adcSampleMult(Nat16 chan, Nat16 nchans, Nat16 nsamples, Nat16 *dp);
Void	adcPowerUp(Void);
Void	adcPowerDown(Void);
Flt32	adcGetRawVolts(Nat16 chan);
Flt32	adcEngValue(Nat16 chan, Nat16 counts, char **unitp);

#endif /* ADC_H */
