mirror of
https://github.com/tio/tio.git
synced 2026-05-01 23:07:58 +02:00
Non-interactive operations (input from a pipe, running a shell command, XYMODEM transfers) often fail when mapping, soft flow control, or output delay are enabled. To reduce the hassle of switching settings, add the function shown in the title. The raw option can be set to one of the following: - off ... no effects - on ... soft-flow off, character mapping off, output delay enabled - on-nodelay ... soft-flow off, character mapping off, output delay disable raw option is for Piped-input / Shell command execution / XYMODEM transfering. default is on. raw-interactive option is for socket-mode and normal terminal use. default is off. You can type Ctrl-t j if you need to change raw setting for non-interactive case. it toggles the raw setting. You can type Ctrl-t J if you need to change raw setting of interactive case. it toggles the raw setting. It is useful when transferring files in socket mode.
101 lines
2.2 KiB
C
101 lines
2.2 KiB
C
/*
|
|
* tio - a serial device 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>
|
|
#include <glib.h>
|
|
|
|
#define LINE_HIGH true
|
|
#define LINE_LOW false
|
|
|
|
#define TOPOLOGY_ID_SIZE 4
|
|
|
|
typedef enum
|
|
{
|
|
FLOW_NONE,
|
|
FLOW_HARD,
|
|
FLOW_SOFT,
|
|
} flow_t;
|
|
|
|
typedef enum
|
|
{
|
|
PARITY_NONE,
|
|
PARITY_ODD,
|
|
PARITY_EVEN,
|
|
PARITY_MARK,
|
|
PARITY_SPACE,
|
|
} parity_t;
|
|
|
|
typedef enum
|
|
{
|
|
AUTO_CONNECT_DIRECT,
|
|
AUTO_CONNECT_NEW,
|
|
AUTO_CONNECT_LATEST,
|
|
AUTO_CONNECT_END,
|
|
} auto_connect_t;
|
|
|
|
typedef struct
|
|
{
|
|
char *tid;
|
|
double uptime;
|
|
char *path;
|
|
char *driver;
|
|
char *description;
|
|
} device_t;
|
|
|
|
typedef struct
|
|
{
|
|
int mask;
|
|
int value;
|
|
bool reserved;
|
|
} tty_line_config_t;
|
|
|
|
typedef enum
|
|
{
|
|
STATE_INTERACTIVE,
|
|
STATE_STARTING,
|
|
STATE_PIPED_INPUT,
|
|
STATE_EXEC_SHELL_COMMAND,
|
|
STATE_XYMODEM,
|
|
} state_t;
|
|
|
|
extern const char *device_name;
|
|
extern bool interactive_mode;
|
|
extern state_t state;
|
|
|
|
void stdout_configure(void);
|
|
void stdin_configure(void);
|
|
void tty_configure(void);
|
|
void tty_reconfigure(void);
|
|
void tty_init(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, tty_line_config_t line_config[]);
|
|
void tty_search(void);
|
|
GList *tty_search_for_serial_devices(void);
|
|
void forward_to_tty(int fd, char output_char);
|
|
ssize_t tty_write(int fd, const void *buffer, size_t count);
|
|
void tty_sync(int fd);
|
|
int tty_tcsetattr(int fd);
|