chiark / gitweb /
new siggen
authorian <ian>
Thu, 12 Aug 2004 19:17:49 +0000 (19:17 +0000)
committerian <ian>
Thu, 12 Aug 2004 19:17:49 +0000 (19:17 +0000)
parport/.cvsignore
parport/Makefile
parport/lib.c [new file with mode: 0644]
parport/lib.h [new file with mode: 0644]
parport/siggen.c [new file with mode: 0644]
parport/train-pic-prog-select.c

index 1d2ba6a7f9de14c9a67be59c3859a7c3e0925a26..a0657facc5c964d723fcc10ab057aa32488de3ca 100644 (file)
@@ -1,2 +1,3 @@
 parport-ctl
 train-pic-prog-select
+siggen
index 105c3e0c3cbb1958e8cd25306a49c26bac3c6185..26232631fb5a78575ea432eec28e770172e291ae 100644 (file)
@@ -2,4 +2,9 @@ CFLAGS= -Wall -Wwrite-strings -Wpointer-arith \
        -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes \
        -O2
 
-targets:       parport-ctl train-pic-prog-select
+targets:       parport-ctl train-pic-prog-select siggen
+
+train-pic-prog-select: train-pic-prog-select.o lib.o
+siggen:                        siggen.o lib.o
+
+train-pic-prog-select.o siggen.o lib.o: lib.h
diff --git a/parport/lib.c b/parport/lib.c
new file mode 100644 (file)
index 0000000..45b42d1
--- /dev/null
@@ -0,0 +1,22 @@
+/**/
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <sys/ioctl.h>
+
+#include "lib.h"
+
+int fd;
+
+void doioctl(int ioctlnum, void *vp, unsigned long vpv) {
+  int r;
+  errno=0;
+  r= ioctl(fd, ioctlnum, vp);
+  if (r) {
+    fprintf(stderr,"ioctl #%d 0x%lx gave %d %s\n",
+           ioctlnum, vpv, r, strerror(errno));
+    exit(127);
+  }
+}
diff --git a/parport/lib.h b/parport/lib.h
new file mode 100644 (file)
index 0000000..c9df1d3
--- /dev/null
@@ -0,0 +1,9 @@
+/**/
+
+#ifndef LIB_H
+#define LIB_H
+
+void doioctl(int ioctlnum, void *vp, unsigned long vpv);
+extern int fd;
+
+#endif /*LIB_H*/
diff --git a/parport/siggen.c b/parport/siggen.c
new file mode 100644 (file)
index 0000000..a92ea28
--- /dev/null
@@ -0,0 +1,26 @@
+/**/
+
+#include <assert.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <sys/ioctl.h>
+#include <linux/ppdev.h>
+
+#include "lib.h"
+
+int main(int argc, const char *const *argv) {
+  unsigned char v[2];
+  int wh=0, p;
+  
+  assert(argc==3 || argc==4);
+
+  v[0]= strtoul(argv[1],0,0);
+  v[1]= strtoul(argv[2],0,0);
+  p= argv[3] ? atoi(argv[3]) : -1;
+  for (;;) {
+    doioctl(PPWCONTROL, &v[wh], v[wh]);
+    wh= !wh;
+    if (p>=0) usleep(p);
+  }
+}
index f443deb96fa4180ae9f8c91c07706732ffa84aa0..fdde729efcfe7d1750c9c7f0757514c0a9ac504c 100644 (file)
@@ -3,7 +3,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <errno.h>
 #include <unistd.h>
 
 #include <sys/types.h>
@@ -13,6 +12,8 @@
 #include <sys/ioctl.h>
 #include <linux/ppdev.h>
 
+#include "lib.h"
+
 #define COLUMNS 7
 #define ROWS 8
 
@@ -33,19 +34,6 @@ static union {
   yesno lin[COLUMNS*ROWS];
 } yesses;
 
-static int fd;
-
-static void doioctl(int ioctlnum, void *vp, unsigned long vpv) {
-  int r;
-  errno=0;
-  r= ioctl(fd, ioctlnum, vp);
-  if (r) {
-    fprintf(stderr,"ioctl #%d 0x%lx gave %d %s\n",
-           ioctlnum, vpv, r, strerror(errno));
-    exit(127);
-  }
-}
-
 static void wpause(int ioctlnum, unsigned char value) {
   printf(" %s%02x",
         ioctlnum == PPWCONTROL ? "C" :