#ifndef __SPI_STATE_H__
#define __SPI_STATE_H__

#include <stdint.h>

#define ESESTATUS_SUCCESS       (0x0000)
#define ESESTATUS_OK            (ESESTATUS_SUCCESS)

/* ESE open fail */
#define ESESTATUS_FAILED      	(0x00FF)

#define NO_ERROR                0
#define ERROR_SHIFT_MODE        20
#define CRC_ERROR               21
#define CRC_FIRST_ERROR         22
#define ERROR                   23
#define OK                      24
#define TIME_OUT                25
#define TIMER_ERROR             26
#define ERROR_SPI_SECDRV        30

#define MODE_TRANSCIEVE         0
#define MODE_TRANSMIT           1

int spi_send_raw (uint8_t* spi_in,  uint8_t* spi_out,uint16_t len, uint16_t timeout, uint8_t mode);
int spi_process_send(uint8_t* apdu, uint16_t size, uint8_t *rsp, uint16_t* retLen);
int spi_send_raw_activepolling_mode (uint8_t* spi_in,  uint8_t* spi_out,uint16_t len, uint16_t timeout, uint8_t mode);
int spi_transcieve(uint8_t* spi_out, uint8_t* spi_in, uint16_t len, uint8_t debug);
uint8_t spi_bitshift_detection(uint8_t c);

#endif /* __SPI_STATE_H__ */
