|
|
@@ -68,13 +68,24 @@
|
|
|
|
|
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
|
|
|
|
|
+// somehow there should be an easier way to do this
|
|
|
+#define GxEPD2_BW_IS_GxEPD2_BW true
|
|
|
+#define GxEPD2_3C_IS_GxEPD2_3C true
|
|
|
+#define GxEPD2_7C_IS_GxEPD2_7C true
|
|
|
+#define GxEPD2_1248_IS_GxEPD2_1248 true
|
|
|
+#define IS_GxEPD(c, x) (c##x)
|
|
|
+#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
|
|
+#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
|
|
+#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
|
|
+#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
|
|
+
|
|
|
#if defined (ESP8266)
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|
|
|
@@ -87,15 +98,15 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
|
|
|
|
|
|
#if defined(ESP32)
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|
|
|
-#if (GxEPD2_DRIVER_CLASS != GxEPD2_1248)
|
|
|
+#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS)
|
|
|
#if defined(ARDUINO_LOLIN_D32_PRO)
|
|
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
|
|
#elif defined(ARDUINO_ESP32_DEV) // e.g. TTGO T8 ESP32-WROVER
|
|
|
@@ -116,11 +127,11 @@ GxEPD2_BW < GxEPD2_1248, GxEPD2_1248::HEIGHT / 4 > display(GxEPD2_1248(/*sck=*/
|
|
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
|
|
#if defined(ARDUINO_ARCH_STM32)
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|
|
|
@@ -133,11 +144,11 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
|
|
|
#else
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
|
|
#endif
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|
|
|
@@ -146,11 +157,11 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
|
|
|
|
|
|
#if defined(ARDUINO_ARCH_SAM)
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|
|
|
@@ -159,11 +170,11 @@ GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> displ
|
|
|
|
|
|
#if defined(ARDUINO_ARCH_SAMD)
|
|
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
|
|
-#if GxEPD2_DISPLAY_CLASS == GxEPD2_BW
|
|
|
+#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_3C
|
|
|
+#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
|
|
-#elif GxEPD2_DISPLAY_CLASS == GxEPD2_7C
|
|
|
+#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
|
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
|
|
#endif
|
|
|
// adapt the constructor parameters to your wiring
|