misc: Add extern "C" blocks to headers
[simavr] / simavr / sim / avr_spi.h
index 0cae169..4a8eaf0 100644 (file)
 #ifndef AVR_SPI_H_
 #define AVR_SPI_H_
 
-#include "simavr.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "sim_avr.h"
+
+enum {
+       SPI_IRQ_INPUT = 0,
+       SPI_IRQ_OUTPUT,
+       SPI_IRQ_COUNT
+};
+
+// add port number to get the real IRQ
+#define AVR_IOCTL_SPI_GETIRQ(_name) AVR_IOCTL_DEF('s','p','i',(_name))
 
 typedef struct avr_spi_t {
        avr_io_t        io;
        char name;
        avr_regbit_t    disabled;       // bit in the PRR
 
-       uint8_t r_spdr;                 // data register
-       uint8_t r_spcr;                 // control register
+       avr_io_addr_t   r_spdr;                 // data register
+       avr_io_addr_t   r_spcr;                 // control register
+       avr_io_addr_t   r_spsr;                 // status register
        
        avr_regbit_t spe;               // spi enable
-       avr_regbit_t dord;              // data order
        avr_regbit_t mstr;              // master/slave
-       avr_regbit_t cpol;              // clock polarity
-       avr_regbit_t cpha;              // phase
        avr_regbit_t spr[4];    // clock divider
        
-       avr_int_vector_t spi;   // spi interupt
+       avr_int_vector_t spi;   // spi interrupt
+
+       uint8_t         input_data_register;
 } avr_spi_t;
 
 void avr_spi_init(avr_t * avr, avr_spi_t * port);
 
+#ifdef __cplusplus
+};
+#endif
+
 #endif /* AVR_SPI_H_ */