X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rigol/blobdiff_plain/b131d433f9b984b50266298be6f0cf7f9a13b6fb..7df76f49adf30ac260c99649678b084c9b6c282b:/usbtmc.c diff --git a/usbtmc.c b/usbtmc.c index 054e49c..835b6c8 100644 --- a/usbtmc.c +++ b/usbtmc.c @@ -6,6 +6,16 @@ #include "usbtmc.h" +#define USB_TIMEOUT 50000 + +#if BYTE_ORDER == LITTLE_ENDIAN +#define LE32(x) x +#elif BYTE_ORDER == BIG_ENDIAN +#define LE32(x) ((uint32_t)((((uint32_t)x)>>24) | ((((uint32_t)x)>>8) & 0xff00) | ((((uint32_t)x)<<8) & 0xff0000) | (((uint32_t)x)<<24))) +#else +#error BYTE_ORDER not defined/known! +#endif + //Helper-routine: Convert a little-endian 4-byte word to an int static void int2chars(unsigned char *buff,unsigned int a) { buff[3]=(a>>24)&0xff; @@ -59,15 +69,15 @@ int usbtmc_sendscpi(usb_dev_handle *dev, char* cmd, buff[3]=0; int2chars(buff+4, cmdlen); buff[8]=1; - buff[9]=0x37; - buff[10]=0x39; - buff[11]=0x39; + buff[9]=0x00; + buff[10]=0x00; + buff[11]=0x00; //fprintf(stderr,"Writing header len=%d\n", cmdlen); //printb(buff,12); - r=usb_bulk_write(dev, 1, (char*)buff, 12, 1000); + r=usb_bulk_write(dev, 1, (char*)buff, 12, USB_TIMEOUT); //fprintf(stderr,"%i bytes written. Writing cmd\n",r); //printb(cmd, cmdlen); - r=usb_bulk_write(dev, 1, cmd, cmdlen, 1000); + r=usb_bulk_write(dev, 1, cmd, cmdlen, USB_TIMEOUT); //fprintf(stderr,"%i bytes written.\n",r); if (resp != NULL && resplen != 0) { //send read command @@ -75,15 +85,15 @@ int usbtmc_sendscpi(usb_dev_handle *dev, char* cmd, seq++; buff[1]=seq; buff[2]=~seq; //nseq int2chars(buff+4,0x40); - buff[8]=1; + buff[8]=0; buff[9]=0xA; buff[10]=0; buff[11]=0; //fprintf(stderr,"Writing resp req header\n"); //printb(buff,12); - r=usb_bulk_write(dev, 1, (char*)buff, 12, 1000); + r=usb_bulk_write(dev, 1, (char*)buff, 12, USB_TIMEOUT); //fprintf(stderr,"%i bytes written. Reading response hdr\n",r); - r=usb_bulk_read(dev, 2, (char*)buff, 0x40, 1000); + r=usb_bulk_read(dev, 2, (char*)buff, 0x40, USB_TIMEOUT); //printb(buff,r); len=chars2int(buff+4); //fprintf(stderr,"%i bytes read. Resplen=%i\n",r,len); @@ -94,7 +104,7 @@ int usbtmc_sendscpi(usb_dev_handle *dev, char* cmd, if (len > 0x40-12) { //fprintf(stderr," Reading response:\n"); if (resplen