mirror of
https://github.com/tio/tio.git
synced 2026-05-01 14:57:59 +02:00
Add support for external control via a Unix domain socket.
This feature allows an external program to inject output into and listen to input from a serial port via a Unix domain socket (path specified via the -S/--socket command line flag, or the socket config file option) while tio is running. This is useful for ad-hoc scripting of serial port interactions while still permitting manual control. Since many serial devices (at least on Linux) get confused when opened by multiple processes, and most commands do not know how to correctly open a serial device, this allows a more convenient usage model than directly writing to the device node from an external program. Any input from clients connected to the socket is sent on the serial port as if entered at the terminal where tio is running (except that ctrl-t sequences are not recognized), and any input from the serial port is multiplexed to the terminal and all connected clients. Sockets remain open while the serial port is disconnected, and writes will block. Example usage 1 (issue a command): echo command | nc -UN /path/to/socket > /dev/null Example usage 2 (use the expect command to script an interaction): #!/usr/bin/expect -f set timeout -1 log_user 0 spawn nc -UN /path/to/socket set uart $spawn_id send -i $uart "command1\n" expect -i $uart "prompt> " send -i $uart "command2\n" expect -i $uart "prompt> "
This commit is contained in:
parent
03e41b61a3
commit
fb453160ef
11 changed files with 335 additions and 57 deletions
|
|
@ -30,6 +30,7 @@
|
|||
#include "error.h"
|
||||
#include "print.h"
|
||||
#include "signals.h"
|
||||
#include "socket.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
|
@ -71,6 +72,9 @@ int main(int argc, char *argv[])
|
|||
if (option.log)
|
||||
log_open(option.log_filename);
|
||||
|
||||
/* Open socket */
|
||||
socket_configure();
|
||||
|
||||
/* Enable ANSI text formatting (colors etc.) */
|
||||
print_enable_ansi_formatting();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue