mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 09:40:36 +00:00
This commit is a fairly major piece of work that abstracts all pin operations (function, state, edge detection, PWM, etc.) into a base "Pin" class which is then used by input/output/composite devices to perform all required configuration. The idea is to pave the way for I2C based IO extenders which can present additional GPIO ports with similar capabilities to the Pi's "native" GPIO ports. As a bonus it also abstracts away the reliance on the RPi.GPIO library to allow alternative pin implementations (e.g. using RPIO to take advantage of DMA based PWM), or even pure Python implementations.
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from __future__ import (
|
|
unicode_literals,
|
|
absolute_import,
|
|
print_function,
|
|
division,
|
|
)
|
|
str = type('')
|
|
|
|
|
|
class PinError(Exception):
|
|
"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"
|
|
|
|
class PinInvalidState(PinError, ValueError):
|
|
"Error raised when attempting to assign an invalid state to a pin"
|
|
|
|
class PinInvalidPull(PinError, ValueError):
|
|
"Error raised when attempting to assign an invalid pull-up to a pin"
|
|
|
|
class PinInvalidEdges(PinError, ValueError):
|
|
"Error raised when attempting to assign an invalid edge detection to a pin"
|
|
|
|
class PinSetInput(PinError, AttributeError):
|
|
"Error raised when attempting to set a read-only pin"
|
|
|
|
class PinFixedPull(PinError, AttributeError):
|
|
"Error raised when attempting to set the pull of a pin with fixed pull-up"
|
|
|
|
class PinEdgeDetectUnsupported(PinError, AttributeError):
|
|
"Error raised when attempting to use edge detection on unsupported pins"
|
|
|
|
class PinPWMError(PinError):
|
|
"Base class for errors related to PWM implementations"
|
|
|
|
class PinPWMUnsupported(PinPWMError, AttributeError):
|
|
"Error raised when attempting to activate PWM on unsupported pins"
|
|
|
|
class PinPWMFixedValue(PinPWMError, AttributeError):
|
|
"Error raised when attempting to initialize PWM on an input pin"
|
|
|