X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rigol/blobdiff_plain/f3ecdd6a895f788d37219206b6d5f782d43d8828..07a45f0356f55c38f9d2bbbec36e742f43cdd3e1:/usbtmc.c diff --git a/usbtmc.c b/usbtmc.c index ffebcbf..732b8f6 100644 --- a/usbtmc.c +++ b/usbtmc.c @@ -60,7 +60,7 @@ static struct scope* usbtmc_find_scope() { return NULL; } -static unsigned char usbtmc_status(struct scope *sc) +static unsigned char usb488_status(struct scope *sc) { int r; unsigned char status[3]; @@ -72,7 +72,7 @@ static unsigned char usbtmc_status(struct scope *sc) (sc->usb.bTag & 0x7f), 0, (char*)status, 3, USB_TIMEOUT); - if ((r != 3) || (status[0] != 0x01) || (status[1] != (sc->usb.bTag & 0x7f))) { + if ((r != 3) || (status[0] != USBTMC_STATUS_SUCCESS) || (status[1] != (sc->usb.bTag & 0x7f))) { printf("READ_STATUS_BYTE failed: %d 0x%x 0x%x 0x%x\n", r, status[0], status[1], status[2]); return 0xff; } @@ -144,8 +144,8 @@ static void usbtmc_clear(struct scope *sc) 0, 0, (char*)status, 1, USB_TIMEOUT); - if ((r != 1) || status[0] != 0x01) { - printf("INITIATE_CLEAR failed: %s\n", usb_strerror()); + if ((r != 1) || status[0] != USBTMC_STATUS_SUCCESS) { + printf("INITIATE_CLEAR failed (0x%x): %s\n", status[0], usb_strerror()); return; } @@ -158,12 +158,17 @@ static void usbtmc_clear(struct scope *sc) 0, 0, (char*)status, 2, USB_TIMEOUT); - if ((r != 2) || status[0] != 0x01) { + if (r != 2) { printf("CHECK_CLEAR failed: %s\n", usb_strerror()); return; } - if (status[1] & (1<<0)) { + if (USBTMC_STATUS_FAIL(status[0])) { + printf("CHECK_CLEAR failed: 0x%x\n", status[0]); + return; + } + + if ((status[0] == USBTMC_STATUS_SUCCESS) && (status[1] == 0)) { printf("Success!\n"); break; } @@ -323,7 +328,7 @@ struct scope* usbtmc_initscope(void) { usbtmc_claim(sc); sc->usb.cap = usbtmc_get_capabilities(sc); - printf("Device status: 0x%x\n", usbtmc_status(sc)); + printf("Device status: 0x%x\n", usb488_status(sc)); /* The following code isn't really necessary, the program works OK without it too. */ r=usb_control_msg(sc->usb.dev, 0xC8, 9, 0, 0, (char*)&vidpid, 4, USB_TIMEOUT);