Source code for adafruit_bme280.protocol

# SPDX-FileCopyrightText: 2022 Randall Bohn (dexter)
#
# SPDX-License-Identifier: MIT
"Provides the protocol objects for I2C and SPI"

from busio import I2C, SPI
from digitalio import DigitalInOut


[docs] class I2C_Impl: "Protocol implementation for the I2C bus." def __init__(self, i2c: I2C, address: int) -> None: from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel i2c_device, ) self._i2c = i2c_device.I2CDevice(i2c, address)
[docs] def read_register(self, register: int, length: int) -> bytearray: "Read from the device register." with self._i2c as i2c: i2c.write(bytes([register & 0xFF])) result = bytearray(length) i2c.readinto(result) return result
[docs] def write_register_byte(self, register: int, value: int) -> None: """Write to the device register""" with self._i2c as i2c: i2c.write(bytes([register & 0xFF, value & 0xFF]))
[docs] class SPI_Impl: """Protocol implemenation for the SPI bus.""" def __init__( self, spi: SPI, cs: DigitalInOut, baudrate: int = 100000, ) -> None: from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel spi_device, ) self._spi = spi_device.SPIDevice(spi, cs, baudrate=baudrate)
[docs] def read_register(self, register: int, length: int) -> bytearray: "Read from the device register." register = (register | 0x80) & 0xFF # Read single, bit 7 high. with self._spi as spi: spi.write(bytearray([register])) # pylint: disable=no-member result = bytearray(length) spi.readinto(result) # pylint: disable=no-member # print("$%02X => %s" % (register, [hex(i) for i in result])) return result
[docs] def write_register_byte(self, register: int, value: int) -> None: "Write value to the device register." register &= 0x7F # Write, bit 7 low. with self._spi as spi: spi.write(bytes([register, value & 0xFF])) # pylint: disable=no-member