commit d2e63b164650ae83bbd99ea3cf31467ad15fd3db
parent 35b620e49961ff5757f7cecf3ff3962f0091fbf5
Author: Nihal Jere <nihal@nihaljere.xyz>
Date: Tue, 1 Jun 2021 20:28:28 -0500
use tty modem backend
Diffstat:
M | atd.c | | | 30 | +++++++++++++++++++++++++++++- |
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/atd.c b/atd.c
@@ -11,6 +11,7 @@
#include <sys/signalfd.h>
#include <sys/socket.h>
#include <sys/un.h>
+#include <termios.h>
#include <unistd.h>
#include "atd.h"
@@ -183,6 +184,27 @@ fdbuf_read(int fd, struct fdbuf *fdbuf)
return r;
}
+static int
+setup_modem_tty(int fd)
+{
+ struct termios config;
+
+ tcgetattr(fd, &config);
+ config.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | INPCK | ICRNL | INLCR | ISTRIP | IXON);
+ config.c_oflag = 0;
+ config.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
+ config.c_cflag &= ~(CSIZE | PARENB);
+ config.c_cflag |= CS8;
+ config.c_cc[VMIN] = 1;
+ config.c_cc[VTIME] = 0;
+
+ cfsetispeed(&config, B115200);
+ cfsetospeed(&config, B115200);
+
+ tcsetattr(fd, TCSANOW, &config);
+ return 1;
+}
+
int main(int argc, char *argv[])
{
argv0 = argv[0];
@@ -219,7 +241,10 @@ int main(int argc, char *argv[])
for (int i = 0; i < MAX_FDS; i++)
fds[i].fd = -1;
- int backsock = socket(AF_UNIX, SOCK_STREAM, 0);
+ int backsock;
+
+#ifdef DEBUG
+ backsock = socket(AF_UNIX, SOCK_STREAM, 0);
if (backsock == -1) {
warn("failed to create backend socket:");
goto error;
@@ -229,6 +254,9 @@ int main(int argc, char *argv[])
warn("failed to connect to backend:");
goto error;
}
+#else
+ backsock = open("/dev/ttyUSB2", O_RDWR | O_NOCTTY);
+#endif
int sock = socket(AF_UNIX, SOCK_STREAM, 0);
if (sock == -1) {