Skip to content

Commit

Permalink
i2c_gpio: Add methods to set or reset some bits in a register
Browse files Browse the repository at this point in the history
This can be used to set or reset some bits in a register while
preserving the remaining state.

Signed-off-by: Chris Fiege <[email protected]>
  • Loading branch information
SmithChart committed Nov 24, 2023
1 parent 0bb9612 commit 768f54b
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions usbsdmux/i2c_gpio.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,20 @@ def output_values(self, values: int, bitmask: int = 0xFF):
val = val | (values & bitmask) # set bits set in values and bitmask
self._write_register(self.register_outputPort, val)

def register_reset_bit(self, addr: int, bitmask: int):
"""Resets the bits with '1' in <bitmask> in the register <addr>"""

val = self.read_register(addr)[0]
val = (val & ~bitmask) & 0xFF
self._write_register(addr, val)

def register_set_bit(self, addr: int, bitmask: int):
"""Sets the bits with '1' in <bitmask> in the register <addr>"""

val = self.read_register(addr)[0]
val = (val | bitmask) & 0xFF
self._write_register(addr, val)


class Pca9536(I2cGpio):
"""
Expand Down

0 comments on commit 768f54b

Please sign in to comment.