]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/adafruit_blinka/microcontroller/beaglebone_black/pin.py
not quite gpio'in yet but getting closer...
[Adafruit_Blinka-hackapet.git] / src / adafruit_blinka / microcontroller / beaglebone_black / pin.py
diff --git a/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py b/src/adafruit_blinka/microcontroller/beaglebone_black/pin.py
new file mode 100644 (file)
index 0000000..7755b8b
--- /dev/null
@@ -0,0 +1,72 @@
+# Pins dont exist in CPython so...lets make our own!
+class Pin:
+    IN = 0
+    OUT = 1
+    LOW = 0
+    HIGH = 1
+    PULL_NONE = 0
+    PULL_UP = 1
+    PULL_DOWN = 2
+    
+    id = None
+    _value = LOW
+    _mode = IN
+    
+    def __init__(self, pin_name):
+        self.id = pin_name
+
+    def __repr__(self):
+        return str(self.id)
+
+    def __eq__(self, other):
+        return self.id == other
+
+    def init(self, mode=IN, pull=None):
+        if mode != None:
+            if mode == self.IN:
+                self._mode = self.IN
+                GPIO.setup(self.id, GPIO.IN)
+            elif mode == self.OUT:
+                self._mode = self.OUT
+                GPIO.setup(self.id, GPIO.OUT)
+            else:
+                raise RuntimeError("Invalid mode for pin: %s" % self.id)
+        if pull != None:
+            if self._mode != self.IN:
+                raise RuntimeError("Cannot set pull resistor on output")
+            if pull == self.PULL_UP:
+                GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_UP)
+            elif pull == self.PULL_DOWN:
+                GPIO.setup(self.id, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
+            else:
+                raise RuntimeError("Invalid pull for pin: %s" % self.id)       
+
+    def value(self, val=None):
+        if val != None:
+            if val == self.LOW:
+                self._value = val
+                GPIO.output(self.id, val)
+            elif val == self.HIGH:
+                self._value = val
+                GPIO.output(self.id, val)
+            else:
+                raise RuntimeError("Invalid value for pin")
+        else:
+            return GPIO.input(self.id)
+
+P8_19 = Pin('P8_19')
+P8_13 = Pin('P8_13')
+
+
+# ordered as spiId, sckId, mosiId, misoId
+spiPorts = ()
+
+# ordered as uartId, txId, rxId
+uartPorts = (
+    (),
+)
+
+i2cPorts = (
+    (),
+)
+