libftdi: (tomj) applied changes from Steven Turner (FTDI) to support
[libftdi] / ftdi / ftdi.h
index 9e8615a..6fa8a60 100644 (file)
@@ -3,7 +3,7 @@
                              -------------------
     begin                : Fri Apr 4 2003
     copyright            : (C) 2003 by Intra2net AG
-    email                : info@intra2net.com
+    email                : opensource@intra2net.com
  ***************************************************************************/
 
 /***************************************************************************
 struct ftdi_context {
     // USB specific
     struct usb_dev_handle *usb_dev;
-    int usb_timeout;
+    int usb_read_timeout;
+    int usb_write_timeout;
 
     // FTDI specific
     int baudrate;
     unsigned char bitbang_enabled;
+    unsigned char *readbuffer;
+    unsigned int readbuffer_offset;
+    unsigned int readbuffer_remaining;
+    unsigned int readbuffer_chunksize;
+    unsigned int writebuffer_chunksize;
+
+    // FTDI FT2232C requirecments
+    int interface;   // 0 or 1
+    int index;       // 1 or 2
+    // Endpoints
+    int in_ep;
+    int out_ep;      // 1 or 2
+
+    int reading;     // 0 or 1 - for performance increase in SPI mode
 
     // misc
     char *error_str;
 };
 
 struct ftdi_eeprom {
-    int        vendor_id;
+    int vendor_id;
     int product_id;
 
-    int        self_powered;
+    int self_powered;
     int remote_wakeup;
     int BM_type_chip;
 
@@ -48,7 +63,7 @@ struct ftdi_eeprom {
     int change_usb_version;
     int usb_version;
     int max_power;
-    
+
     char *manufacturer;
     char *product;
     char *serial;
@@ -59,14 +74,22 @@ extern "C" {
 #endif
 
     int ftdi_init(struct ftdi_context *ftdi);
+    void ftdi_deinit(struct ftdi_context *ftdi);
     void ftdi_set_usbdev (struct ftdi_context *ftdi, usb_dev_handle *usbdev);
     int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product);
     int ftdi_usb_close(struct ftdi_context *ftdi);
     int ftdi_usb_reset(struct ftdi_context *ftdi);
+    int ftdi_usb_purge_buffers(struct ftdi_context *ftdi);
 
     int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate);
-    int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
+
     int ftdi_read_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
+    int ftdi_read_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
+    int ftdi_read_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
+
+    int ftdi_write_data(struct ftdi_context *ftdi, unsigned char *buf, int size);
+    int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
+    int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
 
     int ftdi_enable_bitbang(struct ftdi_context *ftdi, unsigned char bitmask);
     int ftdi_disable_bitbang(struct ftdi_context *ftdi);