Commit graph

771 commits

Author SHA1 Message Date
Martin Lund
8afbc1d813 Update README 2022-09-10 18:03:08 +02:00
Martin Lund
ee46686fb6 Add experimental RS-485 support
Many modern RS-485 serial devices such as the ones from FTDI already
operate in RS-485 mode by default and will work with tio out of the box.
However, there are some RS-232/485 devices which need to be switched
from e.g. RS-232 to RS-485 mode to operate accordingly on the physical
level.

This commit implements the switching mechanism and interface required to
enable RS-485 mode. It only works on Linux and with serial devices which
use device drivers that support the Linux RS-485 control interface.

The RS-485 feature is detailed via the following options:

 --rs-485                           Enable RS-485 mode
 --rs-485-config <config>           Set RS-485 configuration

Set the RS-485 configuration using the following key or key value pair
format in the configuration field:

 RTS_ON_SEND=value             Set logical level (0 or 1) for RTS pin when sending
 RTS_AFTER_SEND=value          Set logical level (0 or 1) for RTS pin after sending
 RTS_DELAY_BEFORE_SEND=value   Set RTS delay (ms) before sending
 RTS_DELAY_AFTER_SEND=value    Set RTS delay (ms) after sending
 RX_DURING_TX                  Receive data even while sending data

If defining more than one key or key value pair, they must be comma
separated.

Example use:

 $ tio /dev/ttyUSB0 --rs-485 --rs-r485-config=RTS_DELAY_AFTER_SEND=50,RX_DURING_TX
2022-09-10 17:52:54 +02:00
Martin Lund
a58d406a3c Update list description 2022-09-08 09:32:51 +02:00
Martin Lund
fe6827bc7e Clean up man page 2022-08-30 01:11:27 +02:00
Martin Lund
be7f77e214 Update NEWS 2022-08-23 13:13:40 +02:00
Martin Lund
0dd703e5a2 Remove MacPorts instructions
Remove instructions for MacPorts because the port has no maintainer and
the port build definition is broken (missing dependency on libinih etc.).

It is recommended to use brew instead.
2022-08-23 12:58:58 +02:00
Martin Lund
d2aafc24cc Update README 2022-08-19 15:47:19 +02:00
Martin Lund
c12709f9fe
Merge pull request #166 from pcc/sigpipe
Ignore SIGPIPE signals
2022-08-18 02:50:09 +02:00
Peter Collingbourne
db765bc371 Ignore SIGPIPE signals
If the remote end of a socket is closed between when an input character
is received from the serial port and when it is written to the socket,
tio will receive a SIGPIPE signal when writing the character to the
socket, which will terminate the program. To prevent this, ignore the
signal, which will cause write(2) to return -EPIPE, causing tio to close
the socket.
2022-08-17 16:51:15 -07:00
Martin Lund
1219c6b8c0 Update README 2022-08-16 05:12:39 +02:00
Martin Lund
34e9d028a1 Bump version to v2.0 2022-08-15 20:05:40 +02:00
Martin Lund
e837fd0303 Add line response feature
Add a simple line response feature to make it possible to send e.g. a
command string to your serial device and easily receive and parse a line
response.

This is a convenience feature for simple request/response interaction
based on lines. For more advanced interaction the socket feature should
be used instead.

The line response feature is detailed via the following options:

 -r, --response-wait

Wait for line response then quit. A line is considered any string ending
with either CR or NL character. If no line is received tio will quit
after response timeout.

Any tio text is automatically muted when piping a string to tio while in
response mode to make it easy to parse the response.

 --response-timeout <ms>

Set timeout [ms] of line response (default: 100).

Example:

Sending a string (SCPI command) to a test instrument (Korad PSU) and
print line response:

 $ echo "*IDN?" | tio /dev/ttyACM0 --response-wait
 KORAD KD3305P V4.2 SN:32477045
2022-08-15 19:58:28 +02:00
Martin Lund
a75e04b883 Update man page 2022-08-15 11:00:47 +02:00
Martin Lund
614517bfc4 Update README 2022-08-13 22:50:22 +02:00
Martin Lund
f82d2353d4 Update README 2022-08-08 15:08:34 +02:00
Martin Lund
b3a0917bc9 Update .gitignore 2022-08-06 17:12:49 +02:00
Martin Lund
72eb682267 Cleanup hex mode code 2022-08-06 17:12:16 +02:00
Martin Lund
75aa066bf8 Fix potential sscanf() overflow 2022-08-06 16:54:59 +02:00
Martin Lund
15bef05179 Only print version on '--version' 2022-07-28 21:32:00 +02:00
Martin Lund
a9b7284ba2 Revert "Enable log feature when using --log-filename"
This reverts commit c3116b2b56.

On second thought, this is less appropriate when using the configuration
file. We may want to define the log filename in config file but not
necessarily enable log feature.
2022-07-28 21:23:52 +02:00
Martin Lund
0407436624 Update README 2022-07-27 15:06:32 +02:00
Martin Lund
99c7aa85ed Update TODO 2022-07-25 20:38:04 +02:00
Martin Lund
4598345168 Update TODO 2022-07-25 20:36:38 +02:00
Martin Lund
4952c6ca13 Update TODO 2022-07-25 20:29:06 +02:00
Martin Lund
70f69899fc Cleanup 2022-07-25 12:48:20 +02:00
Martin Lund
1fb0cad7b9 Update README 2022-07-25 11:06:08 +02:00
Martin Lund
dd785f9a30 Update README 2022-07-25 11:04:05 +02:00
Martin Lund
31459f851b Update README 2022-07-25 11:01:31 +02:00
Martin Lund
4c9f28203d Update README 2022-07-25 10:58:46 +02:00
Martin Lund
463415d63b Remove duplicate show config entry of DTR pulse duration 2022-07-24 20:57:34 +02:00
Martin Lund
b5273b2b23 Bump version 2022-07-23 20:05:51 +02:00
Martin Lund
0eb59b09cf Update README 2022-07-23 14:52:58 +02:00
Martin Lund
e8efb621f8 Bump version date 2022-07-23 12:21:48 +02:00
Martin Lund
a133a241d6 Update NEWS 2022-07-23 12:02:35 +02:00
Martin Lund
c3116b2b56 Enable log feature when using --log-filename
No reason to not assume that the user wants to enable log when the
--log-filename is used. This way uses can skip the use of --log to
enable log.
2022-07-23 10:40:35 +02:00
Martin Lund
a13fe254f2 Enable line buffering of log
Replace flushing/writing of log at every log write operation with line
buffering, meaning log will be written line by line to make it more I/O
friendly but still update frequently.
2022-07-23 09:53:12 +02:00
Martin Lund
d28007f0d3 Avoid invalid hex character messages when switching hex mode 2022-07-22 22:03:47 +02:00
Martin Lund
c24cbfcd34 Force flushing of log writes 2022-07-22 17:57:11 +02:00
Martin Lund
f454bdaa3a Cleanup 2022-07-22 16:40:15 +02:00
Martin Lund
b322ecbdcf Renamed tty_flush() to tty_sync() 2022-07-22 16:37:49 +02:00
Martin Lund
de606d51ba Fix sync output to serial port
Using fsync() on filedescriptors for serial ports can not be relied on.
Add use of tcdrain() to make sure data has been written by the serial
port before proceeding.

This fixes a problem with tio sometimes not writing piped input data to
the serial port before exiting which results in the pending writes being
cancelled / flushed.
2022-07-22 16:28:38 +02:00
Martin Lund
0cdd69940f Clean up tty_flush() 2022-07-22 00:45:30 +02:00
Martin Lund
443e07ef8a Update README 2022-07-22 00:29:10 +02:00
Martin Lund
dd8b137b15 Force frequent sync on tty_flush() 2022-07-22 00:16:54 +02:00
Martin Lund
2fb1963da2 Update README 2022-07-22 00:02:42 +02:00
Martin Lund
b082b0593b Update example tiorc 2022-07-21 09:01:13 +02:00
Martin Lund
b1102b59e0 Update AUTHORS 2022-07-21 08:56:54 +02:00
Martin Lund
616003a55f Bump version 2022-07-20 20:56:43 +02:00
Martin Lund
6462aac792 Simplify tty_flush() 2022-07-20 20:46:01 +02:00
Martin Lund
5f46136b28 Quit from non-interactive mode using ctrl-c
When piping to tio it will automatically enter "non-interactive" mode
which means it will not react to any input key sequences but simple read
the input stream and write it to the tty device.

This also means that ctrl-t q can not be used to quit and so tio would
hang forever when used in non-interactive mode.

This change allows to send the standard termination signal by pressing
ctrl-c on tio in non-interactive mode to make it quit.
2022-07-20 18:18:16 +02:00