Merge remote-tracking branch 'origin/get-library-version'
[libftdi] / src / ftdi.h
index c0a3d3d..759e61b 100644 (file)
@@ -200,6 +200,10 @@ struct ftdi_eeprom
     int vendor_id;
     /** product id */
     int product_id;
+    
+    /** Was the eeprom structure initialized for the actual
+        connected device? **/
+    int initialized_for_connected_device;
 
     /** self powered */
     int self_powered;
@@ -245,7 +249,7 @@ struct ftdi_eeprom
 
     /* Special function of FT232R/FT232H devices (and possibly others as well) */
     /** CBUS pin function. See CBUS_xxx defines. */
-    int cbus_function[9];
+    int cbus_function[10];
     /** Select hight current drive on R devices. */
     int high_current;
     /** Select hight current drive on A channel (2232C */
@@ -448,10 +452,10 @@ enum ftdi_cbush_func {/* FIXME: Recheck value, especially the last */
 
 /** Interface Mode. */
 #define CHANNEL_IS_UART 0x0
-#define CHANNEL_IS_245  0x1
-#define CHANNEL_IS_CPU  0x2
-#define CHANNEL_IS_OPTO 0x3
-#define CHANNEL_IS_FT1284 0x4
+#define CHANNEL_IS_FIFO 0x1
+#define CHANNEL_IS_OPTO 0x2
+#define CHANNEL_IS_CPU  0x4
+#define CHANNEL_IS_FT1284 0x8
 
 #define DRIVE_4MA  0
 #define DRIVE_8MA  1
@@ -494,6 +498,23 @@ typedef struct
 typedef int (FTDIStreamCallback)(uint8_t *buffer, int length,
                                  FTDIProgressInfo *progress, void *userdata);
 
+/**
+ * Provide libftdi version information
+ * major: Library major version
+ * minor: Library minor version
+ * micro: Currently unused, ight get used for hotfixes.
+ * version_str: Version as (static) string
+ * snapshot_str: Git snapshot version if known. Otherwise "unknown" or empty string.
+*/
+struct ftdi_version_info
+{
+    int major;
+    int minor;
+    int micro;
+    const char *version_str;
+    const char *snapshot_str;
+};
+
 
 #ifdef __cplusplus
 extern "C"
@@ -508,6 +529,8 @@ extern "C"
     void ftdi_free(struct ftdi_context *ftdi);
     void ftdi_set_usbdev (struct ftdi_context *ftdi, struct libusb_device_handle *usbdev);
 
+    struct ftdi_version_info ftdi_get_library_version();
+
     int ftdi_usb_find_all(struct ftdi_context *ftdi, struct ftdi_device_list **devlist,
                           int vendor, int product);
     void ftdi_list_free(struct ftdi_device_list **devlist);
@@ -584,6 +607,7 @@ extern "C"
     int ftdi_set_eeprom_value(struct ftdi_context *ftdi, enum ftdi_eeprom_value value_name, int  value);
 
     int ftdi_get_eeprom_buf(struct ftdi_context *ftdi, unsigned char * buf, int size);
+    int ftdi_set_eeprom_buf(struct ftdi_context *ftdi, const unsigned char * buf, int size);
 
     int ftdi_read_eeprom(struct ftdi_context *ftdi);
     int ftdi_read_chipid(struct ftdi_context *ftdi, unsigned int *chipid);