diff options
| -rw-r--r-- | python/fake/_webiopi/GPIO.py | 70 | ||||
| -rw-r--r-- | python/fake/_webiopi/__init__.py | 0 |
2 files changed, 70 insertions, 0 deletions
diff --git a/python/fake/_webiopi/GPIO.py b/python/fake/_webiopi/GPIO.py new file mode 100644 index 0000000..18ba633 --- /dev/null +++ b/python/fake/_webiopi/GPIO.py | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | GPIO_COUNT = 54 | ||
| 2 | |||
| 3 | IN = 0 | ||
| 4 | OUT = 1 | ||
| 5 | ALT5 = 2 | ||
| 6 | ALT4 = 3 | ||
| 7 | ALT0 = 4 | ||
| 8 | ALT1 = 5 | ||
| 9 | ALT2 = 6 | ||
| 10 | ALT3 = 7 | ||
| 11 | PWM = 8 | ||
| 12 | |||
| 13 | LOW = 0 | ||
| 14 | HIGH = 1 | ||
| 15 | |||
| 16 | PUD_OFF = 0 | ||
| 17 | PUD_DOWN = 1 | ||
| 18 | PUD_UP = 2 | ||
| 19 | |||
| 20 | RATIO = 1 | ||
| 21 | ANGLE = 2 | ||
| 22 | |||
| 23 | FUNCTIONS = [ "IN", "OUT", "ALT5", "ALT4", "ALT0", "ALT1", "ALT2", "ALT3", "PWM" ] | ||
| 24 | PWM_MODES = [ "none", "ratio", "angle" ] | ||
| 25 | |||
| 26 | _functions = {} | ||
| 27 | _states = {} | ||
| 28 | for i in range(0, GPIO_COUNT): | ||
| 29 | _functions[i] = IN | ||
| 30 | _states[i] = False | ||
| 31 | |||
| 32 | def setFunction(channel, direction, pull_up_down=PUD_OFF): | ||
| 33 | if channel < 0 or channel > GPIO_COUNT: | ||
| 34 | raise InvalidChannelException("The GPIO channel is invalid") | ||
| 35 | _functions[channel] = direction | ||
| 36 | return None | ||
| 37 | |||
| 38 | def getFunction(channel): | ||
| 39 | if channel < 0 or channel > GPIO_COUNT: | ||
| 40 | raise InvalidChannelException("The GPIO channel is invalid") | ||
| 41 | return _functions[channel] | ||
| 42 | |||
| 43 | def getFunctionString(channel): | ||
| 44 | if channel < 0 or channel > GPIO_COUNT: | ||
| 45 | raise InvalidChannelException("The GPIO channel is invalid") | ||
| 46 | return FUNCTIONS[getFunction(channel)] | ||
| 47 | |||
| 48 | def digitalWrite(channel, value): | ||
| 49 | return output(channel, value) | ||
| 50 | def output(channel, value): | ||
| 51 | if channel < 0 or channel > GPIO_COUNT: | ||
| 52 | raise InvalidChannelException("The GPIO channel is invalid") | ||
| 53 | _states[channel] = value | ||
| 54 | return None | ||
| 55 | |||
| 56 | def digitalRead(channel): | ||
| 57 | return input(channel) | ||
| 58 | def input(channel): | ||
| 59 | if channel < 0 or channel > GPIO_COUNT: | ||
| 60 | raise InvalidChannelException("The GPIO channel is invalid") | ||
| 61 | return _states[channel] | ||
| 62 | |||
| 63 | class SetupException(Exception): | ||
| 64 | pass | ||
| 65 | class InvalidDirectionException(Exception): | ||
| 66 | pass | ||
| 67 | class InvalidChannelException(Exception): | ||
| 68 | pass | ||
| 69 | class InvalidPullException(Exception): | ||
| 70 | pass | ||
diff --git a/python/fake/_webiopi/__init__.py b/python/fake/_webiopi/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/python/fake/_webiopi/__init__.py | |||
