E290Display.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include "DisplayDriver.h"
  3. #include <SPI.h>
  4. #include <Wire.h>
  5. #include <heltec-eink-modules.h>
  6. #include <CRC32.h>
  7. #include <helpers/RefCountedDigitalPin.h>
  8. // Display driver for E290 e-ink display
  9. class E290Display : public DisplayDriver {
  10. EInkDisplay_VisionMasterE290 display;
  11. bool _init = false;
  12. bool _isOn = false;
  13. RefCountedDigitalPin* _periph_power;
  14. CRC32 display_crc;
  15. uint32_t last_display_crc_value = 0;
  16. public:
  17. E290Display(RefCountedDigitalPin* periph_power = NULL) : DisplayDriver(296, 128), _periph_power(periph_power) {}
  18. bool begin();
  19. bool isOn() override { return _isOn; }
  20. bool isEink() override { return true; }
  21. void turnOn() override;
  22. void turnOff() override;
  23. void clear() override;
  24. void startFrame(Color bkg = DARK) override;
  25. void setTextSize(int sz) override;
  26. void setColor(Color c) override;
  27. void setCursor(int x, int y) override;
  28. void print(const char *str) override;
  29. void fillRect(int x, int y, int w, int h) override;
  30. void drawRect(int x, int y, int w, int h) override;
  31. void drawXbm(int x, int y, const uint8_t *bits, int w, int h) override;
  32. uint16_t getTextWidth(const char *str) override;
  33. void endFrame() override;
  34. private:
  35. void powerOn();
  36. void powerOff();
  37. };