Commit graph

452 commits

Author SHA1 Message Date
Davis C
d0e95c5fba Reset buffer size at start of expect 2024-04-17 18:13:00 +02:00
Davis C
1cefb7b6bc Revert "Added reset_buffer()"
This reverts commit ee56d1280d.
2024-04-17 18:13:00 +02:00
Davis C
794c5202f4 Added reset_buffer() 2024-04-17 18:13:00 +02:00
Davis C
98653566a8 Return 1 when expect matches 2024-04-17 18:13:00 +02:00
Martin Lund
a605533213 Fix local echo in line mode 2024-04-17 16:17:20 +02:00
Martin Lund
1e20948d83 Fix line input mode
Do not forward input characters to tty device before a line is input via
carriage return.
2024-04-16 19:38:45 +02:00
Martin Lund
4801816357 Introduce basic line input mode 2024-04-16 17:42:34 +02:00
Martin Lund
d60363a64c Cleanup global variable name shadowing 2024-04-15 11:21:36 +02:00
Martin Lund
de0a7c547f Rework resolve_config_file() 2024-04-14 12:52:28 +02:00
Martin Lund
76a7a56e85 Rework line_pulse_duration_option_parse()
Introduce proper sscanf() checks.
2024-04-14 11:43:23 +02:00
Martin Lund
9744fcafcf Rework rs485_parse_config()
Introduce proper sscanf() checks.
2024-04-14 11:30:39 +02:00
Martin Lund
c4878a90d7 Clean up file descriptor name shadowing 2024-04-14 10:42:22 +02:00
Martin Lund
ae461dc296 Add missing header guard 2024-04-14 10:23:43 +02:00
Martin Lund
97537853a8 Remove options --response-wait, --response-timeout
Remove options and rework input handling so it is possible to do the
same thing but via script which is much more flexible.

These options were always a bit of a hardcoded solution. With the new
script expect feature we can wait for any type of response.

For example, pipe command to serial device and wait for line response within 1 second:

$ echo "*IDN?" | tio /dev/ttyACM0 --script "expect('\r\n', 1000)" --mute
2024-04-13 23:18:25 +02:00
Martin Lund
e1e3e298bf Add lua exit(code) 2024-04-13 16:46:00 +02:00
Martin Lund
51300cc4f0 Add timeout feature to expect() 2024-04-13 15:30:14 +02:00
Martin Lund
fca76a017d Fix text alignment 2024-04-12 21:15:36 +02:00
Martin Lund
fc54df1f22 Add lua expect(string)
Add simple expect functionality.

The expect(string) function will wait for input from the tty device and
only return when there is a string match. Regular expressions are
supported.

Example:

script = expect('password:'); send('my_password\n')
2024-04-12 18:20:33 +02:00
Martin Lund
0afae5d3ee Update text 2024-04-12 13:03:51 +02:00
Martin Lund
418a43d96e Add lua send(string) 2024-04-12 00:08:45 +02:00
Martin Lund
00c8124a0a Add lua modem_send(file,protocol) 2024-04-11 21:20:50 +02:00
Martin Lund
78f96bd32c Fix xymodem error print outs 2024-04-10 20:13:44 +02:00
Martin Lund
d8fb1ab0ca Rework x/y-modem transfer command
Remove ctrl-t X optin and instead introduce submenu to ctrl-t x option
for picking which xmodem protocol to use.
2024-04-10 19:56:21 +02:00
Martin Lund
2b6a79b9f0 Cleanup options 2024-04-10 15:04:47 +02:00
Martin Lund
2fff4d36d0 Add independent input and output mode
Replaces -x, --hexadecimal option with --intput-mode and --output-mode
so it is possible to select hex or normal mode for both input and output
independently.

To obtain same behaviour as -x, --hexadecimal use the following
configuration:

input-mode = hex
output-mode = hex
2024-04-10 14:40:18 +02:00
HiFiPhile
901e00bba3 Poll on serial port read instead of delay. 2024-04-09 14:58:17 +02:00
Mengsk
eea46a2005 Add Xmodem-CRC support. 2024-04-09 14:58:17 +02:00
Martin Lund
3e50191107 Add tty line configuration script API
On some platforms calling high()/low() to switch line states result in
costly system calls whick makes it impossible to swith two or more tty
lines simultaneously.

To help solve this timing issue we introduce a tty line state
configuration API which can be used instead of using
high()/low().

Using config_low(line) and config_high(line) one can set up a new line
state configuration for multiple lines and then use config_apply() to
finally apply the configuration. This will result in only one system
call to instruct the serial port drive to switch all the configured line
states which should help ensure that the lines are switched
simultaneously.

Example:

script = config_high(DTR); config_low(RTS); config_apply()
2024-04-06 09:34:25 +02:00
Martin Lund
4369d5b66f Add ONULBRK mapping flag
Add ONULBRK mapping to map nul (zero) to send break signal on output.

This is useful if one needs to e.g. send the break signal to the tty
device when connected via socket.
2024-04-05 13:55:51 +02:00
Martin Lund
70913fe120 Add --log-directory option
For specifying directory path in which to save automatically named log
files.
2024-04-04 12:31:55 +02:00
Martin Lund
0becfa3274 Add Lua scripting feature
Add support for running Lua scripts that can manipulate the tty control
lines. Script is activated automatically on connect or manually via in
session key command.

The Lua scripting feature opens up for many posibilities in the future
such as adding expect like functionality to easily and programatically
interact with the connected device.
2024-04-01 15:37:40 +02:00
Martin Lund
6fee8514f4 Invert line states to reflect true electrical level 2024-03-30 16:31:45 +01:00
Mingjie Shen
6720da3b88 Check return values of sscanf()
Failing to check that a call to 'sscanf' actually writes to an output
variable can lead to unexpected behavior at reading time.
2024-03-24 11:03:51 +01:00
Jakob Haufe
ed4ac0c797 Support NO_COLOR env variable as per no-color.org 2024-03-06 13:38:59 +01:00
Martin Lund
593f9495f4 Add support for disabling prefix key handling
To disable prefix key input handing simply set prefix-ctrl-key to
'none'.

Based on original patch from Sebastian Krahmer.
2024-02-19 16:51:02 +01:00
Fredrik Svedberg
58c9489b92 Add map FF to ESC-c on input
Added map of form feed to ESC-c on input for terminals that
do not clear screen on ^L but do on ESC-c.
2024-02-12 22:22:20 +01:00
Sylvain LAFRASSE
4269ec835d Fix double call of tty_disconnect() on macOS/Darwin. 2024-01-12 12:11:24 +01:00
Martin Lund
e572255fd2 Fix file descriptor handling on MacOS 2024-01-11 20:36:17 +01:00
HiFiPhile
72399c4fe6
CYGWIN: Fix port auto connection. (#211) 2023-09-22 11:53:37 +02:00
Martin Lund
02b60e9fb3 Revert "Make quit hint more explicit"
This reverts commit 93e49ab5a2.
2023-09-19 21:21:59 +02:00
Martin Lund
838c110876 Increase header size for ymodem 2023-09-16 15:03:38 +02:00
Martin Lund
a42f3f78d1 Overwrite old stale letters on xmodem filename input
When entering a file name, eg. 'test' it whould output the following
with 2 stale letters of the former input string:

[14:41:58.987] Send file with XMODEM
[14:42:08.015] Sending file 'test'st
[14:42:08.015] Press any key to abort transfer

To avoid this we simply overwrite the 2 stale letters with whitespaces.
2023-09-16 14:51:34 +02:00
Martin Lund
93e49ab5a2 Make quit hint more explicit
To minimize confusion for new users.
2023-09-16 14:13:27 +02:00
Martin Lund
ed0386d2c4 Re-adjust max line size
So it stays within maximum size handled by xmodem.
2023-09-16 13:14:55 +02:00
Martin Lund
cf6e8b963b Clean up whitespaces 2023-09-16 12:27:34 +02:00
Martin Lund
07864a0e78 Increase line buffer size
Just to make sure we accept very long filenames.
2023-09-16 12:25:38 +02:00
Martin Lund
c9c5f03c10 Fix meson source listing 2023-09-16 12:20:34 +02:00
pnrhub
e6ffbd9058
Add xmodem and ymodem file send support (#208)
* Add xmodem and ymodem file send support
---------

Co-authored-by: pnr <pnr@home25.nl>
2023-09-16 12:17:38 +02:00
HiFiPhile
d9dc1ff698 tty_stdin_input_thread(): write to pipe only if byte_count > 0. 2023-09-14 00:06:46 +02:00
HiFiPhile
5c441f22c2 Ignore EINTR error. 2023-09-13 22:45:11 +02:00