libftdi1
1.3
|
Macros | |
#define | ftdi_error_return(code, str) |
#define | ftdi_error_return_free_device_list(code, str, devs) |
#define | MAGIC 0x55aa |
Functions | |
int | ftdi_init (struct ftdi_context *ftdi) |
struct ftdi_context * | ftdi_new (void) |
int | ftdi_set_interface (struct ftdi_context *ftdi, enum ftdi_interface interface) |
void | ftdi_deinit (struct ftdi_context *ftdi) |
void | ftdi_free (struct ftdi_context *ftdi) |
void | ftdi_set_usbdev (struct ftdi_context *ftdi, libusb_device_handle *usb) |
struct ftdi_version_info | ftdi_get_library_version (void) |
Get libftdi library version. More... | |
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) |
void | ftdi_list_free2 (struct ftdi_device_list *devlist) |
int | ftdi_usb_get_strings (struct ftdi_context *ftdi, struct libusb_device *dev, char *manufacturer, int mnf_len, char *description, int desc_len, char *serial, int serial_len) |
int | ftdi_usb_get_strings2 (struct ftdi_context *ftdi, struct libusb_device *dev, char *manufacturer, int mnf_len, char *description, int desc_len, char *serial, int serial_len) |
int | ftdi_usb_open_dev (struct ftdi_context *ftdi, libusb_device *dev) |
int | ftdi_usb_open (struct ftdi_context *ftdi, int vendor, int product) |
int | ftdi_usb_open_desc (struct ftdi_context *ftdi, int vendor, int product, 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_string (struct ftdi_context *ftdi, const char *description) |
int | ftdi_usb_reset (struct ftdi_context *ftdi) |
int | ftdi_usb_purge_rx_buffer (struct ftdi_context *ftdi) |
int | ftdi_usb_purge_tx_buffer (struct ftdi_context *ftdi) |
int | ftdi_usb_purge_buffers (struct ftdi_context *ftdi) |
int | ftdi_usb_close (struct ftdi_context *ftdi) |
int | convert_baudrate_UT_export (int baudrate, struct ftdi_context *ftdi, unsigned short *value, unsigned short *index) |
Wrapper function to export ftdi_convert_baudrate() to the unit test Do not use, it's only for the unit test framework. More... | |
int | ftdi_set_baudrate (struct ftdi_context *ftdi, int baudrate) |
int | ftdi_set_line_property (struct ftdi_context *ftdi, enum ftdi_bits_type bits, enum ftdi_stopbits_type sbit, enum ftdi_parity_type parity) |
int | ftdi_set_line_property2 (struct ftdi_context *ftdi, enum ftdi_bits_type bits, enum ftdi_stopbits_type sbit, enum ftdi_parity_type parity, enum ftdi_break_type break_type) |
int | ftdi_write_data (struct ftdi_context *ftdi, const unsigned char *buf, int size) |
struct ftdi_transfer_control * | ftdi_write_data_submit (struct ftdi_context *ftdi, unsigned char *buf, int size) |
struct ftdi_transfer_control * | ftdi_read_data_submit (struct ftdi_context *ftdi, unsigned char *buf, int size) |
int | ftdi_transfer_data_done (struct ftdi_transfer_control *tc) |
void | ftdi_transfer_data_cancel (struct ftdi_transfer_control *tc, struct timeval *to) |
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_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_set_bitmode (struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode) |
int | ftdi_disable_bitbang (struct ftdi_context *ftdi) |
int | ftdi_read_pins (struct ftdi_context *ftdi, unsigned char *pins) |
int | ftdi_set_latency_timer (struct ftdi_context *ftdi, unsigned char latency) |
int | ftdi_get_latency_timer (struct ftdi_context *ftdi, unsigned char *latency) |
int | ftdi_poll_modem_status (struct ftdi_context *ftdi, unsigned short *status) |
int | ftdi_setflowctrl (struct ftdi_context *ftdi, int flowctrl) |
int | ftdi_setdtr (struct ftdi_context *ftdi, int state) |
int | ftdi_setrts (struct ftdi_context *ftdi, int state) |
int | ftdi_setdtr_rts (struct ftdi_context *ftdi, int dtr, int rts) |
int | ftdi_set_event_char (struct ftdi_context *ftdi, unsigned char eventch, unsigned char enable) |
int | ftdi_set_error_char (struct ftdi_context *ftdi, unsigned char errorch, unsigned char enable) |
int | ftdi_eeprom_initdefaults (struct ftdi_context *ftdi, char *manufacturer, char *product, char *serial) |
int | ftdi_eeprom_set_strings (struct ftdi_context *ftdi, char *manufacturer, char *product, char *serial) |
void | set_ft232h_cbus (struct ftdi_eeprom *eeprom, unsigned char *output) |
int | ftdi_eeprom_build (struct ftdi_context *ftdi) |
int | ftdi_eeprom_decode (struct ftdi_context *ftdi, int verbose) |
int | ftdi_get_eeprom_value (struct ftdi_context *ftdi, enum ftdi_eeprom_value value_name, int *value) |
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_set_eeprom_user_data (struct ftdi_context *ftdi, const char *buf, int size) |
int | ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val) |
int | ftdi_read_eeprom (struct ftdi_context *ftdi) |
int | ftdi_read_chipid (struct ftdi_context *ftdi, unsigned int *chipid) |
int | ftdi_write_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val) |
int | ftdi_write_eeprom (struct ftdi_context *ftdi) |
int | ftdi_erase_eeprom (struct ftdi_context *ftdi) |
char * | ftdi_get_error_string (struct ftdi_context *ftdi) |
#define ftdi_error_return | ( | code, | |
str | |||
) |
Definition at line 41 of file ftdi.c.
Referenced by ftdi_disable_bitbang(), ftdi_eeprom_build(), ftdi_eeprom_decode(), ftdi_eeprom_initdefaults(), ftdi_eeprom_set_strings(), ftdi_erase_eeprom(), ftdi_get_eeprom_buf(), ftdi_get_eeprom_value(), ftdi_get_latency_timer(), ftdi_init(), ftdi_poll_modem_status(), ftdi_read_chipid(), ftdi_read_data(), ftdi_read_data_get_chunksize(), ftdi_read_data_set_chunksize(), ftdi_read_eeprom(), ftdi_read_eeprom_location(), ftdi_read_pins(), ftdi_set_baudrate(), ftdi_set_bitmode(), ftdi_set_eeprom_buf(), ftdi_set_eeprom_user_data(), ftdi_set_eeprom_value(), ftdi_set_error_char(), ftdi_set_event_char(), ftdi_set_interface(), ftdi_set_latency_timer(), ftdi_set_line_property2(), ftdi_setdtr(), ftdi_setdtr_rts(), ftdi_setflowctrl(), ftdi_setrts(), ftdi_usb_close(), ftdi_usb_find_all(), ftdi_usb_get_strings(), ftdi_usb_get_strings2(), ftdi_usb_open_desc_index(), ftdi_usb_open_dev(), ftdi_usb_open_string(), ftdi_usb_purge_buffers(), ftdi_usb_purge_rx_buffer(), ftdi_usb_purge_tx_buffer(), ftdi_usb_reset(), ftdi_write_data(), ftdi_write_data_get_chunksize(), ftdi_write_data_set_chunksize(), ftdi_write_eeprom(), and ftdi_write_eeprom_location().
#define ftdi_error_return_free_device_list | ( | code, | |
str, | |||
devs | |||
) |
Definition at line 49 of file ftdi.c.
Referenced by ftdi_usb_find_all(), ftdi_usb_open_desc_index(), and ftdi_usb_open_string().
#define MAGIC 0x55aa |
Erase eeprom
This is not supported on FT232R/FT245R according to the MProg manual from FTDI.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | erase failed |
-2 | USB device unavailable |
-3 | Writing magic failed |
-4 | Read EEPROM failed |
-5 | Unexpected EEPROM value |
Definition at line 4413 of file ftdi.c.
Referenced by ftdi_erase_eeprom().
int ftdi_init | ( | struct ftdi_context * | ftdi | ) |
Initializes a ftdi_context.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | couldn't allocate read buffer |
-2 | couldn't allocate struct buffer |
-3 | libusb_init() failed |
Definition at line 88 of file ftdi.c.
References AUTO_DETACH_SIO_MODULE, ftdi_context::baudrate, ftdi_context::bitbang_enabled, ftdi_context::bitbang_mode, ftdi_context::eeprom, ftdi_context::error_str, ftdi_error_return, ftdi_read_data_set_chunksize(), ftdi_set_interface(), INTERFACE_ANY, ftdi_context::max_packet_size, ftdi_context::module_detach_mode, ftdi_context::readbuffer, ftdi_context::readbuffer_offset, ftdi_context::readbuffer_remaining, ftdi_context::type, TYPE_BM, ftdi_context::usb_ctx, ftdi_context::usb_dev, ftdi_context::usb_read_timeout, ftdi_context::usb_write_timeout, and ftdi_context::writebuffer_chunksize.
Referenced by ftdi_new().
struct ftdi_context* ftdi_new | ( | void | ) |
Allocate and initialize a new ftdi_context
Definition at line 128 of file ftdi.c.
References ftdi_init().
Referenced by Ftdi::Context::Private::Private().
int ftdi_set_interface | ( | struct ftdi_context * | ftdi, |
enum ftdi_interface | interface | ||
) |
Open selected channels on a chip, otherwise use first channel.
ftdi | pointer to ftdi_context |
interface | Interface to use for FT2232C/2232H/4232H chips. |
0 | all fine |
-1 | unknown interface |
-2 | USB device unavailable |
-3 | Device already open, interface can't be set in that state |
Definition at line 157 of file ftdi.c.
References ftdi_error_return, ftdi_context::in_ep, ftdi_context::index, ftdi_context::interface, INTERFACE_A, INTERFACE_ANY, INTERFACE_B, INTERFACE_C, INTERFACE_D, ftdi_context::out_ep, and ftdi_context::usb_dev.
Referenced by ftdi_init(), and Ftdi::Context::set_interface().
void ftdi_deinit | ( | struct ftdi_context * | ftdi | ) |
Deinitializes a ftdi_context.
ftdi | pointer to ftdi_context |
Definition at line 210 of file ftdi.c.
References ftdi_context::eeprom, ftdi_eeprom::manufacturer, ftdi_eeprom::product, ftdi_context::readbuffer, ftdi_eeprom::serial, and ftdi_context::usb_ctx.
Referenced by ftdi_free().
void ftdi_free | ( | struct ftdi_context * | ftdi | ) |
Deinitialize and free an ftdi_context.
ftdi | pointer to ftdi_context |
Definition at line 256 of file ftdi.c.
References ftdi_deinit().
Referenced by Ftdi::Context::set_context(), and Ftdi::Context::Private::~Private().
void ftdi_set_usbdev | ( | struct ftdi_context * | ftdi, |
libusb_device_handle * | usb | ||
) |
Use an already open libusb device.
ftdi | pointer to ftdi_context |
usb | libusb libusb_device_handle to use |
Definition at line 268 of file ftdi.c.
References ftdi_context::usb_dev.
Referenced by Ftdi::Context::set_usb_device().
struct ftdi_version_info ftdi_get_library_version | ( | void | ) |
Get libftdi library version.
Definition at line 281 of file ftdi.c.
References FTDI_MAJOR_VERSION, FTDI_MICRO_VERSION, FTDI_MINOR_VERSION, FTDI_SNAPSHOT_VERSION, FTDI_VERSION_STRING, ftdi_version_info::major, ftdi_version_info::micro, ftdi_version_info::minor, ftdi_version_info::snapshot_str, and ftdi_version_info::version_str.
int ftdi_usb_find_all | ( | struct ftdi_context * | ftdi, |
struct ftdi_device_list ** | devlist, | ||
int | vendor, | ||
int | product | ||
) |
Finds all ftdi devices with given VID:PID on the usb bus. Creates a new ftdi_device_list which needs to be deallocated by ftdi_list_free() after use. With VID:PID 0:0, search for the default devices (0x403:0x6001, 0x403:0x6010, 0x403:0x6011, 0x403:0x6014, 0x403:0x6015)
ftdi | pointer to ftdi_context |
devlist | Pointer where to store list of found devices |
vendor | Vendor ID to search for |
product | Product ID to search for |
>0 | number of devices found |
-3 | out of memory |
-5 | libusb_get_device_list() failed |
-6 | libusb_get_device_descriptor() failed |
Definition at line 310 of file ftdi.c.
References ftdi_device_list::dev, ftdi_error_return, ftdi_error_return_free_device_list, ftdi_device_list::next, and ftdi_context::usb_ctx.
Referenced by Ftdi::List::find_all().
void ftdi_list_free | ( | struct ftdi_device_list ** | devlist | ) |
Frees a usb device list.
devlist | USB device list created by ftdi_usb_find_all() |
Definition at line 358 of file ftdi.c.
References ftdi_device_list::dev, and ftdi_device_list::next.
Referenced by Ftdi::List::clear(), ftdi_list_free2(), and Ftdi::List::Private::~Private().
void ftdi_list_free2 | ( | struct ftdi_device_list * | devlist | ) |
Frees a usb device list.
devlist | USB device list created by ftdi_usb_find_all() |
Definition at line 378 of file ftdi.c.
References ftdi_list_free().
int ftdi_usb_get_strings | ( | struct ftdi_context * | ftdi, |
struct libusb_device * | dev, | ||
char * | manufacturer, | ||
int | mnf_len, | ||
char * | description, | ||
int | desc_len, | ||
char * | serial, | ||
int | serial_len | ||
) |
Return device ID strings from the usb device.
The parameters manufacturer, description and serial may be NULL or pointer to buffers to store the fetched strings.
ftdi | pointer to ftdi_context |
dev | libusb usb_dev to use |
manufacturer | Store manufacturer string here if not NULL |
mnf_len | Buffer size of manufacturer string |
description | Store product description string here if not NULL |
desc_len | Buffer size of product description string |
serial | Store serial string here if not NULL |
serial_len | Buffer size of serial string |
0 | all fine |
-1 | wrong arguments |
-4 | unable to open device |
-7 | get product manufacturer failed |
-8 | get product description failed |
-9 | get serial number failed |
-11 | libusb_get_device_descriptor() failed |
Definition at line 409 of file ftdi.c.
References ftdi_error_return, ftdi_usb_get_strings2(), and ftdi_context::usb_dev.
Referenced by Ftdi::Context::get_strings().
int ftdi_usb_get_strings2 | ( | struct ftdi_context * | ftdi, |
struct libusb_device * | dev, | ||
char * | manufacturer, | ||
int | mnf_len, | ||
char * | description, | ||
int | desc_len, | ||
char * | serial, | ||
int | serial_len | ||
) |
Return device ID strings from the usb device.
The parameters manufacturer, description and serial may be NULL or pointer to buffers to store the fetched strings.
ftdi | pointer to ftdi_context |
dev | libusb usb_dev to use |
manufacturer | Store manufacturer string here if not NULL |
mnf_len | Buffer size of manufacturer string |
description | Store product description string here if not NULL |
desc_len | Buffer size of product description string |
serial | Store serial string here if not NULL |
serial_len | Buffer size of serial string |
0 | all fine |
-1 | wrong arguments |
-4 | unable to open device |
-7 | get product manufacturer failed |
-8 | get product description failed |
-9 | get serial number failed |
-11 | libusb_get_device_descriptor() failed |
Definition at line 466 of file ftdi.c.
References ftdi_error_return, and ftdi_context::usb_dev.
Referenced by ftdi_usb_get_strings().
int ftdi_usb_open_dev | ( | struct ftdi_context * | ftdi, |
libusb_device * | dev | ||
) |
Opens a ftdi device given by an usb_device.
ftdi | pointer to ftdi_context |
dev | libusb usb_dev to use |
0 | all fine |
-3 | unable to config device |
-4 | unable to open device |
-5 | unable to claim device |
-6 | reset failed |
-7 | set baudrate failed |
-8 | ftdi context invalid |
-9 | libusb_get_device_descriptor() failed |
-10 | libusb_get_config_descriptor() failed |
-11 | libusb_detach_kernel_driver() failed |
-12 | libusb_get_configuration() failed |
Definition at line 584 of file ftdi.c.
References AUTO_DETACH_SIO_MODULE, ftdi_error_return, ftdi_set_baudrate(), ftdi_usb_reset(), ftdi_context::interface, ftdi_context::max_packet_size, ftdi_context::module_detach_mode, ftdi_context::type, TYPE_2232C, TYPE_2232H, TYPE_230X, TYPE_232H, TYPE_4232H, TYPE_AM, TYPE_BM, TYPE_R, and ftdi_context::usb_dev.
Referenced by ftdi_usb_open_desc_index(), ftdi_usb_open_string(), and Ftdi::Context::get_strings_and_reopen().
int ftdi_usb_open | ( | struct ftdi_context * | ftdi, |
int | vendor, | ||
int | product | ||
) |
Opens the first device with a given vendor and product ids.
ftdi | pointer to ftdi_context |
vendor | Vendor ID |
product | Product ID |
same | as ftdi_usb_open_desc() |
Definition at line 697 of file ftdi.c.
References ftdi_usb_open_desc().
Referenced by Ftdi::Context::open().
int ftdi_usb_open_desc | ( | struct ftdi_context * | ftdi, |
int | vendor, | ||
int | product, | ||
const char * | description, | ||
const char * | serial | ||
) |
Opens the first device with a given, vendor id, product id, description and serial.
ftdi | pointer to ftdi_context |
vendor | Vendor ID |
product | Product ID |
description | Description to search for. Use NULL if not needed. |
serial | Serial to search for. Use NULL if not needed. |
0 | all fine |
-3 | usb device not found |
-4 | unable to open device |
-5 | unable to claim device |
-6 | reset failed |
-7 | set baudrate failed |
-8 | get product description failed |
-9 | get serial number failed |
-12 | libusb_get_device_list() failed |
-13 | libusb_get_device_descriptor() failed |
Definition at line 723 of file ftdi.c.
References ftdi_usb_open_desc_index().
Referenced by ftdi_usb_open().
int ftdi_usb_open_desc_index | ( | struct ftdi_context * | ftdi, |
int | vendor, | ||
int | product, | ||
const char * | description, | ||
const char * | serial, | ||
unsigned int | index | ||
) |
Opens the index-th device with a given, vendor id, product id, description and serial.
ftdi | pointer to ftdi_context |
vendor | Vendor ID |
product | Product ID |
description | Description to search for. Use NULL if not needed. |
serial | Serial to search for. Use NULL if not needed. |
index | Number of matching device to open if there are more than one, starts with 0. |
0 | all fine |
-1 | usb_find_busses() failed |
-2 | usb_find_devices() failed |
-3 | usb device not found |
-4 | unable to open device |
-5 | unable to claim device |
-6 | reset failed |
-7 | set baudrate failed |
-8 | get product description failed |
-9 | get serial number failed |
-10 | unable to close device |
-11 | ftdi context invalid |
Definition at line 753 of file ftdi.c.
References ftdi_error_return, ftdi_error_return_free_device_list, ftdi_usb_open_dev(), ftdi_context::usb_ctx, and ftdi_context::usb_dev.
Referenced by ftdi_usb_open_desc(), ftdi_usb_open_string(), and Ftdi::Context::open().
int ftdi_usb_open_string | ( | struct ftdi_context * | ftdi, |
const char * | description | ||
) |
Opens the ftdi-device described by a description-string. Intended to be used for parsing a device-description given as commandline argument.
ftdi | pointer to ftdi_context |
description | NULL-terminated description-string, using this format:
|
0 | all fine |
-2 | libusb_get_device_list() failed |
-3 | usb device not found |
-4 | unable to open device |
-5 | unable to claim device |
-6 | reset failed |
-7 | set baudrate failed |
-8 | get product description failed |
-9 | get serial number failed |
-10 | unable to close device |
-11 | illegal description format |
-12 | ftdi context invalid |
Definition at line 851 of file ftdi.c.
References ftdi_error_return, ftdi_error_return_free_device_list, ftdi_usb_open_desc_index(), ftdi_usb_open_dev(), and ftdi_context::usb_ctx.
Referenced by Ftdi::Context::open().
int ftdi_usb_reset | ( | struct ftdi_context * | ftdi | ) |
Resets the ftdi device.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | FTDI reset failed |
-2 | USB device unavailable |
Definition at line 944 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, ftdi_context::readbuffer_offset, ftdi_context::readbuffer_remaining, SIO_RESET_REQUEST, SIO_RESET_SIO, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by ftdi_usb_open_dev(), ftdi_write_eeprom(), and Ftdi::Context::reset().
int ftdi_usb_purge_rx_buffer | ( | struct ftdi_context * | ftdi | ) |
Clears the read buffer on the chip and the internal read buffer.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | read buffer purge failed |
-2 | USB device unavailable |
Definition at line 970 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, ftdi_context::readbuffer_offset, ftdi_context::readbuffer_remaining, SIO_RESET_PURGE_RX, SIO_RESET_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::flush(), and ftdi_usb_purge_buffers().
int ftdi_usb_purge_tx_buffer | ( | struct ftdi_context * | ftdi | ) |
Clears the write buffer on the chip.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | write buffer purge failed |
-2 | USB device unavailable |
Definition at line 996 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_RESET_PURGE_TX, SIO_RESET_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::flush(), and ftdi_usb_purge_buffers().
int ftdi_usb_purge_buffers | ( | struct ftdi_context * | ftdi | ) |
Clears the buffers on the chip and the internal read buffer.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | read buffer purge failed |
-2 | write buffer purge failed |
-3 | USB device unavailable |
Definition at line 1019 of file ftdi.c.
References ftdi_error_return, ftdi_usb_purge_rx_buffer(), ftdi_usb_purge_tx_buffer(), and ftdi_context::usb_dev.
Referenced by ftdi_readstream().
int ftdi_usb_close | ( | struct ftdi_context * | ftdi | ) |
Closes the ftdi device. Call ftdi_deinit() if you're cleaning up.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | usb_release failed |
-3 | ftdi context invalid |
Definition at line 1048 of file ftdi.c.
References ftdi_error_return, ftdi_context::interface, and ftdi_context::usb_dev.
Referenced by Ftdi::Context::close(), and Ftdi::Context::Private::~Private().
int convert_baudrate_UT_export | ( | int | baudrate, |
struct ftdi_context * | ftdi, | ||
unsigned short * | value, | ||
unsigned short * | index | ||
) |
int ftdi_set_baudrate | ( | struct ftdi_context * | ftdi, |
int | baudrate | ||
) |
Sets the chip baud rate
ftdi | pointer to ftdi_context |
baudrate | baud rate to set |
0 | all fine |
-1 | invalid baudrate |
-2 | setting baudrate failed |
-3 | USB device unavailable |
Definition at line 1299 of file ftdi.c.
References ftdi_context::baudrate, ftdi_context::bitbang_enabled, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, SIO_SET_BAUDRATE_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by ftdi_usb_open_dev(), and Ftdi::Context::set_baud_rate().
int ftdi_set_line_property | ( | struct ftdi_context * | ftdi, |
enum ftdi_bits_type | bits, | ||
enum ftdi_stopbits_type | sbit, | ||
enum ftdi_parity_type | parity | ||
) |
Set (RS232) line characteristics. The break type can only be set via ftdi_set_line_property2() and defaults to "off".
ftdi | pointer to ftdi_context |
bits | Number of bits |
sbit | Number of stop bits |
parity | Parity mode |
0 | all fine |
-1 | Setting line property failed |
Definition at line 1345 of file ftdi.c.
References BREAK_OFF, and ftdi_set_line_property2().
Referenced by Ftdi::Context::set_line_property().
int ftdi_set_line_property2 | ( | struct ftdi_context * | ftdi, |
enum ftdi_bits_type | bits, | ||
enum ftdi_stopbits_type | sbit, | ||
enum ftdi_parity_type | parity, | ||
enum ftdi_break_type | break_type | ||
) |
Set (RS232) line characteristics
ftdi | pointer to ftdi_context |
bits | Number of bits |
sbit | Number of stop bits |
parity | Parity mode |
break_type | Break type |
0 | all fine |
-1 | Setting line property failed |
-2 | USB device unavailable |
Definition at line 1364 of file ftdi.c.
References BREAK_OFF, BREAK_ON, EVEN, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, MARK, NONE, ODD, SIO_SET_DATA_REQUEST, SPACE, STOP_BIT_1, STOP_BIT_15, STOP_BIT_2, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by ftdi_set_line_property(), and Ftdi::Context::set_line_property().
int ftdi_write_data | ( | struct ftdi_context * | ftdi, |
const unsigned char * | buf, | ||
int | size | ||
) |
Writes data in chunks (see ftdi_write_data_set_chunksize()) to the chip
ftdi | pointer to ftdi_context |
buf | Buffer with the data |
size | Size of the buffer |
-666 | USB device unavailable |
<0 | error code from usb_bulk_write() |
>0 | number of bytes written |
Definition at line 1434 of file ftdi.c.
References ftdi_error_return, ftdi_context::in_ep, ftdi_context::usb_dev, ftdi_context::usb_write_timeout, and ftdi_context::writebuffer_chunksize.
Referenced by Ftdi::Context::write().
struct ftdi_transfer_control* ftdi_write_data_submit | ( | struct ftdi_context * | ftdi, |
unsigned char * | buf, | ||
int | size | ||
) |
Writes data to the chip. Does not wait for completion of the transfer nor does it make sure that the transfer was successful.
Use libusb 1.0 asynchronous API.
ftdi | pointer to ftdi_context |
buf | Buffer with the data |
size | Size of the buffer |
NULL | Some error happens when submit transfer |
!NULL | Pointer to a ftdi_transfer_control |
Definition at line 1594 of file ftdi.c.
References ftdi_transfer_control::buf, ftdi_transfer_control::completed, ftdi_transfer_control::ftdi, ftdi_context::in_ep, ftdi_transfer_control::offset, ftdi_transfer_control::size, ftdi_transfer_control::transfer, ftdi_context::usb_dev, ftdi_context::usb_write_timeout, and ftdi_context::writebuffer_chunksize.
struct ftdi_transfer_control* ftdi_read_data_submit | ( | struct ftdi_context * | ftdi, |
unsigned char * | buf, | ||
int | size | ||
) |
Reads data from the chip. Does not wait for completion of the transfer nor does it make sure that the transfer was successful.
Use libusb 1.0 asynchronous API.
ftdi | pointer to ftdi_context |
buf | Buffer with the data |
size | Size of the buffer |
NULL | Some error happens when submit transfer |
!NULL | Pointer to a ftdi_transfer_control |
Definition at line 1656 of file ftdi.c.
References ftdi_transfer_control::buf, ftdi_transfer_control::completed, ftdi_transfer_control::ftdi, ftdi_transfer_control::offset, ftdi_context::out_ep, ftdi_context::readbuffer, ftdi_context::readbuffer_chunksize, ftdi_context::readbuffer_offset, ftdi_context::readbuffer_remaining, ftdi_transfer_control::size, ftdi_transfer_control::transfer, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
int ftdi_transfer_data_done | ( | struct ftdi_transfer_control * | tc | ) |
Wait for completion of the transfer.
Use libusb 1.0 asynchronous API.
tc | pointer to ftdi_transfer_control |
< | 0: Some error happens |
>= | 0: Data size transferred |
tc->transfer could be NULL if "(size <= ftdi->readbuffer_remaining)" at ftdi_read_data_submit(). Therefore, we need to check it here.
Definition at line 1735 of file ftdi.c.
References ftdi_transfer_control::completed, ftdi_transfer_control::ftdi, ftdi_transfer_control::offset, ftdi_transfer_control::transfer, and ftdi_context::usb_ctx.
void ftdi_transfer_data_cancel | ( | struct ftdi_transfer_control * | tc, |
struct timeval * | to | ||
) |
Cancel transfer and wait for completion.
Use libusb 1.0 asynchronous API.
tc | pointer to ftdi_transfer_control |
to | pointer to timeout value or NULL for infinite |
Definition at line 1782 of file ftdi.c.
References ftdi_transfer_control::completed, ftdi_transfer_control::ftdi, ftdi_transfer_control::transfer, and ftdi_context::usb_ctx.
int ftdi_write_data_set_chunksize | ( | struct ftdi_context * | ftdi, |
unsigned int | chunksize | ||
) |
Configure write buffer chunk size. Default is 4096.
ftdi | pointer to ftdi_context |
chunksize | Chunk size |
0 | all fine |
-1 | ftdi context invalid |
Definition at line 1816 of file ftdi.c.
References ftdi_error_return, and ftdi_context::writebuffer_chunksize.
Referenced by Ftdi::Context::set_write_chunk_size().
int ftdi_write_data_get_chunksize | ( | struct ftdi_context * | ftdi, |
unsigned int * | chunksize | ||
) |
Get write buffer chunk size.
ftdi | pointer to ftdi_context |
chunksize | Pointer to store chunk size in |
0 | all fine |
-1 | ftdi context invalid |
Definition at line 1834 of file ftdi.c.
References ftdi_error_return, and ftdi_context::writebuffer_chunksize.
Referenced by Ftdi::Context::write_chunk_size().
int ftdi_read_data | ( | struct ftdi_context * | ftdi, |
unsigned char * | buf, | ||
int | size | ||
) |
Reads data in chunks (see ftdi_read_data_set_chunksize()) from the chip.
Automatically strips the two modem status bytes transfered during every read.
ftdi | pointer to ftdi_context |
buf | Buffer to store data in |
size | Size of the buffer |
-666 | USB device unavailable |
<0 | error code from libusb_bulk_transfer() |
0 | no data was available |
>0 | number of bytes read |
Definition at line 1858 of file ftdi.c.
References ftdi_error_return, ftdi_context::max_packet_size, ftdi_context::out_ep, ftdi_context::readbuffer, ftdi_context::readbuffer_chunksize, ftdi_context::readbuffer_offset, ftdi_context::readbuffer_remaining, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by Ftdi::Context::read().
int ftdi_read_data_set_chunksize | ( | struct ftdi_context * | ftdi, |
unsigned int | chunksize | ||
) |
Configure read buffer chunk size. Default is 4096.
Automatically reallocates the buffer.
ftdi | pointer to ftdi_context |
chunksize | Chunk size |
0 | all fine |
-1 | ftdi context invalid |
Definition at line 1983 of file ftdi.c.
References ftdi_error_return, ftdi_context::readbuffer, ftdi_context::readbuffer_chunksize, ftdi_context::readbuffer_offset, and ftdi_context::readbuffer_remaining.
Referenced by ftdi_init(), and Ftdi::Context::set_read_chunk_size().
int ftdi_read_data_get_chunksize | ( | struct ftdi_context * | ftdi, |
unsigned int * | chunksize | ||
) |
Get read buffer chunk size.
ftdi | pointer to ftdi_context |
chunksize | Pointer to store chunk size in |
0 | all fine |
-1 | FTDI context invalid |
Definition at line 2020 of file ftdi.c.
References ftdi_error_return, and ftdi_context::readbuffer_chunksize.
Referenced by Ftdi::Context::read_chunk_size().
int ftdi_set_bitmode | ( | struct ftdi_context * | ftdi, |
unsigned char | bitmask, | ||
unsigned char | mode | ||
) |
Enable/disable bitbang modes.
ftdi | pointer to ftdi_context |
bitmask | Bitmask to configure lines. HIGH/ON value configures a line as output. |
mode | Bitbang mode: use the values defined in ftdi_mpsse_mode |
0 | all fine |
-1 | can't enable bitbang mode |
-2 | USB device unavailable |
Definition at line 2041 of file ftdi.c.
References ftdi_context::bitbang_enabled, ftdi_context::bitbang_mode, BITMODE_RESET, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_BITMODE_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by ftdi_readstream(), and Ftdi::Context::set_bitmode().
int ftdi_disable_bitbang | ( | struct ftdi_context * | ftdi | ) |
Disable bitbang mode.
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | can't disable bitbang mode |
-2 | USB device unavailable |
Definition at line 2067 of file ftdi.c.
References ftdi_context::bitbang_enabled, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_BITMODE_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::bitbang_disable().
int ftdi_read_pins | ( | struct ftdi_context * | ftdi, |
unsigned char * | pins | ||
) |
Directly read pin state, circumventing the read buffer. Useful for bitbang mode.
ftdi | pointer to ftdi_context |
pins | Pointer to store pins into |
0 | all fine |
-1 | read pins failed |
-2 | USB device unavailable |
Definition at line 2090 of file ftdi.c.
References FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_READ_PINS_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by Ftdi::Context::read_pins().
int ftdi_set_latency_timer | ( | struct ftdi_context * | ftdi, |
unsigned char | latency | ||
) |
Set latency timer
The FTDI chip keeps data in the internal buffer for a specific amount of time if the buffer is not full yet to decrease load on the usb bus.
ftdi | pointer to ftdi_context |
latency | Value between 1 and 255 |
0 | all fine |
-1 | latency out of range |
-2 | unable to set latency timer |
-3 | USB device unavailable |
Definition at line 2116 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_LATENCY_TIMER_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by ftdi_write_eeprom(), and Ftdi::Context::set_latency().
int ftdi_get_latency_timer | ( | struct ftdi_context * | ftdi, |
unsigned char * | latency | ||
) |
Get latency timer
ftdi | pointer to ftdi_context |
latency | Pointer to store latency value in |
0 | all fine |
-1 | unable to get latency timer |
-2 | USB device unavailable |
Definition at line 2143 of file ftdi.c.
References FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_GET_LATENCY_TIMER_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by Ftdi::Context::latency().
int ftdi_poll_modem_status | ( | struct ftdi_context * | ftdi, |
unsigned short * | status | ||
) |
Poll modem status information
This function allows the retrieve the two status bytes of the device. The device sends these bytes also as a header for each read access where they are discarded by ftdi_read_data(). The chip generates the two stripped status bytes in the absence of data every 40 ms.
Layout of the first byte:
Layout of the second byte:
ftdi | pointer to ftdi_context |
status | Pointer to store status information in. Must be two bytes. |
0 | all fine |
-1 | unable to retrieve status information |
-2 | USB device unavailable |
Definition at line 2197 of file ftdi.c.
References FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_POLL_MODEM_STATUS_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by ftdi_write_eeprom(), and Ftdi::Context::poll_modem_status().
int ftdi_setflowctrl | ( | struct ftdi_context * | ftdi, |
int | flowctrl | ||
) |
Set flowcontrol for ftdi chip
ftdi | pointer to ftdi_context |
flowctrl | flow control to use. should be SIO_DISABLE_FLOW_CTRL, SIO_RTS_CTS_HS, SIO_DTR_DSR_HS or SIO_XON_XOFF_HS |
0 | all fine |
-1 | set flow control failed |
-2 | USB device unavailable |
Definition at line 2223 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_FLOW_CTRL_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_flow_control().
int ftdi_setdtr | ( | struct ftdi_context * | ftdi, |
int | state | ||
) |
Set dtr line
ftdi | pointer to ftdi_context |
state | state to set line to (1 or 0) |
0 | all fine |
-1 | set dtr failed |
-2 | USB device unavailable |
Definition at line 2246 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_DTR_HIGH, SIO_SET_DTR_LOW, SIO_SET_MODEM_CTRL_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_dtr().
int ftdi_setrts | ( | struct ftdi_context * | ftdi, |
int | state | ||
) |
Set rts line
ftdi | pointer to ftdi_context |
state | state to set line to (1 or 0) |
0 | all fine |
-1 | set rts failed |
-2 | USB device unavailable |
Definition at line 2276 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_MODEM_CTRL_REQUEST, SIO_SET_RTS_HIGH, SIO_SET_RTS_LOW, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_rts().
int ftdi_setdtr_rts | ( | struct ftdi_context * | ftdi, |
int | dtr, | ||
int | rts | ||
) |
Set dtr and rts line in one pass
ftdi | pointer to ftdi_context |
dtr | DTR state to set line to (1 or 0) |
rts | RTS state to set line to (1 or 0) |
0 | all fine |
-1 | set dtr/rts failed |
-2 | USB device unavailable |
Definition at line 2307 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_DTR_HIGH, SIO_SET_DTR_LOW, SIO_SET_MODEM_CTRL_REQUEST, SIO_SET_RTS_HIGH, SIO_SET_RTS_LOW, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_modem_control().
int ftdi_set_event_char | ( | struct ftdi_context * | ftdi, |
unsigned char | eventch, | ||
unsigned char | enable | ||
) |
Set the special event character
ftdi | pointer to ftdi_context |
eventch | Event character |
enable | 0 to disable the event character, non-zero otherwise |
0 | all fine |
-1 | unable to set event character |
-2 | USB device unavailable |
Definition at line 2343 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_EVENT_CHAR_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_event_char().
int ftdi_set_error_char | ( | struct ftdi_context * | ftdi, |
unsigned char | errorch, | ||
unsigned char | enable | ||
) |
Set error character
ftdi | pointer to ftdi_context |
errorch | Error character |
enable | 0 to disable the error character, non-zero otherwise |
0 | all fine |
-1 | unable to set error character |
-2 | USB device unavailable |
Definition at line 2372 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_context::index, SIO_SET_ERROR_CHAR_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Context::set_error_char().
int ftdi_eeprom_initdefaults | ( | struct ftdi_context * | ftdi, |
char * | manufacturer, | ||
char * | product, | ||
char * | serial | ||
) |
Init eeprom with default values for the connected device
ftdi | pointer to ftdi_context |
manufacturer | String to use as Manufacturer |
product | String to use as Product description |
serial | String to use as Serial number description |
0 | all fine |
-1 | No struct ftdi_context |
-2 | No struct ftdi_eeprom |
-3 | No connected device or device not yet opened |
Definition at line 2402 of file ftdi.c.
References ftdi_eeprom::cbus_function, CBUS_PWREN, CBUS_RXLED, CBUS_SLEEP, CBUS_TXDEN, CBUS_TXLED, CBUSH_TRISTATE, CBUSX_RXLED, CBUSX_SLEEP, CBUSX_TXDEN, CBUSX_TXLED, ftdi_context::eeprom, ftdi_error_return, ftdi_eeprom::manufacturer, ftdi_eeprom::max_power, ftdi_eeprom::product, ftdi_eeprom::product_id, ftdi_eeprom::release_number, ftdi_eeprom::serial, ftdi_eeprom::size, ftdi_context::type, TYPE_2232C, TYPE_2232H, TYPE_230X, TYPE_232H, TYPE_4232H, TYPE_AM, TYPE_BM, TYPE_R, ftdi_context::usb_dev, ftdi_eeprom::usb_version, ftdi_eeprom::use_serial, and ftdi_eeprom::vendor_id.
Referenced by Ftdi::Eeprom::init_defaults().
int ftdi_eeprom_set_strings | ( | struct ftdi_context * | ftdi, |
char * | manufacturer, | ||
char * | product, | ||
char * | serial | ||
) |
Definition at line 2550 of file ftdi.c.
References ftdi_context::eeprom, ftdi_error_return, ftdi_eeprom::manufacturer, ftdi_eeprom::product, ftdi_eeprom::serial, ftdi_context::usb_dev, and ftdi_eeprom::use_serial.
void set_ft232h_cbus | ( | struct ftdi_eeprom * | eeprom, |
unsigned char * | output | ||
) |
Definition at line 2600 of file ftdi.c.
References ftdi_eeprom::cbus_function, CBUSH_CLK7_5, and CBUSH_TRISTATE.
Referenced by ftdi_eeprom_build().
int ftdi_eeprom_build | ( | struct ftdi_context * | ftdi | ) |
Build binary buffer from ftdi_eeprom structure. Output is suitable for ftdi_write_eeprom().
ftdi | pointer to ftdi_context |
>=0 | size of eeprom user area in bytes |
-1 | eeprom size (128 bytes) exceeded by custom strings |
-2 | Invalid eeprom or ftdi pointer |
-3 | Invalid cbus function setting (FIXME: Not in the code?) |
-4 | Chip doesn't support invert (FIXME: Not in the code?) |
-5 | Chip doesn't support high current drive (FIXME: Not in the code?) |
-6 | No connected EEPROM or EEPROM Type unknown |
Definition at line 2669 of file ftdi.c.
References ftdi_eeprom::buf, CBUS_BB_RD, CBUS_CLK6, ftdi_eeprom::cbus_function, CBUS_PWREN, CBUS_RXLED, CBUS_SLEEP, CBUS_TXDEN, CBUS_TXLED, ftdi_eeprom::channel_a_driver, ftdi_eeprom::channel_a_rs485enable, ftdi_eeprom::channel_a_type, ftdi_eeprom::channel_b_driver, ftdi_eeprom::channel_b_rs485enable, ftdi_eeprom::channel_b_type, ftdi_eeprom::channel_c_driver, ftdi_eeprom::channel_c_rs485enable, ftdi_eeprom::channel_d_driver, ftdi_eeprom::channel_d_rs485enable, CHANNEL_IS_RS485, ftdi_eeprom::chip, ftdi_eeprom::clock_polarity, ftdi_eeprom::data_order, DRIVE_16MA, DRIVER_VCP, DRIVER_VCPH, ftdi_context::eeprom, ftdi_eeprom::external_oscillator, ftdi_eeprom::flow_control, FT1284_CLK_IDLE_STATE, FT1284_DATA_LSB, FT1284_FLOW_CONTROL, ftdi_error_return, FTDI_MAX_EEPROM_SIZE, ftdi_read_eeprom_location(), ftdi_eeprom::group0_drive, ftdi_eeprom::group0_schmitt, ftdi_eeprom::group0_slew, ftdi_eeprom::group1_drive, ftdi_eeprom::group1_schmitt, ftdi_eeprom::group1_slew, ftdi_eeprom::group2_drive, ftdi_eeprom::group2_schmitt, ftdi_eeprom::group2_slew, ftdi_eeprom::group3_drive, ftdi_eeprom::group3_schmitt, ftdi_eeprom::group3_slew, ftdi_eeprom::high_current, ftdi_eeprom::high_current_a, ftdi_eeprom::high_current_b, HIGH_CURRENT_DRIVE, HIGH_CURRENT_DRIVE_R, ftdi_eeprom::in_is_isochronous, ftdi_eeprom::initialized_for_connected_device, ftdi_eeprom::invert, ftdi_eeprom::is_not_pnp, IS_SCHMITT, ftdi_eeprom::manufacturer, ftdi_eeprom::max_power, MAX_POWER_MILLIAMP_PER_UNIT, ftdi_eeprom::out_is_isochronous, POWER_SAVE_DISABLE_H, ftdi_eeprom::powersave, ftdi_eeprom::product, ftdi_eeprom::product_id, ftdi_eeprom::release_number, ftdi_eeprom::remote_wakeup, ftdi_eeprom::self_powered, ftdi_eeprom::serial, set_ft232h_cbus(), ftdi_eeprom::size, SLOW_SLEW, ftdi_eeprom::suspend_dbus7, SUSPEND_DBUS7_BIT, ftdi_eeprom::suspend_pull_downs, ftdi_context::type, TYPE_2232C, TYPE_2232H, TYPE_230X, TYPE_232H, TYPE_4232H, TYPE_AM, TYPE_BM, TYPE_R, ftdi_eeprom::usb_version, ftdi_eeprom::use_serial, USE_SERIAL_NUM, ftdi_eeprom::use_usb_version, USE_USB_VERSION_BIT, ftdi_eeprom::user_data, ftdi_eeprom::user_data_addr, ftdi_eeprom::user_data_size, and ftdi_eeprom::vendor_id.
Referenced by Ftdi::Eeprom::build().
int ftdi_eeprom_decode | ( | struct ftdi_context * | ftdi, |
int | verbose | ||
) |
Decode binary EEPROM image into an ftdi_eeprom structure.
For FT-X devices use AN_201 FT-X MTP memory Configuration to decode.
ftdi | pointer to ftdi_context |
verbose | Decode EEPROM on stdout |
0 | all fine |
-1 | something went wrong |
FIXME: How to pass size? How to handle size field in ftdi_eeprom? FIXME: Strings are malloc'ed here and should be freed somewhere
Definition at line 3297 of file ftdi.c.
References ftdi_eeprom::buf, CBUS_BB_RD, ftdi_eeprom::cbus_function, CBUSH_CLK7_5, CBUSX_AWAKE, ftdi_eeprom::channel_a_driver, ftdi_eeprom::channel_a_rs485enable, ftdi_eeprom::channel_a_type, ftdi_eeprom::channel_b_driver, ftdi_eeprom::channel_b_rs485enable, ftdi_eeprom::channel_b_type, ftdi_eeprom::channel_c_driver, ftdi_eeprom::channel_c_rs485enable, ftdi_eeprom::channel_d_driver, ftdi_eeprom::channel_d_rs485enable, CHANNEL_IS_RS485, ftdi_eeprom::chip, ftdi_eeprom::clock_polarity, ftdi_eeprom::data_order, DRIVE_16MA, DRIVER_VCP, DRIVER_VCPH, ftdi_context::eeprom, ftdi_eeprom::external_oscillator, ftdi_eeprom::flow_control, FT1284_CLK_IDLE_STATE, FT1284_DATA_LSB, FT1284_FLOW_CONTROL, ftdi_error_return, ftdi_eeprom::group0_drive, ftdi_eeprom::group0_schmitt, ftdi_eeprom::group0_slew, ftdi_eeprom::group1_drive, ftdi_eeprom::group1_schmitt, ftdi_eeprom::group1_slew, ftdi_eeprom::group2_drive, ftdi_eeprom::group2_schmitt, ftdi_eeprom::group2_slew, ftdi_eeprom::group3_drive, ftdi_eeprom::group3_schmitt, ftdi_eeprom::group3_slew, ftdi_eeprom::high_current, ftdi_eeprom::high_current_a, ftdi_eeprom::high_current_b, HIGH_CURRENT_DRIVE, HIGH_CURRENT_DRIVE_R, ftdi_eeprom::in_is_isochronous, ftdi_eeprom::invert, ftdi_eeprom::is_not_pnp, IS_SCHMITT, ftdi_eeprom::manufacturer, ftdi_eeprom::max_power, MAX_POWER_MILLIAMP_PER_UNIT, ftdi_eeprom::out_is_isochronous, POWER_SAVE_DISABLE_H, ftdi_eeprom::powersave, ftdi_eeprom::product, ftdi_eeprom::product_id, ftdi_eeprom::release_number, ftdi_eeprom::remote_wakeup, ftdi_eeprom::self_powered, ftdi_eeprom::serial, ftdi_eeprom::size, SLOW_SLEW, ftdi_eeprom::suspend_dbus7, SUSPEND_DBUS7_BIT, ftdi_eeprom::suspend_pull_downs, ftdi_context::type, TYPE_2232C, TYPE_2232H, TYPE_230X, TYPE_232H, TYPE_4232H, TYPE_AM, TYPE_BM, TYPE_R, ftdi_eeprom::usb_version, ftdi_eeprom::use_serial, USE_SERIAL_NUM, ftdi_eeprom::use_usb_version, USE_USB_VERSION_BIT, and ftdi_eeprom::vendor_id.
int ftdi_get_eeprom_value | ( | struct ftdi_context * | ftdi, |
enum ftdi_eeprom_value | value_name, | ||
int * | value | ||
) |
Get a value from the decoded EEPROM structure
ftdi | pointer to ftdi_context |
value_name | Enum of the value to query |
value | Pointer to store read value |
0 | all fine |
-1 | Value doesn't exist |
Definition at line 3727 of file ftdi.c.
References ftdi_eeprom::cbus_function, CBUS_FUNCTION_0, CBUS_FUNCTION_1, CBUS_FUNCTION_2, CBUS_FUNCTION_3, CBUS_FUNCTION_4, CBUS_FUNCTION_5, CBUS_FUNCTION_6, CBUS_FUNCTION_7, CBUS_FUNCTION_8, CBUS_FUNCTION_9, ftdi_eeprom::channel_a_driver, CHANNEL_A_DRIVER, CHANNEL_A_RS485, ftdi_eeprom::channel_a_rs485enable, ftdi_eeprom::channel_a_type, CHANNEL_A_TYPE, ftdi_eeprom::channel_b_driver, CHANNEL_B_DRIVER, CHANNEL_B_RS485, ftdi_eeprom::channel_b_rs485enable, ftdi_eeprom::channel_b_type, CHANNEL_B_TYPE, ftdi_eeprom::channel_c_driver, CHANNEL_C_DRIVER, CHANNEL_C_RS485, ftdi_eeprom::channel_c_rs485enable, ftdi_eeprom::channel_d_driver, CHANNEL_D_DRIVER, CHANNEL_D_RS485, ftdi_eeprom::channel_d_rs485enable, ftdi_eeprom::chip, CHIP_SIZE, CHIP_TYPE, ftdi_eeprom::clock_polarity, CLOCK_POLARITY, ftdi_eeprom::data_order, DATA_ORDER, ftdi_context::eeprom, ftdi_eeprom::external_oscillator, EXTERNAL_OSCILLATOR, ftdi_eeprom::flow_control, FLOW_CONTROL, ftdi_error_return, ftdi_eeprom::group0_drive, GROUP0_DRIVE, ftdi_eeprom::group0_schmitt, GROUP0_SCHMITT, ftdi_eeprom::group0_slew, GROUP0_SLEW, ftdi_eeprom::group1_drive, GROUP1_DRIVE, ftdi_eeprom::group1_schmitt, GROUP1_SCHMITT, ftdi_eeprom::group1_slew, GROUP1_SLEW, ftdi_eeprom::group2_drive, GROUP2_DRIVE, ftdi_eeprom::group2_schmitt, GROUP2_SCHMITT, ftdi_eeprom::group2_slew, GROUP2_SLEW, ftdi_eeprom::group3_drive, GROUP3_DRIVE, ftdi_eeprom::group3_schmitt, GROUP3_SCHMITT, ftdi_eeprom::group3_slew, GROUP3_SLEW, ftdi_eeprom::high_current, HIGH_CURRENT, ftdi_eeprom::high_current_a, HIGH_CURRENT_A, ftdi_eeprom::high_current_b, HIGH_CURRENT_B, ftdi_eeprom::in_is_isochronous, IN_IS_ISOCHRONOUS, ftdi_eeprom::invert, INVERT, ftdi_eeprom::is_not_pnp, IS_NOT_PNP, ftdi_eeprom::max_power, MAX_POWER, ftdi_eeprom::out_is_isochronous, OUT_IS_ISOCHRONOUS, POWER_SAVE, ftdi_eeprom::powersave, ftdi_eeprom::product_id, PRODUCT_ID, ftdi_eeprom::release_number, RELEASE_NUMBER, ftdi_eeprom::remote_wakeup, REMOTE_WAKEUP, ftdi_eeprom::self_powered, SELF_POWERED, ftdi_eeprom::size, ftdi_eeprom::suspend_dbus7, SUSPEND_DBUS7, ftdi_eeprom::suspend_pull_downs, SUSPEND_PULL_DOWNS, ftdi_eeprom::usb_version, USB_VERSION, ftdi_eeprom::use_serial, USE_SERIAL, ftdi_eeprom::use_usb_version, USE_USB_VERSION, ftdi_eeprom::vendor_id, and VENDOR_ID.
int ftdi_set_eeprom_value | ( | struct ftdi_context * | ftdi, |
enum ftdi_eeprom_value | value_name, | ||
int | value | ||
) |
Set a value in the decoded EEPROM Structure No parameter checking is performed
ftdi | pointer to ftdi_context |
value_name | Enum of the value to set |
value | to set |
0 | all fine |
-1 | Value doesn't exist |
-2 | Value not user settable |
Definition at line 3920 of file ftdi.c.
References ftdi_eeprom::cbus_function, CBUS_FUNCTION_0, CBUS_FUNCTION_1, CBUS_FUNCTION_2, CBUS_FUNCTION_3, CBUS_FUNCTION_4, CBUS_FUNCTION_5, CBUS_FUNCTION_6, CBUS_FUNCTION_7, CBUS_FUNCTION_8, CBUS_FUNCTION_9, ftdi_eeprom::channel_a_driver, CHANNEL_A_DRIVER, CHANNEL_A_RS485, ftdi_eeprom::channel_a_rs485enable, ftdi_eeprom::channel_a_type, CHANNEL_A_TYPE, ftdi_eeprom::channel_b_driver, CHANNEL_B_DRIVER, CHANNEL_B_RS485, ftdi_eeprom::channel_b_rs485enable, ftdi_eeprom::channel_b_type, CHANNEL_B_TYPE, ftdi_eeprom::channel_c_driver, CHANNEL_C_DRIVER, CHANNEL_C_RS485, ftdi_eeprom::channel_c_rs485enable, ftdi_eeprom::channel_d_driver, CHANNEL_D_DRIVER, CHANNEL_D_RS485, ftdi_eeprom::channel_d_rs485enable, ftdi_eeprom::chip, CHIP_SIZE, CHIP_TYPE, ftdi_eeprom::clock_polarity, CLOCK_POLARITY, ftdi_eeprom::data_order, DATA_ORDER, ftdi_context::eeprom, ftdi_eeprom::external_oscillator, EXTERNAL_OSCILLATOR, ftdi_eeprom::flow_control, FLOW_CONTROL, ftdi_error_return, ftdi_eeprom::group0_drive, GROUP0_DRIVE, ftdi_eeprom::group0_schmitt, GROUP0_SCHMITT, ftdi_eeprom::group0_slew, GROUP0_SLEW, ftdi_eeprom::group1_drive, GROUP1_DRIVE, ftdi_eeprom::group1_schmitt, GROUP1_SCHMITT, ftdi_eeprom::group1_slew, GROUP1_SLEW, ftdi_eeprom::group2_drive, GROUP2_DRIVE, ftdi_eeprom::group2_schmitt, GROUP2_SCHMITT, ftdi_eeprom::group2_slew, GROUP2_SLEW, ftdi_eeprom::group3_drive, GROUP3_DRIVE, ftdi_eeprom::group3_schmitt, GROUP3_SCHMITT, ftdi_eeprom::group3_slew, GROUP3_SLEW, ftdi_eeprom::high_current, HIGH_CURRENT, ftdi_eeprom::high_current_a, HIGH_CURRENT_A, ftdi_eeprom::high_current_b, HIGH_CURRENT_B, ftdi_eeprom::in_is_isochronous, IN_IS_ISOCHRONOUS, ftdi_eeprom::initialized_for_connected_device, ftdi_eeprom::invert, INVERT, ftdi_eeprom::is_not_pnp, IS_NOT_PNP, ftdi_eeprom::max_power, MAX_POWER, ftdi_eeprom::out_is_isochronous, OUT_IS_ISOCHRONOUS, POWER_SAVE, ftdi_eeprom::powersave, ftdi_eeprom::product_id, PRODUCT_ID, ftdi_eeprom::release_number, RELEASE_NUMBER, ftdi_eeprom::remote_wakeup, REMOTE_WAKEUP, ftdi_eeprom::self_powered, SELF_POWERED, ftdi_eeprom::suspend_dbus7, SUSPEND_DBUS7, ftdi_eeprom::suspend_pull_downs, SUSPEND_PULL_DOWNS, ftdi_eeprom::usb_version, USB_VERSION, ftdi_eeprom::use_serial, USE_SERIAL, ftdi_eeprom::use_usb_version, USE_USB_VERSION, ftdi_eeprom::user_data_addr, USER_DATA_ADDR, ftdi_eeprom::vendor_id, and VENDOR_ID.
int ftdi_get_eeprom_buf | ( | struct ftdi_context * | ftdi, |
unsigned char * | buf, | ||
int | size | ||
) |
Get the read-only buffer to the binary EEPROM content
ftdi | pointer to ftdi_context |
buf | buffer to receive EEPROM content |
size | Size of receiving buffer |
0 | All fine |
-1 | struct ftdi_contxt or ftdi_eeprom missing |
-2 | Not enough room to store eeprom |
Definition at line 4116 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, ftdi_error_return, and FTDI_MAX_EEPROM_SIZE.
int ftdi_set_eeprom_buf | ( | struct ftdi_context * | ftdi, |
const unsigned char * | buf, | ||
int | size | ||
) |
Set the EEPROM content from the user-supplied prefilled buffer
ftdi | pointer to ftdi_context |
buf | buffer to read EEPROM content |
size | Size of buffer |
0 | All fine |
-1 | struct ftdi_context or ftdi_eeprom or buf missing |
Definition at line 4142 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, ftdi_error_return, and FTDI_MAX_EEPROM_SIZE.
int ftdi_set_eeprom_user_data | ( | struct ftdi_context * | ftdi, |
const char * | buf, | ||
int | size | ||
) |
Set the EEPROM user data content from the user-supplied prefilled buffer
ftdi | pointer to ftdi_context |
buf | buffer to read EEPROM user data content |
size | Size of buffer |
0 | All fine |
-1 | struct ftdi_context or ftdi_eeprom or buf missing |
Definition at line 4165 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, ftdi_error_return, ftdi_eeprom::size, ftdi_eeprom::user_data, and ftdi_eeprom::user_data_size.
int ftdi_read_eeprom_location | ( | struct ftdi_context * | ftdi, |
int | eeprom_addr, | ||
unsigned short * | eeprom_val | ||
) |
Read eeprom location
ftdi | pointer to ftdi_context |
eeprom_addr | Address of eeprom location to be read |
eeprom_val | Pointer to store read eeprom location |
0 | all fine |
-1 | read failed |
-2 | USB device unavailable |
Definition at line 4186 of file ftdi.c.
References FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, SIO_READ_EEPROM_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by ftdi_eeprom_build(), ftdi_erase_eeprom(), ftdi_write_eeprom_location(), and Ftdi::Eeprom::read_location().
int ftdi_read_eeprom | ( | struct ftdi_context * | ftdi | ) |
Read eeprom
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | read failed |
-2 | USB device unavailable |
Definition at line 4206 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, FTDI_MAX_EEPROM_SIZE, SIO_READ_EEPROM_REQUEST, ftdi_eeprom::size, ftdi_context::type, TYPE_R, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by Ftdi::Eeprom::read().
int ftdi_read_chipid | ( | struct ftdi_context * | ftdi, |
unsigned int * | chipid | ||
) |
Read the FTDIChip-ID from R-type devices
ftdi | pointer to ftdi_context |
chipid | Pointer to store FTDIChip-ID |
0 | all fine |
-1 | read failed |
-2 | USB device unavailable |
Definition at line 4265 of file ftdi.c.
References FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, SIO_READ_EEPROM_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by Ftdi::Eeprom::chip_id().
int ftdi_write_eeprom_location | ( | struct ftdi_context * | ftdi, |
int | eeprom_addr, | ||
unsigned short | eeprom_val | ||
) |
Write eeprom location
ftdi | pointer to ftdi_context |
eeprom_addr | Address of eeprom location to be written |
eeprom_val | Value to be written |
0 | all fine |
-1 | write failed |
-2 | USB device unavailable |
-3 | Invalid access to checksum protected area below 0x80 |
-4 | Device can't access unprotected area |
-5 | Reading chip type failed |
Definition at line 4303 of file ftdi.c.
References FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_read_eeprom_location(), SIO_WRITE_EEPROM_REQUEST, ftdi_context::type, TYPE_2232C, TYPE_2232H, TYPE_232H, TYPE_4232H, TYPE_BM, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Eeprom::write_location().
int ftdi_write_eeprom | ( | struct ftdi_context * | ftdi | ) |
Write eeprom
ftdi | pointer to ftdi_context |
0 | all fine |
-1 | read failed |
-2 | USB device unavailable |
-3 | EEPROM not initialized for the connected device; |
Definition at line 4359 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_poll_modem_status(), ftdi_set_latency_timer(), ftdi_usb_reset(), ftdi_eeprom::initialized_for_connected_device, SIO_WRITE_EEPROM_REQUEST, ftdi_eeprom::size, ftdi_context::type, TYPE_230X, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Eeprom::write().
int ftdi_erase_eeprom | ( | struct ftdi_context * | ftdi | ) |
Definition at line 4414 of file ftdi.c.
References ftdi_eeprom::chip, ftdi_context::eeprom, FTDI_DEVICE_OUT_REQTYPE, ftdi_error_return, ftdi_read_eeprom_location(), MAGIC, SIO_ERASE_EEPROM_REQUEST, SIO_WRITE_EEPROM_REQUEST, ftdi_context::type, TYPE_230X, TYPE_R, ftdi_context::usb_dev, and ftdi_context::usb_write_timeout.
Referenced by Ftdi::Eeprom::erase().
char* ftdi_get_error_string | ( | struct ftdi_context * | ftdi | ) |
Get string representation for last error code
ftdi | pointer to ftdi_context |
Pointer | to error string |
Definition at line 4476 of file ftdi.c.
References ftdi_context::error_str.
Referenced by Ftdi::Context::error_string(), and ftdi_readstream().