{
libusb_close (ftdi->usb_dev);
ftdi->usb_dev = NULL;
+ if(ftdi->eeprom)
+ ftdi->eeprom->initialized_for_connected_device = 0;
}
}
}
/**
- Init eeprom with default values.
+ Init eeprom with default values for the connected device
\param ftdi pointer to ftdi_context
\param manufacturer String to use as Manufacturer
\param product String to use as Product description
\retval 0: all fine
\retval -1: No struct ftdi_context
\retval -2: No struct ftdi_eeprom
+ \retval -3: No connected device or device not yet opened
*/
int ftdi_eeprom_initdefaults(struct ftdi_context *ftdi, char * manufacturer,
char * product, char * serial)
eeprom = ftdi->eeprom;
memset(eeprom, 0, sizeof(struct ftdi_eeprom));
+ if (ftdi->usb_dev == NULL)
+ ftdi_error_return(-3, "No connected device or device not yet opened");
+
eeprom->vendor_id = 0x0403;
eeprom->use_serial = USE_SERIAL_NUM;
if ((ftdi->type == TYPE_AM) || (ftdi->type == TYPE_BM) ||
}
eeprom->size = -1;
}
+ eeprom->initialized_for_connected_device = 1;
return 0;
}
/*FTD2XX doesn't check for values not fitting in the ACBUS Signal oprtions*/
\retval 0: all fine
\retval -1: read failed
\retval -2: USB device unavailable
+ \retval -3: EEPROM not initialized for the connected device;
*/
int ftdi_write_eeprom(struct ftdi_context *ftdi)
{
if (ftdi == NULL || ftdi->usb_dev == NULL)
ftdi_error_return(-2, "USB device unavailable");
+
+ if(ftdi->eeprom->initialized_for_connected_device == 0)
+ ftdi_error_return(-3, "EEPROM not initialized for the connected device");
+
eeprom = ftdi->eeprom->buf;
/* These commands were traced while running MProg */