Merge pull request #245 from waveform80/recreate-traffic-hat

Fix #193
This commit is contained in:
Dave Jones
2016-04-03 16:00:14 +01:00
4 changed files with 7 additions and 11 deletions

View File

@@ -27,7 +27,6 @@ from .exc import (
OutputDeviceError,
OutputDeviceBadValue,
PinError,
PinFixedFunction,
PinInvalidFunction,
PinInvalidState,
PinInvalidPull,

View File

@@ -64,9 +64,6 @@ class OutputDeviceBadValue(OutputDeviceError, ValueError):
class PinError(GPIOZeroError):
"Base class for errors related to pin implementations"
class PinFixedFunction(PinError, AttributeError):
"Error raised when attempting to change the function of a fixed type pin"
class PinInvalidFunction(PinError, ValueError):
"Error raised when attempting to change the function of a pin to an invalid value"

View File

@@ -39,8 +39,7 @@ class InputDevice(GPIODevice):
def __init__(self, pin=None, pull_up=False):
super(InputDevice, self).__init__(pin)
try:
if self.pin.function != 'input':
self.pin.function = 'input'
self.pin.function = 'input'
pull = 'up' if pull_up else 'down'
if self.pin.pull != pull:
self.pin.pull = pull

View File

@@ -7,7 +7,7 @@ from __future__ import (
str = type('')
from ..exc import (
PinFixedFunction,
PinInvalidFunction,
PinSetInput,
PinFixedPull,
PinPWMUnsupported,
@@ -30,12 +30,12 @@ class Pin(object):
overridden:
* :meth:`_get_function`
* :meth:`_set_function`
* :meth:`_get_state`
The following functions *may* be overridden if applicable:
* :meth:`close`
* :meth:`_set_function`
* :meth:`_set_state`
* :meth:`_get_frequency`
* :meth:`_set_frequency`
@@ -105,7 +105,9 @@ class Pin(object):
return "input"
def _set_function(self, value):
raise PinFixedFunction("Cannot set the function of pin %r" % self)
if value != "input":
raise PinInvalidFunction(
"Cannot set the function of pin %r to %s" % (self, value))
function = property(
lambda self: self._get_function(),
@@ -119,8 +121,7 @@ class Pin(object):
With certain pin types (e.g. GPIO pins), this attribute can be changed
to configure the function of a pin. If an invalid function is
specified, for this attribute, :exc:`PinInvalidFunction` will be
raised. If this pin is fixed function and an attempt is made to set
this attribute, :exc:`PinFixedFunction` will be raised.
raised.
""")
def _get_state(self):