#ifndef ssd1306_H
#define ssd1306_H
#define OLED_CS_Pin GPIO_PIN_0
#define OLED_CS_GPIO_Port GPIOA
#define OLED_RESET_Pin GPIO_PIN_1
#define OLED_RESET_GPIO_Port GPIOA
#define OLED_DC_Pin GPIO_PIN_2
#define OLED_DC_GPIO_Port GPIOA
#define SSD_RESET OLED_RESET_GPIO_Port,OLED_RESET_Pin
#define SSD_A0 OLED_DC_GPIO_Port,OLED_DC_Pin
#define SSD_CS OLED_CS_GPIO_Port,OLED_CS_Pin
#define SSD_Reset_Low() HAL_GPIO_WritePin(SSD_RESET, 0)
#define SSD_Reset_High() HAL_GPIO_WritePin(SSD_RESET, 1)
#define SSD_A0_Low() HAL_GPIO_WritePin(SSD_A0, 0)
#define SSD_A0_High() HAL_GPIO_WritePin(SSD_A0, 1)
#define SSD_CS_Low() HAL_GPIO_WritePin(SSD_CS, 0)
#define SSD_CS_High() HAL_GPIO_WritePin(SSD_CS, 1)
// EMZ FIXME this won't really work
#define SPI_SendByte(data) HAL_SPI_Transmit(spi_get(), &data, 1, 100)
//#define SPI_SendByte(data)
#define SPI_Wait()
//#define SPI_SendByte(data) SPI_I2S_SendData(SPI1,data)
//#define SPI_Wait() while(!(SPI1->SR&SPI_FLAG_TXE));while(SPI1->SR&SPI_FLAG_BSY);
void ssd1306_init(void);
void ssd1306_drawchar(char ascii, unsigned char row, unsigned char xPos);
void ssd1306_drawcharbig(char ascii, unsigned char row, unsigned char xPos);
void ssd1306_drawstring(const char *dataPtr, unsigned char row, unsigned char xPos);
void ssd1306_drawstringbig(const char *dataPtr, unsigned char row, unsigned char xPos);
void ssd1306_drawlogo();
void ssd1306_clearscreen();
#endif
// vim:softtabstop=4 shiftwidth=4 expandtab