Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 1 addition & 11 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,7 @@
#
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,
Expand Down
27 changes: 23 additions & 4 deletions i2cdisplaybus/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
"""

import time
from typing import Optional

import busio
import digitalio
from circuitpython_typing import ReadableBuffer
Expand Down Expand Up @@ -87,22 +89,32 @@ def send(self, command: int, data: ReadableBuffer) -> None:
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(
self,
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)
Expand All @@ -113,9 +125,16 @@ def _send(
) 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:
Expand Down