This commit is contained in:
Sebastian Domoszlai 2023-05-11 01:23:24 -04:00 committed by GitHub
commit b584d6579e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -14,6 +14,15 @@ from micropython import const
import adafruit_framebuf import adafruit_framebuf
from adafruit_epd.epd import Adafruit_EPD from adafruit_epd.epd import Adafruit_EPD
try:
"""Needed for type annotations"""
from typing import Union, Any
from busio import SPI
from digitalio import DigitalInOut
except ImportError:
pass
__version__ = "0.0.0+auto.0" __version__ = "0.0.0+auto.0"
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_EPD.git" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_EPD.git"
@ -49,8 +58,17 @@ class Adafruit_IL0398(Adafruit_EPD):
# pylint: disable=too-many-arguments # pylint: disable=too-many-arguments
def __init__( def __init__(
self, width, height, spi, *, cs_pin, dc_pin, sramcs_pin, rst_pin, busy_pin self,
): width: int,
height: int,
spi: SPI,
*,
cs_pin: DigitalInOut,
dc_pin: DigitalInOut,
sramcs_pin: DigitalInOut,
rst_pin: DigitalInOut,
busy_pin: DigitalInOut
) -> None:
super().__init__( super().__init__(
width, height, spi, cs_pin, dc_pin, sramcs_pin, rst_pin, busy_pin width, height, spi, cs_pin, dc_pin, sramcs_pin, rst_pin, busy_pin
) )
@ -76,13 +94,13 @@ class Adafruit_IL0398(Adafruit_EPD):
self.set_color_buffer(1, True) self.set_color_buffer(1, True)
# pylint: enable=too-many-arguments # pylint: enable=too-many-arguments
def begin(self, reset=True): def begin(self, reset: bool = True) -> None:
"""Begin communication with the display and set basic settings""" """Begin communication with the display and set basic settings"""
if reset: if reset:
self.hardware_reset() self.hardware_reset()
self.power_down() self.power_down()
def busy_wait(self): def busy_wait(self) -> None:
"""Wait for display to be done with current task, either by polling the """Wait for display to be done with current task, either by polling the
busy pin, or pausing""" busy pin, or pausing"""
if self._busy: if self._busy:
@ -92,7 +110,7 @@ class Adafruit_IL0398(Adafruit_EPD):
else: else:
time.sleep(0.5) time.sleep(0.5)
def power_up(self): def power_up(self) -> None:
"""Power up the display in preparation for writing RAM and updating""" """Power up the display in preparation for writing RAM and updating"""
self.hardware_reset() self.hardware_reset()
self.busy_wait() self.busy_wait()
@ -111,14 +129,14 @@ class Adafruit_IL0398(Adafruit_EPD):
self.command(_IL0398_RESOLUTION, bytearray([_b0, _b1, _b2, _b3])) self.command(_IL0398_RESOLUTION, bytearray([_b0, _b1, _b2, _b3]))
time.sleep(0.05) time.sleep(0.05)
def power_down(self): def power_down(self) -> None:
"""Power down the display - required when not actively displaying!""" """Power down the display - required when not actively displaying!"""
self.command(_IL0398_CDI, bytearray([0xF7])) self.command(_IL0398_CDI, bytearray([0xF7]))
self.command(_IL0398_POWER_OFF) self.command(_IL0398_POWER_OFF)
self.busy_wait() self.busy_wait()
self.command(_IL0398_DEEP_SLEEP, bytearray([0xA5])) self.command(_IL0398_DEEP_SLEEP, bytearray([0xA5]))
def update(self): def update(self) -> None:
"""Update the display from internal memory""" """Update the display from internal memory"""
self.command(_IL0398_DISPLAY_REFRESH) self.command(_IL0398_DISPLAY_REFRESH)
time.sleep(0.1) time.sleep(0.1)
@ -126,7 +144,7 @@ class Adafruit_IL0398(Adafruit_EPD):
if not self._busy: if not self._busy:
time.sleep(15) # wait 15 seconds time.sleep(15) # wait 15 seconds
def write_ram(self, index): def write_ram(self, index: Union[0, 1]) -> Any:
"""Send the one byte command for starting the RAM write process. Returns """Send the one byte command for starting the RAM write process. Returns
the byte read at the same time over SPI. index is the RAM buffer, can be the byte read at the same time over SPI. index is the RAM buffer, can be
0 or 1 for tri-color displays.""" 0 or 1 for tri-color displays."""
@ -136,7 +154,9 @@ class Adafruit_IL0398(Adafruit_EPD):
return self.command(_IL0398_DTM2, end=False) return self.command(_IL0398_DTM2, end=False)
raise RuntimeError("RAM index must be 0 or 1") raise RuntimeError("RAM index must be 0 or 1")
def set_ram_address(self, x, y): # pylint: disable=unused-argument, no-self-use def set_ram_address(
self, x: int, y: int
) -> None: # pylint: disable=unused-argument, no-self-use
"""Set the RAM address location, not used on this chipset but required by """Set the RAM address location, not used on this chipset but required by
the superclass""" the superclass"""
return # on this chip it does nothing return # on this chip it does nothing