#ifndef SWSPI_H
#define SWSPI_H


//#define SWSPI_RPI
#define SWSPI_AVR

#ifdef SWSPI_RPI
//#define SWSPI_MISO	9
#define SWSPI_MISO	10
#define SWSPI_MOSI	10
#define SWSPI_SCK	11
#define SWSPI_CS	7
#endif //SWSPI_RPI

#ifdef SWSPI_AVR
#if (MOTHERBOARD == BOARD_EINY_0_3a)
#define SWSPI_MISO	16 //RX2
#define SWSPI_MOSI	16 //RX2
#define SWSPI_SCK	17 //TX2
#define SWSPI_CS	20 //SDA
#endif //(MOTHERBOARD == BOARD_EINY_0_3a)
#if (MOTHERBOARD == BOARD_EINY_0_4a)
#define SWSPI_MISO	62 //PK0
#define SWSPI_MOSI	62 //PK0
#define SWSPI_SCK	21 //SCL
#define SWSPI_CS	20 //SDA
#endif //(MOTHERBOARD == BOARD_EINY_0_4a)
#endif //SWSPI_AVR

#define SWSPI_POL	1 //polarity
#define SWSPI_PHA	0 //phase
#define SWSPI_DOR	0 //data order
#define SWSPI_DEL	2 //delay


void swspi_init();

#if (SWSPI_MOSI == SWSPI_MISO)

void swspi_tx(unsigned char tx);
unsigned char swspi_rx();

#else //(SWSPI_MOSI == SWSPI_MISO)

#define swspi_tx swspi_txrx
#define swspi_rx swspi_txrx
unsigned char swspi_txrx(unsigned char tx);

#endif //(SWSPI_MOSI == SWSPI_MISO)

void swspi_start();
void swspi_stop();


#endif //SWSPI_H