From: foamyguy Date: Wed, 20 Nov 2024 22:30:24 +0000 (-0600) Subject: Merge pull request #142 from FoamyGuy/i2c_buffer_sleepwake_fix X-Git-Tag: 2.1.2 X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka_Displayio.git/commitdiff_plain/145e02d9b49332d8a34e4ae3e1fb6a9d3266fb1b?hp=fe81d2874294a61f3ad7c73cb15e56d06e85063d Merge pull request #142 from FoamyGuy/i2c_buffer_sleepwake_fix I2c buffer sleepwake fix --- diff --git a/docs/conf.py b/docs/conf.py index a8628ab..df3ec85 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -102,17 +102,7 @@ napoleon_numpy_docstring = False # on_rtd = os.environ.get("READTHEDOCS", None) == "True" -if not on_rtd: # only import and set the theme if we're building docs locally - try: - import sphinx_rtd_theme - - html_theme = "sphinx_rtd_theme" - html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), "."] - except: - html_theme = "default" - html_theme_path = ["."] -else: - html_theme_path = ["."] +html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/i2cdisplaybus/__init__.py b/i2cdisplaybus/__init__.py index c8d6441..c963158 100644 --- a/i2cdisplaybus/__init__.py +++ b/i2cdisplaybus/__init__.py @@ -21,6 +21,8 @@ i2cdisplaybus for Blinka """ import time +from typing import Optional + import busio import digitalio from circuitpython_typing import ReadableBuffer @@ -87,7 +89,7 @@ class I2CDisplayBus: done. """ self._begin_transaction() - self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, bytes([command] + data)) + self._send(DISPLAY_COMMAND, CHIP_SELECT_UNTOUCHED, data, command) self._end_transaction() def _send( @@ -95,14 +97,24 @@ class I2CDisplayBus: data_type: int, _chip_select: int, # Chip select behavior data: ReadableBuffer, + command: Optional[int] = None, ): + # pylint: disable=too-many-branches if data_type == DISPLAY_COMMAND: n = len(data) + if command is not None: + n += 1 if n > 0: command_bytes = bytearray(n * 2) for i in range(n): command_bytes[2 * i] = 0x80 - command_bytes[2 * i + 1] = data[i] + if command is not None: + if i > 0: + command_bytes[2 * i + 1] = data[i] + else: + command_bytes[2 * i + 1] = command + else: + command_bytes[2 * i + 1] = data[i] try: self._i2c.writeto(self._dev_addr, buffer=command_bytes) @@ -113,9 +125,16 @@ class I2CDisplayBus: ) from error raise error else: - data_bytes = bytearray(len(data) + 1) + size = len(data) + 1 + if command is not None: + size += 1 + data_bytes = bytearray(size) data_bytes[0] = 0x40 - data_bytes[1:] = data + if command is not None: + data_bytes[1] = command + data_bytes[2:] = data + else: + data_bytes[1:] = data try: self._i2c.writeto(self._dev_addr, buffer=data_bytes) except OSError as error: