/*
 * ads1292.h
 *
 *  Created on: Sep 9, 2019
 *      Author: biza
 */

#ifndef ADS1292_H_
#define ADS1292_H_

/*REGISTER READ COMMANDS*/
#define R_REG                       0x20;   /*READ n nnnn REGISTERS*/
#define W_REG                       0x40;   /*WRITE n nnnn REGISTERS*/

/*SYSTEM COMMANDS*/
#define RESET_                      0x06    /*RESET THE DEVICE*/
#define START_                      0x08    /*START OR RESTART*/
#define STOP_                       0x0A    /*STOP CONVERTION*/

/*DATA READ COMMANDS*/
#define R_DATA_C                    0x10    /*ENABLE READ DATA CONTINUOUS MODE*/
#define S_DATA_C                    0x11    /*STOP READ DATA CONTINUOUS MODE*/
#define R_DATA                      0x12    /*READ DATA BY COMMAND; SUPPORTS MULTIPLE READ BACK*/

/*PINS REGISTERS*/
#define ADS1292_DRDY                BIT5    /*P2.5 DRDY*/
#define ADS1292_START               BIT6    /*P2.6 START*/
#define ADS1292_PWDN                BIT7    /*P2.7 PWDN*/
#define ADS1292_CS                  BIT0    /*P3.0 STE*/
#define ADS1292_MISO                BIT7    /*P1.7 UCB0SOMI*/
#define ADS1292_MOSI                BIT6    /*P1.6 UCB0SIMO*/
#define ADS1292_CLK                 BIT5    /*P1.5 UCB0CLK*/

#define ADS1292_REG_ID              0x00
#define ADS1292_REG_CONFIG1         0x01
#define ADS1292_REG_CONFIG2         0x02
#define ADS1292_REG_LOFF            0x03
#define ADS1292_REG_CH1SET          0x04
#define ADS1292_REG_CH2SET          0x05
#define ADS1292_REG_RLDSENS         0x06
#define ADS1292_REG_LOFFSENS        0x07
#define ADS1292_REG_LOFFSTAT        0x08
#define ADS1292_REG_RESP1           0x09
#define ADS1292_REG_RESP2           0x0A

#define CES_CMDIF_PKT_START_1       0x0A
#define CES_CMDIF_PKT_START_2       0xFA
#define CES_CMDIF_TYPE_DATA         0x02
#define CES_CMDIF_PKT_STOP          0x0B
#define CES_CMDIF_PKT_STOP_1        0x00

void initAds1292rDrdy(void);
void enableAds1292rDrdy(void);
void ads1292_Init(void);
/*DELAY TO ADS1292R*/
void delayADS1292R(unsigned msec);
/*SET GPIO PINS DIRECTION*/
void gpioPinsDirection(void);
/*CLOCK SYSTEM CONTROL*/
void clockSystem(void);
/*PORT SPI BUS CONFIGURATION*/
void ads1292rSpiBusConf(void);
/*SPI DEVICE CONFIGUATION*/
void ads1292rSPI(void);
/*ADS1292R RESET CONFIGURATION*/
void ads1292rReset(void);
/*ADS1292r CS ENABLE*/
void ads1292rCsEnable(void);
/*ADS1292r CS DISABLE*/
void ads1292rCsDisable(void);
/*ADS1292R DISABLE START CONFIGURATION*/
void ads1292rStartDisable(void);
/*ADS1292R ENABLE START CONFIGURATION*/
void ads1292rStartEnable(void);
/*ADS1292r HARD STOP*/
void ads1292rHardStop(void);
/*START DATA CONVERTION COMMAND*/
void startDataConvertionCommand(void);
/*STOP DATA CONVERTION COMMAND*/
void stopDataConvertionCommand(void);
/*STOP READ DATA CONTINUOUS*/
void stopContinuousConvertionCommand(void);
/*START READ DATA CONTINUOUS*/
void startContinuousConvertionCommand(void);
/*ADS1292R SPI COMMAND DATA*/
void ads1292rSpiCommandData(uint32_t data);
/*ADS1292R REGISTER WRITE*/
void ads1292rRegisterWrite(uint32_t READ_WRITE_ADDRESS, uint32_t data);



#endif /* ADS1292_H_ */
