mirror of
https://github.com/tio/tio.git
synced 2026-05-01 14:57:59 +02:00
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()
45 lines
1.4 KiB
C
45 lines
1.4 KiB
C
/*
|
|
* tio - a simple serial terminal I/O tool
|
|
*
|
|
* Copyright (c) 2014-2022 Martin Lund
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301, USA.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
|
|
#define LINE_HIGH true
|
|
#define LINE_LOW false
|
|
|
|
extern bool interactive_mode;
|
|
extern bool map_i_nl_cr;
|
|
extern bool map_i_cr_nl;
|
|
extern bool map_ign_cr;
|
|
|
|
void stdout_configure(void);
|
|
void stdin_configure(void);
|
|
void tty_configure(void);
|
|
int tty_connect(void);
|
|
void tty_wait_for_device(void);
|
|
void list_serial_devices(void);
|
|
void tty_input_thread_create(void);
|
|
void tty_input_thread_wait_ready(void);
|
|
void tty_line_set(int fd, int mask, bool value);
|
|
void tty_line_toggle(int fd, int mask);
|
|
void tty_line_config(int mask, bool value);
|
|
void tty_line_config_apply(void);
|