Commit graph

13 commits

Author SHA1 Message Date
Peter Collingbourne
fb453160ef 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> "
2022-04-18 14:06:33 -07:00
Martin Lund
1ec39d1c7b Make libinih a fallback dependency
This means that in case meson does not find libinih it will
automatically clone libinih and include it in the build.

The libinih library is reconfigured to be statically built so that no
shared object will be installed.
2022-03-29 17:54:33 +02:00
Martin Lund
03cf4ef197 Handle SIGHUP
Handle SIGHUP so that the registered exit handlers are called to restore
the terminal back to its orignal state.
2022-03-18 19:19:11 +01:00
Martin Lund
410fc8bffe Bypass unused result warnings 2022-03-11 15:30:33 +01:00
Martin Lund
659336af51 Force dependency on libinih
Configuration file support is considered a mandatory feature.
2022-03-11 15:28:35 +01:00
Martin Lund
a2b164519f Mostly cosmetic updates 2022-03-11 15:11:43 +01:00
Liam Beguin
2e5c1ff20c add support for a configuration file
Signed-off-by: Liam Beguin <liambeguin@gmail.com>
2022-03-10 10:34:52 -05:00
Martin Lund
7ffeeccdf5 Merge branch 'osx-baudrate' of https://github.com/robey/tio into robey-osx-baudrate 2022-02-16 05:24:35 +01:00
Martin Lund
3d08787142 Fix setspeed2 compilation 2022-02-15 03:47:24 +01:00
Martin Lund
32e853e46e Fix setspeed2 check 2022-02-14 21:01:58 +01:00
Martin Lund
d4c3751405 Meson cleanup 2022-02-13 11:07:51 +01:00
Martin Lund
b6eac3f001 Improve printed output
Get rid of inconsistencies in the printed output (error printing,
colors, etc.).

Prepare for user configurable color.

Cleanup.
2022-02-12 22:47:42 +01:00
Martin Lund
e9208d693e Replace autotools with meson
To introduce much simpler build configuration which is also easier to
maintain.
2022-02-10 05:09:32 +01:00