Merge remote-tracking branch 'origin/develop' into feat-touch
# Conflicts: # freeink-sdk # lib/I18n/translations/slovak.yaml # platformio.ini # src/components/icons/bookmark.h
This commit is contained in:
@@ -81,6 +81,27 @@ void HalDisplay::copyGrayscaleBuffers(const uint8_t* lsbBuffer, const uint8_t* m
|
||||
einkDisplay.copyGrayscaleBuffers(lsbBuffer, msbBuffer);
|
||||
}
|
||||
|
||||
void HalDisplay::displayGrayscaleBase(RefreshMode fallback, bool turnOffScreen) {
|
||||
// X3: a HALF fallback means the caller wants a clean base (e.g. the sleep
|
||||
// cover, a full-screen swap from arbitrary prior content). Without this, the
|
||||
// X3 grayscale base takes its gentle differential happy path and the prior
|
||||
// home/reader frame ghosts through the soft aa_pre_bw_mid waveform. Forcing a
|
||||
// resync makes displayGrayscaleBase clear first, matching displayBuffer(HALF).
|
||||
// The reader's FAST path is deliberately left on the differential path so
|
||||
// per-page grayscale stays cheap.
|
||||
if (gpio.deviceIsX3() && fallback == RefreshMode::HALF_REFRESH) {
|
||||
einkDisplay.requestResync(1);
|
||||
}
|
||||
|
||||
einkDisplay.displayGrayscaleBase(convertRefreshMode(fallback), turnOffScreen);
|
||||
}
|
||||
|
||||
void HalDisplay::preconditionGrayscale() { einkDisplay.preconditionGrayscale(); }
|
||||
|
||||
void HalDisplay::preconditionGrayscale(uint16_t x, uint16_t y, uint16_t w, uint16_t h) {
|
||||
einkDisplay.preconditionGrayscale(x, y, w, h);
|
||||
}
|
||||
|
||||
void HalDisplay::copyGrayscaleLsbBuffers(const uint8_t* lsbBuffer) { einkDisplay.copyGrayscaleLsbBuffers(lsbBuffer); }
|
||||
|
||||
void HalDisplay::copyGrayscaleMsbBuffers(const uint8_t* msbBuffer) { einkDisplay.copyGrayscaleMsbBuffers(msbBuffer); }
|
||||
|
||||
@@ -47,6 +47,19 @@ class HalDisplay {
|
||||
// Access to frame buffer
|
||||
uint8_t* getFrameBuffer() const;
|
||||
|
||||
// X3 grayscale preconditioning (OEM "AA-pre-BW(mid)" settle pass), windowed
|
||||
// to the gray region in physical panel coordinates (no-arg = full frame).
|
||||
// Call after the BW base frame is displayed and before the grayscale planes
|
||||
// are written; no-op on X4. See EInkDisplay::preconditionGrayscale.
|
||||
void preconditionGrayscale();
|
||||
void preconditionGrayscale(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
|
||||
// Display the framebuffer as the base frame for a grayscale overlay that
|
||||
// follows. On X3, HALF fallback first requests a resync to match
|
||||
// displayBuffer(HALF); FAST fallback keeps the OEM differential base waveform
|
||||
// ("AA-pre-BW(mid)"). Other panels display normally with `fallback` mode.
|
||||
void displayGrayscaleBase(RefreshMode fallback = HALF_REFRESH, bool turnOffScreen = false);
|
||||
|
||||
void copyGrayscaleBuffers(const uint8_t* lsbBuffer, const uint8_t* msbBuffer);
|
||||
void copyGrayscaleLsbBuffers(const uint8_t* lsbBuffer);
|
||||
void copyGrayscaleMsbBuffers(const uint8_t* msbBuffer);
|
||||
|
||||
Reference in New Issue
Block a user