#ifndef __I2C_H_
#define __I2C_H_

#include <stdint.h>

#define BIDIRECTIONAL       1       //TS in bidirectional mode
#define GESTIC_I2C_ADDR     0x42    // default i2c address of MGC3130
#define MAX_LEN_TO_GESTIC   16      //maximum length of msg to GestIC (4-255)
#define BERR_WAITTIME       150     //delay after BCL or MSSP reset
//#define I2C_DEFAULT_WAIT    0     //I2C wait state - set if needed
#define I2C_WAIT_FOR_TS     2       //TS line settling time delay

extern uint8_t countDownReset,
                countDownI2C,
                waitTSline,
                i2cMsgFlag;

inline void i2c_handleGestICReset(void);
void i2c_setbidirectional(void);
void i2c_BCLhandler(void);
void i2c_startWrite(void);
void i2c_TShandler(void);
void i2c_runstatemachine(void);
inline uint8_t i2c_writeBufferInUse(void);
int8_t i2c_sendMsg(uint8_t *msg, uint8_t len);
inline int8_t i2c_gestICSignalsI2C(void);
static inline int8_t checkMasterReset(void);
static inline void i2c_tsSignalStarted(void);
static inline void i2c_irqFinished(void);

#endif