Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > aabc7878dc9571fa6cf76956cd860d54 > files > 63

libftdi-devel-0.19-1.fc16.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libftdi: Libftdi</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libftdi&#160;<span id="projectnumber">0.19</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Libftdi</div>  </div>
</div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structusb__dev__handle.html">usb_dev_handle</a></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga885116a371f8fe4f6d03d1f943d8529b">ftdi_error_return</a>(code, str)</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga21e2ed53cad4fa8242022afe1e12d2ee">ftdi_init</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gafd46c6784367fd95c5f852d3b38949a8">ftdi_new</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga6dc886d709eced377a33dc975fa6e771">ftdi_set_interface</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, enum <a class="el" href="ftdi_8h.html#a9c55e66c45a0e4ec5548ee7d6e1a9265">ftdi_interface</a> interface)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga72838200be98d88737d532f9eee1e7be">ftdi_deinit</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga3cc28e5b7f1f50246861fcb39e7dd291">ftdi_free</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga1b66cfb146ff0732322c49585d2459f6">ftdi_set_usbdev</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, <a class="el" href="structusb__dev__handle.html">usb_dev_handle</a> *usb)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga2845a0c63809747c9c7b1ea404453bc4">ftdi_usb_find_all</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> **devlist, int vendor, int product)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga35358ea578644aa309300db782415c9f">ftdi_list_free</a> (struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> **devlist)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaa4838bebb2024ae9bfdcc81adbda3493">ftdi_list_free2</a> (struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> *devlist)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gabeca5642c95141e11b6936175ce08b3b">ftdi_usb_get_strings</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, struct usb_device *dev, char *manufacturer, int mnf_len, char *description, int desc_len, char *serial, int serial_len)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaa03eb28a2ec02db4e923e3949854a30d">ftdi_usb_open_dev</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, struct usb_device *dev)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga95d4689db18fc1fd70011f6504ab8c40">ftdi_usb_open</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int vendor, int product)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga93c2c5f546f5968ae497c099d319ff32">ftdi_usb_open_desc</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int vendor, int product, const char *description, const char *serial)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga3c5ccb0678b0e268b4081ea978e8eb78">ftdi_usb_open_desc_index</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int vendor, int product, const char *description, const char *serial, unsigned int index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaae805b82251a61dae46b98345cd84d5c">ftdi_usb_open_string</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, const char *description)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga266ccc351ea31289022063a8ae29edf4">ftdi_usb_reset</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga25a6d4766e30bd47602ed0c0ecf53476">ftdi_usb_purge_rx_buffer</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga1eab1dfd17068c46775a86496fee8bec">ftdi_usb_purge_tx_buffer</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga3089d7ceafad896c007111b8e5c02906">ftdi_usb_purge_buffers</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga9536eff48c7ae9313b2a97320743ee3b">ftdi_usb_close</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gae80f1dc38f5c80946a56ec34a329e7f5">ftdi_set_baudrate</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int baudrate)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga044fdde91eaa3f557b545172622ee460">ftdi_set_line_property</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, enum <a class="el" href="ftdi_8h.html#a8007a7d5e37b76307c341051769e5c6f">ftdi_bits_type</a> bits, enum <a class="el" href="ftdi_8h.html#a3977a883c99069e02f97e99d059dc8b8">ftdi_stopbits_type</a> sbit, enum <a class="el" href="ftdi_8h.html#ab0a93b5355c5155dd4fbd5beaf5d5e1d">ftdi_parity_type</a> parity)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga481d055a35dd9042c1c23e2214d2655c">ftdi_set_line_property2</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, enum <a class="el" href="ftdi_8h.html#a8007a7d5e37b76307c341051769e5c6f">ftdi_bits_type</a> bits, enum <a class="el" href="ftdi_8h.html#a3977a883c99069e02f97e99d059dc8b8">ftdi_stopbits_type</a> sbit, enum <a class="el" href="ftdi_8h.html#ab0a93b5355c5155dd4fbd5beaf5d5e1d">ftdi_parity_type</a> parity, enum <a class="el" href="ftdi_8h.html#ae1ca6c6246df33380443c4ba6f192025">ftdi_break_type</a> break_type)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaa79550f209ce3327a5df03f2bd1e80f0">ftdi_write_data</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *buf, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga76f20e683a65c0c2b368e983b315eb04">ftdi_async_complete</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int wait_for_more)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gae08ef89d23158590fa2d9e397b686d4b">ftdi_write_data_async</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *buf, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga85e22717c3315a09219b03a1862c0c46">ftdi_write_data_set_chunksize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned int chunksize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga5944f14ffd11faa113515ff29dc769ed">ftdi_write_data_get_chunksize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned int *chunksize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga72d87e30015c98bd0be22e7c8c873345">ftdi_read_data</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *buf, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga65783703baf0828d519ef597bb2855c1">ftdi_read_data_set_chunksize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned int chunksize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gab42b05f26b6a6545ae3ae1b4edc28e5c">ftdi_read_data_get_chunksize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned int *chunksize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga73127091e1d4d50b2b7c0e005c4900f7">ftdi_enable_bitbang</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char bitmask)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga42b4776b91c6b14d2d1008b160b78efa">ftdi_disable_bitbang</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga83b41e900a1faf2ecc0546ce48ec7e70">ftdi_set_bitmode</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char bitmask, unsigned char mode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gab823dd90f2359612b1546ef0ceebdc0e">ftdi_read_pins</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *pins)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga3e0227b0c7aa859d2d2afb5ffa4c8466">ftdi_set_latency_timer</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char latency)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gacf7b6dcc4de33db2263ce8a421e18bfc">ftdi_get_latency_timer</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *latency)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga396c3bf1435fb3317755868e28c47414">ftdi_poll_modem_status</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned short *status)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gac3b3d2cc69edf567e653340f434c91e0">ftdi_setflowctrl</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int flowctrl)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga47761f16762363288c55f5fff24620d5">ftdi_setdtr</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga5713ba73288b3e1ac1d45096c917c1ab">ftdi_setrts</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int state)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga5a8f23c2e77c8b58c1f44a11e2f52aa9">ftdi_setdtr_rts</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int dtr, int rts)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga71eeabe2ee5474d5c0ceddc2e08766cd">ftdi_set_event_char</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char eventch, unsigned char enable)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaeb9510a61f6648eb1bd57f0f99a390e1">ftdi_set_error_char</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char errorch, unsigned char enable)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaf2ce1365f476463d01d02d5aba5fa818">ftdi_eeprom_setsize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *eeprom, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga3302c00605356730893c0b11ef0dba03">ftdi_eeprom_initdefaults</a> (struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *eeprom)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaae86ddcceb7f95ac9d974fd20e10ccdf">ftdi_eeprom_free</a> (struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *eeprom)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga6e80677242c262c58169ea5565ae9163">ftdi_eeprom_build</a> (struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *eeprom, unsigned char *output)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga03beffe9080d466d70c90ce75fec26c9">ftdi_eeprom_decode</a> (struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *eeprom, unsigned char *buf, int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga650df1dc49ec78f0ee58b1c4f2644fd9">ftdi_read_eeprom_location</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int eeprom_addr, unsigned short *eeprom_val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gac2607b0a26dd8d78431d30a3fd01c052">ftdi_read_eeprom</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *eeprom)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gab978a76c2cc0dbfbc1fd6350db848300">ftdi_read_chipid</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned int *chipid)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#gaf9fc6da50167f7160024aca768c8dccc">ftdi_read_eeprom_getsize</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *eeprom, int maxsize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga5f2f678fc05cb8f92708fb1e5eb75100">ftdi_write_eeprom_location</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, int eeprom_addr, unsigned short eeprom_val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga28e530f10b046bcc353aa75938bddb31">ftdi_write_eeprom</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi, unsigned char *eeprom)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga25eb9a83a925065b6c3b61b8f0565951">ftdi_erase_eeprom</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libftdi.html#ga28c84d963760d7396e5a2992e63a9354">ftdi_get_error_string</a> (struct <a class="el" href="structftdi__context.html">ftdi_context</a> *ftdi)</td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga885116a371f8fe4f6d03d1f943d8529b"></a><!-- doxytag: member="ftdi.c::ftdi_error_return" ref="ga885116a371f8fe4f6d03d1f943d8529b" args="(code, str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ftdi_error_return</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">code, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">str&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {  \
        ftdi-&gt;error_str = str;             \
        <span class="keywordflow">return</span> code;                       \
   } <span class="keywordflow">while</span>(0);
</pre></div>
<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00047">47</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l01741">ftdi_disable_bitbang()</a>, <a class="el" href="ftdi_8c_source.html#l01712">ftdi_enable_bitbang()</a>, <a class="el" href="ftdi_8c_source.html#l02797">ftdi_erase_eeprom()</a>, <a class="el" href="ftdi_8c_source.html#l01845">ftdi_get_latency_timer()</a>, <a class="el" href="ftdi_8c_source.html#l00085">ftdi_init()</a>, <a class="el" href="ftdi_8c_source.html#l01899">ftdi_poll_modem_status()</a>, <a class="el" href="ftdi_8c_source.html#l02662">ftdi_read_chipid()</a>, <a class="el" href="ftdi_8c_source.html#l01535">ftdi_read_data()</a>, <a class="el" href="ftdi_8c_source.html#l01689">ftdi_read_data_get_chunksize()</a>, <a class="el" href="ftdi_8c_source.html#l01660">ftdi_read_data_set_chunksize()</a>, <a class="el" href="ftdi_8c_source.html#l02619">ftdi_read_eeprom()</a>, <a class="el" href="ftdi_8c_source.html#l02698">ftdi_read_eeprom_getsize()</a>, <a class="el" href="ftdi_8c_source.html#l02598">ftdi_read_eeprom_location()</a>, <a class="el" href="ftdi_8c_source.html#l01792">ftdi_read_pins()</a>, <a class="el" href="ftdi_8c_source.html#l01099">ftdi_set_baudrate()</a>, <a class="el" href="ftdi_8c_source.html#l01765">ftdi_set_bitmode()</a>, <a class="el" href="ftdi_8c_source.html#l02074">ftdi_set_error_char()</a>, <a class="el" href="ftdi_8c_source.html#l02045">ftdi_set_event_char()</a>, <a class="el" href="ftdi_8c_source.html#l00165">ftdi_set_interface()</a>, <a class="el" href="ftdi_8c_source.html#l01818">ftdi_set_latency_timer()</a>, <a class="el" href="ftdi_8c_source.html#l01164">ftdi_set_line_property2()</a>, <a class="el" href="ftdi_8c_source.html#l01948">ftdi_setdtr()</a>, <a class="el" href="ftdi_8c_source.html#l02009">ftdi_setdtr_rts()</a>, <a class="el" href="ftdi_8c_source.html#l01925">ftdi_setflowctrl()</a>, <a class="el" href="ftdi_8c_source.html#l01978">ftdi_setrts()</a>, <a class="el" href="ftdi_8c_source.html#l00940">ftdi_usb_close()</a>, <a class="el" href="ftdi_8c_source.html#l00265">ftdi_usb_find_all()</a>, <a class="el" href="ftdi_8c_source.html#l00358">ftdi_usb_get_strings()</a>, <a class="el" href="ftdi_8c_source.html#l00636">ftdi_usb_open_desc_index()</a>, <a class="el" href="ftdi_8c_source.html#l00457">ftdi_usb_open_dev()</a>, <a class="el" href="ftdi_8c_source.html#l00737">ftdi_usb_open_string()</a>, <a class="el" href="ftdi_8c_source.html#l00910">ftdi_usb_purge_buffers()</a>, <a class="el" href="ftdi_8c_source.html#l00861">ftdi_usb_purge_rx_buffer()</a>, <a class="el" href="ftdi_8c_source.html#l00887">ftdi_usb_purge_tx_buffer()</a>, <a class="el" href="ftdi_8c_source.html#l00835">ftdi_usb_reset()</a>, <a class="el" href="ftdi_8c_source.html#l01234">ftdi_write_data()</a>, <a class="el" href="ftdi_8c_source.html#l01454">ftdi_write_data_async()</a>, <a class="el" href="ftdi_8c_source.html#l01510">ftdi_write_data_get_chunksize()</a>, <a class="el" href="ftdi_8c_source.html#l01492">ftdi_write_data_set_chunksize()</a>, <a class="el" href="ftdi_8c_source.html#l02757">ftdi_write_eeprom()</a>, and <a class="el" href="ftdi_8c_source.html#l02734">ftdi_write_eeprom_location()</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga21e2ed53cad4fa8242022afe1e12d2ee"></a><!-- doxytag: member="ftdi.c::ftdi_init" ref="ga21e2ed53cad4fa8242022afe1e12d2ee" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_init </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initializes a <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>couldn't allocate read buffer</td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>This should be called before all functions </dd></dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00085">85</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00223">ftdi_context::async_usb_buffer</a>, <a class="el" href="ftdi_8h_source.html#l00225">ftdi_context::async_usb_buffer_size</a>, <a class="el" href="ftdi_8h_source.html#l00062">AUTO_DETACH_SIO_MODULE</a>, <a class="el" href="ftdi_8h_source.html#l00187">ftdi_context::baudrate</a>, <a class="el" href="ftdi_8h_source.html#l00189">ftdi_context::bitbang_enabled</a>, <a class="el" href="ftdi_8h_source.html#l00214">ftdi_context::bitbang_mode</a>, <a class="el" href="ftdi_8h_source.html#l00217">ftdi_context::eeprom_size</a>, <a class="el" href="ftdi_8h_source.html#l00220">ftdi_context::error_str</a>, <a class="el" href="ftdi_8h_source.html#l00022">FTDI_DEFAULT_EEPROM_SIZE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l01660">ftdi_read_data_set_chunksize()</a>, <a class="el" href="ftdi_8h_source.html#l00156">FTDI_URB_USERCONTEXT_COOKIE</a>, <a class="el" href="ftdi_8h_source.html#l00210">ftdi_context::in_ep</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00205">ftdi_context::interface</a>, <a class="el" href="ftdi_8h_source.html#l00201">ftdi_context::max_packet_size</a>, <a class="el" href="ftdi_8h_source.html#l00228">ftdi_context::module_detach_mode</a>, <a class="el" href="ftdi_8h_source.html#l00211">ftdi_context::out_ep</a>, <a class="el" href="ftdi_8h_source.html#l00191">ftdi_context::readbuffer</a>, <a class="el" href="ftdi_8h_source.html#l00193">ftdi_context::readbuffer_offset</a>, <a class="el" href="ftdi_8h_source.html#l00195">ftdi_context::readbuffer_remaining</a>, <a class="el" href="ftdi_8h_source.html#l00185">ftdi_context::type</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_BM</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>, <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>, and <a class="el" href="ftdi_8h_source.html#l00199">ftdi_context::writebuffer_chunksize</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00630">Ftdi::List::find_all()</a>, and <a class="el" href="ftdi_8c_source.html#l00137">ftdi_new()</a>.</p>

</div>
</div>
<a class="anchor" id="gafd46c6784367fd95c5f852d3b38949a8"></a><!-- doxytag: member="ftdi.c::ftdi_new" ref="gafd46c6784367fd95c5f852d3b38949a8" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structftdi__context.html">ftdi_context</a>* ftdi_new </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Allocate and initialize a new <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to a new <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a>, or NULL on failure </dd></dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00137">137</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00085">ftdi_init()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00038">Ftdi::Context::Private::Private()</a>.</p>

</div>
</div>
<a class="anchor" id="ga6dc886d709eced377a33dc975fa6e771"></a><!-- doxytag: member="ftdi.c::ftdi_set_interface" ref="ga6dc886d709eced377a33dc975fa6e771" args="(struct ftdi_context *ftdi, enum ftdi_interface interface)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_interface </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#a9c55e66c45a0e4ec5548ee7d6e1a9265">ftdi_interface</a>&#160;</td>
          <td class="paramname"><em>interface</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Open selected channels on a chip, otherwise use first channel.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">interface</td><td>Interface to use for FT2232C/2232H/4232H chips.</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>unknown interface </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00165">165</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00210">ftdi_context::in_ep</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00205">ftdi_context::interface</a>, <a class="el" href="ftdi_8h_source.html#l00053">INTERFACE_A</a>, <a class="el" href="ftdi_8h_source.html#l00052">INTERFACE_ANY</a>, <a class="el" href="ftdi_8h_source.html#l00054">INTERFACE_B</a>, <a class="el" href="ftdi_8h_source.html#l00055">INTERFACE_C</a>, <a class="el" href="ftdi_8h_source.html#l00056">INTERFACE_D</a>, and <a class="el" href="ftdi_8h_source.html#l00211">ftdi_context::out_ep</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00154">Ftdi::Context::set_interface()</a>.</p>

</div>
</div>
<a class="anchor" id="ga72838200be98d88737d532f9eee1e7be"></a><!-- doxytag: member="ftdi.c::ftdi_deinit" ref="ga72838200be98d88737d532f9eee1e7be" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_deinit </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Deinitializes a <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00205">205</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00223">ftdi_context::async_usb_buffer</a>, and <a class="el" href="ftdi_8h_source.html#l00191">ftdi_context::readbuffer</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00630">Ftdi::List::find_all()</a>, and <a class="el" href="ftdi_8c_source.html#l00230">ftdi_free()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3cc28e5b7f1f50246861fcb39e7dd291"></a><!-- doxytag: member="ftdi.c::ftdi_free" ref="ga3cc28e5b7f1f50246861fcb39e7dd291" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_free </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Deinitialize and free an <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a>.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00230">230</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00205">ftdi_deinit()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00359">Ftdi::Context::set_context()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00044">Ftdi::Context::Private::~Private()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1b66cfb146ff0732322c49585d2459f6"></a><!-- doxytag: member="ftdi.c::ftdi_set_usbdev" ref="ga1b66cfb146ff0732322c49585d2459f6" args="(struct ftdi_context *ftdi, usb_dev_handle *usb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_set_usbdev </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structusb__dev__handle.html">usb_dev_handle</a> *&#160;</td>
          <td class="paramname"><em>usb</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Use an already open libusb device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">usb</td><td>libusb <a class="el" href="structusb__dev__handle.html">usb_dev_handle</a> to use </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00242">242</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00159">Ftdi::Context::set_usb_device()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2845a0c63809747c9c7b1ea404453bc4"></a><!-- doxytag: member="ftdi.c::ftdi_usb_find_all" ref="ga2845a0c63809747c9c7b1ea404453bc4" args="(struct ftdi_context *ftdi, struct ftdi_device_list **devlist, int vendor, int product)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_find_all </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> **&#160;</td>
          <td class="paramname"><em>devlist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>vendor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>product</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Finds all ftdi devices on the usb bus. Creates a new <a class="el" href="structftdi__device__list.html" title="list of usb devices created by ftdi_usb_find_all()">ftdi_device_list</a> which needs to be deallocated by <a class="el" href="group__libftdi.html#ga35358ea578644aa309300db782415c9f">ftdi_list_free()</a> after use.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">devlist</td><td>Pointer where to store list of found devices </td></tr>
    <tr><td class="paramname">vendor</td><td>Vendor ID to search for </td></tr>
    <tr><td class="paramname">product</td><td>Product ID to search for</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">&gt;0,:</td><td>number of devices found </td></tr>
    <tr><td class="paramname">-1,:</td><td>usb_find_busses() failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>usb_find_devices() failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>out of memory </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00265">265</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00239">ftdi_device_list::dev</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, and <a class="el" href="ftdi_8h_source.html#l00237">ftdi_device_list::next</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00630">Ftdi::List::find_all()</a>.</p>

</div>
</div>
<a class="anchor" id="ga35358ea578644aa309300db782415c9f"></a><!-- doxytag: member="ftdi.c::ftdi_list_free" ref="ga35358ea578644aa309300db782415c9f" args="(struct ftdi_device_list **devlist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_list_free </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> **&#160;</td>
          <td class="paramname"><em>devlist</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Frees a usb device list.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">devlist</td><td>USB device list created by <a class="el" href="group__libftdi.html#ga2845a0c63809747c9c7b1ea404453bc4">ftdi_usb_find_all()</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00308">308</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00237">ftdi_device_list::next</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00579">Ftdi::List::clear()</a>, <a class="el" href="ftdi_8c_source.html#l00327">ftdi_list_free2()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00453">Ftdi::List::Private::~Private()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa4838bebb2024ae9bfdcc81adbda3493"></a><!-- doxytag: member="ftdi.c::ftdi_list_free2" ref="gaa4838bebb2024ae9bfdcc81adbda3493" args="(struct ftdi_device_list *devlist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_list_free2 </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__device__list.html">ftdi_device_list</a> *&#160;</td>
          <td class="paramname"><em>devlist</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Frees a usb device list.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">devlist</td><td>USB device list created by <a class="el" href="group__libftdi.html#ga2845a0c63809747c9c7b1ea404453bc4">ftdi_usb_find_all()</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00327">327</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00308">ftdi_list_free()</a>.</p>

</div>
</div>
<a class="anchor" id="gabeca5642c95141e11b6936175ce08b3b"></a><!-- doxytag: member="ftdi.c::ftdi_usb_get_strings" ref="gabeca5642c95141e11b6936175ce08b3b" args="(struct ftdi_context *ftdi, struct usb_device *dev, char *manufacturer, int mnf_len, char *description, int desc_len, char *serial, int serial_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_get_strings </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct usb_device *&#160;</td>
          <td class="paramname"><em>dev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>manufacturer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>mnf_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>description</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>desc_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>serial</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>serial_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return device ID strings from the usb device.</p>
<p>The parameters manufacturer, description and serial may be NULL or pointer to buffers to store the fetched strings.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Use this function only in combination with <a class="el" href="group__libftdi.html#ga2845a0c63809747c9c7b1ea404453bc4">ftdi_usb_find_all()</a> as it closes the internal "usb_dev" after use.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">dev</td><td>libusb usb_dev to use </td></tr>
    <tr><td class="paramname">manufacturer</td><td>Store manufacturer string here if not NULL </td></tr>
    <tr><td class="paramname">mnf_len</td><td>Buffer size of manufacturer string </td></tr>
    <tr><td class="paramname">description</td><td>Store product description string here if not NULL </td></tr>
    <tr><td class="paramname">desc_len</td><td>Buffer size of product description string </td></tr>
    <tr><td class="paramname">serial</td><td>Store serial string here if not NULL </td></tr>
    <tr><td class="paramname">serial_len</td><td>Buffer size of serial string</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>wrong arguments </td></tr>
    <tr><td class="paramname">-4,:</td><td>unable to open device </td></tr>
    <tr><td class="paramname">-7,:</td><td>get product manufacturer failed </td></tr>
    <tr><td class="paramname">-8,:</td><td>get product description failed </td></tr>
    <tr><td class="paramname">-9,:</td><td>get serial number failed </td></tr>
    <tr><td class="paramname">-10,:</td><td>unable to close device </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00358">358</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, and <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00304">Ftdi::Context::get_strings()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa03eb28a2ec02db4e923e3949854a30d"></a><!-- doxytag: member="ftdi.c::ftdi_usb_open_dev" ref="gaa03eb28a2ec02db4e923e3949854a30d" args="(struct ftdi_context *ftdi, struct usb_device *dev)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_open_dev </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct usb_device *&#160;</td>
          <td class="paramname"><em>dev</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Opens a ftdi device given by an usb_device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">dev</td><td>libusb usb_dev to use</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-3,:</td><td>unable to config device </td></tr>
    <tr><td class="paramname">-4,:</td><td>unable to open device </td></tr>
    <tr><td class="paramname">-5,:</td><td>unable to claim device </td></tr>
    <tr><td class="paramname">-6,:</td><td>reset failed </td></tr>
    <tr><td class="paramname">-7,:</td><td>set baudrate failed </td></tr>
    <tr><td class="paramname">-8,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00457">457</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00062">AUTO_DETACH_SIO_MODULE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l01099">ftdi_set_baudrate()</a>, <a class="el" href="ftdi_8c_source.html#l00835">ftdi_usb_reset()</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00205">ftdi_context::interface</a>, <a class="el" href="ftdi_8h_source.html#l00053">INTERFACE_A</a>, <a class="el" href="ftdi_8h_source.html#l00201">ftdi_context::max_packet_size</a>, <a class="el" href="ftdi_8h_source.html#l00228">ftdi_context::module_detach_mode</a>, <a class="el" href="ftdi_8h_source.html#l00185">ftdi_context::type</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_2232C</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_2232H</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_4232H</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_AM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_BM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_R</a>, and <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00636">ftdi_usb_open_desc_index()</a>, <a class="el" href="ftdi_8c_source.html#l00737">ftdi_usb_open_string()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00321">Ftdi::Context::get_strings_and_reopen()</a>.</p>

</div>
</div>
<a class="anchor" id="ga95d4689db18fc1fd70011f6504ab8c40"></a><!-- doxytag: member="ftdi.c::ftdi_usb_open" ref="ga95d4689db18fc1fd70011f6504ab8c40" args="(struct ftdi_context *ftdi, int vendor, int product)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_open </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>vendor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>product</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Opens the first device with a given vendor and product ids.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">vendor</td><td>Vendor ID </td></tr>
    <tr><td class="paramname">product</td><td>Product ID</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">same</td><td>as <a class="el" href="group__libftdi.html#ga93c2c5f546f5968ae497c099d319ff32">ftdi_usb_open_desc()</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00579">579</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00606">ftdi_usb_open_desc()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00080">Ftdi::Context::open()</a>.</p>

</div>
</div>
<a class="anchor" id="ga93c2c5f546f5968ae497c099d319ff32"></a><!-- doxytag: member="ftdi.c::ftdi_usb_open_desc" ref="ga93c2c5f546f5968ae497c099d319ff32" args="(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_open_desc </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>vendor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>product</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>description</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>serial</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Opens the first device with a given, vendor id, product id, description and serial.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">vendor</td><td>Vendor ID </td></tr>
    <tr><td class="paramname">product</td><td>Product ID </td></tr>
    <tr><td class="paramname">description</td><td>Description to search for. Use NULL if not needed. </td></tr>
    <tr><td class="paramname">serial</td><td>Serial to search for. Use NULL if not needed.</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>usb_find_busses() failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>usb_find_devices() failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>usb device not found </td></tr>
    <tr><td class="paramname">-4,:</td><td>unable to open device </td></tr>
    <tr><td class="paramname">-5,:</td><td>unable to claim device </td></tr>
    <tr><td class="paramname">-6,:</td><td>reset failed </td></tr>
    <tr><td class="paramname">-7,:</td><td>set baudrate failed </td></tr>
    <tr><td class="paramname">-8,:</td><td>get product description failed </td></tr>
    <tr><td class="paramname">-9,:</td><td>get serial number failed </td></tr>
    <tr><td class="paramname">-10,:</td><td>unable to close device </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00606">606</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00636">ftdi_usb_open_desc_index()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00579">ftdi_usb_open()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3c5ccb0678b0e268b4081ea978e8eb78"></a><!-- doxytag: member="ftdi.c::ftdi_usb_open_desc_index" ref="ga3c5ccb0678b0e268b4081ea978e8eb78" args="(struct ftdi_context *ftdi, int vendor, int product, const char *description, const char *serial, unsigned int index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_open_desc_index </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>vendor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>product</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>description</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>serial</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>index</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Opens the index-th device with a given, vendor id, product id, description and serial.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">vendor</td><td>Vendor ID </td></tr>
    <tr><td class="paramname">product</td><td>Product ID </td></tr>
    <tr><td class="paramname">description</td><td>Description to search for. Use NULL if not needed. </td></tr>
    <tr><td class="paramname">serial</td><td>Serial to search for. Use NULL if not needed. </td></tr>
    <tr><td class="paramname">index</td><td>Number of matching device to open if there are more than one, starts with 0.</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>usb_find_busses() failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>usb_find_devices() failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>usb device not found </td></tr>
    <tr><td class="paramname">-4,:</td><td>unable to open device </td></tr>
    <tr><td class="paramname">-5,:</td><td>unable to claim device </td></tr>
    <tr><td class="paramname">-6,:</td><td>reset failed </td></tr>
    <tr><td class="paramname">-7,:</td><td>set baudrate failed </td></tr>
    <tr><td class="paramname">-8,:</td><td>get product description failed </td></tr>
    <tr><td class="paramname">-9,:</td><td>get serial number failed </td></tr>
    <tr><td class="paramname">-10,:</td><td>unable to close device </td></tr>
    <tr><td class="paramname">-11,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00636">636</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l00457">ftdi_usb_open_dev()</a>, and <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00606">ftdi_usb_open_desc()</a>, <a class="el" href="ftdi_8c_source.html#l00737">ftdi_usb_open_string()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00091">Ftdi::Context::open()</a>.</p>

</div>
</div>
<a class="anchor" id="gaae805b82251a61dae46b98345cd84d5c"></a><!-- doxytag: member="ftdi.c::ftdi_usb_open_string" ref="gaae805b82251a61dae46b98345cd84d5c" args="(struct ftdi_context *ftdi, const char *description)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_open_string </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>description</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Opens the ftdi-device described by a description-string. Intended to be used for parsing a device-description given as commandline argument.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">description</td><td>NULL-terminated description-string, using this format: <ul>
<li><code>d:&lt;devicenode&gt;</code> path of bus and device-node (e.g. "003/001") within usb device tree (usually at /proc/bus/usb/) </li>
<li><code>i:&lt;vendor&gt;:&lt;product&gt;</code> first device with given vendor and product id, ids can be decimal, octal (preceded by "0") or hex (preceded by "0x") </li>
<li><code>i:&lt;vendor&gt;:&lt;product&gt;:&lt;index&gt;</code> as above with index being the number of the device (starting with 0) if there are more than one </li>
<li><code>s:&lt;vendor&gt;:&lt;product&gt;:&lt;serial&gt;</code> first device with given vendor id, product id and serial string</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The description format may be extended in later versions.</dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>usb_find_busses() failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>usb_find_devices() failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>usb device not found </td></tr>
    <tr><td class="paramname">-4,:</td><td>unable to open device </td></tr>
    <tr><td class="paramname">-5,:</td><td>unable to claim device </td></tr>
    <tr><td class="paramname">-6,:</td><td>reset failed </td></tr>
    <tr><td class="paramname">-7,:</td><td>set baudrate failed </td></tr>
    <tr><td class="paramname">-8,:</td><td>get product description failed </td></tr>
    <tr><td class="paramname">-9,:</td><td>get serial number failed </td></tr>
    <tr><td class="paramname">-10,:</td><td>unable to close device </td></tr>
    <tr><td class="paramname">-11,:</td><td>illegal description format </td></tr>
    <tr><td class="paramname">-12,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00737">737</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l00636">ftdi_usb_open_desc_index()</a>, and <a class="el" href="ftdi_8c_source.html#l00457">ftdi_usb_open_dev()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00110">Ftdi::Context::open()</a>.</p>

</div>
</div>
<a class="anchor" id="ga266ccc351ea31289022063a8ae29edf4"></a><!-- doxytag: member="ftdi.c::ftdi_usb_reset" ref="ga266ccc351ea31289022063a8ae29edf4" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_reset </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Resets the ftdi device.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>FTDI reset failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00835">835</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00193">ftdi_context::readbuffer_offset</a>, <a class="el" href="ftdi_8h_source.html#l00195">ftdi_context::readbuffer_remaining</a>, <a class="el" href="ftdi_8h_source.html#l00119">SIO_RESET_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00136">SIO_RESET_SIO</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00457">ftdi_usb_open_dev()</a>, <a class="el" href="ftdi_8c_source.html#l02757">ftdi_write_eeprom()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00137">Ftdi::Context::reset()</a>.</p>

</div>
</div>
<a class="anchor" id="ga25a6d4766e30bd47602ed0c0ecf53476"></a><!-- doxytag: member="ftdi.c::ftdi_usb_purge_rx_buffer" ref="ga25a6d4766e30bd47602ed0c0ecf53476" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_purge_rx_buffer </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Clears the read buffer on the chip and the internal read buffer.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read buffer purge failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00861">861</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00193">ftdi_context::readbuffer_offset</a>, <a class="el" href="ftdi_8h_source.html#l00195">ftdi_context::readbuffer_remaining</a>, <a class="el" href="ftdi_8h_source.html#l00137">SIO_RESET_PURGE_RX</a>, <a class="el" href="ftdi_8h_source.html#l00119">SIO_RESET_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00142">Ftdi::Context::flush()</a>, and <a class="el" href="ftdi_8c_source.html#l00910">ftdi_usb_purge_buffers()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1eab1dfd17068c46775a86496fee8bec"></a><!-- doxytag: member="ftdi.c::ftdi_usb_purge_tx_buffer" ref="ga1eab1dfd17068c46775a86496fee8bec" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_purge_tx_buffer </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Clears the write buffer on the chip.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>write buffer purge failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00887">887</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00138">SIO_RESET_PURGE_TX</a>, <a class="el" href="ftdi_8h_source.html#l00119">SIO_RESET_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00142">Ftdi::Context::flush()</a>, and <a class="el" href="ftdi_8c_source.html#l00910">ftdi_usb_purge_buffers()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3089d7ceafad896c007111b8e5c02906"></a><!-- doxytag: member="ftdi.c::ftdi_usb_purge_buffers" ref="ga3089d7ceafad896c007111b8e5c02906" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_purge_buffers </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Clears the buffers on the chip and the internal read buffer.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read buffer purge failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>write buffer purge failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00910">910</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l00861">ftdi_usb_purge_rx_buffer()</a>, <a class="el" href="ftdi_8c_source.html#l00887">ftdi_usb_purge_tx_buffer()</a>, and <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

</div>
</div>
<a class="anchor" id="ga9536eff48c7ae9313b2a97320743ee3b"></a><!-- doxytag: member="ftdi.c::ftdi_usb_close" ref="ga9536eff48c7ae9313b2a97320743ee3b" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_usb_close </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Closes the ftdi device. Call <a class="el" href="group__libftdi.html#ga72838200be98d88737d532f9eee1e7be">ftdi_deinit()</a> if you're cleaning up.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>usb_release failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>usb_close failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l00940">940</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l01362">ftdi_async_complete()</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00205">ftdi_context::interface</a>, and <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00131">Ftdi::Context::close()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00044">Ftdi::Context::Private::~Private()</a>.</p>

</div>
</div>
<a class="anchor" id="gae80f1dc38f5c80946a56ec34a329e7f5"></a><!-- doxytag: member="ftdi.c::ftdi_set_baudrate" ref="gae80f1dc38f5c80946a56ec34a329e7f5" args="(struct ftdi_context *ftdi, int baudrate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_baudrate </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>baudrate</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the chip baud rate</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">baudrate</td><td>baud rate to set</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>invalid baudrate </td></tr>
    <tr><td class="paramname">-2,:</td><td>setting baudrate failed </td></tr>
    <tr><td class="paramname">-3,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01099">1099</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00187">ftdi_context::baudrate</a>, <a class="el" href="ftdi_8h_source.html#l00189">ftdi_context::bitbang_enabled</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00120">SIO_SET_BAUDRATE_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00457">ftdi_usb_open_dev()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00165">Ftdi::Context::set_baud_rate()</a>.</p>

</div>
</div>
<a class="anchor" id="ga044fdde91eaa3f557b545172622ee460"></a><!-- doxytag: member="ftdi.c::ftdi_set_line_property" ref="ga044fdde91eaa3f557b545172622ee460" args="(struct ftdi_context *ftdi, enum ftdi_bits_type bits, enum ftdi_stopbits_type sbit, enum ftdi_parity_type parity)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_line_property </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#a8007a7d5e37b76307c341051769e5c6f">ftdi_bits_type</a>&#160;</td>
          <td class="paramname"><em>bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#a3977a883c99069e02f97e99d059dc8b8">ftdi_stopbits_type</a>&#160;</td>
          <td class="paramname"><em>sbit</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#ab0a93b5355c5155dd4fbd5beaf5d5e1d">ftdi_parity_type</a>&#160;</td>
          <td class="paramname"><em>parity</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set (RS232) line characteristics. The break type can only be set via <a class="el" href="group__libftdi.html#ga481d055a35dd9042c1c23e2214d2655c">ftdi_set_line_property2()</a> and defaults to "off".</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">bits</td><td>Number of bits </td></tr>
    <tr><td class="paramname">sbit</td><td>Number of stop bits </td></tr>
    <tr><td class="paramname">parity</td><td>Parity mode</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>Setting line property failed </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01145">1145</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00033">BREAK_OFF</a>, and <a class="el" href="ftdi_8c_source.html#l01164">ftdi_set_line_property2()</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00170">Ftdi::Context::set_line_property()</a>.</p>

</div>
</div>
<a class="anchor" id="ga481d055a35dd9042c1c23e2214d2655c"></a><!-- doxytag: member="ftdi.c::ftdi_set_line_property2" ref="ga481d055a35dd9042c1c23e2214d2655c" args="(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)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_line_property2 </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#a8007a7d5e37b76307c341051769e5c6f">ftdi_bits_type</a>&#160;</td>
          <td class="paramname"><em>bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#a3977a883c99069e02f97e99d059dc8b8">ftdi_stopbits_type</a>&#160;</td>
          <td class="paramname"><em>sbit</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#ab0a93b5355c5155dd4fbd5beaf5d5e1d">ftdi_parity_type</a>&#160;</td>
          <td class="paramname"><em>parity</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ftdi_8h.html#ae1ca6c6246df33380443c4ba6f192025">ftdi_break_type</a>&#160;</td>
          <td class="paramname"><em>break_type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set (RS232) line characteristics</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">bits</td><td>Number of bits </td></tr>
    <tr><td class="paramname">sbit</td><td>Number of stop bits </td></tr>
    <tr><td class="paramname">parity</td><td>Parity mode </td></tr>
    <tr><td class="paramname">break_type</td><td>Break type</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>Setting line property failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01164">1164</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00033">BREAK_OFF</a>, <a class="el" href="ftdi_8h_source.html#l00033">BREAK_ON</a>, <a class="el" href="ftdi_8h_source.html#l00027">EVEN</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00027">MARK</a>, <a class="el" href="ftdi_8h_source.html#l00027">NONE</a>, <a class="el" href="ftdi_8h_source.html#l00027">ODD</a>, <a class="el" href="ftdi_8h_source.html#l00121">SIO_SET_DATA_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00027">SPACE</a>, <a class="el" href="ftdi_8h_source.html#l00029">STOP_BIT_1</a>, <a class="el" href="ftdi_8h_source.html#l00029">STOP_BIT_15</a>, <a class="el" href="ftdi_8h_source.html#l00029">STOP_BIT_2</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l01145">ftdi_set_line_property()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00175">Ftdi::Context::set_line_property()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa79550f209ce3327a5df03f2bd1e80f0"></a><!-- doxytag: member="ftdi.c::ftdi_write_data" ref="gaa79550f209ce3327a5df03f2bd1e80f0" args="(struct ftdi_context *ftdi, unsigned char *buf, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_data </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Writes data in chunks (see <a class="el" href="group__libftdi.html#ga85e22717c3315a09219b03a1862c0c46">ftdi_write_data_set_chunksize()</a>) to the chip</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">buf</td><td>Buffer with the data </td></tr>
    <tr><td class="paramname">size</td><td>Size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">-666,:</td><td>USB device unavailable </td></tr>
    <tr><td class="paramname">&lt;0,:</td><td>error code from usb_bulk_write() </td></tr>
    <tr><td class="paramname">&gt;0,:</td><td>number of bytes written </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01234">1234</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00210">ftdi_context::in_ep</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>, and <a class="el" href="ftdi_8h_source.html#l00199">ftdi_context::writebuffer_chunksize</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00199">Ftdi::Context::write()</a>.</p>

</div>
</div>
<a class="anchor" id="ga76f20e683a65c0c2b368e983b315eb04"></a><!-- doxytag: member="ftdi.c::ftdi_async_complete" ref="ga76f20e683a65c0c2b368e983b315eb04" args="(struct ftdi_context *ftdi, int wait_for_more)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_async_complete </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>wait_for_more</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Wait until one or more async URBs are completed by the kernel and mark their positions in the async-buffer as unused.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">wait_for_more</td><td>if != 0 wait for more than one write to complete (until write timeout) </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01362">1362</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00940">ftdi_usb_close()</a>.</p>

</div>
</div>
<a class="anchor" id="gae08ef89d23158590fa2d9e397b686d4b"></a><!-- doxytag: member="ftdi.c::ftdi_write_data_async" ref="gae08ef89d23158590fa2d9e397b686d4b" args="(struct ftdi_context *ftdi, unsigned char *buf, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_data_async </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Writes data in chunks (see <a class="el" href="group__libftdi.html#ga85e22717c3315a09219b03a1862c0c46">ftdi_write_data_set_chunksize()</a>) to the chip. Does not wait for completion of the transfer nor does it make sure that the transfer was successful.</p>
<p>This function could be extended to use signals and callbacks to inform the caller of completion or error - but this is not done yet, volunteers welcome.</p>
<p>Works around libusb and directly accesses functions only available on Linux. Only available if compiled with --with-async-mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">buf</td><td>Buffer with the data </td></tr>
    <tr><td class="paramname">size</td><td>Size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">-666,:</td><td>USB device unavailable </td></tr>
    <tr><td class="paramname">&lt;0,:</td><td>error code from usb_bulk_write() </td></tr>
    <tr><td class="paramname">&gt;0,:</td><td>number of bytes written </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01454">1454</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00210">ftdi_context::in_ep</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00199">ftdi_context::writebuffer_chunksize</a>.</p>

</div>
</div>
<a class="anchor" id="ga85e22717c3315a09219b03a1862c0c46"></a><!-- doxytag: member="ftdi.c::ftdi_write_data_set_chunksize" ref="ga85e22717c3315a09219b03a1862c0c46" args="(struct ftdi_context *ftdi, unsigned int chunksize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_data_set_chunksize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>chunksize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Configure write buffer chunk size. Default is 4096.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">chunksize</td><td>Chunk size</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01492">1492</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, and <a class="el" href="ftdi_8h_source.html#l00199">ftdi_context::writebuffer_chunksize</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00204">Ftdi::Context::set_write_chunk_size()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5944f14ffd11faa113515ff29dc769ed"></a><!-- doxytag: member="ftdi.c::ftdi_write_data_get_chunksize" ref="ga5944f14ffd11faa113515ff29dc769ed" args="(struct ftdi_context *ftdi, unsigned int *chunksize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_data_get_chunksize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>chunksize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get write buffer chunk size.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">chunksize</td><td>Pointer to store chunk size in</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01510">1510</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, and <a class="el" href="ftdi_8h_source.html#l00199">ftdi_context::writebuffer_chunksize</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00209">Ftdi::Context::write_chunk_size()</a>.</p>

</div>
</div>
<a class="anchor" id="ga72d87e30015c98bd0be22e7c8c873345"></a><!-- doxytag: member="ftdi.c::ftdi_read_data" ref="ga72d87e30015c98bd0be22e7c8c873345" args="(struct ftdi_context *ftdi, unsigned char *buf, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_data </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Reads data in chunks (see <a class="el" href="group__libftdi.html#ga65783703baf0828d519ef597bb2855c1">ftdi_read_data_set_chunksize()</a>) from the chip.</p>
<p>Returns when at least one byte is available or when the latency timer has elapsed Automatically strips the two modem status bytes transfered during every read.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">buf</td><td>Buffer to store data in </td></tr>
    <tr><td class="paramname">size</td><td>Size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">-666,:</td><td>USB device unavailable </td></tr>
    <tr><td class="paramname">&lt;0,:</td><td>error code from usb_bulk_read() </td></tr>
    <tr><td class="paramname">0,:</td><td>no data was available </td></tr>
    <tr><td class="paramname">&gt;0,:</td><td>number of bytes read </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01535">1535</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00201">ftdi_context::max_packet_size</a>, <a class="el" href="ftdi_8h_source.html#l00211">ftdi_context::out_ep</a>, <a class="el" href="ftdi_8h_source.html#l00191">ftdi_context::readbuffer</a>, <a class="el" href="ftdi_8h_source.html#l00197">ftdi_context::readbuffer_chunksize</a>, <a class="el" href="ftdi_8h_source.html#l00193">ftdi_context::readbuffer_offset</a>, <a class="el" href="ftdi_8h_source.html#l00195">ftdi_context::readbuffer_remaining</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00180">Ftdi::Context::read()</a>.</p>

</div>
</div>
<a class="anchor" id="ga65783703baf0828d519ef597bb2855c1"></a><!-- doxytag: member="ftdi.c::ftdi_read_data_set_chunksize" ref="ga65783703baf0828d519ef597bb2855c1" args="(struct ftdi_context *ftdi, unsigned int chunksize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_data_set_chunksize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>chunksize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Configure read buffer chunk size. Default is 4096.</p>
<p>Automatically reallocates the buffer.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">chunksize</td><td>Chunk size</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>ftdi context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01660">1660</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00191">ftdi_context::readbuffer</a>, <a class="el" href="ftdi_8h_source.html#l00197">ftdi_context::readbuffer_chunksize</a>, <a class="el" href="ftdi_8h_source.html#l00193">ftdi_context::readbuffer_offset</a>, and <a class="el" href="ftdi_8h_source.html#l00195">ftdi_context::readbuffer_remaining</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l00085">ftdi_init()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00185">Ftdi::Context::set_read_chunk_size()</a>.</p>

</div>
</div>
<a class="anchor" id="gab42b05f26b6a6545ae3ae1b4edc28e5c"></a><!-- doxytag: member="ftdi.c::ftdi_read_data_get_chunksize" ref="gab42b05f26b6a6545ae3ae1b4edc28e5c" args="(struct ftdi_context *ftdi, unsigned int *chunksize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_data_get_chunksize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>chunksize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get read buffer chunk size.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">chunksize</td><td>Pointer to store chunk size in</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>FTDI context invalid </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01689">1689</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, and <a class="el" href="ftdi_8h_source.html#l00197">ftdi_context::readbuffer_chunksize</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00190">Ftdi::Context::read_chunk_size()</a>.</p>

</div>
</div>
<a class="anchor" id="ga73127091e1d4d50b2b7c0e005c4900f7"></a><!-- doxytag: member="ftdi.c::ftdi_enable_bitbang" ref="ga73127091e1d4d50b2b7c0e005c4900f7" args="(struct ftdi_context *ftdi, unsigned char bitmask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_enable_bitbang </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>bitmask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Enable bitbang mode.</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>use <a class="el" href="group__libftdi.html#ga83b41e900a1faf2ecc0546ce48ec7e70">ftdi_set_bitmode</a> with mode BITMODE_BITBANG instead</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">bitmask</td><td>Bitmask to configure lines. HIGH/ON value configures a line as output.</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>can't enable bitbang mode </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01712">1712</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00189">ftdi_context::bitbang_enabled</a>, <a class="el" href="ftdi_8h_source.html#l00214">ftdi_context::bitbang_mode</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00129">SIO_SET_BITMODE_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

</div>
</div>
<a class="anchor" id="ga42b4776b91c6b14d2d1008b160b78efa"></a><!-- doxytag: member="ftdi.c::ftdi_disable_bitbang" ref="ga42b4776b91c6b14d2d1008b160b78efa" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_disable_bitbang </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Disable bitbang mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>can't disable bitbang mode </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01741">1741</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00189">ftdi_context::bitbang_enabled</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00129">SIO_SET_BITMODE_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00279">Ftdi::Context::bitbang_disable()</a>.</p>

</div>
</div>
<a class="anchor" id="ga83b41e900a1faf2ecc0546ce48ec7e70"></a><!-- doxytag: member="ftdi.c::ftdi_set_bitmode" ref="ga83b41e900a1faf2ecc0546ce48ec7e70" args="(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_bitmode </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>bitmask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>mode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Enable/disable bitbang modes.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">bitmask</td><td>Bitmask to configure lines. HIGH/ON value configures a line as output. </td></tr>
    <tr><td class="paramname">mode</td><td>Bitbang mode: use the values defined in <a class="el" href="ftdi_8h.html#a2250f7812c87a96ada7fd4f19b82f666">ftdi_mpsse_mode</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>can't enable bitbang mode </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01765">1765</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00189">ftdi_context::bitbang_enabled</a>, <a class="el" href="ftdi_8h_source.html#l00214">ftdi_context::bitbang_mode</a>, <a class="el" href="ftdi_8h_source.html#l00038">BITMODE_RESET</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00129">SIO_SET_BITMODE_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00284">Ftdi::Context::set_bitmode()</a>.</p>

</div>
</div>
<a class="anchor" id="gab823dd90f2359612b1546ef0ceebdc0e"></a><!-- doxytag: member="ftdi.c::ftdi_read_pins" ref="gab823dd90f2359612b1546ef0ceebdc0e" args="(struct ftdi_context *ftdi, unsigned char *pins)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_pins </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>pins</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Directly read pin state, circumventing the read buffer. Useful for bitbang mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">pins</td><td>Pointer to store pins into</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read pins failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01792">1792</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00130">SIO_READ_PINS_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00294">Ftdi::Context::read_pins()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3e0227b0c7aa859d2d2afb5ffa4c8466"></a><!-- doxytag: member="ftdi.c::ftdi_set_latency_timer" ref="ga3e0227b0c7aa859d2d2afb5ffa4c8466" args="(struct ftdi_context *ftdi, unsigned char latency)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_latency_timer </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>latency</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set latency timer</p>
<p>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.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">latency</td><td>Value between 1 and 255</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>latency out of range </td></tr>
    <tr><td class="paramname">-2,:</td><td>unable to set latency timer </td></tr>
    <tr><td class="paramname">-3,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01818">1818</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00127">SIO_SET_LATENCY_TIMER_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l02757">ftdi_write_eeprom()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00245">Ftdi::Context::set_latency()</a>.</p>

</div>
</div>
<a class="anchor" id="gacf7b6dcc4de33db2263ce8a421e18bfc"></a><!-- doxytag: member="ftdi.c::ftdi_get_latency_timer" ref="gacf7b6dcc4de33db2263ce8a421e18bfc" args="(struct ftdi_context *ftdi, unsigned char *latency)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_get_latency_timer </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>latency</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get latency timer</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">latency</td><td>Pointer to store latency value in</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>unable to get latency timer </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01845">1845</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00128">SIO_GET_LATENCY_TIMER_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00250">Ftdi::Context::latency()</a>.</p>

</div>
</div>
<a class="anchor" id="ga396c3bf1435fb3317755868e28c47414"></a><!-- doxytag: member="ftdi.c::ftdi_poll_modem_status" ref="ga396c3bf1435fb3317755868e28c47414" args="(struct ftdi_context *ftdi, unsigned short *status)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_poll_modem_status </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short *&#160;</td>
          <td class="paramname"><em>status</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Poll modem status information</p>
<p>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 <a class="el" href="group__libftdi.html#ga72d87e30015c98bd0be22e7c8c873345">ftdi_read_data()</a>. The chip generates the two stripped status bytes in the absence of data every 40 ms.</p>
<p>Layout of the first byte:</p>
<ul>
<li>B0..B3 - must be 0</li>
<li>B4 Clear to send (CTS) 0 = inactive 1 = active</li>
<li>B5 Data set ready (DTS) 0 = inactive 1 = active</li>
<li>B6 Ring indicator (RI) 0 = inactive 1 = active</li>
<li>B7 Receive line signal detect (RLSD) 0 = inactive 1 = active</li>
</ul>
<p>Layout of the second byte:</p>
<ul>
<li>B0 Data ready (DR)</li>
<li>B1 Overrun error (OE)</li>
<li>B2 Parity error (PE)</li>
<li>B3 Framing error (FE)</li>
<li>B4 Break interrupt (BI)</li>
<li>B5 Transmitter holding register (THRE)</li>
<li>B6 Transmitter empty (TEMT)</li>
<li>B7 Error in RCVR FIFO</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">status</td><td>Pointer to store status information in. Must be two bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>unable to retrieve status information </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01899">1899</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00124">SIO_POLL_MODEM_STATUS_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8c_source.html#l02757">ftdi_write_eeprom()</a>, and <a class="el" href="ftdi_8cpp_source.html#l00257">Ftdi::Context::poll_modem_status()</a>.</p>

</div>
</div>
<a class="anchor" id="gac3b3d2cc69edf567e653340f434c91e0"></a><!-- doxytag: member="ftdi.c::ftdi_setflowctrl" ref="gac3b3d2cc69edf567e653340f434c91e0" args="(struct ftdi_context *ftdi, int flowctrl)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_setflowctrl </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flowctrl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set flowcontrol for ftdi chip</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">flowctrl</td><td>flow control to use. should be SIO_DISABLE_FLOW_CTRL, SIO_RTS_CTS_HS, SIO_DTR_DSR_HS or SIO_XON_XOFF_HS</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>set flow control failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01925">1925</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00122">SIO_SET_FLOW_CTRL_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00218">Ftdi::Context::set_flow_control()</a>.</p>

</div>
</div>
<a class="anchor" id="ga47761f16762363288c55f5fff24620d5"></a><!-- doxytag: member="ftdi.c::ftdi_setdtr" ref="ga47761f16762363288c55f5fff24620d5" args="(struct ftdi_context *ftdi, int state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_setdtr </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>state</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set dtr line</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">state</td><td>state to set line to (1 or 0)</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>set dtr failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01948">1948</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00146">SIO_SET_DTR_HIGH</a>, <a class="el" href="ftdi_8h_source.html#l00147">SIO_SET_DTR_LOW</a>, <a class="el" href="ftdi_8h_source.html#l00123">SIO_SET_MODEM_CTRL_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00235">Ftdi::Context::set_dtr()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5713ba73288b3e1ac1d45096c917c1ab"></a><!-- doxytag: member="ftdi.c::ftdi_setrts" ref="ga5713ba73288b3e1ac1d45096c917c1ab" args="(struct ftdi_context *ftdi, int state)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_setrts </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>state</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set rts line</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">state</td><td>state to set line to (1 or 0)</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>set rts failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l01978">1978</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00123">SIO_SET_MODEM_CTRL_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00149">SIO_SET_RTS_HIGH</a>, <a class="el" href="ftdi_8h_source.html#l00150">SIO_SET_RTS_LOW</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00240">Ftdi::Context::set_rts()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5a8f23c2e77c8b58c1f44a11e2f52aa9"></a><!-- doxytag: member="ftdi.c::ftdi_setdtr_rts" ref="ga5a8f23c2e77c8b58c1f44a11e2f52aa9" args="(struct ftdi_context *ftdi, int dtr, int rts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_setdtr_rts </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set dtr and rts line in one pass</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">dtr</td><td>DTR state to set line to (1 or 0) </td></tr>
    <tr><td class="paramname">rts</td><td>RTS state to set line to (1 or 0)</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>set dtr/rts failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02009">2009</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00146">SIO_SET_DTR_HIGH</a>, <a class="el" href="ftdi_8h_source.html#l00147">SIO_SET_DTR_LOW</a>, <a class="el" href="ftdi_8h_source.html#l00123">SIO_SET_MODEM_CTRL_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00149">SIO_SET_RTS_HIGH</a>, <a class="el" href="ftdi_8h_source.html#l00150">SIO_SET_RTS_LOW</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00223">Ftdi::Context::set_modem_control()</a>.</p>

</div>
</div>
<a class="anchor" id="ga71eeabe2ee5474d5c0ceddc2e08766cd"></a><!-- doxytag: member="ftdi.c::ftdi_set_event_char" ref="ga71eeabe2ee5474d5c0ceddc2e08766cd" args="(struct ftdi_context *ftdi, unsigned char eventch, unsigned char enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_event_char </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>eventch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the special event character</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eventch</td><td>Event character </td></tr>
    <tr><td class="paramname">enable</td><td>0 to disable the event character, non-zero otherwise</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>unable to set event character </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02045">2045</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00125">SIO_SET_EVENT_CHAR_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00264">Ftdi::Context::set_event_char()</a>.</p>

</div>
</div>
<a class="anchor" id="gaeb9510a61f6648eb1bd57f0f99a390e1"></a><!-- doxytag: member="ftdi.c::ftdi_set_error_char" ref="gaeb9510a61f6648eb1bd57f0f99a390e1" args="(struct ftdi_context *ftdi, unsigned char errorch, unsigned char enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_set_error_char </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>errorch</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&#160;</td>
          <td class="paramname"><em>enable</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set error character</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">errorch</td><td>Error character </td></tr>
    <tr><td class="paramname">enable</td><td>0 to disable the error character, non-zero otherwise</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>unable to set error character </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02074">2074</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00207">ftdi_context::index</a>, <a class="el" href="ftdi_8h_source.html#l00126">SIO_SET_ERROR_CHAR_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00269">Ftdi::Context::set_error_char()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf2ce1365f476463d01d02d5aba5fa818"></a><!-- doxytag: member="ftdi.c::ftdi_eeprom_setsize" ref="gaf2ce1365f476463d01d02d5aba5fa818" args="(struct ftdi_context *ftdi, struct ftdi_eeprom *eeprom, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_eeprom_setsize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *&#160;</td>
          <td class="paramname"><em>eeprom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the eeprom size</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom</td><td>Pointer to <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> </td></tr>
    <tr><td class="paramname">size</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02100">2100</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00217">ftdi_context::eeprom_size</a>, and <a class="el" href="ftdi_8h_source.html#l00341">ftdi_eeprom::size</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00401">Ftdi::Eeprom::set_size()</a>.</p>

</div>
</div>
<a class="anchor" id="ga3302c00605356730893c0b11ef0dba03"></a><!-- doxytag: member="ftdi.c::ftdi_eeprom_initdefaults" ref="ga3302c00605356730893c0b11ef0dba03" args="(struct ftdi_eeprom *eeprom)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_eeprom_initdefaults </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *&#160;</td>
          <td class="paramname"><em>eeprom</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Init eeprom with default values.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eeprom</td><td>Pointer to <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02114">2114</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00333">ftdi_eeprom::cbus_function</a>, <a class="el" href="ftdi_8h_source.html#l00318">ftdi_eeprom::change_usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00306">ftdi_eeprom::chip_type</a>, <a class="el" href="ftdi_8h_source.html#l00022">FTDI_DEFAULT_EEPROM_SIZE</a>, <a class="el" href="ftdi_8h_source.html#l00335">ftdi_eeprom::high_current</a>, <a class="el" href="ftdi_8h_source.html#l00309">ftdi_eeprom::in_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00337">ftdi_eeprom::invert</a>, <a class="el" href="ftdi_8h_source.html#l00325">ftdi_eeprom::manufacturer</a>, <a class="el" href="ftdi_8h_source.html#l00322">ftdi_eeprom::max_power</a>, <a class="el" href="ftdi_8h_source.html#l00311">ftdi_eeprom::out_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00327">ftdi_eeprom::product</a>, <a class="el" href="ftdi_8h_source.html#l00299">ftdi_eeprom::product_id</a>, <a class="el" href="ftdi_8h_source.html#l00304">ftdi_eeprom::remote_wakeup</a>, <a class="el" href="ftdi_8h_source.html#l00302">ftdi_eeprom::self_powered</a>, <a class="el" href="ftdi_8h_source.html#l00329">ftdi_eeprom::serial</a>, <a class="el" href="ftdi_8h_source.html#l00341">ftdi_eeprom::size</a>, <a class="el" href="ftdi_8h_source.html#l00313">ftdi_eeprom::suspend_pull_downs</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_BM</a>, <a class="el" href="ftdi_8h_source.html#l00320">ftdi_eeprom::usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00316">ftdi_eeprom::use_serial</a>, and <a class="el" href="ftdi_8h_source.html#l00297">ftdi_eeprom::vendor_id</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00396">Ftdi::Eeprom::init_defaults()</a>.</p>

</div>
</div>
<a class="anchor" id="gaae86ddcceb7f95ac9d974fd20e10ccdf"></a><!-- doxytag: member="ftdi.c::ftdi_eeprom_free" ref="gaae86ddcceb7f95ac9d974fd20e10ccdf" args="(struct ftdi_eeprom *eeprom)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ftdi_eeprom_free </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *&#160;</td>
          <td class="paramname"><em>eeprom</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Frees allocated memory in eeprom.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eeprom</td><td>Pointer to <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02155">2155</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00325">ftdi_eeprom::manufacturer</a>, <a class="el" href="ftdi_8h_source.html#l00327">ftdi_eeprom::product</a>, and <a class="el" href="ftdi_8h_source.html#l00329">ftdi_eeprom::serial</a>.</p>

</div>
</div>
<a class="anchor" id="ga6e80677242c262c58169ea5565ae9163"></a><!-- doxytag: member="ftdi.c::ftdi_eeprom_build" ref="ga6e80677242c262c58169ea5565ae9163" args="(struct ftdi_eeprom *eeprom, unsigned char *output)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_eeprom_build </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *&#160;</td>
          <td class="paramname"><em>eeprom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>output</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Build binary output from <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> structure. Output is suitable for <a class="el" href="group__libftdi.html#ga28e530f10b046bcc353aa75938bddb31">ftdi_write_eeprom()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>This function doesn't handle FT2232x devices. Only FT232x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eeprom</td><td>Pointer to <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> </td></tr>
    <tr><td class="paramname">output</td><td>Buffer of 128 bytes to store eeprom image to</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">&gt;0,:</td><td>free eeprom size </td></tr>
    <tr><td class="paramname">-1,:</td><td>eeprom size (128 bytes) exceeded by custom strings </td></tr>
    <tr><td class="paramname">-2,:</td><td>Invalid eeprom pointer </td></tr>
    <tr><td class="paramname">-3,:</td><td>Invalid cbus function setting </td></tr>
    <tr><td class="paramname">-4,:</td><td>Chip doesn't support invert </td></tr>
    <tr><td class="paramname">-5,:</td><td>Chip doesn't support high current drive </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02189">2189</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00333">ftdi_eeprom::cbus_function</a>, <a class="el" href="ftdi_8h_source.html#l00318">ftdi_eeprom::change_usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00306">ftdi_eeprom::chip_type</a>, <a class="el" href="ftdi_8h_source.html#l00335">ftdi_eeprom::high_current</a>, <a class="el" href="ftdi_8h_source.html#l00289">HIGH_CURRENT_DRIVE</a>, <a class="el" href="ftdi_8h_source.html#l00309">ftdi_eeprom::in_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00337">ftdi_eeprom::invert</a>, <a class="el" href="ftdi_8h_source.html#l00325">ftdi_eeprom::manufacturer</a>, <a class="el" href="ftdi_8h_source.html#l00322">ftdi_eeprom::max_power</a>, <a class="el" href="ftdi_8h_source.html#l00311">ftdi_eeprom::out_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00327">ftdi_eeprom::product</a>, <a class="el" href="ftdi_8h_source.html#l00299">ftdi_eeprom::product_id</a>, <a class="el" href="ftdi_8h_source.html#l00304">ftdi_eeprom::remote_wakeup</a>, <a class="el" href="ftdi_8h_source.html#l00302">ftdi_eeprom::self_powered</a>, <a class="el" href="ftdi_8h_source.html#l00329">ftdi_eeprom::serial</a>, <a class="el" href="ftdi_8h_source.html#l00341">ftdi_eeprom::size</a>, <a class="el" href="ftdi_8h_source.html#l00313">ftdi_eeprom::suspend_pull_downs</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_2232C</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_AM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_BM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_R</a>, <a class="el" href="ftdi_8h_source.html#l00320">ftdi_eeprom::usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00316">ftdi_eeprom::use_serial</a>, and <a class="el" href="ftdi_8h_source.html#l00297">ftdi_eeprom::vendor_id</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00416">Ftdi::Eeprom::build()</a>.</p>

</div>
</div>
<a class="anchor" id="ga03beffe9080d466d70c90ce75fec26c9"></a><!-- doxytag: member="ftdi.c::ftdi_eeprom_decode" ref="ga03beffe9080d466d70c90ce75fec26c9" args="(struct ftdi_eeprom *eeprom, unsigned char *buf, int size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_eeprom_decode </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__eeprom.html">ftdi_eeprom</a> *&#160;</td>
          <td class="paramname"><em>eeprom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Decode binary EEPROM image into an <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> structure.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">eeprom</td><td>Pointer to <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a> which will be filled in. </td></tr>
    <tr><td class="paramname">buf</td><td>Buffer of <em>size</em> bytes of raw eeprom data </td></tr>
    <tr><td class="paramname">size</td><td>size size of eeprom data in bytes</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>something went wrong</td></tr>
  </table>
  </dd>
</dl>
<p>FIXME: How to pass size? How to handle size field in <a class="el" href="structftdi__eeprom.html" title="FTDI eeprom structure.">ftdi_eeprom</a>? FIXME: Strings are malloc'ed here and should be freed somewhere </p>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02413">2413</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00333">ftdi_eeprom::cbus_function</a>, <a class="el" href="ftdi_8h_source.html#l00318">ftdi_eeprom::change_usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00306">ftdi_eeprom::chip_type</a>, <a class="el" href="ftdi_8h_source.html#l00335">ftdi_eeprom::high_current</a>, <a class="el" href="ftdi_8h_source.html#l00289">HIGH_CURRENT_DRIVE</a>, <a class="el" href="ftdi_8h_source.html#l00309">ftdi_eeprom::in_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00337">ftdi_eeprom::invert</a>, <a class="el" href="ftdi_8h_source.html#l00325">ftdi_eeprom::manufacturer</a>, <a class="el" href="ftdi_8h_source.html#l00322">ftdi_eeprom::max_power</a>, <a class="el" href="ftdi_8h_source.html#l00311">ftdi_eeprom::out_is_isochronous</a>, <a class="el" href="ftdi_8h_source.html#l00327">ftdi_eeprom::product</a>, <a class="el" href="ftdi_8h_source.html#l00299">ftdi_eeprom::product_id</a>, <a class="el" href="ftdi_8h_source.html#l00304">ftdi_eeprom::remote_wakeup</a>, <a class="el" href="ftdi_8h_source.html#l00302">ftdi_eeprom::self_powered</a>, <a class="el" href="ftdi_8h_source.html#l00329">ftdi_eeprom::serial</a>, <a class="el" href="ftdi_8h_source.html#l00341">ftdi_eeprom::size</a>, <a class="el" href="ftdi_8h_source.html#l00313">ftdi_eeprom::suspend_pull_downs</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_AM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_BM</a>, <a class="el" href="ftdi_8h_source.html#l00025">TYPE_R</a>, <a class="el" href="ftdi_8h_source.html#l00320">ftdi_eeprom::usb_version</a>, <a class="el" href="ftdi_8h_source.html#l00316">ftdi_eeprom::use_serial</a>, and <a class="el" href="ftdi_8h_source.html#l00297">ftdi_eeprom::vendor_id</a>.</p>

</div>
</div>
<a class="anchor" id="ga650df1dc49ec78f0ee58b1c4f2644fd9"></a><!-- doxytag: member="ftdi.c::ftdi_read_eeprom_location" ref="ga650df1dc49ec78f0ee58b1c4f2644fd9" args="(struct ftdi_context *ftdi, int eeprom_addr, unsigned short *eeprom_val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_eeprom_location </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>eeprom_addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short *&#160;</td>
          <td class="paramname"><em>eeprom_val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read eeprom location</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom_addr</td><td>Address of eeprom location to be read </td></tr>
    <tr><td class="paramname">eeprom_val</td><td>Pointer to store read eeprom location</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02598">2598</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00131">SIO_READ_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00431">Ftdi::Eeprom::read_location()</a>.</p>

</div>
</div>
<a class="anchor" id="gac2607b0a26dd8d78431d30a3fd01c052"></a><!-- doxytag: member="ftdi.c::ftdi_read_eeprom" ref="gac2607b0a26dd8d78431d30a3fd01c052" args="(struct ftdi_context *ftdi, unsigned char *eeprom)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_eeprom </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>eeprom</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read eeprom</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom</td><td>Pointer to store eeprom into</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02619">2619</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00217">ftdi_context::eeprom_size</a>, <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00131">SIO_READ_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00421">Ftdi::Eeprom::read()</a>.</p>

</div>
</div>
<a class="anchor" id="gab978a76c2cc0dbfbc1fd6350db848300"></a><!-- doxytag: member="ftdi.c::ftdi_read_chipid" ref="gab978a76c2cc0dbfbc1fd6350db848300" args="(struct ftdi_context *ftdi, unsigned int *chipid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_chipid </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>chipid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read the FTDIChip-ID from R-type devices</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">chipid</td><td>Pointer to store FTDIChip-ID</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02662">2662</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00131">SIO_READ_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00411">Ftdi::Eeprom::chip_id()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf9fc6da50167f7160024aca768c8dccc"></a><!-- doxytag: member="ftdi.c::ftdi_read_eeprom_getsize" ref="gaf9fc6da50167f7160024aca768c8dccc" args="(struct ftdi_context *ftdi, unsigned char *eeprom, int maxsize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_read_eeprom_getsize </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>eeprom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>maxsize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Guesses size of eeprom by reading eeprom and comparing halves - will not work with blank eeprom Call this function then do a write then call again to see if size changes, if so write again.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom</td><td>Pointer to store eeprom into </td></tr>
    <tr><td class="paramname">maxsize</td><td>the size of the buffer to read into</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">-1,:</td><td>eeprom read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
    <tr><td class="paramname">&gt;=0,:</td><td>size of eeprom </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02698">2698</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00116">FTDI_DEVICE_IN_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00131">SIO_READ_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00179">ftdi_context::usb_read_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00406">Ftdi::Eeprom::size()</a>.</p>

</div>
</div>
<a class="anchor" id="ga5f2f678fc05cb8f92708fb1e5eb75100"></a><!-- doxytag: member="ftdi.c::ftdi_write_eeprom_location" ref="ga5f2f678fc05cb8f92708fb1e5eb75100" args="(struct ftdi_context *ftdi, int eeprom_addr, unsigned short eeprom_val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_eeprom_location </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>eeprom_addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short&#160;</td>
          <td class="paramname"><em>eeprom_val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write eeprom location</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom_addr</td><td>Address of eeprom location to be written </td></tr>
    <tr><td class="paramname">eeprom_val</td><td>Value to be written</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02734">2734</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00132">SIO_WRITE_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00436">Ftdi::Eeprom::write_location()</a>.</p>

</div>
</div>
<a class="anchor" id="ga28e530f10b046bcc353aa75938bddb31"></a><!-- doxytag: member="ftdi.c::ftdi_write_eeprom" ref="ga28e530f10b046bcc353aa75938bddb31" args="(struct ftdi_context *ftdi, unsigned char *eeprom)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_write_eeprom </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char *&#160;</td>
          <td class="paramname"><em>eeprom</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write eeprom</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a> </td></tr>
    <tr><td class="paramname">eeprom</td><td>Pointer to read eeprom from</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>read failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02757">2757</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00217">ftdi_context::eeprom_size</a>, <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8c_source.html#l01899">ftdi_poll_modem_status()</a>, <a class="el" href="ftdi_8c_source.html#l01818">ftdi_set_latency_timer()</a>, <a class="el" href="ftdi_8c_source.html#l00835">ftdi_usb_reset()</a>, <a class="el" href="ftdi_8h_source.html#l00132">SIO_WRITE_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00426">Ftdi::Eeprom::write()</a>.</p>

</div>
</div>
<a class="anchor" id="ga25eb9a83a925065b6c3b61b8f0565951"></a><!-- doxytag: member="ftdi.c::ftdi_erase_eeprom" ref="ga25eb9a83a925065b6c3b61b8f0565951" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ftdi_erase_eeprom </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Erase eeprom</p>
<p>This is not supported on FT232R/FT245R according to the MProg manual from FTDI.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">0,:</td><td>all fine </td></tr>
    <tr><td class="paramname">-1,:</td><td>erase failed </td></tr>
    <tr><td class="paramname">-2,:</td><td>USB device unavailable </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02797">2797</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00115">FTDI_DEVICE_OUT_REQTYPE</a>, <a class="el" href="ftdi_8c_source.html#l00047">ftdi_error_return</a>, <a class="el" href="ftdi_8h_source.html#l00133">SIO_ERASE_EEPROM_REQUEST</a>, <a class="el" href="ftdi_8h_source.html#l00177">ftdi_context::usb_dev</a>, and <a class="el" href="ftdi_8h_source.html#l00181">ftdi_context::usb_write_timeout</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00441">Ftdi::Eeprom::erase()</a>.</p>

</div>
</div>
<a class="anchor" id="ga28c84d963760d7396e5a2992e63a9354"></a><!-- doxytag: member="ftdi.c::ftdi_get_error_string" ref="ga28c84d963760d7396e5a2992e63a9354" args="(struct ftdi_context *ftdi)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* ftdi_get_error_string </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structftdi__context.html">ftdi_context</a> *&#160;</td>
          <td class="paramname"><em>ftdi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get string representation for last error code</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ftdi</td><td>pointer to <a class="el" href="structftdi__context.html" title="Main context structure for all libftdi functions.">ftdi_context</a></td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">Pointer</td><td>to error string </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="ftdi_8c_source.html#l02815">2815</a> of file <a class="el" href="ftdi_8c_source.html">ftdi.c</a>.</p>

<p>References <a class="el" href="ftdi_8h_source.html#l00220">ftdi_context::error_str</a>.</p>

<p>Referenced by <a class="el" href="ftdi_8cpp_source.html#l00299">Ftdi::Context::error_string()</a>.</p>

</div>
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>
Generated for libftdi by <a href="http://www.doxygen.org/
index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a>
1.7.4</small></address>
</body>
</html>