Skip to content

Commit 1ed88be

Browse files
authored
Merge pull request #17 from fourstix/b_revert
Revert write_then_readinto to write() folowed by read()
2 parents 094cb9b + 7c14aa9 commit 1ed88be

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

README.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,23 @@ Usage Example
154154
# For a different address use QwiicTwist(i2c, address)
155155
# twist = QwiicTwist(i2c, 0x3E)
156156
157+
Upgrading
158+
=========
159+
On supported GNU/Linux systems like the Raspberry Pi, you can upgrade the driver
160+
to the latest published version.
161+
162+
To upgrade for current user:
163+
164+
.. code-block:: shell
165+
166+
pip3 install --upgrade sparkfun-circuitpython-qwiicjoystick
167+
168+
To upgrade system-wide (this may be required in some cases):
169+
170+
.. code-block:: shell
171+
172+
sudo pip3 install --upgrade sparkfun-circuitpython-qwiicjoystick
173+
157174
Contributing
158175
============
159176

sparkfun_qwiictwist.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,12 @@ def change_address(self, new_address: int) -> bool:
352352
def _read_register8(self, addr: int) -> int:
353353
# Read and return a byte from the specified 8-bit register address.
354354
with self._device as device:
355+
device.write(bytes([addr & 0xFF]))
355356
result = bytearray(1)
356-
device.write_then_readinto(bytes([addr & 0xFF]), result)
357+
# write_then_readinto() does not work reliably,
358+
# so do explicit write followed by read into
359+
# device.write_then_readinto(bytes([addr & 0xFF]), result)
360+
device.readinto(result)
357361
if self._debug:
358362
print("$%02X => %s" % (addr, [hex(i) for i in result]))
359363
return result[0]
@@ -368,8 +372,12 @@ def _write_register8(self, addr: int, value: int) -> None:
368372
def _read_register16(self, addr: int) -> int:
369373
# Read and return a 16-bit value from the specified 8-bit register address.
370374
with self._device as device:
375+
device.write(bytes([addr & 0xFF]))
371376
result = bytearray(2)
372-
device.write_then_readinto(bytes([addr & 0xFF]), result)
377+
# write_then_readinto() does not work reliably,
378+
# so do explicit write followed by read into
379+
# device.write_then_readinto(bytes([addr & 0xFF]), result)
380+
device.readinto(result)
373381
if self._debug:
374382
print("$%02X => %s" % (addr, [hex(i) for i in result]))
375383
return (result[1] << 8) | result[0]

0 commit comments

Comments
 (0)