<!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: Driver operations</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>Driver operations</h1> </div> </div> <div class="contents"> <p>Internally, libfprint is abstracted into various drivers to communicate with the different types of supported fingerprint readers. <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">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__drv.html#ga9e7f611a3530260ad66410c10b83aacb">fp_driver_get_name</a> (struct fp_driver *drv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves the name of the driver. <a href="#ga9e7f611a3530260ad66410c10b83aacb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__drv.html#gabf70568ddd186185d81433910f1a1c87">fp_driver_get_full_name</a> (struct fp_driver *drv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a descriptive name of the driver. <a href="#gabf70568ddd186185d81433910f1a1c87"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__drv.html#ga74c62e3603d6f046239604c124baa741">fp_driver_get_driver_id</a> (struct fp_driver *drv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves the driver ID code for a driver. <a href="#ga74c62e3603d6f046239604c124baa741"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum <a class="el" href="group__dev.html#ga522218ddb7c587d2bb472ea399588ffa">fp_scan_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__drv.html#gabbb0d6cca3a0e0c0c9f0aec437ce6c2e">fp_driver_get_scan_type</a> (struct fp_driver *drv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves the scan type for the devices associated with the driver. <a href="#gabbb0d6cca3a0e0c0c9f0aec437ce6c2e"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Internally, libfprint is abstracted into various drivers to communicate with the different types of supported fingerprint readers. </p> <p>libfprint works hard so that you don't have to care about these internal abstractions, however there are some situations where you may be interested in a little behind-the-scenes driver info.</p> <p>You can obtain the driver for a device using <a class="el" href="group__dev.html#ga2c59ac8e66e76587265dd44676db006b" title="Get the driver for a fingerprint device.">fp_dev_get_driver()</a>, which you can pass to the functions documented on this page.</p> <h2><a class="anchor" id="driver_id"></a> Driver IDs</h2> <p>Each driver is assigned a unique ID by the project maintainer. These assignments are <a href="http://www.reactivated.net/fprint/Driver_ID_assignments">documented on the wiki</a> and will never change.</p> <p>The only reason you may be interested in retrieving the driver ID for a driver is for the purpose of checking if some print data is compatible with a device. libfprint uses the driver ID as one way of checking that the print you are trying to verify is compatible with the device in question - it ensures that enrollment data from one driver is never fed to another. Note that libfprint does provide you with helper functions to determine whether a print is compatible with a device, so under most circumstances, you don't have to worry about driver IDs at all. </p> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga9e7f611a3530260ad66410c10b83aacb"></a><!-- doxytag: member="core.c::fp_driver_get_name" ref="ga9e7f611a3530260ad66410c10b83aacb" args="(struct fp_driver *drv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* fp_driver_get_name </td> <td>(</td> <td class="paramtype">struct fp_driver * </td> <td class="paramname"> <em>drv</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Retrieves the name of the driver. </p> <p>For example: "upekts" </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>drv</em> </td><td>the driver </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the driver name. Must not be modified or freed. </dd></dl> </div> </div> <a class="anchor" id="gabf70568ddd186185d81433910f1a1c87"></a><!-- doxytag: member="core.c::fp_driver_get_full_name" ref="gabf70568ddd186185d81433910f1a1c87" args="(struct fp_driver *drv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* fp_driver_get_full_name </td> <td>(</td> <td class="paramtype">struct fp_driver * </td> <td class="paramname"> <em>drv</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Retrieves a descriptive name of the driver. </p> <p>For example: "UPEK TouchStrip" </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>drv</em> </td><td>the driver </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the descriptive name. Must not be modified or freed. </dd></dl> </div> </div> <a class="anchor" id="ga74c62e3603d6f046239604c124baa741"></a><!-- doxytag: member="core.c::fp_driver_get_driver_id" ref="ga74c62e3603d6f046239604c124baa741" args="(struct fp_driver *drv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">uint16_t fp_driver_get_driver_id </td> <td>(</td> <td class="paramtype">struct fp_driver * </td> <td class="paramname"> <em>drv</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Retrieves the driver ID code for a driver. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>drv</em> </td><td>the driver </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the driver ID </dd></dl> </div> </div> <a class="anchor" id="gabbb0d6cca3a0e0c0c9f0aec437ce6c2e"></a><!-- doxytag: member="core.c::fp_driver_get_scan_type" ref="gabbb0d6cca3a0e0c0c9f0aec437ce6c2e" args="(struct fp_driver *drv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__dev.html#ga522218ddb7c587d2bb472ea399588ffa">fp_scan_type</a> fp_driver_get_scan_type </td> <td>(</td> <td class="paramtype">struct fp_driver * </td> <td class="paramname"> <em>drv</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Retrieves the scan type for the devices associated with the driver. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>drv</em> </td><td>the driver </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the scan type </dd></dl> </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>