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.
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.
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.
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
Fix the display of relative timestamps. The hack of subtracting 3600
only works if you happen to be in a time zone that is one hour away from
UTC. When subtracting two time values, the result is an absolute
quantity (interval). These should be displayed as-is; without local time
zone nor daylight saving correction. Hence gmtime() instead of
localtime().
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.
When enabled this option will timestamp new lines with the time elapsed
since the line before.
This is a very useful feature to identify which events takes the most
time.