6
6
from busio import I2C , SPI
7
7
from digitalio import DigitalInOut
8
8
9
+
9
10
class I2C_Impl :
11
+ "Protocol implementation for the I2C bus."
12
+
10
13
def __init__ (self , i2c : I2C , address : int ) -> None :
11
14
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
12
15
i2c_device ,
13
16
)
14
17
15
18
self ._i2c = i2c_device .I2CDevice (i2c , address )
16
-
19
+
17
20
def read_register (self , register : int , length : int ) -> bytearray :
21
+ "Read from the device register."
18
22
with self ._i2c as i2c :
19
23
i2c .write (bytes ([register & 0xFF ]))
20
24
result = bytearray (length )
21
25
i2c .readinto (result )
22
26
return result
27
+
23
28
def write_register_byte (self , register : int , value : int ) -> None :
29
+ "Write to the device register."
24
30
with self ._i2c as i2c :
25
31
i2c .write (bytes ([register & 0xFF , value & 0xFF ]))
26
32
33
+
27
34
class SPI_Impl :
35
+ "Protocol implemenation for the SPI bus."
36
+
28
37
def __init__ (self , spi : SPI , cs : DigitalInOut , baudrate : int = 100000 ) -> None :
29
38
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
30
39
spi_device ,
31
40
)
32
41
33
42
self ._spi = spi_device .SPIDevice (spi , cs , baudrate = baudrate )
34
43
35
- def _read_register (self , register : int , length : int ) -> bytearray :
44
+ def read_register (self , register : int , length : int ) -> bytearray :
45
+ "Read from the device register."
36
46
register = (register | 0x80 ) & 0xFF # Read single, bit 7 high.
37
47
with self ._spi as spi :
38
48
spi .write (bytearray ([register ])) # pylint: disable=no-member
@@ -41,7 +51,8 @@ def _read_register(self, register: int, length: int) -> bytearray:
41
51
# print("$%02X => %s" % (register, [hex(i) for i in result]))
42
52
return result
43
53
44
- def _write_register_byte (self , register : int , value : int ) -> None :
54
+ def write_register_byte (self , register : int , value : int ) -> None :
55
+ "Write value to the device register."
45
56
register &= 0x7F # Write, bit 7 low.
46
57
with self ._spi as spi :
47
58
spi .write (bytes ([register , value & 0xFF ])) # pylint: disable=no-member
0 commit comments