aboutsummaryrefslogtreecommitdiff
path: root/src/helpers/ui/E290Display.h
blob: 2ca50225d140864a913295d653d99eeead6afcc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#pragma once

#include "DisplayDriver.h"

#include <SPI.h>
#include <Wire.h>
#include <heltec-eink-modules.h>
#include <CRC32.h>
#include <helpers/RefCountedDigitalPin.h>

// Display driver for E290 e-ink display
class E290Display : public DisplayDriver {
  EInkDisplay_VisionMasterE290 display;
  bool _init = false;
  bool _isOn = false;
  RefCountedDigitalPin* _periph_power;
  CRC32 display_crc;
  uint32_t last_display_crc_value = 0;

public:
  E290Display(RefCountedDigitalPin* periph_power = NULL) : DisplayDriver(296, 128), _periph_power(periph_power) {}

  bool begin();
  bool isOn() override { return _isOn; }
  void turnOn() override;
  void turnOff() override;
  void clear() override;
  void startFrame(Color bkg = DARK) override;
  void setTextSize(int sz) override;
  void setColor(Color c) override;
  void setCursor(int x, int y) override;
  void print(const char *str) override;
  void fillRect(int x, int y, int w, int h) override;
  void drawRect(int x, int y, int w, int h) override;
  void drawXbm(int x, int y, const uint8_t *bits, int w, int h) override;
  uint16_t getTextWidth(const char *str) override;
  void endFrame() override;

private:
  void powerOn();
  void powerOff();
};