Files
KSDK_2.0_MK22FN512xxx12/docs/Kinetis SDK v.2.0 API Reference Manual/group__smartcard__emvsim__driver.html
2016-08-09 18:06:35 +02:00

559 lines
34 KiB
HTML

<!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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Kinetis SDK v.2.0 API Reference Manual: Smart Card EMVSIM Driver</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Kinetis SDK v.2.0 API Reference Manual
&#160;<span id="projectnumber">Rev. 0</span>
</div>
<div id="projectbrief">Freescale Semiconductor, Inc.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<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>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__smartcard__emvsim__driver.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#files">Files</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">Smart Card EMVSIM Driver<div class="ingroups"><a class="el" href="group__smartcard.html">Smart Card</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<p>The SmartCard EMVSIM driver covers the transmission functionality in the CPU mode. The driver supports non-blocking (asynchronous) type of data transfers. The blocking (synchronous) transfer is supported only by the RTOS adaptation layer. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:fsl__smartcard__emvsim_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fsl__smartcard__emvsim_8h.html">fsl_smartcard_emvsim.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga37c9079278fa53fc6671967d7fa659d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga37c9079278fa53fc6671967d7fa659d1"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga37c9079278fa53fc6671967d7fa659d1">SMARTCARD_EMV_RX_NACK_THRESHOLD</a>&#160;&#160;&#160;(5u)</td></tr>
<tr class="memdesc:ga37c9079278fa53fc6671967d7fa659d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">EMV RX NACK interrupt generation threshold. <br/></td></tr>
<tr class="separator:ga37c9079278fa53fc6671967d7fa659d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga689c73e35bdc86ca3bca8335a1e31f34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga689c73e35bdc86ca3bca8335a1e31f34"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga689c73e35bdc86ca3bca8335a1e31f34">SMARTCARD_EMV_TX_NACK_THRESHOLD</a>&#160;&#160;&#160;(5u)</td></tr>
<tr class="memdesc:ga689c73e35bdc86ca3bca8335a1e31f34"><td class="mdescLeft">&#160;</td><td class="mdescRight">EMV TX NACK interrupt generation threshold. <br/></td></tr>
<tr class="separator:ga689c73e35bdc86ca3bca8335a1e31f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga415940e1d91fb5836e2de3cc21ec4530"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga415940e1d91fb5836e2de3cc21ec4530"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga415940e1d91fb5836e2de3cc21ec4530">SMARTCARD_WWT_ADJUSTMENT</a>&#160;&#160;&#160;(180u)</td></tr>
<tr class="memdesc:ga415940e1d91fb5836e2de3cc21ec4530"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart card Word Wait Timer adjustment value. <br/></td></tr>
<tr class="separator:ga415940e1d91fb5836e2de3cc21ec4530"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga62eae0976143c51330053a12722cfff3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga62eae0976143c51330053a12722cfff3"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga62eae0976143c51330053a12722cfff3">SMARTCARD_CWT_ADJUSTMENT</a>&#160;&#160;&#160;(3u)</td></tr>
<tr class="memdesc:ga62eae0976143c51330053a12722cfff3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Smart card Character Wait Timer adjustment value. <br/></td></tr>
<tr class="separator:ga62eae0976143c51330053a12722cfff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gacd1edab274da411c5a531be31a5bcff2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gacd1edab274da411c5a531be31a5bcff2">emvsim_gpc_clock_select_t</a> { <br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggacd1edab274da411c5a531be31a5bcff2a8fb90ba8733a41521d93f2088fb63e3d">kEMVSIM_GPCClockDisable</a> = 0u,
<br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggacd1edab274da411c5a531be31a5bcff2a063929de1a55dc769627e6c48e5b2e6e">kEMVSIM_GPCCardClock</a> = 1u,
<br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggacd1edab274da411c5a531be31a5bcff2ac96b15eca523e2644494f7573f2e7307">kEMVSIM_GPCRxClock</a> = 2u,
<br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggacd1edab274da411c5a531be31a5bcff2a79ad627623e1ac43cf112cf72bdfa386">kEMVSIM_GPCTxClock</a> = 3u
<br/>
}</td></tr>
<tr class="memdesc:gacd1edab274da411c5a531be31a5bcff2"><td class="mdescLeft">&#160;</td><td class="mdescRight">General Purpose Counter clock selections. <a href="group__smartcard__emvsim__driver.html#gacd1edab274da411c5a531be31a5bcff2">More...</a><br/></td></tr>
<tr class="separator:gacd1edab274da411c5a531be31a5bcff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab06714ff51f473821a5e91b5e84455e8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gab06714ff51f473821a5e91b5e84455e8">emvsim_presence_detect_edge_t</a> { <br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggab06714ff51f473821a5e91b5e84455e8a039555fc8af765db943aba578cfa5d94">kEMVSIM_DetectOnFallingEdge</a> = 0u,
<br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggab06714ff51f473821a5e91b5e84455e8afafb8119e71883d199bbeefe384a0e7b">kEMVSIM_DetectOnRisingEdge</a> = 1u
<br/>
}</td></tr>
<tr class="memdesc:gab06714ff51f473821a5e91b5e84455e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">EMVSIM card presence detection edge control. <a href="group__smartcard__emvsim__driver.html#gab06714ff51f473821a5e91b5e84455e8">More...</a><br/></td></tr>
<tr class="separator:gab06714ff51f473821a5e91b5e84455e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabdd4317cf95974fafe18dffdd12c1f4b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gabdd4317cf95974fafe18dffdd12c1f4b">emvsim_presence_detect_status_t</a> { <br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggabdd4317cf95974fafe18dffdd12c1f4ba4bb5a8cc8d0d73810c0d877da6cd2314">kEMVSIM_DetectPinIsLow</a> = 0u,
<br/>
&#160;&#160;<a class="el" href="group__smartcard__emvsim__driver.html#ggabdd4317cf95974fafe18dffdd12c1f4ba3dab39c83595d8e637846377cc42f253">kEMVSIM_DetectPinIsHigh</a> = 1u
<br/>
}</td></tr>
<tr class="memdesc:gabdd4317cf95974fafe18dffdd12c1f4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">EMVSIM card presence detection status. <a href="group__smartcard__emvsim__driver.html#gabdd4317cf95974fafe18dffdd12c1f4b">More...</a><br/></td></tr>
<tr class="separator:gabdd4317cf95974fafe18dffdd12c1f4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Smart card EMVSIM Driver</h2></td></tr>
<tr class="memitem:gad69d847bed754e7ead81e9b2e9ad0bfb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gad69d847bed754e7ead81e9b2e9ad0bfb">SMARTCARD_EMVSIM_GetDefaultConfig</a> (<a class="el" href="group__smartcard.html#structsmartcard__card__params__t">smartcard_card_params_t</a> *cardParams)</td></tr>
<tr class="memdesc:gad69d847bed754e7ead81e9b2e9ad0bfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fill in smartcard_card_params structure with default values according EMV 4.3 specification. <a href="#gad69d847bed754e7ead81e9b2e9ad0bfb">More...</a><br/></td></tr>
<tr class="separator:gad69d847bed754e7ead81e9b2e9ad0bfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga07ddc400aa5d62296a3e64d2b0ecbde7"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga07ddc400aa5d62296a3e64d2b0ecbde7">SMARTCARD_EMVSIM_Init</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context, uint32_t srcClock_Hz)</td></tr>
<tr class="memdesc:ga07ddc400aa5d62296a3e64d2b0ecbde7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes an EMVSIM peripheral for smart card/ISO-7816 operation. <a href="#ga07ddc400aa5d62296a3e64d2b0ecbde7">More...</a><br/></td></tr>
<tr class="separator:ga07ddc400aa5d62296a3e64d2b0ecbde7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0417dcf491902a27c8146980bdc948d1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga0417dcf491902a27c8146980bdc948d1">SMARTCARD_EMVSIM_Deinit</a> (EMVSIM_Type *base)</td></tr>
<tr class="memdesc:ga0417dcf491902a27c8146980bdc948d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function disables the EMVSIM interrupts, disables the transmitter and receiver, flushes the FIFOs and gates EMVSIM clock in SIM. <a href="#ga0417dcf491902a27c8146980bdc948d1">More...</a><br/></td></tr>
<tr class="separator:ga0417dcf491902a27c8146980bdc948d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ab4e721e1f497736b7d1a8bf50befd6"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga6ab4e721e1f497736b7d1a8bf50befd6">SMARTCARD_EMVSIM_GetTransferRemainingBytes</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context)</td></tr>
<tr class="memdesc:ga6ab4e721e1f497736b7d1a8bf50befd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the previous EMVSIM transfer has finished. <a href="#ga6ab4e721e1f497736b7d1a8bf50befd6">More...</a><br/></td></tr>
<tr class="separator:ga6ab4e721e1f497736b7d1a8bf50befd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb83e24714896d5ccf5acc0f8b7ad480"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gadb83e24714896d5ccf5acc0f8b7ad480">SMARTCARD_EMVSIM_AbortTransfer</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context)</td></tr>
<tr class="memdesc:gadb83e24714896d5ccf5acc0f8b7ad480"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates an asynchronous EMVSIM transfer early. <a href="#gadb83e24714896d5ccf5acc0f8b7ad480">More...</a><br/></td></tr>
<tr class="separator:gadb83e24714896d5ccf5acc0f8b7ad480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad16ebfe6c04c466a024bc832518bb089"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gad16ebfe6c04c466a024bc832518bb089">SMARTCARD_EMVSIM_TransferNonBlocking</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context, <a class="el" href="group__smartcard.html#structsmartcard__xfer__t">smartcard_xfer_t</a> *xfer)</td></tr>
<tr class="memdesc:gad16ebfe6c04c466a024bc832518bb089"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transfer data using interrupts. <a href="#gad16ebfe6c04c466a024bc832518bb089">More...</a><br/></td></tr>
<tr class="separator:gad16ebfe6c04c466a024bc832518bb089"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae6d4686bbd308d308ee183843cd0c9e7"><td class="memItemLeft" align="right" valign="top">status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#gae6d4686bbd308d308ee183843cd0c9e7">SMARTCARD_EMVSIM_Control</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context, <a class="el" href="group__smartcard.html#gac4b9128bb3719dfb0675abdb6e18daae">smartcard_control_t</a> control, uint32_t param)</td></tr>
<tr class="memdesc:gae6d4686bbd308d308ee183843cd0c9e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Controls EMVSIM module as per different user request. <a href="#gae6d4686bbd308d308ee183843cd0c9e7">More...</a><br/></td></tr>
<tr class="separator:gae6d4686bbd308d308ee183843cd0c9e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga117ab705974c45d57916edb09515c15c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__smartcard__emvsim__driver.html#ga117ab705974c45d57916edb09515c15c">SMARTCARD_EMVSIM_IRQHandler</a> (EMVSIM_Type *base, <a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *context)</td></tr>
<tr class="memdesc:ga117ab705974c45d57916edb09515c15c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles EMVSIM module interrupts. <a href="#ga117ab705974c45d57916edb09515c15c">More...</a><br/></td></tr>
<tr class="separator:ga117ab705974c45d57916edb09515c15c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="gacd1edab274da411c5a531be31a5bcff2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__smartcard__emvsim__driver.html#gacd1edab274da411c5a531be31a5bcff2">emvsim_gpc_clock_select_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggacd1edab274da411c5a531be31a5bcff2a8fb90ba8733a41521d93f2088fb63e3d"></a>kEMVSIM_GPCClockDisable</em>&#160;</td><td class="fielddoc">
<p>disabled </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd1edab274da411c5a531be31a5bcff2a063929de1a55dc769627e6c48e5b2e6e"></a>kEMVSIM_GPCCardClock</em>&#160;</td><td class="fielddoc">
<p>card clock </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd1edab274da411c5a531be31a5bcff2ac96b15eca523e2644494f7573f2e7307"></a>kEMVSIM_GPCRxClock</em>&#160;</td><td class="fielddoc">
<p>receive clock </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd1edab274da411c5a531be31a5bcff2a79ad627623e1ac43cf112cf72bdfa386"></a>kEMVSIM_GPCTxClock</em>&#160;</td><td class="fielddoc">
<p>transmit ETU clock </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gab06714ff51f473821a5e91b5e84455e8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__smartcard__emvsim__driver.html#gab06714ff51f473821a5e91b5e84455e8">emvsim_presence_detect_edge_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggab06714ff51f473821a5e91b5e84455e8a039555fc8af765db943aba578cfa5d94"></a>kEMVSIM_DetectOnFallingEdge</em>&#160;</td><td class="fielddoc">
<p>presence detect on falling edge </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggab06714ff51f473821a5e91b5e84455e8afafb8119e71883d199bbeefe384a0e7b"></a>kEMVSIM_DetectOnRisingEdge</em>&#160;</td><td class="fielddoc">
<p>presence detect on rising edge </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gabdd4317cf95974fafe18dffdd12c1f4b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group__smartcard__emvsim__driver.html#gabdd4317cf95974fafe18dffdd12c1f4b">emvsim_presence_detect_status_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggabdd4317cf95974fafe18dffdd12c1f4ba4bb5a8cc8d0d73810c0d877da6cd2314"></a>kEMVSIM_DetectPinIsLow</em>&#160;</td><td class="fielddoc">
<p>presence detect pin is logic low </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggabdd4317cf95974fafe18dffdd12c1f4ba3dab39c83595d8e637846377cc42f253"></a>kEMVSIM_DetectPinIsHigh</em>&#160;</td><td class="fielddoc">
<p>presence detect pin is logic high </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gad69d847bed754e7ead81e9b2e9ad0bfb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SMARTCARD_EMVSIM_GetDefaultConfig </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__card__params__t">smartcard_card_params_t</a> *&#160;</td>
<td class="paramname"><em>cardParams</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cardParams</td><td>The configuration structure of type <a class="el" href="group__smartcard.html#structsmartcard__interface__config__t" title="Defines user specified configuration of Smart card interface. ">smartcard_interface_config_t</a>. Function fill in members: Fi = 372; Di = 1; currentD = 1; WI = 0x0A; GTN = 0x00; with default values. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga07ddc400aa5d62296a3e64d2b0ecbde7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SMARTCARD_EMVSIM_Init </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>srcClock_Hz</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function Un-gate EMVSIM clock, initializes the module to EMV default settings, configures the IRQ, enables the module-level interrupt to the core and initialize driver context.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM peripheral base address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure. </td></tr>
<tr><td class="paramname">srcClock_Hz</td><td>Smart card clock generation module source clock.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An error code or kStatus_SMARTCARD_Success. </dd></dl>
</div>
</div>
<a class="anchor" id="ga0417dcf491902a27c8146980bdc948d1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SMARTCARD_EMVSIM_Deinit </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM module base address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6ab4e721e1f497736b7d1a8bf50befd6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t SMARTCARD_EMVSIM_GetTransferRemainingBytes </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>When performing an async transfer, call this function to ascertain the context of the current transfer: in progress (or busy) or complete (success). If the transfer is still in progress, the user can obtain the number of words that have not been transferred.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM module base address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes not transferred. </dd></dl>
</div>
</div>
<a class="anchor" id="gadb83e24714896d5ccf5acc0f8b7ad480"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SMARTCARD_EMVSIM_AbortTransfer </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>During an async EMVSIM transfer, the user can terminate the transfer early if the transfer is still in progress.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM peripheral address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_SMARTCARD_Success</td><td>The transmit abort was successful. </td></tr>
<tr><td class="paramname">kStatus_SMARTCARD_NoTransmitInProgress</td><td>No transmission is currently in progress. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad16ebfe6c04c466a024bc832518bb089"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SMARTCARD_EMVSIM_TransferNonBlocking </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__xfer__t">smartcard_xfer_t</a> *&#160;</td>
<td class="paramname"><em>xfer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A non-blocking (also known as asynchronous) function means that the function returns immediately after initiating the transfer function. The application has to get the transfer status to see when the transfer is complete. In other words, after calling non-blocking (asynchronous) transfer function, the application must get the transfer status to check if transmit is completed or not.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM peripheral base address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure. </td></tr>
<tr><td class="paramname">xfer</td><td>A pointer to smart card transfer structure where are linked buffers and sizes.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An error code or kStatus_SMARTCARD_Success. </dd></dl>
</div>
</div>
<a class="anchor" id="gae6d4686bbd308d308ee183843cd0c9e7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">status_t SMARTCARD_EMVSIM_Control </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#gac4b9128bb3719dfb0675abdb6e18daae">smartcard_control_t</a>&#160;</td>
<td class="paramname"><em>control</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>param</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM peripheral base address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure. </td></tr>
<tr><td class="paramname">control</td><td>Control type </td></tr>
<tr><td class="paramname">param</td><td>Integer value of specific to control command.</td></tr>
</table>
</dd>
</dl>
<p>return kStatus_SMARTCARD_Success in success. return kStatus_SMARTCARD_OtherError in case of error. </p>
</div>
</div>
<a class="anchor" id="ga117ab705974c45d57916edb09515c15c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void SMARTCARD_EMVSIM_IRQHandler </td>
<td>(</td>
<td class="paramtype">EMVSIM_Type *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__smartcard.html#structsmartcard__context__t">smartcard_context_t</a> *&#160;</td>
<td class="paramname"><em>context</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">base</td><td>The EMVSIM peripheral base address. </td></tr>
<tr><td class="paramname">context</td><td>A pointer to a smart card driver context structure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>