Skip to content

Commit b3135db

Browse files
authored
Fix Crema Soundup menu flickering due to unsupported GLR16 waveform (#582)
The Crema Soundup was using TolinoEPDController, which uses the GLR16 waveform for UI refreshes. The Crema Soundup firmware does not properly support GLR16, causing menu popups to flicker and turn white. Add a dedicated CremaEPDController that uses GC16 for UI refreshes instead of GLR16.
1 parent 4be2e3e commit b3135db

2 files changed

Lines changed: 70 additions & 1 deletion

File tree

app/src/main/java/org/koreader/launcher/device/EPDFactory.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package org.koreader.launcher.device
55

66
import android.util.Log
7+
import org.koreader.launcher.device.epd.CremaEPDController
78
import org.koreader.launcher.device.epd.NookEPDController
89
import org.koreader.launcher.device.epd.TolinoEPDController
910
import org.koreader.launcher.device.epd.RK3026EPDController
@@ -77,7 +78,6 @@ object EPDFactory {
7778
}
7879

7980
DeviceInfo.Id.CREMA,
80-
DeviceInfo.Id.CREMA_0660L,
8181
DeviceInfo.Id.CREMA_CARTA_G,
8282
DeviceInfo.Id.HANVON_960,
8383
DeviceInfo.Id.ONYX_JDREAD,
@@ -94,6 +94,12 @@ object EPDFactory {
9494
TolinoEPDController()
9595
}
9696

97+
DeviceInfo.Id.CREMA_0660L,
98+
-> {
99+
logController("Crema/NTX")
100+
CremaEPDController()
101+
}
102+
97103
DeviceInfo.Id.ONYX_DARWIN5,
98104
DeviceInfo.Id.ONYX_DARWIN9,
99105
DeviceInfo.Id.ONYX_EDISON,
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/* Crema e-ink devices (NTX-based, GC16 for UI instead of GLR16) */
2+
3+
package org.koreader.launcher.device.epd
4+
5+
import org.koreader.launcher.device.EPDInterface
6+
import org.koreader.launcher.device.epd.freescale.NTXEPDController
7+
8+
class CremaEPDController : NTXEPDController(), EPDInterface {
9+
10+
override fun getPlatform(): String {
11+
return "freescale"
12+
}
13+
14+
override fun getMode(): String {
15+
return "all"
16+
}
17+
18+
override fun getWaveformFull(): Int {
19+
return EINK_WAVEFORM_UPDATE_FULL + EINK_WAVEFORM_MODE_GC16
20+
}
21+
22+
override fun getWaveformPartial(): Int {
23+
return EINK_WAVEFORM_UPDATE_PARTIAL + EINK_WAVEFORM_MODE_GC16
24+
}
25+
26+
override fun getWaveformFullUi(): Int {
27+
return EINK_WAVEFORM_UPDATE_FULL + EINK_WAVEFORM_MODE_GC16
28+
}
29+
30+
override fun getWaveformPartialUi(): Int {
31+
return EINK_WAVEFORM_UPDATE_PARTIAL + EINK_WAVEFORM_MODE_GC16
32+
}
33+
34+
override fun getWaveformFast(): Int {
35+
return EINK_WAVEFORM_UPDATE_PARTIAL + EINK_WAVEFORM_MODE_DU
36+
}
37+
38+
override fun getWaveformDelay(): Int {
39+
return EINK_WAVEFORM_DELAY
40+
}
41+
42+
override fun getWaveformDelayUi(): Int {
43+
return EINK_WAVEFORM_DELAY
44+
}
45+
46+
override fun getWaveformDelayFast(): Int {
47+
return EINK_WAVEFORM_DELAY
48+
}
49+
50+
override fun needsView(): Boolean {
51+
return true
52+
}
53+
54+
override fun setEpdMode(targetView: android.view.View,
55+
mode: Int, delay: Long,
56+
x: Int, y: Int, width: Int, height: Int, epdMode: String?)
57+
{
58+
requestEpdMode(targetView, mode, delay, x, y, width, height)
59+
}
60+
61+
override fun resume() {}
62+
override fun pause() {}
63+
}

0 commit comments

Comments
 (0)