ftdi.h - Man Page
Synopsis
#include <stdint.h>
#include <sys/time.h>
Classes
struct ftdi_transfer_control
struct ftdi_context
Main context structure for all libftdi functions.
struct ftdi_device_list
list of usb devices created by ftdi_usb_find_all()
struct size_and_time
Progress Info for streaming read.
struct FTDIProgressInfo
struct ftdi_version_info
Macros
#define MPSSE_WRITE_NEG 0x01 /* Write TDI/DO on negative TCK/SK edge*/
#define MPSSE_BITMODE 0x02 /* Write bits, not bytes */
#define MPSSE_READ_NEG 0x04 /* Sample TDO/DI on negative TCK/SK edge */
#define MPSSE_LSB 0x08 /* LSB first */
#define MPSSE_DO_WRITE 0x10 /* Write TDI/DO */
#define MPSSE_DO_READ 0x20 /* Read TDO/DI */
#define MPSSE_WRITE_TMS 0x40 /* Write TMS/CS */
#define SET_BITS_LOW 0x80
#define SET_BITS_HIGH 0x82
#define GET_BITS_LOW 0x81
#define GET_BITS_HIGH 0x83
#define LOOPBACK_START 0x84
#define LOOPBACK_END 0x85
#define TCK_DIVISOR 0x86
#define DIS_DIV_5 0x8a
#define EN_DIV_5 0x8b
#define EN_3_PHASE 0x8c
#define DIS_3_PHASE 0x8d
#define CLK_BITS 0x8e
#define CLK_BYTES 0x8f
#define CLK_WAIT_HIGH 0x94
#define CLK_WAIT_LOW 0x95
#define EN_ADAPTIVE 0x96
#define DIS_ADAPTIVE 0x97
#define CLK_BYTES_OR_HIGH 0x9c
#define CLK_BYTES_OR_LOW 0x9d
#define DRIVE_OPEN_COLLECTOR 0x9e
#define DIV_VALUE(rate) (rate > 6000000)?0:((6000000/rate -1) > 0xffff)? 0xffff: (6000000/rate -1)
#define SEND_IMMEDIATE 0x87
#define WAIT_ON_HIGH 0x88
#define WAIT_ON_LOW 0x89
#define READ_SHORT 0x90
#define READ_EXTENDED 0x91
#define WRITE_SHORT 0x92
#define WRITE_EXTENDED 0x93
#define SIO_RESET 0 /* Reset the port */
#define SIO_MODEM_CTRL 1 /* Set the modem control register */
#define SIO_SET_FLOW_CTRL 2 /* Set flow control register */
#define SIO_SET_BAUD_RATE 3 /* Set baud rate */
#define SIO_SET_DATA 4 /* Set the data characteristics of the port */
#define FTDI_DEVICE_OUT_REQTYPE (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT)
#define FTDI_DEVICE_IN_REQTYPE (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN)
#define SIO_RESET_REQUEST SIO_RESET
#define SIO_SET_BAUDRATE_REQUEST SIO_SET_BAUD_RATE
#define SIO_SET_DATA_REQUEST SIO_SET_DATA
#define SIO_SET_FLOW_CTRL_REQUEST SIO_SET_FLOW_CTRL
#define SIO_SET_MODEM_CTRL_REQUEST SIO_MODEM_CTRL
#define SIO_POLL_MODEM_STATUS_REQUEST 0x05
#define SIO_SET_EVENT_CHAR_REQUEST 0x06
#define SIO_SET_ERROR_CHAR_REQUEST 0x07
#define SIO_SET_LATENCY_TIMER_REQUEST 0x09
#define SIO_GET_LATENCY_TIMER_REQUEST 0x0A
#define SIO_SET_BITMODE_REQUEST 0x0B
#define SIO_READ_PINS_REQUEST 0x0C
#define SIO_READ_EEPROM_REQUEST 0x90
#define SIO_WRITE_EEPROM_REQUEST 0x91
#define SIO_ERASE_EEPROM_REQUEST 0x92
#define SIO_RESET_SIO 0
#define SIO_RESET_PURGE_RX 1
#define SIO_RESET_PURGE_TX 2
#define SIO_DISABLE_FLOW_CTRL 0x0
#define SIO_RTS_CTS_HS (0x1 << 8)
#define SIO_DTR_DSR_HS (0x2 << 8)
#define SIO_XON_XOFF_HS (0x4 << 8)
#define SIO_SET_DTR_MASK 0x1
#define SIO_SET_DTR_HIGH ( 1 | ( SIO_SET_DTR_MASK << 8))
#define SIO_SET_DTR_LOW ( 0 | ( SIO_SET_DTR_MASK << 8))
#define SIO_SET_RTS_MASK 0x2
#define SIO_SET_RTS_HIGH ( 2 | ( SIO_SET_RTS_MASK << 8 ))
#define SIO_SET_RTS_LOW ( 0 | ( SIO_SET_RTS_MASK << 8 ))
#define SIO_RTS_CTS_HS (0x1 << 8)
#define FTDI_URB_USERCONTEXT_COOKIE ((void *)0x1)
#define DEPRECATED(func) func
#define FT1284_CLK_IDLE_STATE 0x01
#define FT1284_DATA_LSB 0x02 /* DS_FT232H 1.3 amd ftd2xx.h 1.0.4 disagree here*/
#define FT1284_FLOW_CONTROL 0x04
#define POWER_SAVE_DISABLE_H 0x80
#define USE_SERIAL_NUM 0x08
#define INVERT_TXD 0x01
#define INVERT_RXD 0x02
#define INVERT_RTS 0x04
#define INVERT_CTS 0x08
#define INVERT_DTR 0x10
#define INVERT_DSR 0x20
#define INVERT_DCD 0x40
#define INVERT_RI 0x80
#define CHANNEL_IS_UART 0x0
#define CHANNEL_IS_FIFO 0x1
#define CHANNEL_IS_OPTO 0x2
#define CHANNEL_IS_CPU 0x4
#define CHANNEL_IS_FT1284 0x8
#define CHANNEL_IS_RS485 0x10
#define DRIVE_4MA 0
#define DRIVE_8MA 1
#define DRIVE_12MA 2
#define DRIVE_16MA 3
#define SLOW_SLEW 4
#define IS_SCHMITT 8
#define DRIVER_VCP 0x08
#define DRIVER_VCPH 0x10 /* FT232H has moved the VCP bit */
#define USE_USB_VERSION_BIT 0x10
#define SUSPEND_DBUS7_BIT 0x80
#define HIGH_CURRENT_DRIVE 0x10
#define HIGH_CURRENT_DRIVE_R 0x04
Typedefs
typedef int() FTDIStreamCallback(uint8_t *buffer, int length, FTDIProgressInfo *progress, void *userdata)
Enumerations
enum ftdi_chip_type { TYPE_AM =0, TYPE_BM =1, TYPE_2232C =2, TYPE_R =3, TYPE_2232H =4, TYPE_4232H =5, TYPE_232H =6, TYPE_230X =7 }
enum ftdi_parity_type { NONE =0, ODD =1, EVEN =2, MARK =3, SPACE =4 }
enum ftdi_stopbits_type { STOP_BIT_1 =0, STOP_BIT_15 =1, STOP_BIT_2 =2 }
enum ftdi_bits_type { BITS_7 =7, BITS_8 =8 }
enum ftdi_break_type { BREAK_OFF =0, BREAK_ON =1 }
enum ftdi_mpsse_mode { BITMODE_RESET = 0x00, BITMODE_BITBANG = 0x01, BITMODE_MPSSE = 0x02, BITMODE_SYNCBB = 0x04, BITMODE_MCU = 0x08, BITMODE_OPTO = 0x10, BITMODE_CBUS = 0x20, BITMODE_SYNCFF = 0x40, BITMODE_FT1284 = 0x80 }
enum ftdi_interface { INTERFACE_ANY = 0, INTERFACE_A = 1, INTERFACE_B = 2, INTERFACE_C = 3, INTERFACE_D = 4 }
enum ftdi_module_detach_mode { AUTO_DETACH_SIO_MODULE = 0, DONT_DETACH_SIO_MODULE = 1 }
enum ftdi_eeprom_value { VENDOR_ID = 0, PRODUCT_ID = 1, SELF_POWERED = 2, REMOTE_WAKEUP = 3, IS_NOT_PNP = 4, SUSPEND_DBUS7 = 5, IN_IS_ISOCHRONOUS = 6, OUT_IS_ISOCHRONOUS = 7, SUSPEND_PULL_DOWNS = 8, USE_SERIAL = 9, USB_VERSION = 10, USE_USB_VERSION = 11, MAX_POWER = 12, CHANNEL_A_TYPE = 13, CHANNEL_B_TYPE = 14, CHANNEL_A_DRIVER = 15, CHANNEL_B_DRIVER = 16, CBUS_FUNCTION_0 = 17, CBUS_FUNCTION_1 = 18, CBUS_FUNCTION_2 = 19, CBUS_FUNCTION_3 = 20, CBUS_FUNCTION_4 = 21, CBUS_FUNCTION_5 = 22, CBUS_FUNCTION_6 = 23, CBUS_FUNCTION_7 = 24, CBUS_FUNCTION_8 = 25, CBUS_FUNCTION_9 = 26, HIGH_CURRENT = 27, HIGH_CURRENT_A = 28, HIGH_CURRENT_B = 29, INVERT = 30, GROUP0_DRIVE = 31, GROUP0_SCHMITT = 32, GROUP0_SLEW = 33, GROUP1_DRIVE = 34, GROUP1_SCHMITT = 35, GROUP1_SLEW = 36, GROUP2_DRIVE = 37, GROUP2_SCHMITT = 38, GROUP2_SLEW = 39, GROUP3_DRIVE = 40, GROUP3_SCHMITT = 41, GROUP3_SLEW = 42, CHIP_SIZE = 43, CHIP_TYPE = 44, POWER_SAVE = 45, CLOCK_POLARITY = 46, DATA_ORDER = 47, FLOW_CONTROL = 48, CHANNEL_C_DRIVER = 49, CHANNEL_D_DRIVER = 50, CHANNEL_A_RS485 = 51, CHANNEL_B_RS485 = 52, CHANNEL_C_RS485 = 53, CHANNEL_D_RS485 = 54, RELEASE_NUMBER = 55, EXTERNAL_OSCILLATOR = 56, USER_DATA_ADDR = 57 }
enum ftdi_cbus_func { CBUS_TXDEN = 0, CBUS_PWREN = 1, CBUS_RXLED = 2, CBUS_TXLED = 3, CBUS_TXRXLED = 4, CBUS_SLEEP = 5, CBUS_CLK48 = 6, CBUS_CLK24 = 7, CBUS_CLK12 = 8, CBUS_CLK6 = 9, CBUS_IOMODE = 0xa, CBUS_BB_WR = 0xb, CBUS_BB_RD = 0xc }
enum ftdi_cbush_func { CBUSH_TRISTATE = 0, CBUSH_TXLED = 1, CBUSH_RXLED = 2, CBUSH_TXRXLED = 3, CBUSH_PWREN = 4, CBUSH_SLEEP = 5, CBUSH_DRIVE_0 = 6, CBUSH_DRIVE1 = 7, CBUSH_IOMODE = 8, CBUSH_TXDEN = 9, CBUSH_CLK30 = 10, CBUSH_CLK15 = 11, CBUSH_CLK7_5 = 12 }
enum ftdi_cbusx_func { CBUSX_TRISTATE = 0, CBUSX_TXLED = 1, CBUSX_RXLED = 2, CBUSX_TXRXLED = 3, CBUSX_PWREN = 4, CBUSX_SLEEP = 5, CBUSX_DRIVE_0 = 6, CBUSX_DRIVE1 = 7, CBUSX_IOMODE = 8, CBUSX_TXDEN = 9, CBUSX_CLK24 = 10, CBUSX_CLK12 = 11, CBUSX_CLK6 = 12, CBUSX_BAT_DETECT = 13, CBUSX_BAT_DETECT_NEG = 14, CBUSX_I2C_TXE = 15, CBUSX_I2C_RXF = 16, CBUSX_VBUS_SENSE = 17, CBUSX_BB_WR = 18, CBUSX_BB_RD = 19, CBUSX_TIME_STAMP = 20, CBUSX_AWAKE = 21 }
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, struct libusb_device_handle *usbdev)
struct ftdi_version_info ftdi_get_library_version (void)
Get libftdi 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)
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_eeprom_get_strings (struct ftdi_context *ftdi, char *manufacturer, int mnf_len, char *product, int prod_len, char *serial, int serial_len)
int ftdi_eeprom_set_strings (struct ftdi_context *ftdi, char *manufacturer, char *product, char *serial)
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_bus_addr (struct ftdi_context *ftdi, uint8_t bus, uint8_t addr)
int ftdi_usb_open_dev (struct ftdi_context *ftdi, struct libusb_device *dev)
int ftdi_usb_open_string (struct ftdi_context *ftdi, const char *description)
int ftdi_usb_close (struct ftdi_context *ftdi)
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_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_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, const 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_readstream (struct ftdi_context *ftdi, FTDIStreamCallback *callback, void *userdata, int packetsPerTransfer, int numTransfers)
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_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_rts (struct ftdi_context *ftdi, int dtr, int rts)
int ftdi_setdtr (struct ftdi_context *ftdi, int state)
int ftdi_setrts (struct ftdi_context *ftdi, int state)
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_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 (struct ftdi_context *ftdi)
int ftdi_read_chipid (struct ftdi_context *ftdi, unsigned int *chipid)
int ftdi_write_eeprom (struct ftdi_context *ftdi)
int ftdi_erase_eeprom (struct ftdi_context *ftdi)
int ftdi_read_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val)
int ftdi_write_eeprom_location (struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val)
const char * ftdi_get_error_string (struct ftdi_context *ftdi)
Macro Definition Documentation
#define MPSSE_WRITE_NEG 0x01 /* Write TDI/DO on negative TCK/SK edge*/
Definition at line 91 of file ftdi.h.
#define MPSSE_BITMODE 0x02 /* Write bits, not bytes */
Definition at line 92 of file ftdi.h.
#define MPSSE_READ_NEG 0x04 /* Sample TDO/DI on negative TCK/SK edge */
Definition at line 93 of file ftdi.h.
#define MPSSE_LSB 0x08 /* LSB first */
Definition at line 94 of file ftdi.h.
#define MPSSE_DO_WRITE 0x10 /* Write TDI/DO */
Definition at line 95 of file ftdi.h.
#define MPSSE_DO_READ 0x20 /* Read TDO/DI */
Definition at line 96 of file ftdi.h.
#define MPSSE_WRITE_TMS 0x40 /* Write TMS/CS */
Definition at line 97 of file ftdi.h.
#define SET_BITS_LOW 0x80
Definition at line 100 of file ftdi.h.
#define SET_BITS_HIGH 0x82
Definition at line 103 of file ftdi.h.
#define GET_BITS_LOW 0x81
Definition at line 106 of file ftdi.h.
#define GET_BITS_HIGH 0x83
Definition at line 107 of file ftdi.h.
#define LOOPBACK_START 0x84
Definition at line 108 of file ftdi.h.
#define LOOPBACK_END 0x85
Definition at line 109 of file ftdi.h.
#define TCK_DIVISOR 0x86
Definition at line 110 of file ftdi.h.
#define DIS_DIV_5 0x8a
Definition at line 112 of file ftdi.h.
#define EN_DIV_5 0x8b
Definition at line 113 of file ftdi.h.
#define EN_3_PHASE 0x8c
Definition at line 114 of file ftdi.h.
#define DIS_3_PHASE 0x8d
Definition at line 115 of file ftdi.h.
#define CLK_BITS 0x8e
Definition at line 116 of file ftdi.h.
#define CLK_BYTES 0x8f
Definition at line 117 of file ftdi.h.
#define CLK_WAIT_HIGH 0x94
Definition at line 118 of file ftdi.h.
#define CLK_WAIT_LOW 0x95
Definition at line 119 of file ftdi.h.
#define EN_ADAPTIVE 0x96
Definition at line 120 of file ftdi.h.
#define DIS_ADAPTIVE 0x97
Definition at line 121 of file ftdi.h.
#define CLK_BYTES_OR_HIGH 0x9c
Definition at line 122 of file ftdi.h.
#define CLK_BYTES_OR_LOW 0x9d
Definition at line 123 of file ftdi.h.
#define DRIVE_OPEN_COLLECTOR 0x9e
Definition at line 125 of file ftdi.h.
#define DIV_VALUE(rate) (rate > 6000000)?0:((6000000/rate -1) > 0xffff)? 0xffff: (6000000/rate -1)
Definition at line 128 of file ftdi.h.
#define SEND_IMMEDIATE 0x87
Definition at line 131 of file ftdi.h.
#define WAIT_ON_HIGH 0x88
Definition at line 132 of file ftdi.h.
#define WAIT_ON_LOW 0x89
Definition at line 133 of file ftdi.h.
#define READ_SHORT 0x90
Definition at line 136 of file ftdi.h.
#define READ_EXTENDED 0x91
Definition at line 138 of file ftdi.h.
#define WRITE_SHORT 0x92
Definition at line 141 of file ftdi.h.
#define WRITE_EXTENDED 0x93
Definition at line 143 of file ftdi.h.
#define SIO_RESET 0 /* Reset the port */
Definition at line 148 of file ftdi.h.
#define SIO_MODEM_CTRL 1 /* Set the modem control register */
Definition at line 149 of file ftdi.h.
#define SIO_SET_FLOW_CTRL 2 /* Set flow control register */
Definition at line 150 of file ftdi.h.
#define SIO_SET_BAUD_RATE 3 /* Set baud rate */
Definition at line 151 of file ftdi.h.
#define SIO_SET_DATA 4 /* Set the data characteristics of the port */
Definition at line 152 of file ftdi.h.
#define FTDI_DEVICE_OUT_REQTYPE (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT)
Definition at line 154 of file ftdi.h.
#define FTDI_DEVICE_IN_REQTYPE (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN)
Definition at line 155 of file ftdi.h.
#define SIO_RESET_REQUEST SIO_RESET
Definition at line 158 of file ftdi.h.
#define SIO_SET_BAUDRATE_REQUEST SIO_SET_BAUD_RATE
Definition at line 159 of file ftdi.h.
#define SIO_SET_DATA_REQUEST SIO_SET_DATA
Definition at line 160 of file ftdi.h.
#define SIO_SET_FLOW_CTRL_REQUEST SIO_SET_FLOW_CTRL
Definition at line 161 of file ftdi.h.
#define SIO_SET_MODEM_CTRL_REQUEST SIO_MODEM_CTRL
Definition at line 162 of file ftdi.h.
#define SIO_POLL_MODEM_STATUS_REQUEST 0x05
Definition at line 163 of file ftdi.h.
#define SIO_SET_EVENT_CHAR_REQUEST 0x06
Definition at line 164 of file ftdi.h.
#define SIO_SET_ERROR_CHAR_REQUEST 0x07
Definition at line 165 of file ftdi.h.
#define SIO_SET_LATENCY_TIMER_REQUEST 0x09
Definition at line 166 of file ftdi.h.
#define SIO_GET_LATENCY_TIMER_REQUEST 0x0A
Definition at line 167 of file ftdi.h.
#define SIO_SET_BITMODE_REQUEST 0x0B
Definition at line 168 of file ftdi.h.
#define SIO_READ_PINS_REQUEST 0x0C
Definition at line 169 of file ftdi.h.
#define SIO_READ_EEPROM_REQUEST 0x90
Definition at line 170 of file ftdi.h.
#define SIO_WRITE_EEPROM_REQUEST 0x91
Definition at line 171 of file ftdi.h.
#define SIO_ERASE_EEPROM_REQUEST 0x92
Definition at line 172 of file ftdi.h.
#define SIO_RESET_SIO 0
Definition at line 175 of file ftdi.h.
#define SIO_RESET_PURGE_RX 1
Definition at line 176 of file ftdi.h.
#define SIO_RESET_PURGE_TX 2
Definition at line 177 of file ftdi.h.
#define SIO_DISABLE_FLOW_CTRL 0x0
Definition at line 179 of file ftdi.h.
#define SIO_RTS_CTS_HS (0x1 << 8)
Definition at line 191 of file ftdi.h.
#define SIO_DTR_DSR_HS (0x2 << 8)
Definition at line 181 of file ftdi.h.
#define SIO_XON_XOFF_HS (0x4 << 8)
Definition at line 182 of file ftdi.h.
#define SIO_SET_DTR_MASK 0x1
Definition at line 184 of file ftdi.h.
#define SIO_SET_DTR_HIGH ( 1 | ( SIO_SET_DTR_MASK << 8))
Definition at line 185 of file ftdi.h.
#define SIO_SET_DTR_LOW ( 0 | ( SIO_SET_DTR_MASK << 8))
Definition at line 186 of file ftdi.h.
#define SIO_SET_RTS_MASK 0x2
Definition at line 187 of file ftdi.h.
#define SIO_SET_RTS_HIGH ( 2 | ( SIO_SET_RTS_MASK << 8 ))
Definition at line 188 of file ftdi.h.
#define SIO_SET_RTS_LOW ( 0 | ( SIO_SET_RTS_MASK << 8 ))
Definition at line 189 of file ftdi.h.
#define SIO_RTS_CTS_HS (0x1 << 8)
Definition at line 191 of file ftdi.h.
#define FTDI_URB_USERCONTEXT_COOKIE ((void *)0x1)
Definition at line 195 of file ftdi.h.
#define DEPRECATED(func) func
Definition at line 203 of file ftdi.h.
#define FT1284_CLK_IDLE_STATE 0x01
Definition at line 351 of file ftdi.h.
#define FT1284_DATA_LSB 0x02 /* DS_FT232H 1.3 amd ftd2xx.h 1.0.4 disagree here*/
Definition at line 352 of file ftdi.h.
#define FT1284_FLOW_CONTROL 0x04
Definition at line 353 of file ftdi.h.
#define POWER_SAVE_DISABLE_H 0x80
Definition at line 354 of file ftdi.h.
#define USE_SERIAL_NUM 0x08
Definition at line 356 of file ftdi.h.
#define INVERT_TXD 0x01
Invert TXD#
Definition at line 381 of file ftdi.h.
#define INVERT_RXD 0x02
Invert RXD#
Definition at line 383 of file ftdi.h.
#define INVERT_RTS 0x04
Invert RTS#
Definition at line 385 of file ftdi.h.
#define INVERT_CTS 0x08
Invert CTS#
Definition at line 387 of file ftdi.h.
#define INVERT_DTR 0x10
Invert DTR#
Definition at line 389 of file ftdi.h.
#define INVERT_DSR 0x20
Invert DSR#
Definition at line 391 of file ftdi.h.
#define INVERT_DCD 0x40
Invert DCD#
Definition at line 393 of file ftdi.h.
#define INVERT_RI 0x80
Invert RI#
Definition at line 395 of file ftdi.h.
#define CHANNEL_IS_UART 0x0
Interface Mode.
Definition at line 398 of file ftdi.h.
#define CHANNEL_IS_FIFO 0x1
Definition at line 399 of file ftdi.h.
#define CHANNEL_IS_OPTO 0x2
Definition at line 400 of file ftdi.h.
#define CHANNEL_IS_CPU 0x4
Definition at line 401 of file ftdi.h.
#define CHANNEL_IS_FT1284 0x8
Definition at line 402 of file ftdi.h.
#define CHANNEL_IS_RS485 0x10
Definition at line 404 of file ftdi.h.
#define DRIVE_4MA 0
Definition at line 406 of file ftdi.h.
#define DRIVE_8MA 1
Definition at line 407 of file ftdi.h.
#define DRIVE_12MA 2
Definition at line 408 of file ftdi.h.
#define DRIVE_16MA 3
Definition at line 409 of file ftdi.h.
#define SLOW_SLEW 4
Definition at line 410 of file ftdi.h.
#define IS_SCHMITT 8
Definition at line 411 of file ftdi.h.
#define DRIVER_VCP 0x08
Driver Type.
Definition at line 414 of file ftdi.h.
#define DRIVER_VCPH 0x10 /* FT232H has moved the VCP bit */
Definition at line 415 of file ftdi.h.
#define USE_USB_VERSION_BIT 0x10
Definition at line 417 of file ftdi.h.
#define SUSPEND_DBUS7_BIT 0x80
Definition at line 419 of file ftdi.h.
#define HIGH_CURRENT_DRIVE 0x10
High current drive.
Definition at line 422 of file ftdi.h.
#define HIGH_CURRENT_DRIVE_R 0x04
Definition at line 423 of file ftdi.h.
Typedef Documentation
typedef int() FTDIStreamCallback(uint8_t *buffer, int length, FTDIProgressInfo *progress, void *userdata)
Definition at line 444 of file ftdi.h.
Enumeration Type Documentation
enum ftdi_chip_type
FTDI chip type
Enumerator
TYPE_AM
TYPE_BM
TYPE_2232C
TYPE_R
TYPE_2232H
TYPE_4232H
TYPE_232H
TYPE_230X
Definition at line 38 of file ftdi.h.
enum ftdi_parity_type
Parity mode for ftdi_set_line_property()
Enumerator
NONE
ODD
EVEN
MARK
SPACE
Definition at line 50 of file ftdi.h.
enum ftdi_stopbits_type
Number of stop bits for ftdi_set_line_property()
Enumerator
STOP_BIT_1
STOP_BIT_15
STOP_BIT_2
Definition at line 52 of file ftdi.h.
enum ftdi_bits_type
Number of bits for ftdi_set_line_property()
Enumerator
BITS_7
BITS_8
Definition at line 54 of file ftdi.h.
enum ftdi_break_type
Break type for ftdi_set_line_property2()
Enumerator
BREAK_OFF
BREAK_ON
Definition at line 56 of file ftdi.h.
enum ftdi_mpsse_mode
MPSSE bitbang modes
Enumerator
- BITMODE_RESET
switch off bitbang mode, back to regular serial/FIFO
- BITMODE_BITBANG
classical asynchronous bitbang mode, introduced with B-type chips
- BITMODE_MPSSE
MPSSE mode, available on 2232x chips
- BITMODE_SYNCBB
synchronous bitbang mode, available on 2232x and R-type chips
- BITMODE_MCU
MCU Host Bus Emulation mode, available on 2232x chips
- BITMODE_OPTO
Fast Opto-Isolated Serial Interface Mode, available on 2232x chips
- BITMODE_CBUS
Bitbang on CBUS pins of R-type chips, configure in EEPROM before
- BITMODE_SYNCFF
Single Channel Synchronous FIFO mode, available on 2232H chips
- BITMODE_FT1284
FT1284 mode, available on 232H chips
Definition at line 59 of file ftdi.h.
enum ftdi_interface
Port interface for chips with multiple interfaces
Enumerator
INTERFACE_ANY
INTERFACE_A
INTERFACE_B
INTERFACE_C
INTERFACE_D
Definition at line 74 of file ftdi.h.
enum ftdi_module_detach_mode
Automatic loading / unloading of kernel modules
Enumerator
AUTO_DETACH_SIO_MODULE
DONT_DETACH_SIO_MODULE
Definition at line 84 of file ftdi.h.
enum ftdi_eeprom_value
List all handled EEPROM values. Append future new values only at the end to provide API/ABI stability
Enumerator
VENDOR_ID
PRODUCT_ID
SELF_POWERED
REMOTE_WAKEUP
IS_NOT_PNP
SUSPEND_DBUS7
IN_IS_ISOCHRONOUS
OUT_IS_ISOCHRONOUS
SUSPEND_PULL_DOWNS
USE_SERIAL
USB_VERSION
USE_USB_VERSION
MAX_POWER
CHANNEL_A_TYPE
CHANNEL_B_TYPE
CHANNEL_A_DRIVER
CHANNEL_B_DRIVER
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
HIGH_CURRENT
HIGH_CURRENT_A
HIGH_CURRENT_B
INVERT
GROUP0_DRIVE
GROUP0_SCHMITT
GROUP0_SLEW
GROUP1_DRIVE
GROUP1_SCHMITT
GROUP1_SLEW
GROUP2_DRIVE
GROUP2_SCHMITT
GROUP2_SLEW
GROUP3_DRIVE
GROUP3_SCHMITT
GROUP3_SLEW
CHIP_SIZE
CHIP_TYPE
POWER_SAVE
CLOCK_POLARITY
DATA_ORDER
FLOW_CONTROL
CHANNEL_C_DRIVER
CHANNEL_D_DRIVER
CHANNEL_A_RS485
CHANNEL_B_RS485
CHANNEL_C_RS485
CHANNEL_D_RS485
RELEASE_NUMBER
EXTERNAL_OSCILLATOR
USER_DATA_ADDR
Definition at line 279 of file ftdi.h.
enum ftdi_cbus_func
Enumerator
CBUS_TXDEN
CBUS_PWREN
CBUS_RXLED
CBUS_TXLED
CBUS_TXRXLED
CBUS_SLEEP
CBUS_CLK48
CBUS_CLK24
CBUS_CLK12
CBUS_CLK6
CBUS_IOMODE
CBUS_BB_WR
CBUS_BB_RD
Definition at line 357 of file ftdi.h.
enum ftdi_cbush_func
Enumerator
CBUSH_TRISTATE
CBUSH_TXLED
CBUSH_RXLED
CBUSH_TXRXLED
CBUSH_PWREN
CBUSH_SLEEP
CBUSH_DRIVE_0
CBUSH_DRIVE1
CBUSH_IOMODE
CBUSH_TXDEN
CBUSH_CLK30
CBUSH_CLK15
CBUSH_CLK7_5
Definition at line 364 of file ftdi.h.
enum ftdi_cbusx_func
Enumerator
CBUSX_TRISTATE
CBUSX_TXLED
CBUSX_RXLED
CBUSX_TXRXLED
CBUSX_PWREN
CBUSX_SLEEP
CBUSX_DRIVE_0
CBUSX_DRIVE1
CBUSX_IOMODE
CBUSX_TXDEN
CBUSX_CLK24
CBUSX_CLK12
CBUSX_CLK6
CBUSX_BAT_DETECT
CBUSX_BAT_DETECT_NEG
CBUSX_I2C_TXE
CBUSX_I2C_RXF
CBUSX_VBUS_SENSE
CBUSX_BB_WR
CBUSX_BB_RD
CBUSX_TIME_STAMP
CBUSX_AWAKE
Definition at line 371 of file ftdi.h.
Function Documentation
int ftdi_init (struct ftdi_context * ftdi)
Initializes a ftdi_context.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 couldn't allocate read buffer
-2 couldn't allocate struct buffer
-3 libusb_init() failed
- Remarks
This should be called before all functions
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
- Returns
a pointer to a new ftdi_context, or NULL on failure
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.
- Parameters
ftdi pointer to ftdi_context
interface Interface to use for FT2232C/2232H/4232H chips.
Return values
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.
- Parameters
ftdi pointer to ftdi_context
Definition at line 210 of file ftdi.c.
Referenced by ftdi_free().
void ftdi_free (struct ftdi_context * ftdi)
Deinitialize and free an ftdi_context.
- Parameters
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.
- Parameters
ftdi pointer to ftdi_context
usb libusb libusb_device_handle to use
Definition at line 268 of file ftdi.c.
Referenced by Ftdi::Context::set_usb_device().
struct ftdi_version_info ftdi_get_library_version (void)
Get libftdi library version.
- Returns
ftdi_version_info Library version information
Definition at line 268 of file ftdi.c.
References ftdi_context::usb_dev.
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)
- Parameters
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
Return values
>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.
- Parameters
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.
- Parameters
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.
- Note
Use this function only in combination with ftdi_usb_find_all() as it closes the internal 'usb_dev' after use.
- Parameters
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
Return values
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_device_list::dev, 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.
- Note
The old function ftdi_usb_get_strings() always closes the device. This version only closes the device if it was opened by it.
- Parameters
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
Return values
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_eeprom_get_strings (struct ftdi_context * ftdi, char * manufacturer, int mnf_len, char * product, int prod_len, char * serial, int serial_len)
Return device ID strings from the eeprom. Device needs to be connected.
The parameters manufacturer, description and serial may be NULL or pointer to buffers to store the fetched strings.
- Parameters
ftdi pointer to ftdi_context
manufacturer Store manufacturer string here if not NULL
mnf_len Buffer size of manufacturer string
product Store product description string here if not NULL
prod_len Buffer size of product description string
serial Store serial string here if not NULL
serial_len Buffer size of serial string
Return values
0 all fine
-1 ftdi context invalid
-2 ftdi eeprom buffer invalid
Definition at line 2666 of file ftdi.c.
References ftdi_context::eeprom, ftdi_error_return, ftdi_eeprom::manufacturer, ftdi_eeprom::product, and ftdi_eeprom::serial.
int ftdi_eeprom_set_strings (struct ftdi_context * ftdi, char * manufacturer, char * product, char * serial)
Definition at line 2600 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.
int ftdi_usb_open (struct ftdi_context * ftdi, int vendor, int product)
Opens the first device with a given vendor and product ids.
- Parameters
ftdi pointer to ftdi_context
vendor Vendor ID
product Product ID- Return values
same as ftdi_usb_open_desc()
Definition at line 698 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.
- Parameters
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.
Return values
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 724 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.
- Parameters
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.
Return values
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
-12 libusb_get_device_list() failed
Definition at line 755 of file ftdi.c.
References ftdi_error_return, ftdi_error_return_free_device_list, 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_bus_addr (struct ftdi_context * ftdi, uint8_t bus, uint8_t addr)
Opens the device at a given USB bus and device address.
- Parameters
ftdi pointer to ftdi_context
bus Bus number
addr Device address
Return values
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
-12 libusb_get_device_list() failed
Definition at line 848 of file ftdi.c.
References ftdi_error_return, ftdi_error_return_free_device_list, ftdi_usb_open_dev(), and ftdi_context::usb_ctx.
int ftdi_usb_open_dev (struct ftdi_context * ftdi, libusb_device * dev)
Opens a ftdi device given by an usb_device.
- Parameters
ftdi pointer to ftdi_context
dev libusb usb_dev to use
Return values
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 585 of file ftdi.c.
References AUTO_DETACH_SIO_MODULE, ftdi_error_return, ftdi_context::interface, ftdi_context::module_detach_mode, and ftdi_context::usb_dev.
Referenced by ftdi_usb_open_bus_addr(), ftdi_usb_open_string(), and Ftdi::Context::get_strings_and_reopen().
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.
- Parameters
ftdi pointer to ftdi_context
description NULL-terminated description-string, using this format:d:<devicenode>
path of bus and device-node (e.g. '003/001') within usb device tree (usually at /proc/bus/usb/)i:<vendor>:<product>
first device with given vendor and product id, ids can be decimal, octal (preceded by '0') or hex (preceded by '0x')i:<vendor>:<product>:<index>
as above with index being the number of the device (starting with 0) if there are more than ones:<vendor>:<product>:<serial>
first device with given vendor id, product id and serial string
- Note
The description format may be extended in later versions.
Return values
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 901 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_close (struct ftdi_context * ftdi)
Closes the ftdi device. Call ftdi_deinit() if you're cleaning up.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 usb_release failed
-3 ftdi context invalid
Definition at line 1098 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 ftdi_usb_reset (struct ftdi_context * ftdi)
Resets the ftdi device.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 FTDI reset failed
-2 USB device unavailable
Definition at line 994 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_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.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 read buffer purge failed
-2 USB device unavailable
Definition at line 1020 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.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 write buffer purge failed
-2 USB device unavailable
Definition at line 1046 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.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 read buffer purge failed
-2 write buffer purge failed
-3 USB device unavailable
Definition at line 1069 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::Context::flush(), and ftdi_readstream().
int ftdi_set_baudrate (struct ftdi_context * ftdi, int baudrate)
Sets the chip baud rate
- Parameters
ftdi pointer to ftdi_context
baudrate baud rate to set
Return values
0 all fine
-1 invalid baudrate
-2 setting baudrate failed
-3 USB device unavailable
Definition at line 1349 of file ftdi.c.
References ftdi_context::bitbang_enabled, ftdi_error_return, and ftdi_context::usb_dev.
Referenced by 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'.
- Parameters
ftdi pointer to ftdi_context
bits Number of bits
sbit Number of stop bits
parity Parity mode
Return values
0 all fine
-1 Setting line property failed
Definition at line 1395 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
- Parameters
ftdi pointer to ftdi_context
bits Number of bits
sbit Number of stop bits
parity Parity mode
break_type Break type
Return values
0 all fine
-1 Setting line property failed
-2 USB device unavailable
Definition at line 1414 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_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.
- Parameters
ftdi pointer to ftdi_context
buf Buffer to store data in
size Size of the buffer
Return values
-666 USB device unavailable
<0 error code from libusb_bulk_transfer()
0 no data was available
>0 number of bytes read
Definition at line 1908 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.
- Parameters
ftdi pointer to ftdi_context
chunksize Chunk size
Return values
0 all fine
-1 ftdi context invalid
Definition at line 2033 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.
- Parameters
ftdi pointer to ftdi_context
chunksize Pointer to store chunk size in
Return values
0 all fine
-1 FTDI context invalid
Definition at line 2070 of file ftdi.c.
References ftdi_error_return, and ftdi_context::readbuffer_chunksize.
Referenced by Ftdi::Context::read_chunk_size().
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
- Parameters
ftdi pointer to ftdi_context
buf Buffer with the data
size Size of the buffer
Return values
-666 USB device unavailable
<0 error code from usb_bulk_write()
>0 number of bytes written
Definition at line 1484 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().
int ftdi_write_data_set_chunksize (struct ftdi_context * ftdi, unsigned int chunksize)
Configure write buffer chunk size. Default is 4096.
- Parameters
ftdi pointer to ftdi_context
chunksize Chunk size
Return values
0 all fine
-1 ftdi context invalid
Definition at line 1866 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.
- Parameters
ftdi pointer to ftdi_context
chunksize Pointer to store chunk size in
Return values
0 all fine
-1 ftdi context invalid
Definition at line 1884 of file ftdi.c.
References ftdi_error_return, and ftdi_context::writebuffer_chunksize.
Referenced by Ftdi::Context::write_chunk_size().
int ftdi_readstream (struct ftdi_context * ftdi, FTDIStreamCallback * callback, void * userdata, int packetsPerTransfer, int numTransfers)
Streaming reading of data from the device
Use asynchronous transfers in libusb-1.0 for high-performance streaming of data from a device interface back to the PC. This function continuously transfers data until either an error occurs or the callback returns a nonzero value. This function returns a libusb error code or the callback's return value.
For every contiguous block of received data, the callback will be invoked.
- Parameters
ftdi pointer to ftdi_context
callback to user supplied function for one block of data
userdata
packetsPerTransfer number of packets per transfer
numTransfers Number of transfers per callback
Definition at line 148 of file ftdi_stream.c.
References BITMODE_RESET, ftdi_set_bitmode(), ftdi_usb_purge_buffers(), ftdi_context::max_packet_size, ftdi_context::out_ep, ftdi_context::type, TYPE_2232H, TYPE_232H, and ftdi_context::usb_dev.
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.
- Parameters
ftdi pointer to ftdi_context
buf Buffer with the data
size Size of the buffer- Return values
NULL Some error happens when submit transfer
!NULL Pointer to a ftdi_transfer_control
Definition at line 1644 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, 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.
- Parameters
ftdi pointer to ftdi_context
buf Buffer with the data
size Size of the buffer- Return values
NULL Some error happens when submit transfer
!NULL Pointer to a ftdi_transfer_control
Definition at line 1706 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, and ftdi_context::usb_dev.
int ftdi_transfer_data_done (struct ftdi_transfer_control * tc)
Wait for completion of the transfer.
Use libusb 1.0 asynchronous API.
- Parameters
tc pointer to ftdi_transfer_control
Return values
< 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 1785 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.
- Parameters
tc pointer to ftdi_transfer_control
to pointer to timeout value or NULL for infinite
Definition at line 1832 of file ftdi.c.
References ftdi_transfer_control::completed, ftdi_transfer_control::ftdi, ftdi_transfer_control::transfer, and ftdi_context::usb_ctx.
int ftdi_set_bitmode (struct ftdi_context * ftdi, unsigned char bitmask, unsigned char mode)
Enable/disable bitbang modes.
- Parameters
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
Return values
0 all fine
-1 can't enable bitbang mode
-2 USB device unavailable
Definition at line 2091 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.
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 can't disable bitbang mode
-2 USB device unavailable
Definition at line 2117 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.
- Parameters
ftdi pointer to ftdi_context
pins Pointer to store pins into
Return values
0 all fine
-1 read pins failed
-2 USB device unavailable
Definition at line 2140 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.
- Parameters
ftdi pointer to ftdi_context
latency Value between 1 and 255
Return values
0 all fine
-1 latency out of range
-2 unable to set latency timer
-3 USB device unavailable
Definition at line 2166 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
- Parameters
ftdi pointer to ftdi_context
latency Pointer to store latency value in
Return values
0 all fine
-1 unable to get latency timer
-2 USB device unavailable
Definition at line 2193 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:
- B0..B3 - must be 0
- B4 Clear to send (CTS) 0 = inactive 1 = active
- B5 Data set ready (DTS) 0 = inactive 1 = active
- B6 Ring indicator (RI) 0 = inactive 1 = active
- B7 Receive line signal detect (RLSD) 0 = inactive 1 = active
Layout of the second byte:
- B0 Data ready (DR)
- B1 Overrun error (OE)
- B2 Parity error (PE)
- B3 Framing error (FE)
- B4 Break interrupt (BI)
- B5 Transmitter holding register (THRE)
- B6 Transmitter empty (TEMT)
- B7 Error in RCVR FIFO
- Parameters
ftdi pointer to ftdi_context
status Pointer to store status information in. Must be two bytes.
Return values
0 all fine
-1 unable to retrieve status information
-2 USB device unavailable
Definition at line 2247 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
- Parameters
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
Return values
0 all fine
-1 set flow control failed
-2 USB device unavailable
Definition at line 2273 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_rts (struct ftdi_context * ftdi, int dtr, int rts)
Set dtr and rts line in one pass
- Parameters
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)
Return values
0 all fine
-1 set dtr/rts failed
-2 USB device unavailable
Definition at line 2357 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_setdtr (struct ftdi_context * ftdi, int state)
Set dtr line
- Parameters
ftdi pointer to ftdi_context
state state to set line to (1 or 0)
Return values
0 all fine
-1 set dtr failed
-2 USB device unavailable
Definition at line 2296 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
- Parameters
ftdi pointer to ftdi_context
state state to set line to (1 or 0)
Return values
0 all fine
-1 set rts failed
-2 USB device unavailable
Definition at line 2326 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_set_event_char (struct ftdi_context * ftdi, unsigned char eventch, unsigned char enable)
Set the special event character
- Parameters
ftdi pointer to ftdi_context
eventch Event character
enable 0 to disable the event character, non-zero otherwise
Return values
0 all fine
-1 unable to set event character
-2 USB device unavailable
Definition at line 2393 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
- Parameters
ftdi pointer to ftdi_context
errorch Error character
enable 0 to disable the error character, non-zero otherwise
Return values
0 all fine
-1 unable to set error character
-2 USB device unavailable
Definition at line 2422 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
- Parameters
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
Return values
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 2452 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_build (struct ftdi_context * ftdi)
Build binary buffer from ftdi_eeprom structure. Output is suitable for ftdi_write_eeprom().
- Parameters
ftdi pointer to ftdi_context
Return values
>=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 2783 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_eeprom::chip, ftdi_context::eeprom, ftdi_error_return, FTDI_MAX_EEPROM_SIZE, ftdi_eeprom::in_is_isochronous, ftdi_eeprom::is_not_pnp, ftdi_eeprom::manufacturer, ftdi_eeprom::max_power, MAX_POWER_MILLIAMP_PER_UNIT, ftdi_eeprom::out_is_isochronous, 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, 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.
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.
- Parameters
ftdi pointer to ftdi_context
verbose Decode EEPROM on stdout
Return values
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 3411 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_eeprom::channel_a_type, ftdi_eeprom::chip, ftdi_context::eeprom, ftdi_error_return, ftdi_eeprom::in_is_isochronous, ftdi_eeprom::manufacturer, ftdi_eeprom::max_power, MAX_POWER_MILLIAMP_PER_UNIT, ftdi_eeprom::out_is_isochronous, 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, ftdi_eeprom::suspend_pull_downs, ftdi_context::type, TYPE_2232C, TYPE_230X, TYPE_AM, TYPE_BM, 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
- Parameters
ftdi pointer to ftdi_context
value_name Enum of the value to query
value Pointer to store read value
Return values
0 all fine
-1 Value doesn't exist
Definition at line 3841 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, CHANNEL_A_DRIVER, ftdi_eeprom::channel_a_driver, CHANNEL_A_RS485, ftdi_eeprom::channel_a_rs485enable, CHANNEL_A_TYPE, ftdi_eeprom::channel_a_type, CHANNEL_B_DRIVER, ftdi_eeprom::channel_b_driver, CHANNEL_B_RS485, ftdi_eeprom::channel_b_rs485enable, CHANNEL_B_TYPE, ftdi_eeprom::channel_b_type, CHANNEL_C_DRIVER, ftdi_eeprom::channel_c_driver, CHANNEL_C_RS485, ftdi_eeprom::channel_c_rs485enable, CHANNEL_D_DRIVER, ftdi_eeprom::channel_d_driver, CHANNEL_D_RS485, ftdi_eeprom::channel_d_rs485enable, ftdi_eeprom::chip, CHIP_SIZE, CHIP_TYPE, CLOCK_POLARITY, ftdi_eeprom::clock_polarity, DATA_ORDER, ftdi_eeprom::data_order, ftdi_context::eeprom, EXTERNAL_OSCILLATOR, ftdi_eeprom::external_oscillator, FLOW_CONTROL, ftdi_eeprom::flow_control, ftdi_error_return, GROUP0_DRIVE, ftdi_eeprom::group0_drive, GROUP0_SCHMITT, ftdi_eeprom::group0_schmitt, GROUP0_SLEW, ftdi_eeprom::group0_slew, GROUP1_DRIVE, ftdi_eeprom::group1_drive, GROUP1_SCHMITT, ftdi_eeprom::group1_schmitt, GROUP1_SLEW, ftdi_eeprom::group1_slew, GROUP2_DRIVE, ftdi_eeprom::group2_drive, GROUP2_SCHMITT, ftdi_eeprom::group2_schmitt, GROUP2_SLEW, ftdi_eeprom::group2_slew, GROUP3_DRIVE, ftdi_eeprom::group3_drive, GROUP3_SCHMITT, ftdi_eeprom::group3_schmitt, GROUP3_SLEW, ftdi_eeprom::group3_slew, HIGH_CURRENT, ftdi_eeprom::high_current, HIGH_CURRENT_A, ftdi_eeprom::high_current_a, HIGH_CURRENT_B, ftdi_eeprom::high_current_b, IN_IS_ISOCHRONOUS, ftdi_eeprom::in_is_isochronous, INVERT, ftdi_eeprom::invert, IS_NOT_PNP, ftdi_eeprom::is_not_pnp, MAX_POWER, ftdi_eeprom::max_power, OUT_IS_ISOCHRONOUS, ftdi_eeprom::out_is_isochronous, POWER_SAVE, ftdi_eeprom::powersave, PRODUCT_ID, ftdi_eeprom::product_id, RELEASE_NUMBER, ftdi_eeprom::release_number, REMOTE_WAKEUP, ftdi_eeprom::remote_wakeup, SELF_POWERED, ftdi_eeprom::self_powered, ftdi_eeprom::size, SUSPEND_DBUS7, ftdi_eeprom::suspend_dbus7, SUSPEND_PULL_DOWNS, ftdi_eeprom::suspend_pull_downs, USB_VERSION, ftdi_eeprom::usb_version, USE_SERIAL, ftdi_eeprom::use_serial, USE_USB_VERSION, ftdi_eeprom::use_usb_version, VENDOR_ID, and ftdi_eeprom::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
- Parameters
ftdi pointer to ftdi_context
value_name Enum of the value to set
value to set
Return values
0 all fine
-1 Value doesn't exist
-2 Value not user settable
Definition at line 4034 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, CHANNEL_A_DRIVER, ftdi_eeprom::channel_a_driver, CHANNEL_A_RS485, ftdi_eeprom::channel_a_rs485enable, CHANNEL_A_TYPE, ftdi_eeprom::channel_a_type, CHANNEL_B_DRIVER, ftdi_eeprom::channel_b_driver, CHANNEL_B_RS485, ftdi_eeprom::channel_b_rs485enable, CHANNEL_B_TYPE, ftdi_eeprom::channel_b_type, CHANNEL_C_DRIVER, ftdi_eeprom::channel_c_driver, CHANNEL_C_RS485, ftdi_eeprom::channel_c_rs485enable, CHANNEL_D_DRIVER, ftdi_eeprom::channel_d_driver, CHANNEL_D_RS485, ftdi_eeprom::channel_d_rs485enable, ftdi_eeprom::chip, CHIP_SIZE, CHIP_TYPE, CLOCK_POLARITY, ftdi_eeprom::clock_polarity, DATA_ORDER, ftdi_eeprom::data_order, ftdi_context::eeprom, EXTERNAL_OSCILLATOR, ftdi_eeprom::external_oscillator, FLOW_CONTROL, ftdi_eeprom::flow_control, ftdi_error_return, GROUP0_DRIVE, ftdi_eeprom::group0_drive, GROUP0_SCHMITT, ftdi_eeprom::group0_schmitt, GROUP0_SLEW, ftdi_eeprom::group0_slew, GROUP1_DRIVE, ftdi_eeprom::group1_drive, GROUP1_SCHMITT, ftdi_eeprom::group1_schmitt, GROUP1_SLEW, ftdi_eeprom::group1_slew, GROUP2_DRIVE, ftdi_eeprom::group2_drive, GROUP2_SCHMITT, ftdi_eeprom::group2_schmitt, GROUP2_SLEW, ftdi_eeprom::group2_slew, GROUP3_DRIVE, ftdi_eeprom::group3_drive, GROUP3_SCHMITT, ftdi_eeprom::group3_schmitt, GROUP3_SLEW, ftdi_eeprom::group3_slew, HIGH_CURRENT, ftdi_eeprom::high_current, HIGH_CURRENT_A, ftdi_eeprom::high_current_a, HIGH_CURRENT_B, ftdi_eeprom::high_current_b, IN_IS_ISOCHRONOUS, ftdi_eeprom::in_is_isochronous, ftdi_eeprom::initialized_for_connected_device, INVERT, ftdi_eeprom::invert, IS_NOT_PNP, ftdi_eeprom::is_not_pnp, MAX_POWER, ftdi_eeprom::max_power, OUT_IS_ISOCHRONOUS, ftdi_eeprom::out_is_isochronous, POWER_SAVE, ftdi_eeprom::powersave, PRODUCT_ID, ftdi_eeprom::product_id, RELEASE_NUMBER, ftdi_eeprom::release_number, REMOTE_WAKEUP, ftdi_eeprom::remote_wakeup, SELF_POWERED, ftdi_eeprom::self_powered, SUSPEND_DBUS7, ftdi_eeprom::suspend_dbus7, SUSPEND_PULL_DOWNS, ftdi_eeprom::suspend_pull_downs, USB_VERSION, ftdi_eeprom::usb_version, USE_SERIAL, ftdi_eeprom::use_serial, USE_USB_VERSION, ftdi_eeprom::use_usb_version, USER_DATA_ADDR, ftdi_eeprom::user_data_addr, VENDOR_ID, and ftdi_eeprom::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
- Parameters
ftdi pointer to ftdi_context
buf buffer to receive EEPROM content
size Size of receiving buffer
Return values
0 All fine
-1 struct ftdi_contxt or ftdi_eeprom missing
-2 Not enough room to store eeprom
Definition at line 4230 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, ftdi_error_return, FTDI_MAX_EEPROM_SIZE, and ftdi_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
- Parameters
ftdi pointer to ftdi_context
buf buffer to read EEPROM content
size Size of buffer
Return values
0 All fine
-1 struct ftdi_context or ftdi_eeprom or buf missing
Definition at line 4256 of file ftdi.c.
References ftdi_eeprom::buf, ftdi_context::eeprom, ftdi_error_return, FTDI_MAX_EEPROM_SIZE, and ftdi_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
- Parameters
ftdi pointer to ftdi_context
buf buffer to read EEPROM user data content
size Size of buffer
Return values
0 All fine
-1 struct ftdi_context or ftdi_eeprom or buf missing
Definition at line 4279 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 (struct ftdi_context * ftdi)
Read eeprom
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 read failed
-2 USB device unavailable
Definition at line 4324 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
- Parameters
ftdi pointer to ftdi_context
chipid Pointer to store FTDIChip-ID
Return values
0 all fine
-1 read failed
-2 USB device unavailable
Definition at line 4383 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 (struct ftdi_context * ftdi)
Write eeprom
- Parameters
ftdi pointer to ftdi_context
Return values
0 all fine
-1 read failed
-2 USB device unavailable
-3 EEPROM not initialized for the connected device;
Definition at line 4477 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 4532 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().
int ftdi_read_eeprom_location (struct ftdi_context * ftdi, int eeprom_addr, unsigned short * eeprom_val)
Read eeprom location
- Parameters
ftdi pointer to ftdi_context
eeprom_addr Address of eeprom location to be read
eeprom_val Pointer to store read eeprom location
Return values
0 all fine
-1 read failed
-2 USB device unavailable
Definition at line 4300 of file ftdi.c.
References ftdi_eeprom::buf, FTDI_DEVICE_IN_REQTYPE, ftdi_error_return, SIO_READ_EEPROM_REQUEST, ftdi_context::usb_dev, and ftdi_context::usb_read_timeout.
Referenced by ftdi_erase_eeprom(), ftdi_write_eeprom_location(), and Ftdi::Eeprom::read_location().
int ftdi_write_eeprom_location (struct ftdi_context * ftdi, int eeprom_addr, unsigned short eeprom_val)
Write eeprom location
- Parameters
ftdi pointer to ftdi_context
eeprom_addr Address of eeprom location to be written
eeprom_val Value to be written
Return values
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 4421 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().
const char* ftdi_get_error_string (struct ftdi_context * ftdi)
Get string representation for last error code
- Parameters
ftdi pointer to ftdi_context
- Return values
Pointer to error string
Definition at line 4594 of file ftdi.c.
References ftdi_context::error_str.
Referenced by Ftdi::Context::error_string().
Author
Generated automatically by Doxygen for libftdi1 from the source code.