Keep the newer GCC happy.
3 #include <dev/usb/usb.h>
12 /* Return codes for OWFirst()/OWNext() */
15 #define OW_NOPRESENCE -1
16 #define OW_NOMODULES 0
19 void docmd(int fd, uint8_t *buffer, int rlen, int wlen);
22 main(int argc, char **argv) {
24 char *endptname = "/dev/ugen0.2";
30 "\t%s cmd\n", argv[0]);
34 if ((endptfd = open(endptname, O_RDWR)) == -1) {
35 fprintf(stderr, "Unable to open %s: %s\n", endptname, strerror(errno));
40 if (ioctl(endptfd, USB_SET_SHORT_XFER, &i) == -1) {
41 fprintf(stderr, "Unable to set short xfer on end point 1: %s\n", strerror(errno));
47 if (!strcmp(argv[1], "reset")) {
49 docmd(endptfd, buffer, 1, 1);
50 printf("OWTouchReset() reported %d\n", buffer[0]);
51 } else if (!strcmp(argv[1], "first")) {
53 docmd(endptfd, buffer, 1, 9);
54 printf("OWFirst() = %d\n", buffer[0]);
55 if (buffer[0] == OW_FOUND)
56 printf("Found module %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
57 buffer[1], buffer[2], buffer[3], buffer[4],
58 buffer[5], buffer[6], buffer[7], buffer[8]);
59 } else if (!strcmp(argv[1], "next")) {
60 if (scanf(argv[2], "%hh:%hh:%hh:%hh:%hh:%hh:%hh:%hh", &buffer[1], &buffer[2], &buffer[3],
61 &buffer[4], &buffer[5], &buffer[6], &buffer[7], &buffer[8]) != 8) {
62 fprintf(stderr, "Unable to parse ROM ID\n");
66 fprintf(stderr, "About to OWNext()\n");
67 docmd(endptfd, buffer, 9, 9);
68 fprintf(stderr, "OWNext() = %d\n", buffer[0]);
69 if (buffer[0] == OW_FOUND)
70 printf("Found module %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
71 buffer[1], buffer[2], buffer[3], buffer[4],
72 buffer[5], buffer[6], buffer[7], buffer[8]);
74 } else if (!strcmp(argv[1], "scan")) {
76 fprintf(stderr, "About to reset\n");
77 docmd(endptfd, buffer, 1, 1);
78 printf("OWReset() reported %d\n", buffer[0]);
84 fprintf(stderr, "About to OWFirst()\n");
85 docmd(endptfd, buffer, 1, 9);
86 printf("OWFirst() = %d\n", buffer[0]);
91 printf("Bad wiring, either bus is held low, or a presence pulse was detected but no module found\n");
95 printf("No presence pulse detected\n");
107 printf("Unknown return code %d\n", buffer[0]);
111 if (buffer[0] != OW_FOUND) {
112 printf("No more modules\n");
115 printf("Found module %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
116 buffer[1], buffer[2], buffer[3], buffer[4],
117 buffer[5], buffer[6], buffer[7], buffer[8]);
121 fprintf(stderr, "About to OWNext()\n");
122 docmd(endptfd, buffer, 9, 9);
125 printf("Unknown command: %s\n", argv[1]);
134 docmd(int fd, uint8_t *buffer, int wlen, int rlen) {
138 fprintf(stderr, "About to write\n");
141 if ((i = write(fd, buffer, wlen)) == -1) {
142 fprintf(stderr, "Unable to write end point: %s\n", strerror(errno));
146 printf("Warning, only wrote %d of %d bytes\n", i, wlen);
148 fprintf(stderr, "About to read\n");
151 if ((i = read(fd, buffer, rlen)) == -1) {
152 fprintf(stderr, "Unable to read from end point: %s\n", strerror(errno));
156 printf("Warning, only read %d of %d bytes\n", i, wlen);