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
Replace existing toggle and pulse key commands with the following
generalized key commands which allows to toggle or pulse all serial port
lines:
ctrl-t g Toggle serial port line
ctrl-t p Pulse serial port line
When used, user will be asked which serial line to toggle or pulse.
Also introduce --line-pulse-duration option for setting specific pulse
duration in milliseconds for each serial line using a key value pair
format. Each key represents a serial line. The following keys are
available: DTR, RTS, CTS, DSR, DCD, RI.
Example:
$ tio /dev/ttyUSB0 --line-pulse-duration DTR=200,RTS=300,RI=50
Likewise, the pulse duration can also be set via configuration file
using the line-pulse-duration variable:
line-pulse-duration = DTR=200,RTS=300,RI=50
Introduce "bold" color option which only apply bold color formatting to
existing system color.
Also make "bold" the default color option.
Fixes all white issue with black on white tio text.
Make it possible to remap the prefix key (default: ctrl-t) by setting
the prefix-ctrl-key variable in the configuration file.
Allowed values are in the range a..z.
Example, to set the prefix key to ctrl-a simply do:
prefix-ctrl-key = a
Clean up so that only the following error related printing functions are
used: tio_error_printf(), tio_error_printf_silent(),
tio_warning_printf().
A session mode switch is introduced for error printing so that it will
print error messages with better formatting depending on in or out of
session.
Added command line options:
-O, --eol-delay to have a separate delay for end of line
-U, --upper to enable translation of lower case alpha to upper case
Added ability to set mark parity.
Added ctrl-t U key sequence to allow enable/disable lower case alpha to
upper case during a session.
Updated Man page with command line options, ctrl-t sequences and
configuration file options.
Updated README.md, with above information.
MCUs like the ESP32 can be reset if the serial port DTR line is
pulsed for a short time. You could just type CTRL-t d CTRL-t d
but that's a little awkward since you have to lift your finger
off the CTRL key to type the Ds. Now you can just type CTRL-T D.
* Added new command "D" to pulse the DTR line. I.E. Toggle its
state twice with a configurable duration between toggles.
* Added new config/command line option "--dtr-pulse-duration"
to set the duration between the DTR state toggles. The default
is 100ms.
Allow user to add options on both sides of the provided config argument.
For example:
$ tio -b 9600 am64-evm -e
Before, tio only allowed adding arguments after the config argument.
Implemented as simple as possible by introducing two stage option parsing.
Rework the color option to support setting ANSI color code values
ranging from 0..255 or "none" for no color or "list" to print a list of
available ANSI colors codes.
Also, disables color when piping.
Optional arguments, as parsed by the getopt_long mechanism, are
inherently inconsistent with how you define required arguments.
To avoid confusion we decide to avoid this inconsistency by replacing
optional options with additional options with required argmuments.
Default configuration file settings were not parsed in case a section
was matched. Now we make sure that the default (unnamed) settings are
always parsed.
This allows for better config file ergonomics if the user has a diverse
set of serial devices as the name does not need to be specified in
the config file twice.
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> "
If no section name is specified the configuration will be considered the
default one.
This allows to set e.g. a default color code for sections which do not
configure a color code.