clean up
This commit is contained in:
@@ -1,4 +0,0 @@
|
|||||||
tty: tty.c
|
|
||||||
$(CC) -o $@ $<
|
|
||||||
clean:
|
|
||||||
rm -f tty
|
|
||||||
-58
@@ -1,58 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <termios.h>
|
|
||||||
#include <poll.h>
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
int fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);
|
|
||||||
if (fd < 0) { perror("open"); return 1; }
|
|
||||||
|
|
||||||
// Configure serial port
|
|
||||||
struct termios tty;
|
|
||||||
tcgetattr(fd, &tty);
|
|
||||||
cfmakeraw(&tty);
|
|
||||||
cfsetspeed(&tty, B115200);
|
|
||||||
tty.c_cflag |= CLOCAL | CREAD;
|
|
||||||
tty.c_cc[VMIN] = 0;
|
|
||||||
tty.c_cc[VTIME] = 1;
|
|
||||||
tcsetattr(fd, TCSANOW, &tty);
|
|
||||||
|
|
||||||
// Set stdin to raw mode
|
|
||||||
struct termios old_stdin, raw_stdin;
|
|
||||||
tcgetattr(STDIN_FILENO, &old_stdin);
|
|
||||||
raw_stdin = old_stdin;
|
|
||||||
cfmakeraw(&raw_stdin);
|
|
||||||
tcsetattr(STDIN_FILENO, TCSANOW, &raw_stdin);
|
|
||||||
|
|
||||||
write(STDOUT_FILENO, "Holcks minitty - ctrl-d to exit\r\n", 33);
|
|
||||||
|
|
||||||
struct pollfd fds[2] = {
|
|
||||||
{ .fd = STDIN_FILENO, .events = POLLIN },
|
|
||||||
{ .fd = fd, .events = POLLIN },
|
|
||||||
};
|
|
||||||
|
|
||||||
char buf[256];
|
|
||||||
while (1) {
|
|
||||||
poll(fds, 2, -1);
|
|
||||||
if (fds[0].revents & POLLIN) {
|
|
||||||
int n = read(STDIN_FILENO, buf, sizeof(buf));
|
|
||||||
if (n > 0) {
|
|
||||||
for (int i = 0; i < n; i++)
|
|
||||||
if (buf[i] == 4) goto done; // Ctrl-D
|
|
||||||
write(fd, buf, n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (fds[1].revents & POLLIN) {
|
|
||||||
int n = read(fd, buf, sizeof(buf));
|
|
||||||
if (n > 0) write(STDOUT_FILENO, buf, n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
done:
|
|
||||||
tcsetattr(STDIN_FILENO, TCSANOW, &old_stdin);
|
|
||||||
close(fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user