#ifndef __ADC_H__
#define __ADC_H__

// ADS1248 registers
#define ADS1248_MUX0_REGISTER    	0x00
#define ADS1248_VBIAS_REGISTER   	0x01
#define ADS1248_MUX1_REGISTER    	0x02
#define ADS1248_SYS0_REGISTER    	0x03
#define ADS1248_OFC0_REGISTER    	0x04
#define ADS1248_OFC1_REGISTER    	0x05
#define ADS1248_OFC2_REGISTER    	0x06
#define ADS1248_FSC0_REGISTER    	0x07
#define ADS1248_FSC1_REGISTER    	0x08
#define ADS1248_FSC2_REGISTER    	0x09
#define ADS1248_IDAC0_REGISTER   	0x0A
#define ADS1248_IDAC1_REGISTER   	0x0B
#define ADS1248_GPIOCFG_REGISTER 	0x0C
#define ADS1248_GPIODIR_REGISTER 	0x0D
#define ADS1248_GPIODAT_REGISTER 	0x0E

//SPI Commands
//Control Sistem
#define ADS1248_CMD_WAKEUP    		0x01
#define ADS1248_CMD_SLEEP     		0x02
#define ADS1248_CMD_SYNC      		0x04
#define ADS1248_CMD_RESET     		0x06
#define ADS1248_CMD_NOP       		0xFF
//Read Data
#define ADS1248_CMD_RDATA     		0x12
#define ADS1248_CMD_RDATAC    		0x14
#define ADS1248_CMD_SDATAC    		0x16
//Read Registers
#define ADS1248_CMD_RREG      		0x20
//Write Registers
#define ADS1248_CMD_WREG      		0x40
//Calibration
#define ADS1248_CMD_SYSOCAL   		0x60
#define ADS1248_CMD_SYSGCAL   		0x61
#define ADS1248_CMD_SELFOCAL  		0x62


// Thermo Thread StateMachine definitions
// Setup Phase
#define THERMOTHREAD_STATE_SETUP_START									0
#define THERMOTHREAD_STATE_SETUP_HARDWARE_INIT					10
#define THERMOTHREAD_STATE_SETUP_RESET_ADS							20
#define THERMOTHREAD_STATE_SETUP_STOP_CONTINUOUS_MODE		30
#define THERMOTHREAD_STATE_SETUP_CONFIG_REGISTERS				40
#define THERMOTHREAD_STATE_SETUP_OFFSET_CALIBRATION			50
#define THERMOTHREAD_STATE_SETUP_WAIT_END_CALIBRATION		51
#define THERMOTHREAD_STATE_SETUP_FINALIZE								60
// Loop Phase
#define THERMOTHREAD_STATE_LOOP_START										100
#define THERMOTHREAD_STATE_LOOP_WAIT_DATA								110
#define THERMOTHREAD_STATE_LOOP_READ										120
#define THERMOTHREAD_STATE_LOOP_FINALIZE								130


// Program Defines
#define MAX_NUM_OF_SENSORS						4
#define SPI_ADS1248_ONE								0
#define SPI_ADS1248_TWO								1




#endif

