Skip to content

Commit aa2ab9c

Browse files
committed
Simplify MicroPython read/write functions
Use MicroPython's readfrom_mem() and writeto_mem() functions
1 parent aa0c112 commit aa2ab9c

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

qwiic_i2c/__init__.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,20 @@
6363
#
6464
#-----------------------------------------------------------------------------
6565
# Drivers and driver baseclass
66-
from .i2c_driver import I2CDriver
66+
from .i2c_driver import I2CDriver
6767

6868
_drivers = []
69+
# foo = ["LinuxI2C", "CircuitPythonI2C", "MicroPythonI2C"]
70+
71+
# for driver in foo:
72+
# try:
73+
# print("Importing:", driver)
74+
# submodule = __import__(driver)
75+
# print("Submodule:", submodule)
76+
# _drivers.append(submodule)
77+
# except:
78+
# print("Could not import:", driver)
79+
# pass
6980

7081
try:
7182
from .linux_i2c import LinuxI2C

qwiic_i2c/micropython_i2c.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,40 +97,28 @@ def __setattr__(self, name, value):
9797

9898
# read commands ----------------------------------------------------------
9999
def readWord(self, address, commandCode):
100-
buffer = bytearray(2)
101-
self.i2cbus.writeto(address, bytes([commandCode]), False)
102-
self.i2cbus.readfrom_into(address, buffer)
100+
buffer = self.i2cbus.readfrom_mem(address, commandCode, 2)
103101
return (buffer[1] << 8 ) | buffer[0]
104102

105103
def readByte(self, address, commandCode):
106-
buffer = bytearray(1)
107-
self.i2cbus.writeto(address, bytes([commandCode]), False)
108-
self.i2cbus.readfrom_into(address, buffer)
109-
return buffer[0]
104+
return self.i2cbus.readfrom_mem(address, commandCode, 1)[0]
110105

111106
def readBlock(self, address, commandCode, nBytes):
112-
buffer = bytearray(nBytes)
113-
self.i2cbus.writeto(address, bytes([commandCode]), False)
114-
self.i2cbus.readfrom_into(address, buffer)
115-
return buffer
107+
return self.i2cbus.readfrom_mem(address, commandCode, nBytes)
116108

117109

118110
# write commands----------------------------------------------------------
119111
def writeCommand(self, address, commandCode):
120-
self.i2cbus.writeto(address, bytes([commandCode]))
112+
self.i2cbus.writeto(address, commandCode.to_bytes(1, 'little'))
121113

122114
def writeWord(self, address, commandCode, value):
123-
buffer = bytearray(2)
124-
buffer[0] = value & 0xFF
125-
buffer[1] = (value >> 8) & 0xFF
126-
self.i2cbus.writeto(address, bytes(bytes([commandCode]) + buffer), False)
115+
self.i2cbus.writeto_mem(address, commandCode, value.to_bytes(2, 'little'))
127116

128117
def writeByte(self, address, commandCode, value):
129-
self.i2cbus.writeto(address, bytes([commandCode, value]))
118+
self.i2cbus.writeto_mem(address, commandCode, value.to_bytes(1, 'little'))
130119

131120
def writeBlock(self, address, commandCode, value):
132-
data = [value] if not isinstance(value, list) else value
133-
self.i2cbus.writeto(address, bytes(bytes([commandCode]) + bytes(data)), False)
121+
self.i2cbus.writeto_mem(address, commandCode, bytes(value))
134122

135123

136124
# scan -------------------------------------------------------------------

0 commit comments

Comments
 (0)