]> Repositories - Adafruit_Blinka-hackapet.git/blob - src/adafruit_blinka/microcontroller/tegra/pin.py
jetson integration
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / tegra / pin.py
1 import sys
2 sys.path.append("/opt/nvidia/jetson-gpio/lib/python")
3 sys.path.append("/opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO")
4 import Jetson.GPIO as GPIO
5 GPIO.setmode(GPIO.BCM)
6 GPIO.setwarnings(False)   # shh!
7
8 # Pins dont exist in CPython so...lets make our own!
9 class Pin:
10     IN = 0
11     OUT = 1
12     LOW = 0
13     HIGH = 1
14     PULL_NONE = 0
15     PULL_UP = 1
16     PULL_DOWN = 2
17
18     id = None
19     _value = LOW
20     _mode = IN
21
22     def __init__(self, bcm_number):
23         self.id = bcm_number
24
25     def __repr__(self):
26         return str(self.id)
27
28     def __eq__(self, other):
29         return self.id == other
30
31     def init(self, mode=IN, pull=None):
32         if mode != None:
33             if mode == self.IN:
34                 self._mode = self.IN
35                 GPIO.setup(self.id, GPIO.IN)
36             elif mode == self.OUT:
37                 self._mode = self.OUT
38                 GPIO.setup(self.id, GPIO.OUT)
39             else:
40                 raise RuntimeError("Invalid mode for pin: %s" % self.id)
41         if pull != None:
42             if self._mode != self.IN:
43                 raise RuntimeError("Cannot set pull resistor on output")
44             if pull == self.PULL_UP:
45                 GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
46             elif pull == self.PULL_DOWN:
47                 GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
48             else:
49                 raise RuntimeError("Invalid pull for pin: %s" % self.id)
50
51     def value(self, val=None):
52         if val != None:
53             if val == self.LOW:
54                 self._value = val
55                 GPIO.output(self.id, val)
56             elif val == self.HIGH:
57                 self._value = val
58                 GPIO.output(self.id, val)
59             else:
60                 raise RuntimeError("Invalid value for pin")
61         else:
62             return GPIO.input(self.id)
63
64     def cleanup(self, channel=None):
65         if channel == None:
66             GPIO.cleanup()
67         elif channel == self:
68             GPIO.cleanup(self.id)
69         else:
70             raise RuntimeError("Invalid pin to cleanup")
71
72 D1 = Pin(1)
73 D2 = Pin(2)
74 D3 = Pin(3)
75 D4 = Pin(4)
76 D5 = Pin(5)
77 D6 = Pin(6)
78 D7 = Pin(7)
79 D8 = Pin(8)
80 D9 = Pin(9)
81 D10 = Pin(10)
82 D11 = Pin(11)
83 D12 = Pin(12)
84 D13 = Pin(13)
85 D14 = Pin(14)
86 D15 = Pin(15)
87 D16 = Pin(16)
88 D17 = Pin(17)
89 D18 = Pin(18)
90 D19 = Pin(19)
91 D20 = Pin(20)
92 D21 = Pin(21)
93 D22 = Pin(22)
94 D23 = Pin(23)
95 D24 = Pin(24)
96 D25 = Pin(25)
97 D26 = Pin(26)
98 D27 = Pin(27)
99 D28 = Pin(28)
100 D29 = Pin(29)
101 D30 = Pin(30)
102 D31 = Pin(31)
103 D32 = Pin(32)
104 D33 = Pin(33)
105 D34 = Pin(34)
106 D35 = Pin(35)
107 D36 = Pin(36)
108 D37 = Pin(37)
109 D38 = Pin(38)
110 D39 = Pin(39)
111 D40 = Pin(40)