mirror of https://github.com/joan2937/pigpio
V20
This commit is contained in:
parent
fc6537d30c
commit
dcacaec554
4
pigpio.3
4
pigpio.3
|
@ -2719,7 +2719,7 @@ level for pulseLen microseconds and then reset to not level.
|
|||
.EX
|
||||
user_gpio: 0-31
|
||||
.br
|
||||
pulseLen: 1-50
|
||||
pulseLen: 1-100
|
||||
.br
|
||||
level: 0,1
|
||||
.br
|
||||
|
@ -5184,7 +5184,7 @@ PI_PUD_UP 2
|
|||
.br
|
||||
|
||||
.br
|
||||
1-50, the length of a trigger pulse in microseconds.
|
||||
1-100, the length of a trigger pulse in microseconds.
|
||||
|
||||
.br
|
||||
|
||||
|
|
6
pigpio.c
6
pigpio.c
|
@ -25,7 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
|
|||
For more information, please refer to <http://unlicense.org/>
|
||||
*/
|
||||
|
||||
/* pigpio version 19 */
|
||||
/* pigpio version 20 */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -4705,7 +4705,7 @@ static void *pthSocketThreadHandler(void *fdC)
|
|||
|
||||
case PI_CMD_PROCP:
|
||||
p[3] = myDoCommand(p, sizeof(buf)-1, buf+sizeof(int));
|
||||
if (p[3] >= 0)
|
||||
if (((int)p[3]) >= 0)
|
||||
{
|
||||
memcpy(buf, &p[3], 4);
|
||||
p[3] = 4 + (4*PI_MAX_SCRIPT_PARAMS);
|
||||
|
@ -4732,7 +4732,7 @@ static void *pthSocketThreadHandler(void *fdC)
|
|||
case PI_CMD_SPIX:
|
||||
case PI_CMD_SPIR:
|
||||
|
||||
if (p[3] > 0)
|
||||
if (((int)p[3]) > 0)
|
||||
{
|
||||
write(sock, buf, p[3]);
|
||||
}
|
||||
|
|
6
pigpio.h
6
pigpio.h
|
@ -31,7 +31,7 @@ For more information, please refer to <http://unlicense.org/>
|
|||
#include <stdint.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#define PIGPIO_VERSION 19
|
||||
#define PIGPIO_VERSION 20
|
||||
|
||||
/*TEXT
|
||||
|
||||
|
@ -2102,7 +2102,7 @@ level for pulseLen microseconds and then reset to not level.
|
|||
|
||||
. .
|
||||
user_gpio: 0-31
|
||||
pulseLen: 1-50
|
||||
pulseLen: 1-100
|
||||
level: 0,1
|
||||
. .
|
||||
|
||||
|
@ -3411,7 +3411,7 @@ PI_PUD_UP 2
|
|||
|
||||
pulseLen::
|
||||
|
||||
1-50, the length of a trigger pulse in microseconds.
|
||||
1-100, the length of a trigger pulse in microseconds.
|
||||
|
||||
*pulses::
|
||||
|
||||
|
|
160
pigpio.py
160
pigpio.py
|
@ -246,7 +246,7 @@ import os
|
|||
import atexit
|
||||
import codecs
|
||||
|
||||
VERSION = "1.9"
|
||||
VERSION = "1.10"
|
||||
|
||||
exceptions = True
|
||||
|
||||
|
@ -651,22 +651,39 @@ else:
|
|||
def _b(x):
|
||||
return codecs.latin_1_encode(x)[0]
|
||||
|
||||
def _u2i(number):
|
||||
"""Converts a 32 bit unsigned number to signed."""
|
||||
def u2i(number):
|
||||
"""
|
||||
Converts a 32 bit unsigned number to signed.
|
||||
|
||||
number:= an unsigned 32 bit number
|
||||
|
||||
...
|
||||
print(u2i(4294967272))
|
||||
-24
|
||||
print(u2i(37))
|
||||
37
|
||||
...
|
||||
"""
|
||||
mask = (2 ** 32) - 1
|
||||
if number & (1 << 31):
|
||||
v = number | ~mask
|
||||
else:
|
||||
v = number & mask
|
||||
if v >= 0:
|
||||
return v;
|
||||
else:
|
||||
return v
|
||||
|
||||
def _u2i(number):
|
||||
"""
|
||||
Converts a 32 bit unsigned number to signed. If the number
|
||||
is negative it indicates an error. On error a pigpio
|
||||
exception will be raised if exceptions is True.
|
||||
"""
|
||||
v = u2i(number)
|
||||
if v < 0:
|
||||
if exceptions:
|
||||
raise error(error_text(v))
|
||||
else:
|
||||
return v
|
||||
return v
|
||||
|
||||
def _pigpio_command(sl, cmd, p1, p2):
|
||||
def _pigpio_command(sl, cmd, p1, p2, rl=True):
|
||||
"""
|
||||
Runs a pigpio socket command.
|
||||
|
||||
|
@ -678,10 +695,10 @@ def _pigpio_command(sl, cmd, p1, p2):
|
|||
sl.l.acquire()
|
||||
sl.s.send(struct.pack('IIII', cmd, p1, p2, 0))
|
||||
dummy, res = struct.unpack('12sI', sl.s.recv(16))
|
||||
sl.l.release()
|
||||
if rl: sl.l.release()
|
||||
return res
|
||||
|
||||
def _pigpio_command_ext(sl, cmd, p1, p2, p3, extents):
|
||||
def _pigpio_command_ext(sl, cmd, p1, p2, p3, extents, rl=True):
|
||||
"""
|
||||
Runs an extended pigpio socket command.
|
||||
|
||||
|
@ -701,7 +718,7 @@ def _pigpio_command_ext(sl, cmd, p1, p2, p3, extents):
|
|||
sl.l.acquire()
|
||||
sl.s.sendall(ext)
|
||||
dummy, res = struct.unpack('12sI', sl.s.recv(16))
|
||||
sl.l.release()
|
||||
if rl: sl.l.release()
|
||||
return res
|
||||
|
||||
class _callback_ADT:
|
||||
|
@ -1772,10 +1789,15 @@ class pi():
|
|||
(count, data) = pi.i2c_read_device(h, 12)
|
||||
...
|
||||
"""
|
||||
bytes = _u2i(_pigpio_command(self.sl, _PI_CMD_I2CRD, handle, count))
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(
|
||||
_pigpio_command(self.sl, _PI_CMD_I2CRD, handle, count, False))
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def i2c_write_device(self, handle, data):
|
||||
"""
|
||||
|
@ -2030,10 +2052,14 @@ class pi():
|
|||
# process read failure
|
||||
...
|
||||
"""
|
||||
bytes = _u2i(_pigpio_command(self.sl, _PI_CMD_I2CRK, handle, reg))
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(_pigpio_command(self.sl, _PI_CMD_I2CRK, handle, reg, False))
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def i2c_block_process_call(self, handle, reg, data):
|
||||
"""
|
||||
|
@ -2071,11 +2097,16 @@ class pi():
|
|||
# I p3 len
|
||||
## extension ##
|
||||
# s len data bytes
|
||||
bytes = _u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_I2CPK, handle, reg, len(data), [data]))
|
||||
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_I2CPK, handle, reg, len(data), [data]), False)
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def i2c_write_i2c_block_data(self, handle, reg, data):
|
||||
"""
|
||||
|
@ -2135,11 +2166,16 @@ class pi():
|
|||
## extension ##
|
||||
# I count
|
||||
extents = [struct.pack("I", count)]
|
||||
bytes = _u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_I2CRI, handle, reg, 4, extents))
|
||||
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_I2CRI, handle, reg, 4, extents), False)
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def spi_open(self, spi_channel, spi_baud, spi_flags=0):
|
||||
"""
|
||||
|
@ -2231,11 +2267,15 @@ class pi():
|
|||
# error path
|
||||
...
|
||||
"""
|
||||
bytes = _u2i(_pigpio_command(
|
||||
self.sl, _PI_CMD_SPIR, handle, count))
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(_pigpio_command(
|
||||
self.sl, _PI_CMD_SPIR, handle, count, False))
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def spi_write(self, handle, data):
|
||||
"""
|
||||
|
@ -2290,11 +2330,16 @@ class pi():
|
|||
# I p3 len
|
||||
## extension ##
|
||||
# s len data bytes
|
||||
bytes = _u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_SPIX, handle, 0, len(data), [data]))
|
||||
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(_pigpio_command_ext(
|
||||
self.sl, _PI_CMD_SPIX, handle, 0, len(data), [data]), False)
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def serial_open(self, tty, ser_baud, ser_flags=0):
|
||||
"""
|
||||
|
@ -2382,11 +2427,15 @@ class pi():
|
|||
# process read data
|
||||
...
|
||||
"""
|
||||
bytes = _u2i(_pigpio_command(self.sl, _PI_CMD_SERR, handle, count))
|
||||
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(
|
||||
_pigpio_command(self.sl, _PI_CMD_SERR, handle, count, False))
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
def serial_write(self, handle, data):
|
||||
"""
|
||||
|
@ -2436,7 +2485,7 @@ class pi():
|
|||
level for pulse_len microseconds and then reset to not level.
|
||||
|
||||
user_gpio:= 0-31
|
||||
pulse_len:= 1-50
|
||||
pulse_len:= 1-100
|
||||
level:= 0-1
|
||||
|
||||
...
|
||||
|
@ -2535,11 +2584,19 @@ class pi():
|
|||
(s, pars) = pi.script_status(sid)
|
||||
...
|
||||
"""
|
||||
status = _u2i(_pigpio_command(self.sl, _PI_CMD_PROCP, script_id, 0))
|
||||
if status > 0:
|
||||
params = struct.unpack('I10i', self.sl.s.recv(44))
|
||||
return params[0], params[1:]
|
||||
return status, ()
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(
|
||||
_pigpio_command(self.sl, _PI_CMD_PROCP, script_id, 0, False))
|
||||
if bytes > 0:
|
||||
data = self._rxbuf(bytes)
|
||||
pars = struct.unpack('11i', data)
|
||||
status = pars[0]
|
||||
params = pars[1:]
|
||||
else:
|
||||
status = bytes
|
||||
params = ()
|
||||
self.sl.l.release()
|
||||
return status, params
|
||||
|
||||
def stop_script(self, script_id):
|
||||
"""
|
||||
|
@ -2601,10 +2658,15 @@ class pi():
|
|||
(count, data) = pi.bb_serial_read(4)
|
||||
...
|
||||
"""
|
||||
bytes = _u2i(_pigpio_command(self.sl, _PI_CMD_SLR, user_gpio, 10000))
|
||||
# Don't raise exception. Must release lock.
|
||||
bytes = u2i(
|
||||
_pigpio_command(self.sl, _PI_CMD_SLR, user_gpio, 10000, False))
|
||||
if bytes > 0:
|
||||
return bytes, self._rxbuf(bytes)
|
||||
return bytes, ""
|
||||
data = self._rxbuf(bytes)
|
||||
else:
|
||||
data = ""
|
||||
self.sl.l.release()
|
||||
return bytes, data
|
||||
|
||||
|
||||
def bb_serial_read_close(self, user_gpio):
|
||||
|
@ -2956,8 +3018,8 @@ def xref():
|
|||
PUD_OFF = 0
|
||||
PUD_UP = 2
|
||||
|
||||
pulse_len: 1-50
|
||||
A whole number.
|
||||
pulse_len: 1-100
|
||||
The length of the trigger pulse in microseconds.
|
||||
|
||||
pulses:
|
||||
A list of class pulse objects defining the characteristics of a
|
||||
|
|
|
@ -1502,7 +1502,7 @@ level for pulseLen microseconds and then reset to not level.
|
|||
.EX
|
||||
user_gpio: 0-31.
|
||||
.br
|
||||
pulseLen: 1-50.
|
||||
pulseLen: 1-100.
|
||||
.br
|
||||
level: 0,1.
|
||||
.br
|
||||
|
@ -3149,7 +3149,7 @@ PI_PUD_UP 2
|
|||
.br
|
||||
|
||||
.IP "\fBpulseLen\fP" 0
|
||||
1-50, the length of a trigger pulse in microseconds.
|
||||
1-100, the length of a trigger pulse in microseconds.
|
||||
|
||||
.br
|
||||
|
||||
|
|
|
@ -1120,7 +1120,7 @@ level for pulseLen microseconds and then reset to not level.
|
|||
|
||||
. .
|
||||
user_gpio: 0-31.
|
||||
pulseLen: 1-50.
|
||||
pulseLen: 1-100.
|
||||
level: 0,1.
|
||||
. .
|
||||
|
||||
|
@ -2044,7 +2044,7 @@ PI_PUD_UP 2
|
|||
. .
|
||||
|
||||
pulseLen::
|
||||
1-50, the length of a trigger pulse in microseconds.
|
||||
1-100, the length of a trigger pulse in microseconds.
|
||||
|
||||
*pulses::
|
||||
An array of pulsed to be added to a waveform.
|
||||
|
|
2
setup.py
2
setup.py
|
@ -3,7 +3,7 @@
|
|||
from distutils.core import setup
|
||||
|
||||
setup(name='pigpio',
|
||||
version='1.9',
|
||||
version='1.10',
|
||||
author='joan',
|
||||
author_email='joan@abyz.co.uk',
|
||||
maintainer='joan',
|
||||
|
|
2
x_pigs
2
x_pigs
|
@ -86,7 +86,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 = 19 ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
if [[ $s = 20 ]]; 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
|
||||
|
|
2
x_pipe
2
x_pipe
|
@ -119,7 +119,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 = 19 ]]; then echo "PIGPV ok"; else echo "PIGPV fail ($s)"; fi
|
||||
if [[ $s = 20 ]]; 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