mirror of https://github.com/joan2937/pigpio
V22
This commit is contained in:
parent
948734ccb1
commit
67ff6379b4
11
README
11
README
|
@ -49,7 +49,8 @@ x_pigpio.c, pig2vcd.c, and pigpiod.c show examples of interfacing
|
|||
with the pigpio library.
|
||||
|
||||
pigs.c, pigpio.py, x_pigpiod_if.c, x_pigpio.py, x_pigs, and x_pipe
|
||||
show examples of interfacing with the pigpio daemon.
|
||||
show examples of interfacing with the pigpio daemon. x_pipe uses
|
||||
the pipe interface, the others use the socket interface.
|
||||
|
||||
DAEMON
|
||||
|
||||
|
@ -57,7 +58,7 @@ To launch the daemon do
|
|||
|
||||
sudo pigpiod (pigpiod -? for options)
|
||||
|
||||
Once the daemon is launched the socket and fifo interfaces will be
|
||||
Once the daemon is launched the socket and pipe interfaces will be
|
||||
available.
|
||||
|
||||
When the library starts it locks
|
||||
|
@ -70,15 +71,15 @@ SOCKET INTERFACE
|
|||
|
||||
Use pigs for the socket interface (pigs help for help).
|
||||
|
||||
FIFO INTERFACE
|
||||
PIPE INTERFACE
|
||||
|
||||
The fifo interface accepts commands written to /dev/pigpio.
|
||||
The pipe interface accepts commands written to /dev/pigpio.
|
||||
|
||||
Results are read from /dev/pigout.
|
||||
|
||||
Errors are output on /dev/pigerr.
|
||||
|
||||
To test the fifo interface perhaps do
|
||||
To test the pipe interface perhaps do
|
||||
|
||||
cat /dev/pigout &
|
||||
cat /dev/pigerr &
|
||||
|
|
49
pigpio.3
49
pigpio.3
|
@ -2380,9 +2380,9 @@ device has 3 chip selects and a selectable word size in bits.
|
|||
.br
|
||||
|
||||
.EX
|
||||
spiChan: 0-1
|
||||
spiChan: 0-1 (0-2 for B+ auxiliary device)
|
||||
.br
|
||||
spiBaud: >1
|
||||
spiBaud: 32K-125M (values above 30M are unlikely to work)
|
||||
.br
|
||||
spiFlags: see below
|
||||
.br
|
||||
|
@ -4254,6 +4254,25 @@ lVal: the value to write
|
|||
.br
|
||||
Not intended for general use.
|
||||
|
||||
.IP "\fBrawWaveInfo_t rawWaveInfo(int wave_id)\fP"
|
||||
.IP "" 4
|
||||
Gets details about the wave with id wave_id.
|
||||
|
||||
.br
|
||||
|
||||
.br
|
||||
|
||||
.EX
|
||||
wave_id: the wave of interest
|
||||
.br
|
||||
|
||||
.EE
|
||||
|
||||
.br
|
||||
|
||||
.br
|
||||
Not intended for general use.
|
||||
|
||||
.IP "\fBint getBitInBytes(int bitPos, char *buf, int numBits)\fP"
|
||||
.IP "" 4
|
||||
Returns the value of the bit bitPos bits from the start of buf. Returns
|
||||
|
@ -5376,6 +5395,30 @@ typedef struct
|
|||
|
||||
.br
|
||||
|
||||
.IP "\fBrawWaveInfo_t\fP" 0
|
||||
|
||||
.EX
|
||||
typedef struct
|
||||
.br
|
||||
{
|
||||
.br
|
||||
uint16_t botCB; // first CB used by wave
|
||||
.br
|
||||
uint16_t topCB; // last CB used by wave
|
||||
.br
|
||||
uint16_t botOOL; // last OOL used by wave
|
||||
.br
|
||||
uint16_t topOOL; // first OOL used by wave
|
||||
.br
|
||||
} rawWaveInfo_t;
|
||||
.br
|
||||
|
||||
.EE
|
||||
|
||||
.br
|
||||
|
||||
.br
|
||||
|
||||
.IP "\fB*rxBuf\fP" 0
|
||||
|
||||
.br
|
||||
|
@ -5567,7 +5610,7 @@ The number of bits to transfer in a raw SPI transaction.
|
|||
.br
|
||||
|
||||
.br
|
||||
A SPI channel, 0 or 1.
|
||||
A SPI channel, 0-2.
|
||||
|
||||
.br
|
||||
|
||||
|
|
37
pigpio.c
37
pigpio.c
|
@ -25,7 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
|
|||
For more information, please refer to <http://unlicense.org/>
|
||||
*/
|
||||
|
||||
/* pigpio version 21 */
|
||||
/* pigpio version 22 */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -925,14 +925,6 @@ typedef struct
|
|||
int mode;
|
||||
} wfRx_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t botCB; /* first CB used by wave */
|
||||
uint16_t topCB; /* last CB used by wave */
|
||||
uint16_t botOOL;
|
||||
uint16_t topOOL;
|
||||
} waveInfo_t;
|
||||
|
||||
union my_smbus_data
|
||||
{
|
||||
uint8_t byte;
|
||||
|
@ -991,7 +983,7 @@ static wfStats_t wfStats=
|
|||
0, 0, (DMAO_PAGES * CBS_PER_OPAGE)
|
||||
};
|
||||
|
||||
static waveInfo_t waveInfo[PI_MAX_WAVES];
|
||||
static rawWaveInfo_t waveInfo[PI_MAX_WAVES];
|
||||
|
||||
static volatile wfRx_t wfRx[PI_MAX_USER_GPIO+1];
|
||||
|
||||
|
@ -3179,7 +3171,6 @@ static void spiGoS(
|
|||
unsigned cnt, cnt4w, cnt3w;
|
||||
uint32_t spiDefaults;
|
||||
unsigned mode, channel, cspol, cspols, flag3w, ren3w;
|
||||
uint32_t status;
|
||||
|
||||
channel = PI_SPI_FLAGS_GET_CHANNEL(flags);
|
||||
mode = PI_SPI_FLAGS_GET_MODE (flags);
|
||||
|
@ -3221,16 +3212,14 @@ static void spiGoS(
|
|||
|
||||
while((txCnt < cnt) || (rxCnt < cnt))
|
||||
{
|
||||
status = spiReg[SPI_CS];
|
||||
|
||||
while((rxCnt < cnt) && ((status & SPI_CS_RXD)))
|
||||
while((rxCnt < cnt) && ((spiReg[SPI_CS] & SPI_CS_RXD)))
|
||||
{
|
||||
if (rxBuf) rxBuf[rxCnt] = spiReg[SPI_FIFO];
|
||||
else spi_dummy = spiReg[SPI_FIFO];
|
||||
rxCnt++;
|
||||
}
|
||||
|
||||
while((txCnt < cnt) && ((status & SPI_CS_TXD)))
|
||||
while((txCnt < cnt) && ((spiReg[SPI_CS] & SPI_CS_TXD)))
|
||||
{
|
||||
if (txBuf) spiReg[SPI_FIFO] = txBuf[txCnt];
|
||||
else spiReg[SPI_FIFO] = 0;
|
||||
|
@ -3248,16 +3237,14 @@ static void spiGoS(
|
|||
|
||||
while((txCnt < cnt) || (rxCnt < cnt))
|
||||
{
|
||||
status = spiReg[SPI_CS];
|
||||
|
||||
while((rxCnt < cnt) && ((status & SPI_CS_RXD)))
|
||||
while((rxCnt < cnt) && ((spiReg[SPI_CS] & SPI_CS_RXD)))
|
||||
{
|
||||
if (rxBuf) rxBuf[rxCnt] = spiReg[SPI_FIFO];
|
||||
else spi_dummy = spiReg[SPI_FIFO];
|
||||
rxCnt++;
|
||||
}
|
||||
|
||||
while((txCnt < cnt) && ((status & SPI_CS_TXD)))
|
||||
while((txCnt < cnt) && ((spiReg[SPI_CS] & SPI_CS_TXD)))
|
||||
{
|
||||
if (txBuf) spiReg[SPI_FIFO] = txBuf[txCnt];
|
||||
else spiReg[SPI_FIFO] = 0;
|
||||
|
@ -5924,7 +5911,7 @@ uint32_t rawWaveGetOut(int pos)
|
|||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
void waveSetRawOut(int pos, uint32_t value)
|
||||
void rawWaveSetOut(int pos, uint32_t value)
|
||||
{
|
||||
int page, slot;
|
||||
|
||||
|
@ -5966,6 +5953,16 @@ void rawWaveSetIn(int pos, uint32_t value)
|
|||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
rawWaveInfo_t rawWaveInfo(int wave_id)
|
||||
{
|
||||
rawWaveInfo_t dummy = {-1, -1, -1, -1};
|
||||
|
||||
if ((wave_id >=0) && (wave_id < PI_MAX_WAVES)) return waveInfo[wave_id];
|
||||
else return dummy;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
double time_time(void)
|
||||
{
|
||||
struct timeval tv;
|
||||
|
|
40
pigpio.h
40
pigpio.h
|
@ -31,7 +31,7 @@ For more information, please refer to <http://unlicense.org/>
|
|||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#define PIGPIO_VERSION 21
|
||||
#define PIGPIO_VERSION 22
|
||||
|
||||
/*TEXT
|
||||
|
||||
|
@ -291,6 +291,7 @@ rawWaveGetOut Not intended for general use
|
|||
rawWaveSetOut Not intended for general use
|
||||
rawWaveGetIn Not intended for general use
|
||||
rawWaveSetIn Not intended for general use
|
||||
rawWaveInfo Not intended for general use
|
||||
rawDumpWave Not intended for general use
|
||||
rawDumpScript Not intended for general use
|
||||
|
||||
|
@ -354,6 +355,14 @@ uint32_t usDelay;
|
|||
uint32_t flags;
|
||||
} rawWave_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t botCB; /* first CB used by wave */
|
||||
uint16_t topCB; /* last CB used by wave */
|
||||
uint16_t botOOL; /* last OOL used by wave */
|
||||
uint16_t topOOL; /* first OOL used by wave */
|
||||
} rawWaveInfo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int clk; /* gpio for clock */
|
||||
|
@ -1901,8 +1910,8 @@ selected by setting the A bit in the flags. The auxiliary
|
|||
device has 3 chip selects and a selectable word size in bits.
|
||||
|
||||
. .
|
||||
spiChan: 0-1
|
||||
spiBaud: >1
|
||||
spiChan: 0-1 (0-2 for B+ auxiliary device)
|
||||
spiBaud: 32K-125M (values above 30M are unlikely to work)
|
||||
spiFlags: see below
|
||||
. .
|
||||
|
||||
|
@ -3017,6 +3026,18 @@ lVal: the value to write
|
|||
Not intended for general use.
|
||||
D*/
|
||||
|
||||
/*F*/
|
||||
rawWaveInfo_t rawWaveInfo(int wave_id);
|
||||
/*D
|
||||
Gets details about the wave with id wave_id.
|
||||
|
||||
. .
|
||||
wave_id: the wave of interest
|
||||
. .
|
||||
|
||||
Not intended for general use.
|
||||
D*/
|
||||
|
||||
/*F*/
|
||||
int getBitInBytes(int bitPos, char *buf, int numBits);
|
||||
/*D
|
||||
|
@ -3510,6 +3531,17 @@ typedef struct
|
|||
} rawWave_t;
|
||||
. .
|
||||
|
||||
rawWaveInfo_t::
|
||||
. .
|
||||
typedef struct
|
||||
{
|
||||
uint16_t botCB; // first CB used by wave
|
||||
uint16_t topCB; // last CB used by wave
|
||||
uint16_t botOOL; // last OOL used by wave
|
||||
uint16_t topOOL; // first OOL used by wave
|
||||
} rawWaveInfo_t;
|
||||
. .
|
||||
|
||||
*rxBuf::
|
||||
|
||||
A pointer to a buffer to receive data.
|
||||
|
@ -3582,7 +3614,7 @@ The number of bits to transfer in a raw SPI transaction.
|
|||
|
||||
spiChan::
|
||||
|
||||
A SPI channel, 0 or 1.
|
||||
A SPI channel, 0-2.
|
||||
|
||||
spiFlags::
|
||||
|
||||
|
|
10
pigpio.py
10
pigpio.py
|
@ -246,7 +246,7 @@ import os
|
|||
import atexit
|
||||
import codecs
|
||||
|
||||
VERSION = "1.11"
|
||||
VERSION = "1.12"
|
||||
|
||||
exceptions = True
|
||||
|
||||
|
@ -2193,8 +2193,8 @@ class pi():
|
|||
device has 3 chip selects and a selectable word size in bits.
|
||||
|
||||
|
||||
spi_channel:= 0 or 1, the SPI channel.
|
||||
spi_baud:= >0, the transmission rate in bits per second.
|
||||
spi_channel:= 0-1 (0-2 for B+ auxiliary device).
|
||||
spi_baud:= 32K-125M (values above 30M are unlikely to work).
|
||||
spi_flags:= see below.
|
||||
|
||||
Normally you would only use the [*spi_**] functions if
|
||||
|
@ -3086,10 +3086,10 @@ def xref():
|
|||
spi_*:
|
||||
One of the spi_ functions.
|
||||
|
||||
spi_baud: 1-
|
||||
spi_baud: 32K-125M
|
||||
The transmission rate in bits per second.
|
||||
|
||||
spi_channel: 0-1
|
||||
spi_channel: 0-2
|
||||
A SPI channel.
|
||||
|
||||
spi_flags: 32 bit
|
||||
|
|
|
@ -2238,9 +2238,9 @@ device has 3 chip selects and a selectable word size in bits.
|
|||
.br
|
||||
|
||||
.EX
|
||||
spi_channel: 0-1.
|
||||
spi_channel: 0-1 (0-2 for B+ auxiliary device).
|
||||
.br
|
||||
spi_baud: >1.
|
||||
spi_baud: 32K-125M (values above 30M are unlikely to work).
|
||||
.br
|
||||
spi_flags: see below.
|
||||
.br
|
||||
|
@ -3310,7 +3310,7 @@ The speed in bits per second to use for the SPI device.
|
|||
.br
|
||||
|
||||
.IP "\fBspi_channel\fP" 0
|
||||
A SPI channel, 0 or 1.
|
||||
A SPI channel, 0-2.
|
||||
|
||||
.br
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
|
|||
For more information, please refer to <http://unlicense.org/>
|
||||
*/
|
||||
|
||||
/* PIGPIOD_IF_VERSION 9 */
|
||||
/* PIGPIOD_IF_VERSION 10 */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -30,7 +30,7 @@ For more information, please refer to <http://unlicense.org/>
|
|||
|
||||
#include "pigpio.h"
|
||||
|
||||
#define PIGPIOD_IF_VERSION 9
|
||||
#define PIGPIOD_IF_VERSION 10
|
||||
|
||||
/*TEXT
|
||||
|
||||
|
@ -1569,8 +1569,8 @@ selected by setting the A bit in the flags. The auxiliary
|
|||
device has 3 chip selects and a selectable word size in bits.
|
||||
|
||||
. .
|
||||
spi_channel: 0-1.
|
||||
spi_baud: >1.
|
||||
spi_channel: 0-1 (0-2 for B+ auxiliary device).
|
||||
spi_baud: 32K-125M (values above 30M are unlikely to work).
|
||||
spi_flags: see below.
|
||||
. .
|
||||
|
||||
|
@ -2117,7 +2117,7 @@ spi_baud::
|
|||
The speed in bits per second to use for the SPI device.
|
||||
|
||||
spi_channel::
|
||||
A SPI channel, 0 or 1.
|
||||
A SPI channel, 0-2.
|
||||
|
||||
spi_flags::
|
||||
See [*spi_open*].
|
||||
|
|
2
setup.py
2
setup.py
|
@ -3,7 +3,7 @@
|
|||
from distutils.core import setup
|
||||
|
||||
setup(name='pigpio',
|
||||
version='1.11',
|
||||
version='1.12',
|
||||
author='joan',
|
||||
author_email='joan@abyz.co.uk',
|
||||
maintainer='joan',
|
||||
|
|
4
x_pigs
4
x_pigs
|
@ -1,5 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
VERSION=22
|
||||
|
||||
GPIO=4
|
||||
|
||||
#
|
||||
|
@ -86,7 +88,7 @@ s=$(pigs pfs $GPIO 800)
|
|||
if [[ $s = 800 ]]; then echo "PFS-b ok"; else echo "PFS-b fail ($s)"; fi
|
||||
|
||||
s=$(pigs pigpv)
|
||||
if [[ $s = 21 ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
if [[ $s = $VERSION ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
|
||||
s=$(pigs prs $GPIO 255)
|
||||
if [[ $s = 250 ]]; then echo "PRG-a ok"; else echo "PRG-a fail ($s)"; fi
|
||||
|
|
4
x_pipe
4
x_pipe
|
@ -1,5 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
VERSION=22
|
||||
|
||||
GPIO=4
|
||||
|
||||
#
|
||||
|
@ -119,7 +121,7 @@ if [[ $s = 800 ]]; then echo "PFS-b ok"; else echo "PFS-b fail ($s)"; fi
|
|||
|
||||
echo "pigpv" >/dev/pigpio
|
||||
read -t 1 s </dev/pigout
|
||||
if [[ $s = 21 ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
if [[ $s = $VERSION ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
|
||||
echo "prs $GPIO 255" >/dev/pigpio
|
||||
read -t 1 s </dev/pigout
|
||||
|
|
Loading…
Reference in New Issue