16 #ifndef WS_DRV_THINKINK_GRAYSCALE4_EAAMFGN_H 17 #define WS_DRV_THINKINK_GRAYSCALE4_EAAMFGN_H 21 #define STATUS_BAR_HEIGHT \ 23 #define STATUS_BAR_BORDER 1 24 #define STATUS_BAR_ICON_SZ 16 25 #define STATUS_BAR_ICON_SPACING \ 27 #define STATUS_BAR_ICON_MARGIN \ 50 int16_t sram_cs = -1, int16_t busy = -1)
51 :
dispDrvBase(dc, rst, cs, sram_cs, busy), _display(nullptr) {}
56 _display->clearBuffer();
72 bool begin(thinkinkmode_t mode,
bool reset =
true)
override {
79 _display->begin(mode);
82 _display->setTextColor(EPD_BLACK);
83 _display->setTextWrap(
false);
85 _width = _display->width();
86 _display->clearBuffer();
96 _display->drawBitmap(0, 0, epd_bitmap_ws_logo_296128, 296, 128, EPD_BLACK);
110 _display->clearBuffer();
119 _display->setTextSize(1);
120 _display->setTextColor(EPD_BLACK);
121 _display->setCursor(5, 6);
122 _display->print(io_username);
168 if (!update_rssi && !update_mqtt)
192 }
else if (rssi < -50 && rssi >= -60) {
194 }
else if (rssi < -60 && rssi >= -70) {
196 }
else if (rssi < -70 && rssi >= -80) {
221 if (_display ==
nullptr)
229 _display->setCursor(0, y_idx);
235 size_t msg_size = strlen(message);
240 for (
size_t i = 0; i < msg_size && c_idx < msg_size; i++) {
241 if (y_idx + line_height >
_height)
243 if (message[i] ==
'\\' && i + 1 < msg_size &&
244 (message[i + 1] ==
'n' || message[i + 1] ==
'r')) {
246 if (message[i + 1] ==
'r' && i + 3 < msg_size &&
247 message[i + 2] ==
'\\' && message[i + 3] ==
'n') {
249 if (y_idx + line_height >
_height)
251 y_idx += line_height;
252 _display->setCursor(0, y_idx);
254 }
else if (message[i + 1] ==
'n') {
256 if (y_idx + line_height >
_height)
258 y_idx += line_height;
259 _display->setCursor(0, y_idx);
262 }
else if (message[i] == 0xC2 && message[i + 1] == 0xB0) {
264 _display->write(
char(247));
267 _display->print(message[i]);
274 ThinkInk_290_Grayscale4_EAAMFGN *_display;
277 #endif // WS_DRV_THINKINK_GRAYSCALE4_EAAMFGN_H const unsigned char epd_bmp_bat_full[]
battery-full-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:70
int _statusbar_icons_y
Y position of status bar icons.
Definition: dispDrvBase.h:178
#define STATUS_BAR_ICON_MARGIN
Margin from edge of display to status bar icons in pixels.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:27
const unsigned char epd_bmp_wifi_fair[]
wifi-fair-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:46
drvDispThinkInkGrayscale4Eaamfgn(int16_t dc, int16_t rst, int16_t cs, int16_t sram_cs=-1, int16_t busy=-1)
Constructor for the ThinkInk Grayscale 4-level EAAMFGN display driver.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:49
int _statusbar_icon_battery_x
X position of battery icon.
Definition: dispDrvBase.h:179
virtual void drawStatusBar(const char *io_username) override
Draws a status bar at the top of the display.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:105
const unsigned char epd_bmp_wifi_no_signal[]
wifi-slash-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:62
uint8_t _text_sz
Text size for displaying a message.
Definition: dispDrvBase.h:173
bool begin(thinkinkmode_t mode, bool reset=true) override
Attempts to initialize the ThinkInk Grayscale 4-level EAAMFGN display driver.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:72
int8_t _statusbar_rssi
RSSI value for status bar.
Definition: dispDrvBase.h:182
#define STATUS_BAR_ICON_SZ
Size of status bar icons in pixels.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:24
#define STATUS_BAR_BORDER
Border around the status bar in pixels.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:23
int16_t _pin_sram_cs
Optional EPD SRAM chip select pin.
Definition: dispDrvBase.h:169
Driver for a ThinkInk 2.9" Grayscale 4-level EAAMFGN display.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:33
virtual void writeMessage(const char *message) override
Writes a message to the display.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:220
int _statusbar_icon_cloud_x
X position of cloud icon.
Definition: dispDrvBase.h:181
int16_t _pin_rst
Reset pin.
Definition: dispDrvBase.h:166
int16_t _width
Width of the display.
Definition: dispDrvBase.h:175
#define STATUS_BAR_ICON_SPACING
Spacing between status bar icons in pixels.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:25
const unsigned char epd_bmp_wifi_full[]
wifi-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:38
virtual void showSplash() override
Displays a splash screen.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:93
#define STATUS_BAR_HEIGHT
Height of the status bar in pixels, assumes 16px icons.
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:21
const unsigned char epd_bmp_cloud_online[]
cloud-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:22
int16_t _height
Height of the display.
Definition: dispDrvBase.h:174
bool _statusbar_mqtt_connected
MQTT connection status for the status bar.
Definition: dispDrvBase.h:185
void updateStatusBar(int8_t rssi, uint8_t bat, bool mqtt_status) override
Updates the status bar with current information (battery level, connectivity status, etc).
Definition: dispDrvThinkInkGrayscale4Eaamfgn.h:158
int16_t _pin_busy
Optional Busy pin.
Definition: dispDrvBase.h:168
Abstract base class for display drivers. This class provides a common interface for all display drive...
Definition: dispDrvBase.h:28
int16_t _pin_cs
Chip Select pin.
Definition: dispDrvBase.h:167
const unsigned char epd_bmp_wifi_weak[]
wifi-weak-thin-full icon from FontAwesome (16x16px)
Definition: icons.h:54
int16_t _pin_dc
Data/Command pin.
Definition: dispDrvBase.h:165
int _statusbar_icon_wifi_x
X position of WiFi icon.
Definition: dispDrvBase.h:180