Add kernel driver auto attach/detach
[libftdi] / src / ftdi.h
index ca38bbe..f170881 100644 (file)
@@ -2,7 +2,7 @@
                           ftdi.h  -  description
                              -------------------
     begin                : Fri Apr 4 2003
-    copyright            : (C) 2003-2014 by Intra2net AG and the libftdi developers
+    copyright            : (C) 2003-2017 by Intra2net AG and the libftdi developers
     email                : opensource@intra2net.com
  ***************************************************************************/
 
@@ -18,7 +18,9 @@
 #define __libftdi_h__
 
 #include <stdint.h>
+#ifndef _WIN32
 #include <sys/time.h>
+#endif
 
 /* 'interface' might be defined as a macro on Windows, so we need to
  * undefine it so as not to break the current libftdi API, because
@@ -82,7 +84,8 @@ enum ftdi_interface
 enum ftdi_module_detach_mode
 {
     AUTO_DETACH_SIO_MODULE = 0,
-    DONT_DETACH_SIO_MODULE = 1
+    DONT_DETACH_SIO_MODULE = 1,
+    AUTO_DETACH_REATACH_SIO_MODULE = 2
 };
 
 /* Shifting commands IN MPSSE Mode*/
@@ -265,7 +268,7 @@ struct ftdi_context
     struct ftdi_eeprom *eeprom;
 
     /** String representation of last error */
-    char *error_str;
+    const char *error_str;
 
     /** Defines behavior in case a kernel module is already attached to the device */
     enum ftdi_module_detach_mode module_detach_mode;
@@ -487,6 +490,11 @@ extern "C"
                               char *manufacturer, int mnf_len,
                               char *description, int desc_len,
                               char *serial, int serial_len);
+
+    int ftdi_eeprom_get_strings(struct ftdi_context *ftdi,
+                                char *manufacturer, int mnf_len,
+                                char *product, int prod_len,
+                                char *serial, int serial_len);
     int ftdi_eeprom_set_strings(struct ftdi_context *ftdi, char * manufacturer,
                                 char * product, char * serial);
 
@@ -495,6 +503,7 @@ extern "C"
                            const char* description, const char* serial);
     int ftdi_usb_open_desc_index(struct ftdi_context *ftdi, int vendor, int product,
                                  const char* description, const char* serial, unsigned int index);
+    int ftdi_usb_open_bus_addr(struct ftdi_context *ftdi, uint8_t bus, uint8_t addr);
     int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct libusb_device *dev);
     int ftdi_usb_open_string(struct ftdi_context *ftdi, const char* description);
 
@@ -538,6 +547,7 @@ extern "C"
 
     /* flow control */
     int ftdi_setflowctrl(struct ftdi_context *ftdi, int flowctrl);
+    int ftdi_setflowctrl_xonxoff(struct ftdi_context *ftdi, unsigned char xon, unsigned char xoff);
     int ftdi_setdtr_rts(struct ftdi_context *ftdi, int dtr, int rts);
     int ftdi_setdtr(struct ftdi_context *ftdi, int state);
     int ftdi_setrts(struct ftdi_context *ftdi, int state);
@@ -568,7 +578,7 @@ extern "C"
     int ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val);
     int ftdi_write_eeprom_location(struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val);
 
-    char *ftdi_get_error_string(struct ftdi_context *ftdi);
+    const char *ftdi_get_error_string(struct ftdi_context *ftdi);
 
 #ifdef __cplusplus
 }