C++ wrapper: Reset internal USB device pointer on Context::close()
[libftdi] / ftdipp / ftdi.cpp
index 5e45dce..e2755d8 100644 (file)
@@ -132,6 +132,7 @@ int Context::open(struct libusb_device *dev)
 int Context::close()
 {
     d->open = false;
+    d->dev = 0;
     return ftdi_usb_close(d->ftdi);
 }
 
@@ -316,6 +317,11 @@ int Context::get_strings()
 
 int Context::get_strings_and_reopen()
 {
+    if ( d->dev == 0 )
+    {
+        d->dev = libusb_get_device(d->ftdi->usb_dev);
+    }
+
     // Get device strings (closes device)
     int ret=get_strings();
     if (ret < 0)