Skip to content

Commit

Permalink
Remove from and to from i2c device reads and writes. The device class…
Browse files Browse the repository at this point in the history
… handles the address.
  • Loading branch information
tannewt committed Apr 10, 2017
1 parent 9c980a4 commit 2ed8676
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 24 deletions.
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -120,13 +120,13 @@ we must implement ``__get__`` and ``__set__``.
def __get__(self, obj, objtype=None):
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.read_into(self.buffer, start=1)
return bool(self.buffer[1] & self.bit_mask)
def __set__(self, obj, value):
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.read_into(self.buffer, start=1)
if value:
self.buffer[1] |= self.bit_mask
else:
Expand Down
6 changes: 3 additions & 3 deletions adafruit_register/i2c_bcd_alarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ def __init__(self, register_address, has_seconds=True, weekday_shared=True, week
def __get__(self, obj, objtype=None):
# Read the alarm register.
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.write(self.buffer, end=1, stop=False)
obj.i2c_device.read_into(self.buffer, start=1)

frequency = None
i = 1
Expand Down Expand Up @@ -162,4 +162,4 @@ def __set__(self, obj, value):
self.buffer[i + 2] = _bin2bcd(value[0].tm_mday)

with obj.i2c_device:
obj.i2c_device.writeto(self.buffer)
obj.i2c_device.write(self.buffer)
6 changes: 3 additions & 3 deletions adafruit_register/i2c_bcd_datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ def __init__(self, register_address, weekday_first=True, weekday_start=1):
def __get__(self, obj, objtype=None):
# Read and return the date and time.
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.write(self.buffer, end=1, stop=False)
obj.i2c_device.read_into(self.buffer, start=1)
return time.struct_time((_bcd2bin(self.buffer[7]) + 2000,
_bcd2bin(self.buffer[6]),
_bcd2bin(self.buffer[5 - self.weekday_offset]),
Expand All @@ -86,4 +86,4 @@ def __set__(self, obj, value):
self.buffer[6] = _bin2bcd(value.month)
self.buffer[7] = _bin2bcd(value.year - 2000)
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer)
obj.i2c_device.write(self.buffer)
10 changes: 5 additions & 5 deletions adafruit_register/i2c_bit.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,19 @@ def __init__(self, register_address, bit):

def __get__(self, obj, objtype=None):
with obj.i2c_device as i2c:
i2c.writeto(self.buffer, end=1, stop=False)
i2c.readfrom_into(self.buffer, start=1)
i2c.write(self.buffer, end=1, stop=False)
i2c.read_into(self.buffer, start=1)
return bool(self.buffer[1] & self.bit_mask)

def __set__(self, obj, value):
with obj.i2c_device as i2c:
i2c.writeto(self.buffer, end=1, stop=False)
i2c.readfrom_into(self.buffer, start=1)
i2c.write(self.buffer, end=1, stop=False)
i2c.read_into(self.buffer, start=1)
if value:
self.buffer[1] |= self.bit_mask
else:
self.buffer[1] &= ~self.bit_mask
i2c.writeto(self.buffer)
i2c.write(self.buffer)

class ROBit(RWBit):
"""Single bit register that is read only. Subclass of `RWBit`.
Expand Down
10 changes: 5 additions & 5 deletions adafruit_register/i2c_bits.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,22 @@ def __init__(self, num_bits, register_address, lowest_bit):

def __get__(self, obj, objtype=None):
with obj.i2c_device as i2c:
i2c.writeto(self.buffer, end=1, stop=False)
i2c.readfrom_into(self.buffer, start=1)
i2c.write(self.buffer, end=1, stop=False)
i2c.read_into(self.buffer, start=1)
return (self.buffer[1] & self.bit_mask) >> lowest_bit

def __set__(self, obj, value):
# Shift the value to the appropriate spot and set all bits that aren't
# ours to 1 (the negation of the bitmask.)
value = (value << self.lowest_bit) | ~self.bit_mask
with obj.i2c_device as i2c:
i2c.writeto(self.buffer, end=1, stop=False)
i2c.readfrom_into(self.buffer, start=1)
i2c.write(self.buffer, end=1, stop=False)
i2c.read_into(self.buffer, start=1)
# Set all of our bits to 1.
self.buffer[1] |= self.bit_mask
# Set all 0 bits to 0 by anding together.
self.buffer[1] &= value
i2c.writeto(self.buffer)
i2c.write(self.buffer)

class ROBits(RWBits):
"""
Expand Down
12 changes: 6 additions & 6 deletions adafruit_register/i2c_struct.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ def __init__(self, register_address, struct_format):

def __get__(self, obj, objtype=None):
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.write(self.buffer, end=1, stop=False)
obj.i2c_device.read_into(self.buffer, start=1)
return ustruct.unpack_from(self.format, memoryview(self.buffer)[1:])

def __set__(self, obj, value):
ustruct.pack_into(self.format, self.buffer, 1, *value)
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer)
obj.i2c_device.write(self.buffer)

class UnaryStruct:
"""
Expand All @@ -65,11 +65,11 @@ def __init__(self, register_address, struct_format):

def __get__(self, obj, objtype=None):
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer, end=1, stop=False)
obj.i2c_device.readfrom_into(self.buffer, start=1)
obj.i2c_device.write(self.buffer, end=1, stop=False)
obj.i2c_device.read_into(self.buffer, start=1)
return ustruct.unpack_from(self.format, memoryview(self.buffer)[1:])[0]

def __set__(self, obj, value):
ustruct.pack_into(self.format, self.buffer, 1, value)
with obj.i2c_device:
obj.i2c_device.writeto(self.buffer)
obj.i2c_device.write(self.buffer)

0 comments on commit 2ed8676

Please sign in to comment.