From: ian Date: Fri, 29 Apr 2005 23:29:56 +0000 (+0000) Subject: fixed for actual programming circuit on table X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=fe7746ef4a639b609126a57724cef089baf6d710;p=trains.git fixed for actual programming circuit on table --- diff --git a/parport/odyssey-train b/parport/odyssey-train index 077a892..a945b6f 100755 --- a/parport/odyssey-train +++ b/parport/odyssey-train @@ -10,14 +10,16 @@ badusage () { which=$1 +tpps='train-pic-prog-select -i1' + case "$which" in all) - train-pic-prog-select 0-55 + $tpps 0-55 whichconfig=all echo "Selected $which" ;; [0-9]|[0-9][0-9]) - train-pic-prog-select $which + $tpps $which whichconfig=single echo "Selected #$which" ;; diff --git a/parport/train-pic-prog-select.c b/parport/train-pic-prog-select.c index d1a8315..7dc12b5 100644 --- a/parport/train-pic-prog-select.c +++ b/parport/train-pic-prog-select.c @@ -19,8 +19,13 @@ static const void badusage(const char *what) { fprintf(stderr,"bad usage: %s\n" - "usage: train-pic-prog-select [-p/dev/parport] picno|range...\n" - "ranges are picno-picno (inclusive)\n", + "usage: train-pic-prog-select -i0|-i1" + " [-p/dev/parport] picno|range...\n" + "ranges are picno-picno (inclusive)\n" + "-i0 means PPWDATA bit is 0 for selected pics; -i1 means 1\n" + " (default: value of TRAIN_PPWDATA_SEL_BIT env. var)\n" + "-pstdin means use fd 0; -pstdin-noclaim uses fd 0 and" + " doesn't PPCLAIM\n", what); exit(126); } @@ -29,6 +34,8 @@ typedef unsigned char yesno; const char *parport= "/dev/parport0"; +static int yesfor1bit= -1; /* same as bit needed for `yes' :-) */ + static union { yesno rect[COLUMNS][ROWS]; yesno lin[COLUMNS*ROWS]; @@ -54,11 +61,16 @@ int main(int argc, const char *const *argv) { argv++; if (arg[1]=='p') { parport= arg+2; + } else if (arg[1]=='i') { + yesfor1bit= atoi(arg+2); } else { badusage("unknown option"); } } + if (!(yesfor1bit==0 || yesfor1bit==1)) badusage("need proper -i value"); + if (!*argv) badusage("need to specify pics"); + while ((arg= *argv++)) { first= last= strtol(arg,&ep,10); if (ep==arg) badusage("syntactically incorrect pic number"); @@ -74,7 +86,7 @@ int main(int argc, const char *const *argv) { yesses.lin[first]= 1; } } - if (!strcmp(parport,"stdin")) { + if (!strcmp(parport,"stdin") || !strcmp(parport,"stdin-noclaim")) { fd= 0; } else { fd= open(parport, O_RDWR); @@ -87,15 +99,21 @@ int main(int argc, const char *const *argv) { for (col=0; col