fbsd_gpio_py
fbsd_gpio_py copied to clipboard
CFFI-Based Python Bindings for FreeBSD libgpio
fbsd_gpio: cffi-based Python bindings for FreeBSD libgpio
Requirements:
- Python 2.7 or 3.4
- cffi
How to install
Python package on FreeBSD 11 have problem when using python source that needed to compile thing, so the easiest way is to use the binary packages uploaded to pypi:
.. code-block:: shell
pip install --only-binary freebsd-11 fbsd_gpio
How to use
The fbsd_gpio module expose two classes, GpioController and GpioPin
Use gpio controller unit 0 (/dev/gpioc0) and list all the pins name:
.. code-block:: python
from fbsd_gpio import GpioController
gpioc = GpioController(0) for pin in gpioc: print(pin)
Set pin 127 to output and logical value 1
.. code-block:: python
from fbsd_gpio import GpioController, GPIO_VALUE_HIGH
gpioc = GpioController(0) gpioc.pin_output(127)
The two following lines are equivalent
gpioc.pin_set(127, GPIO_VALUE_HIGH) gpioc.pin_high(127)
Alternativelly you can use the GpioPin class:
.. code-block:: python
from fbsd_gpio import GpioPin, GPIO_VALUE_HIGH
pin = GpioPin(127, unit=0) pin.ouput = True
The following lines are equivalent
pin.set(GPIO_VALUE_HIGH) pin.high() pin(GPIO_VALUE_HIGH)
Or use the name of the pin directly:
.. code-block:: python
from fbsd_gpio import GpioController, GPIO_VALUE_HIGH
gpioc = GpioController(0) gpioc.gpioled0.output = True
The three following lines are equivalent
gpioc.gpioled.set(GPIO_VALUE_HIGH) gpioc.gpioled0.high() gpioc.gpioled0(GPIO_VALUE_HIGH)
Get the value of a pin:
.. code-block:: python
from fbsd_gpio import GpioPin
pin = GpioPin(128, unit=0) if pin.input: print('Pin is input mode') else print('Pin is output mode')
The two following lines are equivalent
value = pin.get()
value = pin()
Toggle the value of a pin:
.. code-block:: python
from fbsd_gpio import GpioPin
pin = GpioPin(128, unit=0) pin.toggle()
Change the name of a pin:
.. code-block:: python
from fbsd_gpio import GpioPin
pin = GpioPin(128, unit=0) pin.name = 'green_led'