#ifndef ssd1306_H
#define ssd1306_H
#define SSD_RESET GPIOA,GPIO_PIN_3
#define SSD_A0 GPIOA,GPIO_PIN_4
#define SSD_CS GPIOA,GPIO_PIN_2
#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)
// Use stdperiph
//extern SPI_HandleTypeDef spi1;
extern SPI_HandleTypeDef hspi1;
// EMZ FIXME this won't really work
#define SPI_SendByte(data) HAL_SPI_Transmit(&hspi1, &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