<!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>libfprint: Device discovery</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.1 --> <script type="text/javascript"> function hasClass(ele,cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); } function addClass(ele,cls) { if (!this.hasClass(ele,cls)) ele.className += " "+cls; } function removeClass(ele,cls) { if (hasClass(ele,cls)) { var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)'); ele.className=ele.className.replace(reg,' '); } } function toggleVisibility(linkObj) { var base = linkObj.getAttribute('id'); var summary = document.getElementById(base + '-summary'); var content = document.getElementById(base + '-content'); var trigger = document.getElementById(base + '-trigger'); if ( hasClass(linkObj,'closed') ) { summary.style.display = 'none'; content.style.display = 'block'; trigger.src = 'open.png'; removeClass(linkObj,'closed'); addClass(linkObj,'opened'); } else if ( hasClass(linkObj,'opened') ) { summary.style.display = 'block'; content.style.display = 'none'; trigger.src = 'closed.png'; removeClass(linkObj,'opened'); addClass(linkObj,'closed'); } return false; } </script> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#func-members">Functions</a> </div> <div class="headertitle"> <h1>Device discovery</h1> </div> </div> <div class="contents"> <p>These functions allow you to scan the system for supported fingerprint scanning hardware. <a href="#_details">More...</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct fp_dscv_dev ** </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#gacb1b399085676739d4e1d9868638f3d6">fp_discover_devs</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Scans the system and returns a list of discovered devices. <a href="#gacb1b399085676739d4e1d9868638f3d6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#ga225dc69e61bd49af648897a2e6156a24">fp_dscv_devs_free</a> (struct fp_dscv_dev **devs)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free a list of discovered devices. <a href="#ga225dc69e61bd49af648897a2e6156a24"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct fp_driver * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#ga630d5f065f553e831f6e6b1b0064d061">fp_dscv_dev_get_driver</a> (struct fp_dscv_dev *dev)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the <a class="el" href="group__drv.html">driver</a> for a discovered device. <a href="#ga630d5f065f553e831f6e6b1b0064d061"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#gaa2f2b76b8cb8368ed4a453ea9699412f">fp_dscv_dev_get_devtype</a> (struct fp_dscv_dev *dev)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the <a class="el" href="group__dev.html#devtype">devtype</a> for a discovered device. <a href="#gaa2f2b76b8cb8368ed4a453ea9699412f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#ga89cffce735038e47a28f19a41c37b37b">fp_dscv_dev_supports_print_data</a> (struct fp_dscv_dev *dev, struct fp_print_data *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determines if a specific <a class="el" href="group__print__data.html">stored print</a> appears to be compatible with a discovered device. <a href="#ga89cffce735038e47a28f19a41c37b37b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#gafb427e5a0fa78f3aee41b63f0da093ac">fp_dscv_dev_supports_dscv_print</a> (struct fp_dscv_dev *dev, struct fp_dscv_print *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determines if a specific <a class="el" href="group__dscv__print.html">discovered print</a> appears to be compatible with a discovered device. <a href="#gafb427e5a0fa78f3aee41b63f0da093ac"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct fp_dscv_dev * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#ga979e47e55effbba8d38fb95236413c2a">fp_dscv_dev_for_print_data</a> (struct fp_dscv_dev **devs, struct fp_print_data *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Searches a list of discovered devices for a device that appears to be compatible with a <a class="el" href="group__print__data.html">stored print</a>. <a href="#ga979e47e55effbba8d38fb95236413c2a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct fp_dscv_dev * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__dscv__dev.html#gae1fa4cad50e81d877ed0c13bb01dd08f">fp_dscv_dev_for_dscv_print</a> (struct fp_dscv_dev **devs, struct fp_dscv_print *print)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Searches a list of discovered devices for a device that appears to be compatible with a <a class="el" href="group__dscv__print.html">discovered print</a>. <a href="#gae1fa4cad50e81d877ed0c13bb01dd08f"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>These functions allow you to scan the system for supported fingerprint scanning hardware. </p> <p>This is your starting point when integrating libfprint into your software.</p> <p>When you've identified a discovered device that you would like to control, you can open it with <a class="el" href="group__dev.html#gaadd81517ba2e3f1279525a326d0e6ee4" title="Opens and initialises a device.">fp_dev_open()</a>. Note that discovered devices may no longer be available at the time when you want to open them, for example the user may have unplugged the device. </p> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gacb1b399085676739d4e1d9868638f3d6"></a><!-- doxytag: member="core.c::fp_discover_devs" ref="gacb1b399085676739d4e1d9868638f3d6" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct fp_dscv_dev** fp_discover_devs </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Scans the system and returns a list of discovered devices. </p> <p>This is your entry point into finding a fingerprint reader to operate. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>a NULL-terminated list of discovered devices. Must be freed with <a class="el" href="group__dscv__dev.html#ga225dc69e61bd49af648897a2e6156a24" title="Free a list of discovered devices.">fp_dscv_devs_free()</a> after use. </dd></dl> </div> </div> <a class="anchor" id="ga225dc69e61bd49af648897a2e6156a24"></a><!-- doxytag: member="core.c::fp_dscv_devs_free" ref="ga225dc69e61bd49af648897a2e6156a24" args="(struct fp_dscv_dev **devs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void fp_dscv_devs_free </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev ** </td> <td class="paramname"> <em>devs</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Free a list of discovered devices. </p> <p>This function destroys the list and all discovered devices that it included, so make sure you have opened your discovered device <b>before</b> freeing the list. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>devs</em> </td><td>the list of discovered devices. If NULL, function simply returns. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga630d5f065f553e831f6e6b1b0064d061"></a><!-- doxytag: member="core.c::fp_dscv_dev_get_driver" ref="ga630d5f065f553e831f6e6b1b0064d061" args="(struct fp_dscv_dev *dev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct fp_driver* fp_dscv_dev_get_driver </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev * </td> <td class="paramname"> <em>dev</em></td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the <a class="el" href="group__drv.html">driver</a> for a discovered device. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>the discovered device </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the driver backing the device </dd></dl> </div> </div> <a class="anchor" id="gaa2f2b76b8cb8368ed4a453ea9699412f"></a><!-- doxytag: member="core.c::fp_dscv_dev_get_devtype" ref="gaa2f2b76b8cb8368ed4a453ea9699412f" args="(struct fp_dscv_dev *dev)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">uint32_t fp_dscv_dev_get_devtype </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev * </td> <td class="paramname"> <em>dev</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the <a class="el" href="group__dev.html#devtype">devtype</a> for a discovered device. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>the discovered device </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the devtype of the device </dd></dl> </div> </div> <a class="anchor" id="ga89cffce735038e47a28f19a41c37b37b"></a><!-- doxytag: member="core.c::fp_dscv_dev_supports_print_data" ref="ga89cffce735038e47a28f19a41c37b37b" args="(struct fp_dscv_dev *dev, struct fp_print_data *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int fp_dscv_dev_supports_print_data </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev * </td> <td class="paramname"> <em>dev</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct fp_print_data * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Determines if a specific <a class="el" href="group__print__data.html">stored print</a> appears to be compatible with a discovered device. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>the discovered device </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>the print for compatibility checking </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>1 if the print is compatible with the device, 0 otherwise </dd></dl> <p>Referenced by <a class="el" href="group__dscv__dev.html#ga979e47e55effbba8d38fb95236413c2a">fp_dscv_dev_for_print_data()</a>.</p> </div> </div> <a class="anchor" id="gafb427e5a0fa78f3aee41b63f0da093ac"></a><!-- doxytag: member="core.c::fp_dscv_dev_supports_dscv_print" ref="gafb427e5a0fa78f3aee41b63f0da093ac" args="(struct fp_dscv_dev *dev, struct fp_dscv_print *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int fp_dscv_dev_supports_dscv_print </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev * </td> <td class="paramname"> <em>dev</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct fp_dscv_print * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Determines if a specific <a class="el" href="group__dscv__print.html">discovered print</a> appears to be compatible with a discovered device. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dev</em> </td><td>the discovered device </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>the discovered print for compatibility checking </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>1 if the print is compatible with the device, 0 otherwise </dd></dl> <p>Referenced by <a class="el" href="group__dscv__dev.html#gae1fa4cad50e81d877ed0c13bb01dd08f">fp_dscv_dev_for_dscv_print()</a>.</p> </div> </div> <a class="anchor" id="ga979e47e55effbba8d38fb95236413c2a"></a><!-- doxytag: member="core.c::fp_dscv_dev_for_print_data" ref="ga979e47e55effbba8d38fb95236413c2a" args="(struct fp_dscv_dev **devs, struct fp_print_data *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct fp_dscv_dev* fp_dscv_dev_for_print_data </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev ** </td> <td class="paramname"> <em>devs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct fp_print_data * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Searches a list of discovered devices for a device that appears to be compatible with a <a class="el" href="group__print__data.html">stored print</a>. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>devs</em> </td><td>a list of discovered devices </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>the print under inspection </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the first discovered device that appears to support the print, or NULL if no apparently compatible devices could be found </dd></dl> <p>References <a class="el" href="group__dscv__dev.html#ga89cffce735038e47a28f19a41c37b37b">fp_dscv_dev_supports_print_data()</a>.</p> </div> </div> <a class="anchor" id="gae1fa4cad50e81d877ed0c13bb01dd08f"></a><!-- doxytag: member="core.c::fp_dscv_dev_for_dscv_print" ref="gae1fa4cad50e81d877ed0c13bb01dd08f" args="(struct fp_dscv_dev **devs, struct fp_dscv_print *print)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct fp_dscv_dev* fp_dscv_dev_for_dscv_print </td> <td>(</td> <td class="paramtype">struct fp_dscv_dev ** </td> <td class="paramname"> <em>devs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct fp_dscv_print * </td> <td class="paramname"> <em>print</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Searches a list of discovered devices for a device that appears to be compatible with a <a class="el" href="group__dscv__print.html">discovered print</a>. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>devs</em> </td><td>a list of discovered devices </td></tr> <tr><td valign="top"></td><td valign="top"><em>print</em> </td><td>the print under inspection </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the first discovered device that appears to support the print, or NULL if no apparently compatible devices could be found </dd></dl> <p>References <a class="el" href="group__dscv__dev.html#gafb427e5a0fa78f3aee41b63f0da093ac">fp_dscv_dev_supports_dscv_print()</a>.</p> </div> </div> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Sep 8 2010 for libfprint by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>