WaveShareOLED1in5.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * WaveShareOLED1in5.h
  3. *
  4. * Created on: Mar 23, 2021
  5. * Author: spinner
  6. */
  7. #ifndef WAVESHAREOLED1IN5_H_
  8. #define WAVESHAREOLED1IN5_H_
  9. #ifdef __cplusplus
  10. #include <stm32f4xx_hal.h>
  11. #include <cmsis_os2.h>
  12. #include <OLED_config.h>
  13. #include "configuration.h"
  14. #include "templates/graphics_types.hpp"
  15. #include "templates/Surface4Bit.hpp"
  16. #define WSOLED_MAX_TX 256
  17. class WaveShare_OLED1in5 {
  18. private:
  19. SPI_HandleTypeDef* hspi = nullptr;
  20. osSemaphoreId_t txCompleteId = nullptr;
  21. osMutexId_t spiLock = nullptr;
  22. COLOR pixBuf[OLED_WIDTH / 2 * OLED_HEIGHT] = {};
  23. OLED_DIS desc = {};
  24. void _write(uint8_t byte);
  25. void _write(uint8_t const* bytes, size_t size);
  26. void waitTxComplete();
  27. void writeReg(uint8_t const* reg, size_t size);
  28. void writeReg(uint8_t reg);
  29. void writeData(uint8_t const* data, size_t size);
  30. void reset();
  31. void initReg();
  32. public:
  33. WaveShare_OLED1in5() = default;
  34. virtual ~WaveShare_OLED1in5() = default;
  35. static WaveShare_OLED1in5 instance;
  36. void init(SPI_HandleTypeDef* hspi);
  37. void onTxComplete();
  38. void displayInit(OLED_SCAN_DIR scanDir);
  39. void setGramScanWay(OLED_SCAN_DIR scanDir);
  40. void setCursor(POINT Xpoint, POINT Ypoint);
  41. void setColor(POINT Xpoint, POINT Ypoint, COLOR Color);
  42. void setWindow(POINT Xstart, POINT Ystart, POINT Xend, POINT Yend);
  43. void clear(COLOR Color);
  44. void display(void);
  45. void display(Surface4Bit<SCR_PARAMS>* surface);
  46. };
  47. extern "C" {
  48. #endif
  49. void oledOnTxComplete();
  50. #ifdef __cplusplus
  51. }
  52. #endif
  53. #endif /* WAVESHAREOLED1IN5_H_ */