diff --git a/MakeRemote b/MakeRemote
index 40ee70c..14dd622 100644
--- a/MakeRemote
+++ b/MakeRemote
@@ -24,26 +24,32 @@ clean:
rm -f *.o *.i *.s *~ $(ALL)
install: $(LIB)
- sudo install -m 0755 -d /usr/local/include
- sudo install -m 0644 pigpio.h /usr/local/include
- sudo install -m 0644 pigpiod_if.h /usr/local/include
- sudo install -m 0755 -d /usr/local/lib
- sudo install -m 0644 libpigpiod_if.so /usr/local/lib
- sudo install -m 0755 -d /usr/local/bin
- sudo install -m 0755 pigs /usr/local/bin
- sudo python2 setup.py install
- sudo python3 setup.py install
- sudo install -m 0755 -d /usr/local/man/man1
- sudo install -m 0644 *.1 /usr/local/man/man1
- sudo install -m 0755 -d /usr/local/man/man3
- sudo install -m 0644 *.3 /usr/local/man/man3
+ install -m 0755 -d /usr/local/include
+ install -m 0644 pigpio.h /usr/local/include
+ install -m 0644 pigpiod_if.h /usr/local/include
+ install -m 0755 -d /usr/local/lib
+ install -m 0644 libpigpiod_if.so /usr/local/lib
+ install -m 0755 -d /usr/local/bin
+ install -m 0755 pigs /usr/local/bin
+ python2 setup.py install
+ python3 setup.py install
+ install -m 0755 -d /usr/local/man/man1
+ install -m 0644 *.1 /usr/local/man/man1
+ install -m 0755 -d /usr/local/man/man3
+ install -m 0644 *.3 /usr/local/man/man3
uninstall:
- sudo rm -f /usr/local/include/pigpio.h
- sudo rm -f /usr/local/lib/libpigpiod_if.so
- sudo rm -f /usr/local/bin/pigs
- sudo rm -f /usr/local/man/man1/pig*.1
- sudo rm -f /usr/local/man/man3/pig*.3
+ rm -f /usr/local/include/pigpio.h
+ rm -f /usr/local/lib/libpigpiod_if.so
+ echo removing python2 files
+ python2 setup.py install --record /tmp/pigpio >/dev/null
+ xargs rm -f < /tmp/pigpio >/dev/null
+ echo removing python3 files
+ python3 setup.py install --record /tmp/pigpio >/dev/null
+ xargs rm -f < /tmp/pigpio >/dev/null
+ rm -f /usr/local/bin/pigs
+ rm -f /usr/local/man/man1/pig*.1
+ rm -f /usr/local/man/man3/pig*.3
LIB = libpigpiod_if.so
OBJ = pigpiod_if.o command.o
diff --git a/Makefile b/Makefile
index ea7951f..5bbe2af 100644
--- a/Makefile
+++ b/Makefile
@@ -52,42 +52,42 @@ clean:
rm -f *.o *.i *.s *~ $(ALL)
install: $(ALL)
- sudo install -m 0755 -d /opt/pigpio/cgi
- sudo install -m 0755 -d /usr/local/include
- sudo install -m 0644 pigpio.h /usr/local/include
- sudo install -m 0644 pigpiod_if.h /usr/local/include
- sudo install -m 0755 -d /usr/local/lib
- sudo install -m 0755 libpigpio.so /usr/local/lib
- sudo install -m 0755 libpigpiod_if.so /usr/local/lib
- sudo install -m 0755 -d /usr/local/bin
- sudo install -m 0755 -s pig2vcd /usr/local/bin
- sudo install -m 0755 -s pigpiod /usr/local/bin
- sudo install -m 0755 -s pigs /usr/local/bin
- sudo python2 setup.py install
- sudo python3 setup.py install
- sudo install -m 0755 -d /usr/local/man/man1
- sudo install -m 0644 *.1 /usr/local/man/man1
- sudo install -m 0755 -d /usr/local/man/man3
- sudo install -m 0644 *.3 /usr/local/man/man3
- sudo ldconfig
+ install -m 0755 -d /opt/pigpio/cgi
+ install -m 0755 -d /usr/local/include
+ install -m 0644 pigpio.h /usr/local/include
+ install -m 0644 pigpiod_if.h /usr/local/include
+ install -m 0755 -d /usr/local/lib
+ install -m 0755 libpigpio.so /usr/local/lib
+ install -m 0755 libpigpiod_if.so /usr/local/lib
+ install -m 0755 -d /usr/local/bin
+ install -m 0755 -s pig2vcd /usr/local/bin
+ install -m 0755 -s pigpiod /usr/local/bin
+ install -m 0755 -s pigs /usr/local/bin
+ python2 setup.py install
+ python3 setup.py install
+ install -m 0755 -d /usr/local/man/man1
+ install -m 0644 *.1 /usr/local/man/man1
+ install -m 0755 -d /usr/local/man/man3
+ install -m 0644 *.3 /usr/local/man/man3
+ ldconfig
uninstall:
- sudo rm -f /usr/local/include/pigpio.h
- sudo rm -f /usr/local/include/pigpiod_if.h
- sudo rm -f /usr/local/lib/libpigpio.so
- sudo rm -f /usr/local/lib/libpigpiod_if.so
- sudo rm -f /usr/local/bin/pig2vcd
- sudo rm -f /usr/local/bin/pigpiod
- sudo rm -f /usr/local/bin/pigs
+ rm -f /usr/local/include/pigpio.h
+ rm -f /usr/local/include/pigpiod_if.h
+ rm -f /usr/local/lib/libpigpio.so
+ rm -f /usr/local/lib/libpigpiod_if.so
+ rm -f /usr/local/bin/pig2vcd
+ rm -f /usr/local/bin/pigpiod
+ rm -f /usr/local/bin/pigs
echo removing python2 files
- sudo python2 setup.py install --record /tmp/pigpio >/dev/null
- sudo xargs rm -f < /tmp/pigpio >/dev/null
+ python2 setup.py install --record /tmp/pigpio >/dev/null
+ xargs rm -f < /tmp/pigpio >/dev/null
echo removing python3 files
- sudo python3 setup.py install --record /tmp/pigpio >/dev/null
- sudo xargs rm -f < /tmp/pigpio >/dev/null
- sudo rm -f /usr/local/man/man1/pig*.1
- sudo rm -f /usr/local/man/man3/pig*.3
- sudo ldconfig
+ python3 setup.py install --record /tmp/pigpio >/dev/null
+ xargs rm -f < /tmp/pigpio >/dev/null
+ rm -f /usr/local/man/man1/pig*.1
+ rm -f /usr/local/man/man3/pig*.3
+ ldconfig
$(LIB1): $(OBJ1)
$(SHLIB) -o $(LIB1) $(OBJ1)
diff --git a/command.c b/command.c
index 4b52bec..1981fa5 100644
--- a/command.c
+++ b/command.c
@@ -26,7 +26,7 @@ For more information, please refer to
*/
/*
-This version is for pigpio version 35+
+This version is for pigpio version 37+
*/
#include
@@ -468,8 +468,7 @@ static errInfo_t errInfo[]=
{PI_CHAIN_NESTING , "chain counters nested too deeply"},
{PI_CHAIN_TOO_BIG , "chain is too long"},
{PI_DEPRECATED , "deprecated function removed"},
- {PI_NOT_IN_SER_MODE , "gpio not opened for bit-bang serial"},
- {PI_BAD_SER_INVERT , "bit-bang serial invert not 0 or 1"},
+ {PI_BAD_SER_INVERT , "bit bang serial invert not 0 or 1"},
};
diff --git a/pigpio.3 b/pigpio.3
index 9675778..ad68887 100644
--- a/pigpio.3
+++ b/pigpio.3
@@ -1295,24 +1295,30 @@ typedef struct
.br
.br
-seqno starts at 0 each time the handle is opened and then increments
+seqno: starts at 0 each time the handle is opened and then increments
by one for each report.
.br
.br
-flags, if bit 5 is set then bits 0-4 of the flags indicate a gpio
-which has had a watchdog timeout.
+flags: two flags are defined, PI_NTFY_FLAGS_WDOG and PI_NTFY_FLAGS_ALIVE.
+If bit 5 is set (PI_NTFY_FLAGS_WDOG) then bits 0-4 of the flags
+indicate a gpio which has had a watchdog timeout; if bit 6 is set
+(PI_NTFY_FLAGS_ALIVE) this indicates a keep alive signal on the
+pipe/socket and is sent once a minute in the absence of other
+notification activity.
.br
.br
-tick is the number of microseconds since system boot.
+tick: the number of microseconds since system boot. It wraps around
+after 1h12m.
.br
.br
-level indicates the level of each gpio.
+level: indicates the level of each gpio. If bit 1<
*/
-/* pigpio version 35 */
+/* pigpio version 37 */
/* include ------------------------------------------------------- */
@@ -9338,12 +9338,12 @@ int gpioSerialReadInvert(unsigned gpio, unsigned invert)
SOFT_ERROR(PI_BAD_USER_GPIO, "bad gpio (%d)", gpio);
if (wfRx[gpio].mode != PI_WFRX_SERIAL)
- SOFT_ERROR(PI_NOT_IN_SER_MODE, "gpio %d is not in serial mode", gpio);
+ SOFT_ERROR(PI_NOT_SERIAL_GPIO, "no serial read on gpio (%d)", gpio);
if ((invert < PI_BB_SER_NORMAL) ||
(invert > PI_BB_SER_INVERT))
SOFT_ERROR(PI_BAD_SER_INVERT,
- "gpio %d, invert (%d)", gpio, invert);
+ "bad invert level for gpio %d (%d)", gpio, invert);
wfRx[gpio].s.invert = invert;
diff --git a/pigpio.h b/pigpio.h
index 3a69e07..bbeb710 100644
--- a/pigpio.h
+++ b/pigpio.h
@@ -31,7 +31,7 @@ For more information, please refer to
#include
#include
-#define PIGPIO_VERSION 36
+#define PIGPIO_VERSION 37
/*TEXT
@@ -1317,15 +1317,21 @@ typedef struct
} gpioReport_t;
. .
-seqno starts at 0 each time the handle is opened and then increments
+seqno: starts at 0 each time the handle is opened and then increments
by one for each report.
-flags, if bit 5 is set then bits 0-4 of the flags indicate a gpio
-which has had a watchdog timeout.
+flags: two flags are defined, PI_NTFY_FLAGS_WDOG and PI_NTFY_FLAGS_ALIVE.
+If bit 5 is set (PI_NTFY_FLAGS_WDOG) then bits 0-4 of the flags
+indicate a gpio which has had a watchdog timeout; if bit 6 is set
+(PI_NTFY_FLAGS_ALIVE) this indicates a keep alive signal on the
+pipe/socket and is sent once a minute in the absence of other
+notification activity.
-tick is the number of microseconds since system boot.
+tick: the number of microseconds since system boot. It wraps around
+after 1h12m.
-level indicates the level of each gpio.
+level: indicates the level of each gpio. If bit 1<= 0:
@@ -2143,6 +2156,23 @@ class pi():
you will always run on the local Pi use the standard SMBus
module instead.
+ For the SMBus commands the low level transactions are shown
+ at the end of the function description. The following
+ abbreviations are used.
+
+ . .
+ S (1 bit) : Start bit
+ P (1 bit) : Stop bit
+ Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
+ A, NA (1 bit) : Accept and not accept bit.
+ Addr (7 bits): I2C 7 bit address.
+ Comm (8 bits): Command byte, which often selects a register.
+ Data (8 bits): A data byte.
+ Count (8 bits): A byte containing the length of a block operation.
+
+ [..]: Data sent by the device.
+ . .
+
...
h = pi.i2c_open(1, 0x53) # open device at address 0x53 on bus 1
...
@@ -2172,11 +2202,14 @@ class pi():
"""
Sends a single bit to the device associated with handle.
- SMBus 2.0 5.5.1 - Quick command.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
bit:= 0 or 1, the value to write.
+ SMBus 2.0 5.5.1 - Quick command.
+ . .
+ S Addr Rd/Wr [A] P
+ . .
+
...
pi.i2c_write_quick(0, 1) # send 1 to device 0
pi.i2c_write_quick(3, 0) # send 0 to device 3
@@ -2188,11 +2221,14 @@ class pi():
"""
Sends a single byte to the device associated with handle.
- SMBus 2.0 5.5.2 - Send byte.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
byte_val:= 0-255, the value to write.
+ SMBus 2.0 5.5.2 - Send byte.
+ . .
+ S Addr Wr [A] Data [A] P
+ . .
+
...
pi.i2c_write_byte(1, 17) # send byte 17 to device 1
pi.i2c_write_byte(2, 0x23) # send byte 0x23 to device 2
@@ -2205,10 +2241,13 @@ class pi():
"""
Reads a single byte from the device associated with handle.
- SMBus 2.0 5.5.3 - Receive byte.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
+ SMBus 2.0 5.5.3 - Receive byte.
+ . .
+ S Addr Rd [A] [Data] NA P
+ . .
+
...
b = pi.i2c_read_byte(2) # read a byte from device 2
...
@@ -2220,12 +2259,15 @@ class pi():
Writes a single byte to the specified register of the device
associated with handle.
- SMBus 2.0 5.5.4 - Write byte.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
byte_val:= 0-255, the value to write.
+ SMBus 2.0 5.5.4 - Write byte.
+ . .
+ S Addr Wr [A] Comm [A] Data [A] P
+ . .
+
...
# send byte 0xC5 to reg 2 of device 1
pi.i2c_write_byte_data(1, 2, 0xC5)
@@ -2248,12 +2290,15 @@ class pi():
Writes a single 16 bit word to the specified register of the
device associated with handle.
- SMBus 2.0 5.5.4 - Write word.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
word_val:= 0-65535, the value to write.
+ SMBus 2.0 5.5.4 - Write word.
+ . .
+ S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
+ . .
+
...
# send word 0xA0C5 to reg 5 of device 4
pi.i2c_write_word_data(4, 5, 0xA0C5)
@@ -2276,11 +2321,14 @@ class pi():
Reads a single byte from the specified register of the device
associated with handle.
- SMBus 2.0 5.5.5 - Read byte.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
+ SMBus 2.0 5.5.5 - Read byte.
+ . .
+ S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P
+ . .
+
...
# read byte from reg 17 of device 2
b = pi.i2c_read_byte_data(2, 17)
@@ -2296,11 +2344,14 @@ class pi():
Reads a single 16 bit word from the specified register of the
device associated with handle.
- SMBus 2.0 5.5.5 - Read word.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
+ SMBus 2.0 5.5.5 - Read word.
+ . .
+ S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
+ . .
+
...
# read word from reg 2 of device 3
w = pi.i2c_read_word_data(3, 2)
@@ -2316,12 +2367,16 @@ class pi():
Writes 16 bits of data to the specified register of the device
associated with handle and reads 16 bits of data in return.
- SMBus 2.0 5.5.6 - Process call.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
word_val:= 0-65535, the value to write.
+ SMBus 2.0 5.5.6 - Process call.
+ . .
+ S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A]
+ S Addr Rd [A] [DataLow] A [DataHigh] NA P
+ . .
+
...
r = pi.i2c_process_call(h, 4, 0x1231)
r = pi.i2c_process_call(h, 6, 0)
@@ -2341,12 +2396,16 @@ class pi():
Writes up to 32 bytes to the specified register of the device
associated with handle.
- SMBus 2.0 5.5.7 - Block write.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
data:= the bytes to write.
+ SMBus 2.0 5.5.7 - Block write.
+ . .
+ S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A]
+ Data [A] P
+ . .
+
...
pi.i2c_write_block_data(4, 5, b'hello')
@@ -2373,11 +2432,15 @@ class pi():
Reads a block of up to 32 bytes from the specified register of
the device associated with handle.
- SMBus 2.0 5.5.7 - Block read.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
+ SMBus 2.0 5.5.7 - Block read.
+ . .
+ S Addr Wr [A] Comm [A]
+ S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
+ . .
+
The amount of returned data is set by the device.
The returned value is a tuple of the number of bytes read and a
@@ -2408,8 +2471,6 @@ class pi():
associated with handle and reads a device specified number
of bytes of data in return.
- SMBus 2.0 5.5.8 - Block write-block read.
-
handle:= >=0 (as returned by a prior call to [*i2c_open*]).
reg:= >=0, the device register.
data:= the bytes to write.
@@ -2418,6 +2479,12 @@ class pi():
be sent and a minimum of 1 byte may be received. The total
number of bytes sent/received must be 32 or less.
+ SMBus 2.0 5.5.8 - Block write-block read.
+ . .
+ S Addr Wr [A] Comm [A] Count [A] Data [A] ...
+ S Addr Rd [A] [Count] A [Data] ... A P
+ . .
+
The returned value is a tuple of the number of bytes read and a
bytearray containing the bytes. If there was an error the
number of bytes read will be less than zero (and will contain
@@ -2458,6 +2525,11 @@ class pi():
reg:= >=0, the device register.
data:= the bytes to write.
+ . .
+ S Addr Wr [A] Comm [A]
+ S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
+ . .
+
...
pi.i2c_write_i2c_block_data(4, 5, 'hello')
@@ -2488,6 +2560,10 @@ class pi():
reg:= >=0, the device register.
count:= >0, the number of bytes to read.
+ . .
+ S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
+ . .
+
The returned value is a tuple of the number of bytes read and a
bytearray containing the bytes. If there was an error the
number of bytes read will be less than zero (and will contain
@@ -3342,7 +3418,7 @@ class pi():
status = pi.bb_serial_invert(17, 1)
...
"""
- return _u2i(_pigpio_command(self.sl, _PI_CMD_SLRI, user_gpio, invert, 0))
+ return _u2i(_pigpio_command(self.sl, _PI_CMD_SLRI, user_gpio, invert))
def custom_1(self, arg1=0, arg2=0, argx=[]):
"""
@@ -3738,8 +3814,7 @@ def xref():
PI_CHAIN_NESTING = -118
PI_CHAIN_TOO_BIG = -119
PI_DEPRECATED = -120
- PI_NOT_IN_SER_MODE =-121
- PI_BAD_SER_INVERT =-122
+ PI_BAD_SER_INVERT = -121
. .
frequency: 0-40000
@@ -3809,6 +3884,10 @@ def xref():
i2c_flags: 32 bit
No I2C flags are currently defined.
+ invert: 0-1
+ A flag used to set normal or inverted bit bang serial data
+ level logic.
+
level: 0-1 (2)
CLEAR = 0
HIGH = 1
diff --git a/pigpiod_if.3 b/pigpiod_if.3
index fff471d..77eddcf 100644
--- a/pigpiod_if.3
+++ b/pigpiod_if.3
@@ -2189,7 +2189,7 @@ Returns 0 if OK, otherwise PI_BAD_USER_GPIO, or PI_NOT_SERIAL_GPIO.
.IP "\fBint bb_serial_invert(unsigned user_gpio, unsigned invert)\fP"
.IP "" 4
-This function inverts the serial logic for bit bang reading of serial data.
+This function inverts serial logic for big bang serial reads.
.br
@@ -2197,7 +2197,8 @@ This function inverts the serial logic for bit bang reading of serial data.
.EX
user_gpio: 0-31, previously opened with \fBbb_serial_read_open\fP.
- invert: 0-1, 1 invert , 0 normal.
+.br
+ invert: 0-1, 1 invert, 0 normal.
.br
.EE
@@ -2205,7 +2206,7 @@ user_gpio: 0-31, previously opened with \fBbb_serial_read_open\fP.
.br
.br
-Returns 0 if OK, otherwise PI_NOT_IN_SER_MODE or PI_BAD_SER_INVERT.
+Returns 0 if OK, otherwise PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
.IP "\fBint i2c_open(unsigned i2c_bus, unsigned i2c_addr, unsigned i2c_flags)\fP"
.IP "" 4
@@ -2236,6 +2237,42 @@ No flags are currently defined. This parameter should be set to zero.
Returns a handle (>=0) if OK, otherwise PI_BAD_I2C_BUS, PI_BAD_I2C_ADDR,
PI_BAD_FLAGS, PI_NO_HANDLE, or PI_I2C_OPEN_FAILED.
+.br
+
+.br
+For the SMBus commands the low level transactions are shown at the end
+of the function description. The following abbreviations are used.
+
+.br
+
+.br
+
+.EX
+S (1 bit) : Start bit
+.br
+P (1 bit) : Stop bit
+.br
+Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
+.br
+A, NA (1 bit) : Accept and not accept bit.
+.br
+.br
+.br
+Addr (7 bits): I2C 7 bit address.
+.br
+Comm (8 bits): Command byte, a data byte which often selects a register.
+.br
+Data (8 bits): A data byte.
+.br
+Count (8 bits): A data byte containing the length of a block operation.
+.br
+
+.br
+[..]: Data sent by the device.
+.br
+
+.EE
+
.IP "\fBint i2c_close(unsigned handle)\fP"
.IP "" 4
This closes the I2C device associated with the handle.
@@ -2281,7 +2318,13 @@ PI_I2C_WRITE_FAILED.
.br
.br
-Quick command. smbus 2.0 5.5.1
+Quick command. SMBus 2.0 5.5.1
+
+.EX
+S Addr Rd/Wr [A] P
+.br
+
+.EE
.IP "\fBint i2c_write_byte(unsigned handle, unsigned bVal)\fP"
.IP "" 4
@@ -2308,7 +2351,13 @@ PI_I2C_WRITE_FAILED.
.br
.br
-Send byte. smbus 2.0 5.5.2
+Send byte. SMBus 2.0 5.5.2
+
+.EX
+S Addr Wr [A] Data [A] P
+.br
+
+.EE
.IP "\fBint i2c_read_byte(unsigned handle)\fP"
.IP "" 4
@@ -2333,7 +2382,13 @@ or PI_I2C_READ_FAILED.
.br
.br
-Receive byte. smbus 2.0 5.5.3
+Receive byte. SMBus 2.0 5.5.3
+
+.EX
+S Addr Rd [A] [Data] NA P
+.br
+
+.EE
.IP "\fBint i2c_write_byte_data(unsigned handle, unsigned i2c_reg, unsigned bVal)\fP"
.IP "" 4
@@ -2363,7 +2418,13 @@ PI_I2C_WRITE_FAILED.
.br
.br
-Write byte. smbus 2.0 5.5.4
+Write byte. SMBus 2.0 5.5.4
+
+.EX
+S Addr Wr [A] Comm [A] Data [A] P
+.br
+
+.EE
.IP "\fBint i2c_write_word_data(unsigned handle, unsigned i2c_reg, unsigned wVal)\fP"
.IP "" 4
@@ -2393,7 +2454,13 @@ PI_I2C_WRITE_FAILED.
.br
.br
-Write word. smbus 2.0 5.5.4
+Write word. SMBus 2.0 5.5.4
+
+.EX
+S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
+.br
+
+.EE
.IP "\fBint i2c_read_byte_data(unsigned handle, unsigned i2c_reg)\fP"
.IP "" 4
@@ -2421,7 +2488,13 @@ PI_BAD_PARAM, or PI_I2C_READ_FAILED.
.br
.br
-Read byte. smbus 2.0 5.5.5
+Read byte. SMBus 2.0 5.5.5
+
+.EX
+S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P
+.br
+
+.EE
.IP "\fBint i2c_read_word_data(unsigned handle, unsigned i2c_reg)\fP"
.IP "" 4
@@ -2449,7 +2522,13 @@ PI_BAD_PARAM, or PI_I2C_READ_FAILED.
.br
.br
-Read word. smbus 2.0 5.5.5
+Read word. SMBus 2.0 5.5.5
+
+.EX
+S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
+.br
+
+.EE
.IP "\fBint i2c_process_call(unsigned handle, unsigned i2c_reg, unsigned wVal)\fP"
.IP "" 4
@@ -2479,7 +2558,15 @@ PI_BAD_PARAM, or PI_I2C_READ_FAILED.
.br
.br
-Process call. smbus 2.0 5.5.6
+Process call. SMBus 2.0 5.5.6
+
+.EX
+S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A]
+.br
+ S Addr Rd [A] [DataLow] A [DataHigh] NA P
+.br
+
+.EE
.IP "\fBint i2c_write_block_data(unsigned handle, unsigned i2c_reg, char *buf, unsigned count)\fP"
.IP "" 4
@@ -2511,7 +2598,13 @@ PI_I2C_WRITE_FAILED.
.br
.br
-Block write. smbus 2.0 5.5.7
+Block write. SMBus 2.0 5.5.7
+
+.EX
+S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P
+.br
+
+.EE
.IP "\fBint i2c_read_block_data(unsigned handle, unsigned i2c_reg, char *buf)\fP"
.IP "" 4
@@ -2546,7 +2639,15 @@ PI_BAD_PARAM, or PI_I2C_READ_FAILED.
.br
.br
-Block read. smbus 2.0 5.5.7
+Block read. SMBus 2.0 5.5.7
+
+.EX
+S Addr Wr [A] Comm [A]
+.br
+ S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
+.br
+
+.EE
.IP "\fBint i2c_block_process_call(unsigned handle, unsigned i2c_reg, char *buf, unsigned count)\fP"
.IP "" 4
@@ -2590,7 +2691,15 @@ bytes sent/received must be 32 or less.
.br
.br
-Block write-block read. smbus 2.0 5.5.8
+Block write-block read. SMBus 2.0 5.5.8
+
+.EX
+S Addr Wr [A] Comm [A] Count [A] Data [A] ...
+.br
+ S Addr Rd [A] [Count] A [Data] ... A P
+.br
+
+.EE
.IP "\fBint i2c_read_i2c_block_data(unsigned handle, unsigned i2c_reg, char *buf, unsigned count)\fP"
.IP "" 4
@@ -2619,6 +2728,18 @@ i2c_reg: 0-255, the register to read.
Returns the number of bytes read (>0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
+.br
+
+.br
+
+.EX
+S Addr Wr [A] Comm [A]
+.br
+ S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
+.br
+
+.EE
+
.IP "\fBint i2c_write_i2c_block_data(unsigned handle, unsigned i2c_reg, char *buf, unsigned count)\fP"
.IP "" 4
This writes 1 to 32 bytes to the specified register of the device
@@ -2646,6 +2767,16 @@ i2c_reg: 0-255, the register to write.
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
+.br
+
+.br
+
+.EX
+S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
+.br
+
+.EE
+
.IP "\fBint i2c_read_device(unsigned handle, char *buf, unsigned count)\fP"
.IP "" 4
This reads count bytes from the raw device into buf.
@@ -4010,6 +4141,13 @@ A whole number, negative or positive.
.br
+.IP "\fBinvert\fP" 0
+A flag used to set normal or inverted bit bang serial data level logic.
+
+.br
+
+.br
+
.IP "\fBlevel\fP" 0
The level of a gpio. Low or High.
diff --git a/pigpiod_if.c b/pigpiod_if.c
index 79a4f03..93b83e4 100644
--- a/pigpiod_if.c
+++ b/pigpiod_if.c
@@ -25,7 +25,7 @@ OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to
*/
-/* PIGPIOD_IF_VERSION 17 */
+/* PIGPIOD_IF_VERSION 18 */
#include
#include
diff --git a/pigpiod_if.h b/pigpiod_if.h
index ddb298f..ed68a99 100644
--- a/pigpiod_if.h
+++ b/pigpiod_if.h
@@ -30,7 +30,7 @@ For more information, please refer to
#include "pigpio.h"
-#define PIGPIOD_IF_VERSION 17
+#define PIGPIOD_IF_VERSION 18
/*TEXT
@@ -1512,7 +1512,7 @@ user_gpio: 0-31, previously opened with [*bb_serial_read_open*].
invert: 0-1, 1 invert, 0 normal.
. .
-Returns 0 if OK, otherwise PI_NOT_IN_SER_MODE or PI_BAD_SER_INVERT.
+Returns 0 if OK, otherwise PI_NOT_SERIAL_GPIO or PI_BAD_SER_INVERT.
D*/
/*F*/
@@ -1530,6 +1530,22 @@ No flags are currently defined. This parameter should be set to zero.
Returns a handle (>=0) if OK, otherwise PI_BAD_I2C_BUS, PI_BAD_I2C_ADDR,
PI_BAD_FLAGS, PI_NO_HANDLE, or PI_I2C_OPEN_FAILED.
+
+For the SMBus commands the low level transactions are shown at the end
+of the function description. The following abbreviations are used.
+
+. .
+S (1 bit) : Start bit
+P (1 bit) : Stop bit
+Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
+A, NA (1 bit) : Accept and not accept bit.
+Addr (7 bits): I2C 7 bit address.
+Comm (8 bits): Command byte, a data byte which often selects a register.
+Data (8 bits): A data byte.
+Count (8 bits): A data byte containing the length of a block operation.
+
+[..]: Data sent by the device.
+. .
D*/
/*F*/
@@ -1558,7 +1574,10 @@ handle: >=0, as returned by a call to [*i2c_open*].
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
-Quick command. smbus 2.0 5.5.1
+Quick command. SMBus 2.0 5.5.1
+. .
+S Addr Rd/Wr [A] P
+. .
D*/
/*F*/
@@ -1574,7 +1593,10 @@ handle: >=0, as returned by a call to [*i2c_open*].
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
-Send byte. smbus 2.0 5.5.2
+Send byte. SMBus 2.0 5.5.2
+. .
+S Addr Wr [A] Data [A] P
+. .
D*/
/*F*/
@@ -1589,7 +1611,10 @@ handle: >=0, as returned by a call to [*i2c_open*].
Returns the byte read (>=0) if OK, otherwise PI_BAD_HANDLE,
or PI_I2C_READ_FAILED.
-Receive byte. smbus 2.0 5.5.3
+Receive byte. SMBus 2.0 5.5.3
+. .
+S Addr Rd [A] [Data] NA P
+. .
D*/
/*F*/
@@ -1607,7 +1632,10 @@ i2c_reg: 0-255, the register to write.
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
-Write byte. smbus 2.0 5.5.4
+Write byte. SMBus 2.0 5.5.4
+. .
+S Addr Wr [A] Comm [A] Data [A] P
+. .
D*/
/*F*/
@@ -1625,7 +1653,10 @@ i2c_reg: 0-255, the register to write.
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
-Write word. smbus 2.0 5.5.4
+Write word. SMBus 2.0 5.5.4
+. .
+S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A] P
+. .
D*/
/*F*/
@@ -1642,7 +1673,10 @@ i2c_reg: 0-255, the register to read.
Returns the byte read (>=0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
-Read byte. smbus 2.0 5.5.5
+Read byte. SMBus 2.0 5.5.5
+. .
+S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P
+. .
D*/
/*F*/
@@ -1659,7 +1693,10 @@ i2c_reg: 0-255, the register to read.
Returns the word read (>=0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
-Read word. smbus 2.0 5.5.5
+Read word. SMBus 2.0 5.5.5
+. .
+S Addr Wr [A] Comm [A] S Addr Rd [A] [DataLow] A [DataHigh] NA P
+. .
D*/
/*F*/
@@ -1677,7 +1714,11 @@ i2c_reg: 0-255, the register to write/read.
Returns the word read (>=0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
-Process call. smbus 2.0 5.5.6
+Process call. SMBus 2.0 5.5.6
+. .
+S Addr Wr [A] Comm [A] DataLow [A] DataHigh [A]
+ S Addr Rd [A] [DataLow] A [DataHigh] NA P
+. .
D*/
/*F*/
@@ -1697,7 +1738,10 @@ i2c_reg: 0-255, the register to write.
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
-Block write. smbus 2.0 5.5.7
+Block write. SMBus 2.0 5.5.7
+. .
+S Addr Wr [A] Comm [A] Count [A] Data [A] Data [A] ... [A] Data [A] P
+. .
D*/
/*F*/
@@ -1717,7 +1761,11 @@ The amount of returned data is set by the device.
Returns the number of bytes read (>=0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
-Block read. smbus 2.0 5.5.7
+Block read. SMBus 2.0 5.5.7
+. .
+S Addr Wr [A] Comm [A]
+ S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P
+. .
D*/
/*F*/
@@ -1743,7 +1791,11 @@ The smbus 2.0 documentation states that a minimum of 1 byte may be
sent and a minimum of 1 byte may be received. The total number of
bytes sent/received must be 32 or less.
-Block write-block read. smbus 2.0 5.5.8
+Block write-block read. SMBus 2.0 5.5.8
+. .
+S Addr Wr [A] Comm [A] Count [A] Data [A] ...
+ S Addr Rd [A] [Count] A [Data] ... A P
+. .
D*/
/*F*/
@@ -1762,6 +1814,11 @@ i2c_reg: 0-255, the register to read.
Returns the number of bytes read (>0) if OK, otherwise PI_BAD_HANDLE,
PI_BAD_PARAM, or PI_I2C_READ_FAILED.
+
+. .
+S Addr Wr [A] Comm [A]
+ S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P
+. .
D*/
@@ -1781,6 +1838,10 @@ i2c_reg: 0-255, the register to write.
Returns 0 if OK, otherwise PI_BAD_HANDLE, PI_BAD_PARAM, or
PI_I2C_WRITE_FAILED.
+
+. .
+S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P
+. .
D*/
/*F*/
@@ -2518,6 +2579,9 @@ The number of bytes of data in a buffer.
int::
A whole number, negative or positive.
+invert::
+A flag used to set normal or inverted bit bang serial data level logic.
+
level::
The level of a gpio. Low or High.
diff --git a/pigs.1 b/pigs.1
index cdaa36d..544d52e 100644
--- a/pigs.1
+++ b/pigs.1
@@ -645,7 +645,7 @@ The gpio must be one of the following.
5 clock 1 A+/B+/Pi2 and compute module only (reserved for system use)
6 clock 2 A+/B+/Pi2 and compute module only
20 clock 0 A+/B+/Pi2 and compute module only
-21 clock 1 All models but Type 2 B (reserved for system use)
+21 clock 1 All models but Type 2 (reserved for system use)
.EE
@@ -742,7 +742,7 @@ The gpio must be one of the following.
This command returns the hardware revision of the Pi.
.br
-The hardware revision is found in the last 4 characters on the Type sion
+The hardware revision is found in the last 4 characters on the revision
line of /proc/cpuinfo.
.br
@@ -2570,6 +2570,35 @@ ERROR: no serial read in progress on gpio
.br
+.IP "\fBSLRI u v\fP - Sets bit bang serial data logic levels"
+.IP "" 4
+
+.br
+This command sets the logic level for reading bit bang serial data
+on gpio \fBu\fP.
+
+.br
+Upon success nothing is returned. On error a negative status code
+will be returned.
+
+.br
+The invert parameter \fBv\fP is 1 for inverted signal, 0 for normal.
+
+\fBExample\fP
+.br
+
+.EX
+$ pigs slri 17 1 # invert logic on gpio 17
+.br
+
+.br
+$ pigs slri 23 0 # use normal logic on gpio 23
+.br
+
+.EE
+
+.br
+
.IP "\fBSLRO u b db\fP - Open gpio for bit bang serial data"
.IP "" 4
@@ -2612,36 +2641,6 @@ ERROR: gpio already in use
.br
-.IP "\fBSLRI u i\fP - Invert serial logic for bit bang serial data"
-.IP "" 4
-
-.br
-This command inverts the serial logic when reading bit bang serial data.
-
-.br
-Upon success nothing is returned. On error a negative status code
-will be returned.
-
-.br
-The invert parameter is 1 for inverted signal, 0 for normal.
-
-.br
-
-\fBExample\fP
-.br
-
-.EX
-$ pigs slri 17 1
-.br
-
-.br
-$ pigs slri 17 0
-.br
-
-.EE
-
-.br
-
.IP "\fBSPIC h\fP - SPI close handle"
.IP "" 4
@@ -3246,35 +3245,35 @@ done
.br
.br
-pigs wvcha \\
+pigs wvcha \
.br
- ${w[4]} ${w[3]} ${w[2]} \\
+ ${w[4]} ${w[3]} ${w[2]} \
.br
- 255 0 \\
+ 255 0 \
.br
- ${w[0]} ${w[0]} ${w[0]} \\
+ ${w[0]} ${w[0]} ${w[0]} \
.br
- 255 0 \\
+ 255 0 \
.br
- ${w[0]} ${w[1]} \\
+ ${w[0]} ${w[1]} \
.br
- 255 2 0x88 0x13 \\
+ 255 2 0x88 0x13 \
.br
- 255 1 30 0 \\
+ 255 1 30 0 \
.br
- 255 0 \\
+ 255 0 \
.br
- ${w[2]} ${w[3]} ${w[0]} \\
+ ${w[2]} ${w[3]} ${w[0]} \
.br
- ${w[3]} ${w[1]} ${w[2]} \\
+ ${w[3]} ${w[1]} ${w[2]} \
.br
- 255 1 10 0 \\
+ 255 1 10 0 \
.br
- 255 1 5 0 \\
+ 255 1 5 0 \
.br
- ${w[4]} ${w[4]} ${w[4]} \\
+ ${w[4]} ${w[4]} ${w[4]} \
.br
- 255 2 0x20 0x4E \\
+ 255 2 0x20 0x4E \
.br
${w[0]} ${w[0]} ${w[0]}
.br
@@ -3399,7 +3398,7 @@ ERROR: attempt to create an empty waveform
.br
-.IP "\fBWVDEL wid\fP - Delete selected waveforms"
+.IP "\fBWVDEL wid\fP - Delete selected waveform"
.IP "" 4
.br
@@ -4123,7 +4122,7 @@ Again, ignore the details for now.
.br
.EX
-time (pigs procr 0 10000000; while a=$(pigs procp 0); [[ ${a::1} -eq 2 ]];\\
+time (pigs procr 0 10000000; while a=$(pigs procp 0); [[ ${a::1} -eq 2 ]];\
.br
do sleep 0.2; done)
.br
@@ -4163,7 +4162,7 @@ jp 999 jumps to tag 999 if the result is positive.
.br
.EX
-time (pigs procr 0 10000000; while a=$(pigs procp 0); [[ ${a::1} -eq 2 ]];\\
+time (pigs procr 0 10000000; while a=$(pigs procp 0); [[ ${a::1} -eq 2 ]];\
.br
do sleep 0.2; done)
.br
diff --git a/setup.py b/setup.py
index 15bcf6d..19a1a32 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@
from distutils.core import setup
setup(name='pigpio',
- version='1.20',
+ version='1.21',
author='joan',
author_email='joan@abyz.co.uk',
maintainer='joan',
diff --git a/x_pigs b/x_pigs
index 1f4f36b..923734a 100755
--- a/x_pigs
+++ b/x_pigs
@@ -49,7 +49,7 @@ s=$(pigs bs2 0)
if [[ $s = "" ]]; then echo "BS2 ok"; else echo "BS2 fail ($s)"; fi
s=$(pigs h)
-if [[ ${#s} = 4263 ]]; then echo "HELP ok"; else echo "HELP fail (${#s})"; fi
+if [[ ${#s} = 4321 ]]; then echo "HELP ok"; else echo "HELP fail (${#s})"; fi
s=$(pigs hwver)
if [[ $s -ne 0 ]]; then echo "HWVER ok"; else echo "HWVER fail ($s)"; fi