+class Connection:
+ __instance = None
+ @staticmethod
+ def getInstance():
+ """ Static access method. """
+ if Connection.__instance == None:
+ Connection()
+ return Connection.__instance
+
+ def __init__(self):
+ """ Virtually private constructor. """
+ if Connection.__instance != None:
+ raise Exception("This class is a singleton!")
+ else:
+ from binhoHostAdapter import binhoHostAdapter
+ from binhoHostAdapter import binhoUtilities
+
+ utilities = binhoUtilities.binhoUtilities()
+ devices = utilities.listAvailableDevices()
+
+ if len(devices) > 0:
+ Connection.__instance = binhoHostAdapter.binhoHostAdapter(devices[0])
+ else:
+ raise RuntimeError('No Binho host adapter found!')
\ No newline at end of file
-#from adafruit_blinka.microcontroller.nova.pin import Pin
-
class I2C:
def __init__(self):
- # change GPIO controller to I2C
- from binhoHostAdapter import binhoHostAdapter
- from binhoHostAdapter import binhoUtilities
-
- utilities = binhoUtilities.binhoUtilities()
- devices = utilities.listAvailableDevices()
-
- if len(devices) > 0:
-
- self._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
- self._nova.setNumericalBase(10)
- self._nova.setOperationMode(0, "I2C")
- self._nova.setPullUpStateI2C(0, "EN")
- self._nova.setClockI2C(0, 400000)
-
- else:
- raise RuntimeError('No Binho host adapter found!')
+ from adafruit_blinka.microcontroller.nova import Connection
+ self._nova = Connection.getInstance()
+ self._nova.setNumericalBase(10)
+ self._nova.setOperationMode(0, "I2C")
+ self._nova.setPullUpStateI2C(0, "EN")
+ self._nova.setClockI2C(0, 400000)
def scan(self):
def __init__(self, pin_id=None):
if not Pin._nova:
- from binhoHostAdapter import binhoHostAdapter
- from binhoHostAdapter import binhoUtilities
-
- utilities = binhoUtilities.binhoUtilities()
- devices = utilities.listAvailableDevices()
-
- if len(devices) > 0:
- Pin._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
+ from adafruit_blinka.microcontroller.nova import Connection
+ Pin._nova = Connection.getInstance()
# check if pin is valid
if pin_id > 4:
raise ValueError("Invalid pin {}.".format(pin_id))
IO4 = Pin(4)
PWM0 = IO0
-PWM1 = IO1
+# No PWM support on IO1
PWM2 = IO2
-# No PWM support on IO3
+PWM3 = IO3
PWM4 = IO4
-pwmOuts = ( ((1, 0), PWM0), ((1, 1), PWM1), ((1, 2), PWM2), ((1, 4), PWM4) )
\ No newline at end of file
+pwmOuts = ( ((1, 0), PWM0), ((1, 2), PWM2), ((1, 3), PWM3), ((1, 4), PWM4) )
\ No newline at end of file
"""
if PWMOut._nova is None:
- if Pin._nova is not None:
- # check if Pin already connected to Binho Nova
- PWMOut._nova = Pin._nova
- else:
- from binhoHostAdapter import binhoHostAdapter
- from binhoHostAdapter import binhoUtilities
-
- utilities = binhoUtilities.binhoUtilities()
- devices = utilities.listAvailableDevices()
-
- if len(devices) > 0:
- PWMOut._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
- else:
- raise RuntimeError('No Binho Host Adapter found!')
+ from adafruit_blinka.microcontroller.nova import Connection
+ PWMOut._nova = Connection.getInstance()
self._pwmpin = None
self._open(pin, duty_cycle, frequency, variable_frequency)
# set frequency
self.frequency = freq
- PWMOut._nova.setIOpinPWMFreq(self._pwmpin, self.frequency)
# set period
self._period = self._get_period()
if self._channel is not None:
#self.duty_cycle = 0
self._set_enabled(False) # make to disable before unexport
- """
- try:
- #unexport_path = os.path.join(channel_path, self._unexport_path)
- with open(os.path.join(channel_path, self._unexport_path), "w") as f_unexport:
- f_unexport.write("%d\n" % self._pwmpin)
- except IOError as e:
- raise PWMError(e.errno, "Unexporting PWM pin: " + e.strerror)
- """
+
except Exception as e:
# due to a race condition for which I have not yet been
# able to find the root cause, deinit() often fails
-#from adafruit_blinka.microcontroller.nova.pin import Pin
-
class SPI:
PAYLOAD_MAX_LENGTH = 64
def __init__(self, clock):
- from binhoHostAdapter import binhoHostAdapter
- from binhoHostAdapter import binhoUtilities
-
- utilities = binhoUtilities.binhoUtilities()
- devices = utilities.listAvailableDevices()
-
- if len(devices) > 0:
- self._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
- self._nova.setOperationMode(0, 'SPI')
- self._nova.setClockSPI(0, clock)
- self._nova.setModeSPI(0, 0)
- self._nova.setIOpinMode(0, 'DOUT')
- self._nova.setIOpinValue(0, 'HIGH')
- self._nova.beginSPI(0)
- # Cpol and Cpha set by mode
- # Mode Cpol Cpha
- # 0 0 0
- # 1 0 1
- # 2 1 0
- # 3 1 1
-
- else:
- raise RuntimeError('No Binho host adapter found!')
+ from adafruit_blinka.microcontroller.nova import Connection
+ self._nova = Connection.getInstance()
+ self._nova.setOperationMode(0, 'SPI')
+ self._nova.setClockSPI(0, clock)
+ self._nova.setModeSPI(0, 0)
+ self._nova.setIOpinMode(0, 'DOUT')
+ self._nova.setIOpinValue(0, 'HIGH')
+ self._nova.beginSPI(0)
+ # Cpol and Cpha set by mode
+ # Mode Cpol Cpha
+ # 0 0 0
+ # 1 0 1
+ # 2 1 0
+ # 3 1 1
def init(self, baudrate=100000, polarity=0, phase=0, bits=8,
firstbit=MSB, sck=None, mosi=None, miso=None):