]> git.zerfleddert.de Git - rigol/blobdiff - usbtmc.c
unlock keyboard on release
[rigol] / usbtmc.c
index 483014f58e51fa7de953e717323204bd791772cb..054e49c0dc26526f288b852a04c220ac04116474 100644 (file)
--- a/usbtmc.c
+++ b/usbtmc.c
@@ -103,6 +103,18 @@ int usbtmc_sendscpi(usb_dev_handle *dev, char* cmd,
        return 0;
 }
 
+void usbtmc_claim(usb_dev_handle *sc)
+{
+       usb_claim_interface(sc, 0);
+}
+
+void usbtmc_release(usb_dev_handle *sc)
+{
+       //Disable keylock, so the user doesn't have to press the 'force'-button
+       usbtmc_sendscpi(sc, ":KEY:LOCK DISABLE",NULL,0); 
+       usb_release_interface(sc, 0);
+}
+
 //Initialize the scope.
 usb_dev_handle* usbtmc_initscope(void) {
        int r;
@@ -119,18 +131,25 @@ usb_dev_handle* usbtmc_initscope(void) {
        } else {
                printf("Scope found.\n");
        }
-       usb_claim_interface(dev,0);
+       usbtmc_claim(dev);
        //The following code isn't really necessary, the program works
        //OK without it too.
        r=usb_control_msg(dev, 0xC8, 9, 0, 0, (char*)buff, 4, 1000);
+       usbtmc_release(dev);
        if (r < 0) {
                fprintf (stderr, "Error %d sending init message: %s\n", 
                                r, strerror (-r));
                fprintf (stderr, "Do you have permission on the USB device?\n");
                exit (1);
        }
-       if (chars2int(buff)!=0x40004dc) {
+       if (chars2int(buff)!=0x40005dc) {
                fprintf(stderr,"Init: buff[%i]=%x\n",r,chars2int(buff));
        }
        return dev;
 }
+
+void usbtmc_close(usb_dev_handle *sc)
+{
+       //Free up and exit
+       usb_close(sc);
+}
Impressum, Datenschutz