Compare commits

..

1 Commits

Author SHA1 Message Date
Phil Howard 03ce217247 Testing dynamically linked version
8 years ago

2
.gitmodules vendored

@ -1,3 +1,3 @@
[submodule "WiringPi"]
path = WiringPi
url = https://github.com/wiringPi/WiringPi
url = http://github.com/wiringPi/WiringPi

@ -1,5 +1,5 @@
recursive-include WiringPi *.h
include README.rst
include README.md
include LICENSE.txt
include bindings.i
include constants.py

@ -0,0 +1,12 @@
all: bindings
python setup.py build
bindings:
swig3.0 -python -threads wiringpi.i
clean:
rm -rf build/
rm -rf dist/
install:
sudo python setup.py install

@ -0,0 +1,90 @@
### Note
This is an unofficial port of Gordon's WiringPi library. Please do not email Gordon if you have issues, he will not be able to help.
For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG
# WiringPi for Python
WiringPi: An implementation of most of the Arduino Wiring
functions for the Raspberry Pi
WiringPi implements new functions for managing IO expanders.
# Quick Install
`pip install wiringpi`
# Usage
import wiringpi
wiringpi.wiringPiSetup() # For sequential pin numbering, one of these MUST be called before using IO functions
# OR
wiringpi.wiringPiSetupSys() # For /sys/class/gpio with GPIO pin numbering
# OR
wiringpi.wiringPiSetupGpio() # For GPIO pin numbering
Setting up IO expanders (This example was tested on a quick2wire board with one digital IO expansion board connected via I2C):
wiringpi.mcp23017Setup(65,0x20)
wiringpi.pinMode(65,1)
wiringpi.digitalWrite(65,1)
**General IO:**
wiringpi.pinMode(6,1) # Set pin 6 to 1 ( OUTPUT )
wiringpi.digitalWrite(6,1) # Write 1 ( HIGH ) to pin 6
wiringpi.digitalRead(6) # Read pin 6
**Setting up a peripheral:**
WiringPi2 supports expanding your range of available "pins" by setting up a port expander. The implementation details of
your port expander will be handled transparently, and you can write to the additional pins ( starting from PIN_OFFSET >= 64 )
as if they were normal pins on the Pi.
wiringpi.mcp23017Setup(PIN_OFFSET,I2C_ADDR)
**Soft Tone**
Hook a speaker up to your Pi and generate music with softTone. Also useful for generating frequencies for other uses such as modulating A/C.
wiringpi.softToneCreate(PIN)
wiringpi.softToneWrite(PIN,FREQUENCY)
**Bit shifting:**
wiringpi.shiftOut(1,2,0,123) # Shift out 123 (b1110110, byte 0-255) to data pin 1, clock pin 2
**Serial:**
serial = wiringpi.serialOpen('/dev/ttyAMA0',9600) # Requires device/baud and returns an ID
wiringpi.serialPuts(serial,"hello")
wiringpi.serialClose(serial) # Pass in ID
**Full details at:**
http://www.wiringpi.com
# Manual Build
## Get/setup repo
```bash
git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python
```
## Prerequisites
To rebuild the bindings
you **must** first have python-dev, python-setuptools and swig installed. Wiring Pi should also be installed system-wide
for access to the `gpio` tool.
```bash
sudo apt-get install python-dev python-setuptools swig wiringpi
```
## Build & install with
`sudo python setup.py install`
Or Python 3:
`sudo python3 setup.py install`

@ -1,152 +0,0 @@
Note
~~~~
This is an unofficial port of Gordon's WiringPi library. Please do not
email Gordon if you have issues, he will not be able to help.
For support, comments, questions, etc please join the WiringPi Discord
channel: https://discord.gg/SM4WUVG
WiringPi for Python
~~~~~~~~~~~~~~~~~~~
WiringPi: An implementation of most of the Arduino Wiring functions for
the Raspberry Pi.
WiringPi implements new functions for managing IO expanders.
**Alternative**
* `GPIO Zero <https://github.com/gpiozero/gpiozero>`_ is another Python library for controlling GPIO. It is installed by default in Raspberry Pi OS and is used in the `Raspberry Pi GPIO documentation <https://www.raspberrypi.org/documentation/usage/gpio/python/>`_.
Quick Install
=============
.. image:: https://badge.fury.io/py/wiringpi.svg
:alt: PyPI version badge
:target: https://pypi.org/project/wiringpi/
The library is packaged on PyPI and can be installed with pip:
``pip install wiringpi``
Usage
=====
.. code:: python
import wiringpi
# One of the following MUST be called before using IO functions:
wiringpi.wiringPiSetup() # For sequential pin numbering
# OR
wiringpi.wiringPiSetupSys() # For /sys/class/gpio with GPIO pin numbering
# OR
wiringpi.wiringPiSetupGpio() # For GPIO pin numbering
**General IO:**
.. code:: python
wiringpi.pinMode(6, 1) # Set pin 6 to 1 ( OUTPUT )
wiringpi.digitalWrite(6, 1) # Write 1 ( HIGH ) to pin 6
wiringpi.digitalRead(6) # Read pin 6
**Setting up a peripheral:**
WiringPi supports expanding your range of available "pins" by setting up
a port expander. The implementation details of your port expander will
be handled transparently, and you can write to the additional pins
(starting from PIN\_OFFSET >= 64) as if they were normal pins on the Pi.
.. code:: python
wiringpi.mcp23017Setup(PIN_OFFSET, I2C_ADDR)
This example was tested on a quick2wire board with one digital IO
expansion board connected via I2C:
.. code:: python
wiringpi.mcp23017Setup(65, 0x20)
wiringpi.pinMode(65, 1)
wiringpi.digitalWrite(65, 1)
**Soft Tone:**
Hook a speaker up to your Pi and generate music with softTone. Also
useful for generating frequencies for other uses such as modulating A/C.
.. code:: python
wiringpi.softToneCreate(PIN)
wiringpi.softToneWrite(PIN, FREQUENCY)
**Bit shifting:**
.. code:: python
wiringpi.shiftOut(1, 2, 0, 123) # Shift out 123 (b1110110, byte 0-255) to data pin 1, clock pin 2
**Serial:**
.. code:: python
serial = wiringpi.serialOpen('/dev/ttyAMA0', 9600) # Requires device/baud and returns an ID
wiringpi.serialPuts(serial, "hello")
wiringpi.serialClose(serial) # Pass in ID
**SPI:**
The ``wiringPiSPIDataRW()`` function needs to be passed a ``bytes``
object in Python 3. In Python 2, it takes a string. The following should
work in either Python 2 or 3:
.. code:: python
wiringpi.wiringPiSPISetup(channel, speed)
buf = bytes([your data here])
retlen, retdata = wiringpi.wiringPiSPIDataRW(0, buf)
Now, ``retlen`` will contain the number of bytes received/read by the
call. ``retdata`` will contain the data itself, and in Python 3, ``buf``
will have been modified to contain it as well (that won't happen in
Python 2, because then ``buf`` is a string, and strings are immutable).
**Full details of the API at:** http://www.wiringpi.com
Manual Build
============
Get/setup repo
--------------
.. code:: bash
git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python
Don't forget the ``--recursive``; it is required to also pull in the
WiringPi C code from its own repository.
Prerequisites
-------------
To rebuild the bindings you **must** first have installed ``swig``,
``python-dev``, and ``python-setuptools`` (or their ``python3-``
equivalents). WiringPi should also be installed system-wide for access
to the ``gpio`` tool.
.. code:: bash
sudo apt-get install python-dev python-setuptools swig wiringpi
Build & install with
--------------------
``sudo python setup.py install``
Or Python 3:
``sudo python3 setup.py install``

@ -1 +1 @@
Subproject commit e9821abdb4b4fe46a2ea9243471d339435fa7bde
Subproject commit c9476436016c995d3327e4765a73de7848d4af56

@ -133,8 +133,8 @@ extern void softPwmWrite (int pin, int value) ;
extern void softPwmStop (int pin) ;
// Header file WiringPi/wiringPi/softServo.h
extern void softServoWrite (int pin, int value) ;
extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ;
//extern void softServoWrite (int pin, int value) ;
//extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ;
// Header file WiringPi/wiringPi/softTone.h
extern int softToneCreate (int pin) ;

@ -38,10 +38,4 @@ INT_EDGE_SETUP = 0;
INT_EDGE_FALLING = 1;
INT_EDGE_RISING = 2;
INT_EDGE_BOTH = 3;
# Shifting (from wiringShift.h)
LSBFIRST = 0;
MSBFIRST = 1;
%}

@ -1,16 +0,0 @@
# Test of the softTone module in wiringPi
# Plays a scale out on pin 3 - connect pizeo disc to pin 3 & 0v
import wiringpi
PIN = 3
SCALE = [262, 294, 330, 349, 392, 440, 494, 525]
wiringpi.wiringPiSetup()
wiringpi.softToneCreate(PIN)
while True:
for idx in range(8):
print(idx)
wiringpi.softToneWrite(PIN, SCALE[idx])
wiringpi.delay(500)

@ -3,5 +3,5 @@ author = Philip Howard
author_email = phil@gadgetoid.com
url = https://github.com/WiringPi/WiringPi-Python/
description = A python interface to WiringPi 2.0 library which allows for easily interfacing with the GPIO pins of the Raspberry Pi. Also supports i2c and SPI.
long_description = file:README.rst
long_description = file:README.md
license = LGPL

@ -9,8 +9,8 @@ from setuptools.command.sdist import sdist
from distutils.spawn import find_executable
from glob import glob
sources = glob('WiringPi/devLib/*.c')
sources += glob('WiringPi/wiringPi/*.c')
sources = []
# If we have swig, use it. Otherwise, use the pre-generated
# wrapper from the source distribution.
if find_executable('swig'):
@ -23,12 +23,6 @@ else:
" source distribution (on pypi) is available.")
sys.exit(1)
try:
sources.remove('WiringPi/devLib/piFaceOld.c')
except ValueError:
# the file is already excluded in the source distribution
pass
# Fix so that build_ext runs before build_py
# Without this, wiringpi.py is generated too late and doesn't
@ -52,15 +46,13 @@ class sdist_ext_first(sdist):
_wiringpi = Extension(
'_wiringpi',
include_dirs=['WiringPi/wiringPi','WiringPi/devLib'],
sources=sources,
swig_opts=['-threads'],
extra_link_args=['-lcrypt', '-lrt']
libraries=['crypt', 'rt', 'wiringPi', 'wiringPiDev']
)
setup(
name = 'wiringpi',
version = '2.60.1',
version = '2.44.4',
ext_modules = [ _wiringpi ],
py_modules = ["wiringpi"],
install_requires=[],

@ -6,51 +6,49 @@
#define PyString_FromStringAndSize PyBytes_FromStringAndSize
#endif
#include "WiringPi/wiringPi/wiringPi.h"
#include "WiringPi/wiringPi/wiringPiI2C.h"
#include "WiringPi/wiringPi/wiringPiSPI.h"
#include "WiringPi/wiringPi/wiringSerial.h"
#include "WiringPi/wiringPi/wiringShift.h"
#include "WiringPi/wiringPi/drcSerial.h"
#include "WiringPi/wiringPi/ads1115.h"
#include "WiringPi/wiringPi/max31855.h"
#include "WiringPi/wiringPi/max5322.h"
#include "WiringPi/wiringPi/mcp23008.h"
#include "WiringPi/wiringPi/mcp23016.h"
#include "WiringPi/wiringPi/mcp23016reg.h"
#include "WiringPi/wiringPi/mcp23017.h"
#include "WiringPi/wiringPi/mcp23s08.h"
#include "WiringPi/wiringPi/mcp23s17.h"
#include "WiringPi/wiringPi/mcp23x0817.h"
#include "WiringPi/wiringPi/mcp23x08.h"
#include "WiringPi/wiringPi/mcp3002.h"
#include "WiringPi/wiringPi/mcp3004.h"
#include "WiringPi/wiringPi/mcp3422.h"
#include "WiringPi/wiringPi/mcp4802.h"
#include "WiringPi/wiringPi/pcf8574.h"
#include "WiringPi/wiringPi/pcf8591.h"
#include "WiringPi/wiringPi/sn3218.h"
#include "WiringPi/wiringPi/softPwm.h"
#include "WiringPi/wiringPi/softServo.h"
#include "WiringPi/wiringPi/softTone.h"
#include "WiringPi/wiringPi/sr595.h"
#include "WiringPi/wiringPi/bmp180.h"
#include "WiringPi/wiringPi/drcNet.h"
#include "WiringPi/wiringPi/ds18b20.h"
#include "WiringPi/wiringPi/htu21d.h"
#include "WiringPi/wiringPi/pseudoPins.h"
#include "WiringPi/wiringPi/rht03.h"
#include "WiringPi/wiringPi/wpiExtensions.h"
#include "WiringPi/devLib/ds1302.h"
#include "WiringPi/devLib/font.h"
#include "WiringPi/devLib/gertboard.h"
#include "WiringPi/devLib/lcd128x64.h"
#include "WiringPi/devLib/lcd.h"
#include "WiringPi/devLib/maxdetect.h"
#include "WiringPi/devLib/piGlow.h"
#include "WiringPi/devLib/piNes.h"
#include "WiringPi/devLib/scrollPhat.h"
#include "WiringPi/devLib/piFace.h"
#include "wiringPi.h"
#include "wiringPiI2C.h"
#include "wiringPiSPI.h"
#include "wiringSerial.h"
#include "wiringShift.h"
#include "drcSerial.h"
#include "ads1115.h"
#include "max31855.h"
#include "max5322.h"
#include "mcp23008.h"
#include "mcp23016.h"
#include "mcp23016reg.h"
#include "mcp23017.h"
#include "mcp23s08.h"
#include "mcp23s17.h"
#include "mcp23x0817.h"
#include "mcp23x08.h"
#include "mcp3002.h"
#include "mcp3004.h"
#include "mcp3422.h"
#include "mcp4802.h"
#include "pcf8574.h"
#include "pcf8591.h"
#include "sn3218.h"
#include "softPwm.h"
#include "softTone.h"
#include "sr595.h"
#include "bmp180.h"
#include "drcNet.h"
#include "ds18b20.h"
#include "htu21d.h"
#include "pseudoPins.h"
#include "rht03.h"
#include "wpiExtensions.h"
#include "ds1302.h"
#include "gertboard.h"
#include "lcd128x64.h"
#include "lcd.h"
#include "maxdetect.h"
#include "piGlow.h"
#include "piNes.h"
#include "scrollPhat.h"
#include "piFace.h"
%}
%apply unsigned char { uint8_t };
@ -60,12 +58,12 @@
};
// Grab a Python function object as a Python object.
%typemap(in) PyObject *PyFunc {
if (!PyCallable_Check($input)) {
%typemap(in) PyObject *pyfunc {
if (!PyCallable_Check($1)) {
PyErr_SetString(PyExc_TypeError, "Need a callable object!");
return NULL;
}
$1 = $input;
$1 = $2;
}
%{

Loading…
Cancel
Save