Skip to content
Snippets Groups Projects
Commit 024da30b authored by Alessandro Rubini's avatar Alessandro Rubini
Browse files

tools/wr-dio-cmd: complete stamp and stampm


Signed-off-by: default avatarAlessandro Rubini <rubini@gnudd.com>
parent e98f3044
No related merge requests found
...@@ -100,20 +100,35 @@ static int scan_pulse(int argc, char **argv) ...@@ -100,20 +100,35 @@ static int scan_pulse(int argc, char **argv)
return 0; return 0;
} }
static int scan_stamp(int argc, char **argv) static int scan_stamp(int argc, char **argv, int ismask)
{ {
int i; int i, ch;
char c;
if (argc != 1) {
if (argc == 1) {
ismask = 1;
ch = 0x1f;
} else if (argc == 2) {
if (sscanf(argv[1], "%i%c", &ch, &c) != 1) {
fprintf(stderr, "%s: %s: not a number \"%s\"\n",
prgname, argv[0], argv[1]);
exit(1);
}
if (ch < 0 || ch > 31 || (!ismask && ch > 4)) {
fprintf(stderr, "%s: %s: out of range value \"%s\"\n",
prgname, argv[0], argv[1]);
exit(1);
}
} else {
fprintf(stderr, "%s: %s: wrong number of arguments\n", fprintf(stderr, "%s: %s: wrong number of arguments\n",
prgname, argv[0]); prgname, argv[0]);
return -1; return -1;
} }
/* Lazy: only scan all channels */ if (ismask)
while (1) {
cmd->flags = WR_DIO_F_MASK; cmd->flags = WR_DIO_F_MASK;
cmd->channel = 0x1f;
while (1) {
cmd->channel = ch;
errno = 0; errno = 0;
ifr.ifr_data = (void *)cmd; ifr.ifr_data = (void *)cmd;
if (ioctl(sock, PRIV_MEZZANINE_CMD, &ifr) < 0 ) { if (ioctl(sock, PRIV_MEZZANINE_CMD, &ifr) < 0 ) {
...@@ -175,11 +190,13 @@ int main(int argc, char **argv) ...@@ -175,11 +190,13 @@ int main(int argc, char **argv)
if (scan_pulse(argc, argv) < 0) if (scan_pulse(argc, argv) < 0)
exit(1); exit(1);
} } else if (!strcmp(argv[0], "stamp")) {
else if (!strcmp(argv[0], "stamp")) {
cmd->command = WR_DIO_CMD_STAMP; cmd->command = WR_DIO_CMD_STAMP;
if (scan_stamp(argc, argv, 0 /* no mask */) < 0)
if (scan_stamp(argc, argv) < 0) exit(1);
} else if (!strcmp(argv[0], "stampm")) {
cmd->command = WR_DIO_CMD_STAMP;
if (scan_stamp(argc, argv, 1 /* mask */) < 0)
exit(1); exit(1);
} else { } else {
fprintf(stderr, "%s: unknown command \"%s\"\n", prgname, fprintf(stderr, "%s: unknown command \"%s\"\n", prgname,
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment