From 3ac838f85fced9853bdd232f0d91eea55021c176 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sun, 12 Jun 2016 13:31:13 +0100 Subject: [PATCH] Raise warning when spidev missing for hardware SPI --- gpiozero/spi.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/gpiozero/spi.py b/gpiozero/spi.py index 85352df..7a816fe 100644 --- a/gpiozero/spi.py +++ b/gpiozero/spi.py @@ -396,24 +396,30 @@ def SPI(**spi_args): raise SPIBadArgs( 'unrecognized keyword argument %s' % kwargs.popitem()[0]) if all(( - SpiDev is not None, spi_args['clock_pin'] == 11, spi_args['mosi_pin'] == 10, spi_args['miso_pin'] == 9, spi_args['select_pin'] in (7, 8), )): - try: - if shared: - return SharedSPIHardwareInterface( - port=0, device={8: 0, 7: 1}[spi_args['select_pin']]) - else: - return SPIHardwareInterface( - port=0, device={8: 0, 7: 1}[spi_args['select_pin']]) - except Exception as e: + if SpiDev is None: warnings.warn( SPISoftwareFallback( - 'failed to initialize hardware SPI, falling back to ' - 'software (error was: %s)' % str(e))) + 'failed to import spidev, falling back to software SPI')) + else: + try: + hardware_spi_args = { + port: 0, + device: {8: 0, 7: 1}[spi_args['select_pin']], + } + if shared: + return SharedSPIHardwareInterface(**hardware_spi_args) + else: + return SPIHardwareInterface(**hardware_spi_args) + except Exception as e: + warnings.warn( + SPISoftwareFallback( + 'failed to initialize hardware SPI, falling back to ' + 'software (error was: %s)' % str(e))) if shared: return SharedSPISoftwareInterface(**spi_args) else: