fixed ttyread
authorChristian Pointner <equinox@realraum.at>
Tue, 12 Jul 2011 22:53:32 +0000 (22:53 +0000)
committerChristian Pointner <equinox@realraum.at>
Tue, 12 Jul 2011 22:53:32 +0000 (22:53 +0000)
updated start-dart

dart/start-dart.sh
dart/ttyread.c

index 248b32a..b166866 100755 (executable)
@@ -20,8 +20,7 @@ signal_handler()
 }
 
 stty -echo
-ssh dart stty -F /dev/ttyDart 57600
-ssh dart cat /dev/ttyDart  >$FIFO &
+ssh dart ttyread /dev/ttyDart  >$FIFO &
 ./eet $FIFO | ./dart-$mode.pl $* | ../dart-sounds/src/dart-sounds ../dart-sounds/media > /dev/null
 rm -rf $FIFO_D
 
index cd057f7..65a6248 100644 (file)
@@ -31,7 +31,7 @@
 int setup_tty(int fd)
 {
   struct termios tmio;
-  
+
   int ret = tcgetattr(fd, &tmio);
   if(ret) {
     perror("tcgetattr()");
@@ -51,14 +51,21 @@ int setup_tty(int fd)
   }
 
   tmio.c_lflag &= ~ECHO;
+  tmio.c_lflag &= ~ISIG;
   tmio.c_lflag |= CLOCAL;
 
+  tmio.c_iflag &= ~ICRNL;
+  tmio.c_iflag &= ~IGNCR;
+  tmio.c_iflag |= IGNBRK | BRKINT;
+
+  tmio.c_cflag |= CLOCAL;
+
   ret = tcsetattr(fd, TCSANOW, &tmio);
   if(ret) {
     perror("tcsetattr()");
     return ret;
   }
-  
+
   ret = tcflush(fd, TCIFLUSH);
   if(ret) {
     perror("tcflush()");
@@ -101,13 +108,19 @@ int main(int argc, char* argv[])
 
   char buf[100];
   for(;;) {
-    int r = read(fd, buf, sizeof(buf));
-    if(r <=0 ) return r;
-    
-    int i;
+    ssize_t r = read(fd, buf, sizeof(buf));
+    if(r < 0 ) {
+      perror("read()");
+      return r;
+    }
+
+    ssize_t i;
     for(i=0; i < r;) {
-      int w = write(fd, &(buf[i]), r - i);
-      if(w < 0) return w;
+      ssize_t w = write(1, &(buf[i]), r - i);
+      if(w < 0) {
+        perror("write()");
+        return w;
+      }
       i+=w;
     }
   }