Skip to content

Commit ff8d888

Browse files
committed
fix rotation math, dont erase buffers we're not using
1 parent 09c3e97 commit ff8d888

File tree

2 files changed

+25
-50
lines changed

2 files changed

+25
-50
lines changed

src/Adafruit_EPD.cpp

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -446,33 +446,29 @@ void Adafruit_EPD::setColorBuffer(int8_t index, bool inverted) {
446446
/**************************************************************************/
447447
void Adafruit_EPD::clearBuffer() {
448448
if (use_sram) {
449-
if (buffer1_size != 0) {
450-
if (blackInverted) {
451-
sram.erase(buffer1_addr, buffer1_size, 0xFF);
452-
} else {
453-
sram.erase(buffer1_addr, buffer1_size, 0x00);
454-
}
449+
if (blackInverted) {
450+
sram.erase(blackbuffer_addr, buffer1_size, 0xFF);
451+
} else {
452+
sram.erase(blackbuffer_addr, buffer1_size, 0x00);
455453
}
456-
if (buffer2_size != 0) {
457-
if (colorInverted) {
458-
sram.erase(buffer2_addr, buffer2_size, 0xFF);
459-
} else {
460-
sram.erase(buffer2_addr, buffer2_size, 0x00);
461-
}
454+
if (colorInverted) {
455+
sram.erase(colorbuffer_addr, buffer2_size, 0xFF);
456+
} else {
457+
sram.erase(colorbuffer_addr, buffer2_size, 0x00);
462458
}
463459
} else {
464-
if (buffer1) {
460+
if (black_buffer) {
465461
if (blackInverted) {
466-
memset(buffer1, 0xFF, buffer1_size);
462+
memset(black_buffer, 0xFF, buffer1_size);
467463
} else {
468-
memset(buffer1, 0x00, buffer1_size);
464+
memset(black_buffer, 0x00, buffer1_size);
469465
}
470466
}
471-
if (buffer2) {
467+
if (color_buffer) {
472468
if (colorInverted) {
473-
memset(buffer2, 0xFF, buffer2_size);
469+
memset(color_buffer, 0xFF, buffer2_size);
474470
} else {
475-
memset(buffer2, 0x00, buffer2_size);
471+
memset(color_buffer, 0x00, buffer2_size);
476472
}
477473
}
478474
}

src/drivers/Adafruit_UC8151D.cpp

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -214,22 +214,22 @@ void Adafruit_UC8151D::displayPartial(uint16_t x1, uint16_t y1, uint16_t x2, uin
214214
case 0:
215215
EPD_swap(x1, y1);
216216
EPD_swap(x2, y2);
217-
y1 = WIDTH - y1;
218-
y2 = WIDTH - y2;
217+
y1 = WIDTH - y1 - 1;
218+
y2 = WIDTH - y2 - 1;
219219
break;
220220
case 1:
221221
break;
222222
case 2:
223223
EPD_swap(x1, y1);
224224
EPD_swap(x2, y2);
225-
x1 = HEIGHT - x1;
226-
x2 = HEIGHT - x2;
225+
x1 = HEIGHT - x1 - 1;
226+
x2 = HEIGHT - x2 - 1;
227227
break;
228228
case 3:
229-
y1 = WIDTH - y1;
230-
y2 = WIDTH - y2;
231-
x1 = HEIGHT - x1;
232-
x2 = HEIGHT - x2;
229+
y1 = WIDTH - y1 - 1;
230+
y2 = WIDTH - y2 - 1;
231+
x1 = HEIGHT - x1 - 1;
232+
x2 = HEIGHT - x2 - 1;
233233
}
234234
if (x1 > x2)
235235
EPD_swap(x1, x2);
@@ -247,11 +247,6 @@ void Adafruit_UC8151D::displayPartial(uint16_t x1, uint16_t y1, uint16_t x2, uin
247247
Serial.println(y2);
248248
*/
249249

250-
// x1 and x2 must be on byte boundaries
251-
x1 -= x1 % 8; // round down;
252-
x2 = (x2 + 7) & ~0b111; // round up
253-
254-
255250
// backup & change init to the partial code
256251
const uint8_t *init_code_backup = _epd_init_code;
257252
const uint8_t *lut_code_backup = _epd_lut_code;
@@ -271,44 +266,28 @@ void Adafruit_UC8151D::displayPartial(uint16_t x1, uint16_t y1, uint16_t x2, uin
271266
EPD_command(UC8151D_PTIN);
272267

273268
buf[0] = x1;
274-
buf[1] = x2-1;
269+
buf[1] = x2;
275270
buf[2] = y1 >> 8;
276271
buf[3] = y1 & 0xFF;
277-
buf[4] = (y2-1) >> 8;
278-
buf[5] = (y2-1) & 0xFF;
272+
buf[4] = (y2) >> 8;
273+
buf[5] = (y2) & 0xFF;
279274
buf[6] = 0x28;
280275

281276
EPD_command(UC8151D_PTL, buf, 7); //resolution setting
282277

283-
Serial.printf("Buffer=1 %04x: ", &buffer1);
284-
Serial.printf("Buffer=2 %04x: ", &buffer2);
285-
286278
// buffer 1 has the old data from the last update
287279
if (use_sram) {
288280
if (partialsSinceLastFullUpdate == 0) {
289281
// first partial update
290-
Serial.println("Erasing SRAM buffer 1");
291282
sram.erase(buffer1_addr, buffer1_size, 0xFF);
292283
}
293284
writeSRAMFramebufferToEPD(buffer1_addr, buffer1_size, 0, true);
294285
} else {
295286
if (partialsSinceLastFullUpdate == 0) {
296287
// first partial update
297-
Serial.println("Erasing RAM buffer 1");
298288
memset(buffer1, 0xFF, buffer1_size);
299289
}
300290

301-
/*
302-
Serial.println("Buffer 1)");
303-
for (uint16_t i = 0; i < buffer1_size; i++) {
304-
uint8_t d = buffer1[i];
305-
Serial.printf("%02x", d);
306-
if ((i+1) % (WIDTH/8) == 0)
307-
Serial.println();
308-
}
309-
Serial.println();
310-
*/
311-
312291
writeRAMFramebufferToEPD(buffer1, buffer1_size, 0, true);
313292
}
314293

0 commit comments

Comments
 (0)