/* * WaveShareOLED1in5.h * * Created on: Mar 23, 2021 * Author: spinner */ #ifndef WAVESHAREOLED1IN5_H_ #define WAVESHAREOLED1IN5_H_ #ifdef __cplusplus #include #include #include #include "configuration.h" #include "templates/graphics_types.hpp" #include "templates/Surface4Bit.hpp" #define WSOLED_MAX_TX 256 class WaveShare_OLED1in5 { private: SPI_HandleTypeDef* hspi = nullptr; osSemaphoreId_t txCompleteId = nullptr; osMutexId_t spiLock = nullptr; COLOR pixBuf[OLED_WIDTH / 2 * OLED_HEIGHT] = {}; OLED_DIS desc = {}; void _write(uint8_t byte); void _write(uint8_t const* bytes, size_t size); void waitTxComplete(); void writeReg(uint8_t const* reg, size_t size); void writeReg(uint8_t reg); void writeData(uint8_t const* data, size_t size); void reset(); void initReg(); public: WaveShare_OLED1in5() = default; virtual ~WaveShare_OLED1in5() = default; static WaveShare_OLED1in5 instance; void init(SPI_HandleTypeDef* hspi); void onTxComplete(); void displayInit(OLED_SCAN_DIR scanDir); void setGramScanWay(OLED_SCAN_DIR scanDir); void setCursor(POINT Xpoint, POINT Ypoint); void setColor(POINT Xpoint, POINT Ypoint, COLOR Color); void setWindow(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend); void clear(COLOR Color); void display(void); void display(Surface4Bit* surface); }; extern "C" { #endif void oledOnTxComplete(); #ifdef __cplusplus } #endif #endif /* WAVESHAREOLED1IN5_H_ */