+# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+"""Binho Nova pin names"""
+
+
class Pin:
"""A basic Pin class for use with Binho Nova."""
- IN = 'DIN'
- OUT = 'DOUT'
- AIN = 'AIN'
- AOUT = 'AOUT'
- PWM = 'PWM'
+ IN = "DIN"
+ OUT = "DOUT"
+ AIN = "AIN"
+ AOUT = "AOUT"
+ PWM = "PWM"
LOW = 0
HIGH = 1
def __init__(self, pin_id=None):
if not Pin._nova:
+ # pylint: disable=import-outside-toplevel
from adafruit_blinka.microcontroller.nova import Connection
+
+ # pylint: enable=import-outside-toplevel
+
Pin._nova = Connection.getInstance()
# check if pin is valid
if pin_id > 4:
self.id = pin_id
def init(self, mode=IN, pull=None):
+ """Initialize the Pin"""
if self.id is None:
raise RuntimeError("Can not init a None type pin.")
- # Nova does't have configurable internal pulls for
+ # Nova does't have configurable internal pulls for
if pull:
raise ValueError("Internal pull up/down not currently supported.")
Pin._nova.setIOpinMode(self.id, mode)
def value(self, val=None):
+ """Set or return the Pin Value"""
if self.id is None:
raise RuntimeError("Can not access a None type pin.")
# read
if val is None:
- return int(Pin._nova.getIOpinValue(self.id).split('VALUE ')[1])
+ return int(Pin._nova.getIOpinValue(self.id).split("VALUE ")[1])
# write
if val in (self.LOW, self.HIGH):
Pin._nova.setIOpinValue(self.id, val)
- else:
- raise RuntimeError("Invalid value for pin")
+ return None
+ raise RuntimeError("Invalid value for pin")
+
# create pin instances for each pin
IO0 = Pin(0)
IO3 = Pin(3)
IO4 = Pin(4)
-# create None type pins for I2C and SPI since they are expected to be defined
SCL = IO2
SDA = IO0
SCK = SCLK = IO3
UART1_RX = IO3
# ordered as uartId, txId, rxId
-uartPorts = ((0, UART1_TX, UART1_RX), )
\ No newline at end of file
+uartPorts = ((0, UART1_TX, UART1_RX),)