* Author(s): cefn
"""
+import threading
+
from adafruit_blinka import Enum, Lockable, agnostic
from adafruit_blinka.agnostic import board_id, detector
import adafruit_platformdetect.board as ap_board
self._i2c = _I2C(portId, mode=_I2C.MASTER, baudrate=frequency)
break
else:
- raise NotImplementedError(
- "No Hardware I2C on (scl,sda)={}\nValid UART ports: {}".format((scl, sda), i2cPorts)
+ raise ValueError(
+ "No Hardware I2C on (scl,sda)={}\nValid I2C ports: {}".format((scl, sda), i2cPorts)
)
+ self._lock = threading.RLock()
+
def deinit(self):
try:
del self._i2c
pass
def __enter__(self):
+ self._lock.acquire()
return self
def __exit__(self, exc_type, exc_value, traceback):
+ self._lock.release()
self.deinit()
def scan(self):
self._pins = (portSck, portMosi, portMiso)
break
else:
- raise NotImplementedError(
+ raise ValueError(
"No Hardware SPI on (SCLK, MOSI, MISO)={}\nValid SPI ports:{}".
format((clock, MOSI, MISO), spiPorts))
self._spi = None
self._pinIds = None
+ @property
+ def frequency(self):
+ try:
+ return self._spi.frequency
+ except AttributeError:
+ raise NotImplementedError("Frequency attribute not implemented for this platform")
+
def write(self, buf, start=0, end=None):
return self._spi.write(buf, start, end)
)
break
else:
- raise NotImplementedError(
+ raise ValueError(
"No Hardware UART on (tx,rx)={}\nValid UART ports: {}".format((tx, rx), uartPorts)
)