From: ian Date: Thu, 12 Aug 2004 19:17:49 +0000 (+0000) Subject: new siggen X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=a582eb8f0fc81f6277a3dcd6e50f56fea3a4fea6;p=trains.git new siggen --- diff --git a/parport/.cvsignore b/parport/.cvsignore index 1d2ba6a..a0657fa 100644 --- a/parport/.cvsignore +++ b/parport/.cvsignore @@ -1,2 +1,3 @@ parport-ctl train-pic-prog-select +siggen diff --git a/parport/Makefile b/parport/Makefile index 105c3e0..2623263 100644 --- a/parport/Makefile +++ b/parport/Makefile @@ -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 index 0000000..45b42d1 --- /dev/null +++ b/parport/lib.c @@ -0,0 +1,22 @@ +/**/ + +#include +#include +#include + +#include + +#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 index 0000000..c9df1d3 --- /dev/null +++ b/parport/lib.h @@ -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 index 0000000..a92ea28 --- /dev/null +++ b/parport/siggen.c @@ -0,0 +1,26 @@ +/**/ + +#include +#include +#include + +#include +#include + +#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); + } +} diff --git a/parport/train-pic-prog-select.c b/parport/train-pic-prog-select.c index f443deb..fdde729 100644 --- a/parport/train-pic-prog-select.c +++ b/parport/train-pic-prog-select.c @@ -3,7 +3,6 @@ #include #include #include -#include #include #include @@ -13,6 +12,8 @@ #include #include +#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" :