Skip to content

Commit d30d35e

Browse files
WIP, preserve ink mode passed to begin() in each ThinkInk class
1 parent 75aae57 commit d30d35e

17 files changed

+155
-53
lines changed

src/Adafruit_ThinkInk.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
#ifndef _ADAFRUIT_THINKINK_H_
2+
#define _ADAFRUIT_THINKINK_H_
3+
4+
#include "Adafruit_EPD.h"
5+
16
typedef enum {
27
THINKINK_MONO,
38
THINKINK_TRICOLOR,
@@ -22,3 +27,5 @@ typedef enum {
2227
#include "panels/ThinkInk_213_Mono_B73.h"
2328
#include "panels/ThinkInk_213_Mono_BN.h"
2429
#include "panels/ThinkInk_420_Mono_BN.h"
30+
31+
#endif // _ADAFRUIT_THINKINK_H_

src/panels/ThinkInk_154_Grayscale4_T8.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef _THINKINK_154_GRAYSCALE4_T8_H
22
#define _THINKINK_154_GRAYSCALE4_T8_H
33

4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
5+
46
// clang-format off
57

68
static const uint8_t ti_154t8_gray4_init_code[] {
@@ -144,7 +146,6 @@ static const uint8_t ti_154t8_gray4_lut_code[] = {
144146
// clang-format on
145147

146148
class ThinkInk_154_Grayscale4_T8 : public Adafruit_IL0373 {
147-
private:
148149
public:
149150
ThinkInk_154_Grayscale4_T8(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
150151
int8_t CS, int8_t SRCS, int8_t MISO,
@@ -160,6 +161,8 @@ class ThinkInk_154_Grayscale4_T8 : public Adafruit_IL0373 {
160161
setColorBuffer(0, true); // layer 0 uninverted
161162
setBlackBuffer(1, true); // layer 1 uninverted
162163

164+
inkmode = mode; // Preserve ink mode for ImageReader or others
165+
163166
if (mode == THINKINK_GRAYSCALE4) {
164167
_epd_init_code = ti_154t8_gray4_init_code;
165168
_epd_lut_code = ti_154t8_gray4_lut_code;
@@ -170,8 +173,7 @@ class ThinkInk_154_Grayscale4_T8 : public Adafruit_IL0373 {
170173
layer_colors[EPD_GRAY] = 0b10;
171174
layer_colors[EPD_LIGHT] = 0b01;
172175
layer_colors[EPD_DARK] = 0b10;
173-
}
174-
if (mode == THINKINK_MONO) {
176+
} else if (mode == THINKINK_MONO) {
175177
_epd_init_code = ti_154t8_monofull_init_code;
176178
_epd_partial_init_code = ti_154t8_monopart_init_code;
177179
_epd_partial_lut_code = ti_154t8_monopart_lut_code;
@@ -187,7 +189,12 @@ class ThinkInk_154_Grayscale4_T8 : public Adafruit_IL0373 {
187189
default_refresh_delay = 1000;
188190
setRotation(3);
189191
powerDown();
190-
};
192+
}
193+
194+
thinkinkmode_t getMode(void) { return inkmode; }
195+
196+
private:
197+
thinkinkmode_t inkmode; // Ink mode passed to begin()
191198
};
192199

193200
#endif // _THINKINK_154_GRAYSCALE4_T8_H

src/panels/ThinkInk_154_Mono_D27.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_154_MONO_D27_H
22
#define _THINKINK_154_MONO_D27_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_154_Mono_D27 : public Adafruit_SSD1608 {
7-
private:
87
public:
98
ThinkInk_154_Mono_D27(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1)
@@ -19,6 +18,8 @@ class ThinkInk_154_Mono_D27 : public Adafruit_SSD1608 {
1918
setColorBuffer(0, true); // layer 0 uninverted
2019
setBlackBuffer(0, true); // only one buffer
2120

21+
inkmode = mode; // Preserve ink mode for ImageReader or others
22+
2223
layer_colors[EPD_WHITE] = 0b00;
2324
layer_colors[EPD_BLACK] = 0b01;
2425
layer_colors[EPD_RED] = 0b01;
@@ -29,7 +30,12 @@ class ThinkInk_154_Mono_D27 : public Adafruit_SSD1608 {
2930
default_refresh_delay = 1000;
3031
setRotation(3);
3132
powerDown();
32-
};
33+
}
34+
35+
thinkinkmode_t getMode(void) { return inkmode; }
36+
37+
private:
38+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3339
};
3440

3541
#endif // _THINKINK_154_MONO_D27_H

src/panels/ThinkInk_154_Mono_D67.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_154_MONO_D67_H
22
#define _THINKINK_154_MONO_D67_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_154_Mono_D67 : public Adafruit_SSD1681 {
7-
private:
87
public:
98
ThinkInk_154_Mono_D67(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1)
@@ -19,6 +18,8 @@ class ThinkInk_154_Mono_D67 : public Adafruit_SSD1681 {
1918
setColorBuffer(0, true); // layer 0 uninverted
2019
setBlackBuffer(0, true); // only one buffer
2120

21+
inkmode = mode; // Preserve ink mode for ImageReader or others
22+
2223
layer_colors[EPD_WHITE] = 0b00;
2324
layer_colors[EPD_BLACK] = 0b01;
2425
layer_colors[EPD_RED] = 0b01;
@@ -29,7 +30,12 @@ class ThinkInk_154_Mono_D67 : public Adafruit_SSD1681 {
2930
default_refresh_delay = 1000;
3031
setRotation(3);
3132
powerDown();
32-
};
33+
}
34+
35+
thinkinkmode_t getMode(void) { return inkmode; }
36+
37+
private:
38+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3339
};
3440

3541
#endif // _THINKINK_154_MONO_D67_H

src/panels/ThinkInk_154_Tricolor_RW.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_154_TRICOLOR_RW_H
22
#define _THINKINK_154_TRICOLOR_RW_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_154_Tricolor_RW : public Adafruit_SSD1680 {
7-
private:
87
public:
98
ThinkInk_154_Tricolor_RW(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO,
@@ -20,6 +19,8 @@ class ThinkInk_154_Tricolor_RW : public Adafruit_SSD1680 {
2019
setBlackBuffer(0, true);
2120
setColorBuffer(1, false);
2221

22+
inkmode = mode; // Preserve ink mode for ImageReader or others
23+
2324
layer_colors[EPD_WHITE] = 0b00;
2425
layer_colors[EPD_BLACK] = 0b01;
2526
layer_colors[EPD_RED] = 0b10;
@@ -30,7 +31,12 @@ class ThinkInk_154_Tricolor_RW : public Adafruit_SSD1680 {
3031
default_refresh_delay = 13000;
3132
setRotation(3);
3233
powerDown();
33-
};
34+
}
35+
36+
thinkinkmode_t getMode(void) { return inkmode; }
37+
38+
private:
39+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3440
};
3541

3642
#endif // _THINKINK_154_TRI

src/panels/ThinkInk_154_Tricolor_Z17.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_154_TRICOLOR_Z17_H
22
#define _THINKINK_154_TRICOLOR_Z17_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_154_Tricolor_Z17 : public Adafruit_IL0373 {
7-
private:
87
public:
98
ThinkInk_154_Tricolor_Z17(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO,
@@ -20,6 +19,8 @@ class ThinkInk_154_Tricolor_Z17 : public Adafruit_IL0373 {
2019
setColorBuffer(0, true); // layer 0 uninverted
2120
setBlackBuffer(1, true); // layer 1 uninverted
2221

22+
inkmode = mode; // Preserve ink mode for ImageReader or others
23+
2324
layer_colors[EPD_WHITE] = 0b00;
2425
layer_colors[EPD_BLACK] = 0b10;
2526
layer_colors[EPD_RED] = 0b01;
@@ -31,7 +32,12 @@ class ThinkInk_154_Tricolor_Z17 : public Adafruit_IL0373 {
3132

3233
setRotation(3);
3334
powerDown();
34-
};
35+
}
36+
37+
thinkinkmode_t getMode(void) { return inkmode; }
38+
39+
private:
40+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3541
};
3642

3743
#endif // _THINKINK_154_TRICOLOR_Z17_H

src/panels/ThinkInk_213_Grayscale4_T5.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef _THINKINK_213_GRAYSCALE4_T5_H
22
#define _THINKINK_213_GRAYSCALE4_T5_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
// clang-format off
77

@@ -146,7 +146,6 @@ static const uint8_t ti_213t5_gray4_lut_code[] = {
146146
// clang-format on
147147

148148
class ThinkInk_213_Grayscale4_T5 : public Adafruit_IL0373 {
149-
private:
150149
public:
151150
ThinkInk_213_Grayscale4_T5(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
152151
int8_t CS, int8_t SRCS, int8_t MISO,
@@ -162,6 +161,8 @@ class ThinkInk_213_Grayscale4_T5 : public Adafruit_IL0373 {
162161
setColorBuffer(0, true); // layer 0 uninverted
163162
setBlackBuffer(1, true); // layer 1 uninverted
164163

164+
inkmode = mode; // Preserve ink mode for ImageReader or others
165+
165166
if (mode == THINKINK_GRAYSCALE4) {
166167
_epd_init_code = ti_213t5_gray4_init_code;
167168
_epd_lut_code = ti_213t5_gray4_lut_code;
@@ -172,8 +173,7 @@ class ThinkInk_213_Grayscale4_T5 : public Adafruit_IL0373 {
172173
layer_colors[EPD_GRAY] = 0b10;
173174
layer_colors[EPD_LIGHT] = 0b01;
174175
layer_colors[EPD_DARK] = 0b10;
175-
}
176-
if (mode == THINKINK_MONO) {
176+
} else if (mode == THINKINK_MONO) {
177177
_epd_init_code = ti_213t5_monofull_init_code;
178178
_epd_partial_init_code = ti_213t5_monopart_init_code;
179179
_epd_partial_lut_code = ti_213t5_monopart_lut_code;
@@ -189,7 +189,12 @@ class ThinkInk_213_Grayscale4_T5 : public Adafruit_IL0373 {
189189
default_refresh_delay = 1000;
190190

191191
powerDown();
192-
};
192+
}
193+
194+
thinkinkmode_t getMode(void) { return inkmode; }
195+
196+
private:
197+
thinkinkmode_t inkmode; // Ink mode passed to begin()
193198
};
194199

195200
#endif // _THINKINK_213_GRAYSCALE4_T5_H

src/panels/ThinkInk_213_Mono_B72.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_213_MONO_B72_H
22
#define _THINKINK_213_MONO_B72_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_213_Mono_B72 : public Adafruit_SSD1675 {
7-
private:
87
public:
98
ThinkInk_213_Mono_B72(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1)
@@ -19,6 +18,8 @@ class ThinkInk_213_Mono_B72 : public Adafruit_SSD1675 {
1918
setColorBuffer(0, true); // layer 0 uninverted
2019
setBlackBuffer(0, true); // only one buffer
2120

21+
inkmode = mode; // Preserve ink mode for ImageReader or others
22+
2223
layer_colors[EPD_WHITE] = 0b00;
2324
layer_colors[EPD_BLACK] = 0b01;
2425
layer_colors[EPD_RED] = 0b01;
@@ -29,7 +30,12 @@ class ThinkInk_213_Mono_B72 : public Adafruit_SSD1675 {
2930
default_refresh_delay = 1000;
3031
setRotation(0);
3132
powerDown();
32-
};
33+
}
34+
35+
thinkinkmode_t getMode(void) { return inkmode; }
36+
37+
private:
38+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3339
};
3440

3541
#endif // _THINKINK_213_MONO_B72_H

src/panels/ThinkInk_213_Mono_B73.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_213_MONO_B73_H
22
#define _THINKINK_213_MONO_B73_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_213_Mono_B73 : public Adafruit_SSD1675B {
7-
private:
87
public:
98
ThinkInk_213_Mono_B73(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1)
@@ -19,6 +18,8 @@ class ThinkInk_213_Mono_B73 : public Adafruit_SSD1675B {
1918
setColorBuffer(0, true); // layer 0 uninverted
2019
setBlackBuffer(0, true); // only one buffer
2120

21+
inkmode = mode; // Preserve ink mode for ImageReader or others
22+
2223
layer_colors[EPD_WHITE] = 0b00;
2324
layer_colors[EPD_BLACK] = 0b01;
2425
layer_colors[EPD_RED] = 0b01;
@@ -29,7 +30,12 @@ class ThinkInk_213_Mono_B73 : public Adafruit_SSD1675B {
2930
default_refresh_delay = 1000;
3031
setRotation(0);
3132
powerDown();
32-
};
33+
}
34+
35+
thinkinkmode_t getMode(void) { return inkmode; }
36+
37+
private:
38+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3339
};
3440

3541
#endif // _THINKINK_213_MONO_B73_H

src/panels/ThinkInk_213_Mono_BN.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#ifndef _THINKINK_213_MONO_BN_H
22
#define _THINKINK_213_MONO_BN_H
33

4-
#include "Adafruit_EPD.h"
4+
#include "Adafruit_ThinkInk.h" // Includes EPD header, ink mode enum
55

66
class ThinkInk_213_Mono_BN : public Adafruit_SSD1680 {
7-
private:
87
public:
98
ThinkInk_213_Mono_BN(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
109
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1)
@@ -19,6 +18,8 @@ class ThinkInk_213_Mono_BN : public Adafruit_SSD1680 {
1918
setColorBuffer(0, true); // layer 0 uninverted
2019
setBlackBuffer(0, true); // only one buffer
2120

21+
inkmode = mode; // Preserve ink mode for ImageReader or others
22+
2223
layer_colors[EPD_WHITE] = 0b00;
2324
layer_colors[EPD_BLACK] = 0b01;
2425
layer_colors[EPD_RED] = 0b01;
@@ -29,7 +30,12 @@ class ThinkInk_213_Mono_BN : public Adafruit_SSD1680 {
2930
default_refresh_delay = 1000;
3031
setRotation(0);
3132
powerDown();
32-
};
33+
}
34+
35+
thinkinkmode_t getMode(void) { return inkmode; }
36+
37+
private:
38+
thinkinkmode_t inkmode; // Ink mode passed to begin()
3339
};
3440

3541
#endif // _THINKINK_213_MONO_BN_H

0 commit comments

Comments
 (0)