#include #include #include #include "baud.h" int main(int argc, char *argv[]) { struct epoll_event ev; int fd, baud, ret; int epoll_fd; char *device; char buf[256]; if (argc < 2) { printf("Usage: %s SERIAL_DEVICE\n", argv[0]); return 1; } baud = 128000; device = argv[1]; fd = open_at_baud(device, &baud); if (fd < 0) return 1; if (baud != 128000) { printf("Failed to set baudrate to 128000, only got %d\n", baud); close(fd); return 1; } epoll_fd = epoll_create(1); ev.events = EPOLLIN; ev.data.fd = fd; if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ev) == -1) { perror("epoll_ctl"); return 1; } while (1) { ret = epoll_wait(epoll_fd, &ev, 1, -1); if (ret == 0) continue; if (ret < 0) { perror("epoll"); return 1; } ret = read(fd, buf, sizeof(buf)); if (read < 0) { perror("read"); break; } if (ret == 0) break; ret = write(1, buf, ret); if (read < 0) { perror("write"); break; } } close(fd); return 0; }