Let the eeprom functions work on the ftdi_context, not the ftdi_eeprom structure
[libftdi] / src / ftdi.h
index 86e4c62..07300b6 100644 (file)
@@ -168,6 +168,59 @@ struct ftdi_transfer_control
 };
 
 /**
+    \brief FTDI eeprom structure
+*/
+struct ftdi_eeprom
+{
+    /** vendor id */
+    int vendor_id;
+    /** product id */
+    int product_id;
+
+    /** self powered */
+    int self_powered;
+    /** remote wakeup */
+    int remote_wakeup;
+    /** chip type */
+    int chip_type;
+
+    /** input in isochronous transfer mode */
+    int in_is_isochronous;
+    /** output in isochronous transfer mode */
+    int out_is_isochronous;
+    /** suspend pull downs */
+    int suspend_pull_downs;
+
+    /** use serial */
+    int use_serial;
+    /** fake usb version */
+    int change_usb_version;
+    /** usb version */
+    int usb_version;
+    /** maximum power */
+    int max_power;
+
+    /** manufacturer name */
+    char *manufacturer;
+    /** product name */
+    char *product;
+    /** serial number */
+    char *serial;
+
+    /* Special function of FT232R devices (and possibly others as well) */
+    /** CBUS pin function. See CBUS_xxx defines. */
+    int cbus_function[5];
+    /** Select hight current drive. */
+    int high_current;
+    /** Select inversion of data lines (bitmask). */
+    int invert;
+
+    /** eeprom size in bytes. This doesn't get stored in the eeprom
+        but is the only way to pass it to ftdi_eeprom_build. */
+    int size;
+};
+
+/**
     \brief Main context structure for all libftdi functions.
 
     Do not access directly if possible.
@@ -217,8 +270,8 @@ struct ftdi_context
     /** Bitbang mode. 1: (default) Normal bitbang mode, 2: FT2232C SPI bitbang mode */
     unsigned char bitbang_mode;
 
-    /** EEPROM size. Default is 128 bytes for 232BM and 245BM chips */
-    int eeprom_size;
+    /** Decoded eeprom structure */
+    struct ftdi_eeprom *eeprom;
 
     /** String representation of last error */
     char *error_str;
@@ -284,59 +337,6 @@ struct ftdi_device_list
 #define HIGH_CURRENT_DRIVE 0x04
 
 /**
-    \brief FTDI eeprom structure
-*/
-struct ftdi_eeprom
-{
-    /** vendor id */
-    int vendor_id;
-    /** product id */
-    int product_id;
-
-    /** self powered */
-    int self_powered;
-    /** remote wakeup */
-    int remote_wakeup;
-    /** chip type */
-    int chip_type;
-
-    /** input in isochronous transfer mode */
-    int in_is_isochronous;
-    /** output in isochronous transfer mode */
-    int out_is_isochronous;
-    /** suspend pull downs */
-    int suspend_pull_downs;
-
-    /** use serial */
-    int use_serial;
-    /** fake usb version */
-    int change_usb_version;
-    /** usb version */
-    int usb_version;
-    /** maximum power */
-    int max_power;
-
-    /** manufacturer name */
-    char *manufacturer;
-    /** product name */
-    char *product;
-    /** serial number */
-    char *serial;
-
-    /* Special function of FT232R devices (and possibly others as well) */
-    /** CBUS pin function. See CBUS_xxx defines. */
-    int cbus_function[5];
-    /** Select hight current drive. */
-    int high_current;
-    /** Select inversion of data lines (bitmask). */
-    int invert;
-
-    /** eeprom size in bytes. This doesn't get stored in the eeprom
-        but is the only way to pass it to ftdi_eeprom_build. */
-    int size;
-};
-
-/**
     \brief Progress Info for streaming read
 */
 struct size_and_time
@@ -441,10 +441,10 @@ extern "C"
     void ftdi_eeprom_setsize(struct ftdi_context *ftdi, struct ftdi_eeprom *eeprom, int size);
 
     /* init and build eeprom from ftdi_eeprom structure */
-    void ftdi_eeprom_initdefaults(struct ftdi_eeprom *eeprom);
-    void ftdi_eeprom_free(struct ftdi_eeprom *eeprom);
-    int ftdi_eeprom_build(struct ftdi_eeprom *eeprom, unsigned char *output);
-    int ftdi_eeprom_decode(struct ftdi_eeprom *eeprom, unsigned char *output, int size);
+    void ftdi_eeprom_initdefaults(struct ftdi_context *ftdi);
+    void ftdi_eeprom_free(struct ftdi_context *ftdi);
+    int ftdi_eeprom_build(struct ftdi_context *ftdi, unsigned char *output);
+    int ftdi_eeprom_decode(struct ftdi_context *ftdi, unsigned char *output, int size);
 
     /* "eeprom" needs to be valid 128 byte eeprom (generated by the eeprom generator)
        the checksum of the eeprom is valided */