mirror of
https://github.com/tio/tio.git
synced 2026-05-01 14:57:59 +02:00
Many modern RS-485 serial devices such as the ones from FTDI already operate in RS-485 mode by default and will work with tio out of the box. However, there are some RS-232/485 devices which need to be switched from e.g. RS-232 to RS-485 mode to operate accordingly on the physical level. This commit implements the switching mechanism and interface required to enable RS-485 mode. It only works on Linux and with serial devices which use device drivers that support the Linux RS-485 control interface. The RS-485 feature is detailed via the following options: --rs-485 Enable RS-485 mode --rs-485-config <config> Set RS-485 configuration Set the RS-485 configuration using the following key or key value pair format in the configuration field: RTS_ON_SEND=value Set logical level (0 or 1) for RTS pin when sending RTS_AFTER_SEND=value Set logical level (0 or 1) for RTS pin after sending RTS_DELAY_BEFORE_SEND=value Set RTS delay (ms) before sending RTS_DELAY_AFTER_SEND=value Set RTS delay (ms) after sending RX_DURING_TX Receive data even while sending data If defining more than one key or key value pair, they must be comma separated. Example use: $ tio /dev/ttyUSB0 --rs-485 --rs-r485-config=RTS_DELAY_AFTER_SEND=50,RX_DURING_TX
82 lines
1.7 KiB
Meson
82 lines
1.7 KiB
Meson
project('tio', 'c',
|
|
version : '2.0',
|
|
license : [ 'GPL-2'],
|
|
meson_version : '>= 0.53.2',
|
|
default_options : [ 'warning_level=2', 'buildtype=release', 'c_std=gnu99' ]
|
|
)
|
|
|
|
# The tag date of the project_version(), update when the version bumps.
|
|
version_date = '2022-07-23'
|
|
|
|
# Test for dynamic baudrate configuration interface
|
|
compiler = meson.get_compiler('c')
|
|
enable_setspeed2 = false
|
|
enable_iossiospeed = false
|
|
if host_machine.system() != 'darwin'
|
|
if compiler.check_header('asm-generic/ioctls.h')
|
|
enable_setspeed2 = compiler.has_header_symbol('asm-generic/ioctls.h', 'TCGETS2')
|
|
endif
|
|
else
|
|
if compiler.check_header('IOKit/serial/ioss.h')
|
|
enable_iossiospeed = compiler.has_header_symbol('IOKit/serial/ioss.h', 'IOSSIOSPEED')
|
|
endif
|
|
endif
|
|
|
|
# Test for supported baudrates
|
|
test_baudrates = [
|
|
0,
|
|
50,
|
|
75,
|
|
110,
|
|
134,
|
|
150,
|
|
200,
|
|
300,
|
|
600,
|
|
1200,
|
|
1800,
|
|
2400,
|
|
4800,
|
|
7200,
|
|
9600,
|
|
14400,
|
|
19200,
|
|
28800,
|
|
38400,
|
|
57600,
|
|
76800,
|
|
115200,
|
|
230400,
|
|
460800,
|
|
500000,
|
|
576000,
|
|
921600,
|
|
1000000,
|
|
1152000,
|
|
1500000,
|
|
2000000,
|
|
2500000,
|
|
3000000,
|
|
3500000,
|
|
4000000 ]
|
|
|
|
baudrates = ''
|
|
baudrate_cases = ''
|
|
foreach rate : test_baudrates
|
|
baudrate = rate.to_string()
|
|
value = compiler.get_define('B' + baudrate, prefix: '#include <termios.h>')
|
|
if value != ''
|
|
baudrates = baudrates + baudrate + ' '
|
|
baudrate_cases = baudrate_cases + ' case ' + baudrate + ': baudrate = B' + baudrate + '; break;'
|
|
endif
|
|
endforeach
|
|
|
|
# Test for RS-485 support on Linux
|
|
if host_machine.system() == 'linux'
|
|
if compiler.check_header('linux/serial.h')
|
|
enable_rs485 = compiler.has_header_symbol('sys/ioctl.h', 'TIOCSRS485')
|
|
endif
|
|
endif
|
|
|
|
subdir('src')
|
|
subdir('man')
|