mirror of
https://github.com/tio/tio.git
synced 2026-05-01 23:07:58 +02:00
Add bit reverse order feature
This commit is contained in:
parent
ce3101a380
commit
5b8f33bd78
1 changed files with 33 additions and 1 deletions
34
src/tty.c
34
src/tty.c
|
|
@ -84,6 +84,7 @@
|
||||||
#define KEY_H 0x68
|
#define KEY_H 0x68
|
||||||
#define KEY_L 0x6C
|
#define KEY_L 0x6C
|
||||||
#define KEY_SHIFT_L 0x4C
|
#define KEY_SHIFT_L 0x4C
|
||||||
|
#define KEY_M 0x6D
|
||||||
#define KEY_P 0x70
|
#define KEY_P 0x70
|
||||||
#define KEY_Q 0x71
|
#define KEY_Q 0x71
|
||||||
#define KEY_S 0x73
|
#define KEY_S 0x73
|
||||||
|
|
@ -126,6 +127,7 @@ static bool map_o_cr_nl = false;
|
||||||
static bool map_o_nl_crnl = false;
|
static bool map_o_nl_crnl = false;
|
||||||
static bool map_o_del_bs = false;
|
static bool map_o_del_bs = false;
|
||||||
static bool map_o_ltu = false;
|
static bool map_o_ltu = false;
|
||||||
|
static bool map_o_msblsb = false;
|
||||||
static char hex_chars[2];
|
static char hex_chars[2];
|
||||||
static unsigned char hex_char_index = 0;
|
static unsigned char hex_char_index = 0;
|
||||||
static char tty_buffer[BUFSIZ*2];
|
static char tty_buffer[BUFSIZ*2];
|
||||||
|
|
@ -410,6 +412,7 @@ void handle_command_sequence(char input_char, char previous_char, char *output_c
|
||||||
tio_printf(" ctrl-%c h Toggle hexadecimal mode", option.prefix_key);
|
tio_printf(" ctrl-%c h Toggle hexadecimal mode", option.prefix_key);
|
||||||
tio_printf(" ctrl-%c l Clear screen", option.prefix_key);
|
tio_printf(" ctrl-%c l Clear screen", option.prefix_key);
|
||||||
tio_printf(" ctrl-%c L Show line states", option.prefix_key);
|
tio_printf(" ctrl-%c L Show line states", option.prefix_key);
|
||||||
|
tio_printf(" ctrl-%c m Toggle MSB to LSB bit order", option.prefix_key);
|
||||||
tio_printf(" ctrl-%c p Pulse serial port line", option.prefix_key);
|
tio_printf(" ctrl-%c p Pulse serial port line", option.prefix_key);
|
||||||
tio_printf(" ctrl-%c q Quit", option.prefix_key);
|
tio_printf(" ctrl-%c q Quit", option.prefix_key);
|
||||||
tio_printf(" ctrl-%c s Show statistics", option.prefix_key);
|
tio_printf(" ctrl-%c s Show statistics", option.prefix_key);
|
||||||
|
|
@ -498,6 +501,20 @@ void handle_command_sequence(char input_char, char previous_char, char *output_c
|
||||||
printf("\033c");
|
printf("\033c");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case KEY_M:
|
||||||
|
/* Toggle bit order */
|
||||||
|
if (!map_o_msblsb)
|
||||||
|
{
|
||||||
|
map_o_msblsb = true;
|
||||||
|
tio_printf("Switched to reverse bit order");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
map_o_msblsb = false;
|
||||||
|
tio_printf("Switched to normal bit order");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case KEY_Q:
|
case KEY_Q:
|
||||||
/* Exit upon ctrl-t q sequence */
|
/* Exit upon ctrl-t q sequence */
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
|
|
@ -860,6 +877,10 @@ void tty_configure(void)
|
||||||
{
|
{
|
||||||
map_o_ltu = true;
|
map_o_ltu = true;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(token, "MSB2LSB") == 0)
|
||||||
|
{
|
||||||
|
map_o_msblsb = true;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Error: Unknown mapping flag %s\n", token);
|
printf("Error: Unknown mapping flag %s\n", token);
|
||||||
|
|
@ -1219,8 +1240,19 @@ int tty_connect(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert MSB to LSB bit order */
|
||||||
|
if (map_o_msblsb)
|
||||||
|
{
|
||||||
|
char ch = input_char;
|
||||||
|
input_char = 0;
|
||||||
|
for (int j = 0; j < 8; ++j)
|
||||||
|
{
|
||||||
|
input_char |= ((1 << j) & ch) ? (1 << (7 - j)) : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Map input character */
|
/* Map input character */
|
||||||
if ((input_char == '\n') && (map_i_nl_crnl))
|
if ((input_char == '\n') && (map_i_nl_crnl) && (!map_o_msblsb))
|
||||||
{
|
{
|
||||||
print('\r');
|
print('\r');
|
||||||
print('\n');
|
print('\n');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue