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