Files
M5Unit-NFC/nfc__layer__f_8hpp_source.html

406 lines
70 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>M5Unit-NFC: src/nfc/layer/f/nfc_layer_f.hpp Source File</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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.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 id="projectrow">
<td id="projectalign">
<div id="projectname">M5Unit-NFC<span id="projectnumber">&#160;0.0.3 git rev:59f5362</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></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">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('nfc__layer__f_8hpp_source.html',''); initResizable(true); });
/* @license-end */
</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)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">nfc_layer_f.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="nfc__layer__f_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * SPDX-License-Identifier: MIT</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> */</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_F_HPP</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_F_HPP</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &quot;<a class="code" href="nfc__layer_8hpp.html">nfc/layer/nfc_layer.hpp</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &quot;<a class="code" href="nfcf_8hpp.html">nfc/f/nfcf.hpp</a>&quot;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &quot;<a class="code" href="ndef__layer_8hpp.html">nfc/layer/ndef_layer.hpp</a>&quot;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacem5.html">m5</a> {</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceunit.html">unit</a> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword">class </span>UnitST25R3916;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">class </span>CapST25R3916;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span>} <span class="comment">// namespace unit</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacenfc.html">nfc</a> {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="foldopen" id="foldopen00037" data-start="{" data-end="};">
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html"> 37</a></span><span class="keyword">class </span><a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html">NFCLayerF</a> : <span class="keyword">public</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_interface.html">NFCLayerInterface</a> {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">struct </span>Adapter;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html">NFCLayerF</a>(<a class="code hl_class" href="classm5_1_1unit_1_1_unit_s_t25_r3916.html">m5::unit::UnitST25R3916</a>&amp; u);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html">NFCLayerF</a>(<a class="code hl_class" href="classm5_1_1unit_1_1_cap_s_t25_r3916.html">m5::unit::CapST25R3916</a>&amp; u);</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a5de1bdcebe2ccdb11afce01c935dc02c">maximum_fifo_depth</a>() <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="foldopen" id="foldopen00050" data-start="{" data-end="}">
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c"> 50</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c">isActive</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc)<span class="keyword"> const</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a">valid</a>() &amp;&amp; _activePICC == picc;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> }</div>
</div>
<div class="foldopen" id="foldopen00059" data-start="{" data-end="}">
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39"> 59</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39">activatedPICC</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keywordflow">return</span> _activePICC;</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> }</div>
</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ade2cd62f823c42002b8e472037df8a47">polling</a>(<a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc, <span class="keyword">const</span> uint16_t system_code, <span class="keyword">const</span> <a class="code hl_enumeration" href="nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144">m5::nfc::f::RequestCode</a> request_code,</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">const</span> <a class="code hl_enumeration" href="nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84">m5::nfc::f::TimeSlot</a> time_slot);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720">detect</a>(<a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc, <span class="keyword">const</span> uint32_t timeout_ms = 100U);</div>
<div class="foldopen" id="foldopen00094" data-start="{" data-end="}">
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8"> 94</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8">detect</a>(std::vector&lt;m5::nfc::f::PICC&gt;&amp; piccs,</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_enumeration" href="nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84">m5::nfc::f::TimeSlot</a> time_slot = m5::nfc::f::TimeSlot::Slot16, <span class="keyword">const</span> uint32_t timeout_ms = 500U)</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720">detect</a>(piccs, <span class="keyword">nullptr</span>, 0, time_slot, timeout_ms);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> }</div>
</div>
<div class="foldopen" id="foldopen00109" data-start="{" data-end="}">
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677"> 109</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677">detect</a>(std::vector&lt;m5::nfc::f::PICC&gt;&amp; piccs, <span class="keyword">const</span> uint16_t private_code,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <a class="code hl_enumeration" href="nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84">m5::nfc::f::TimeSlot</a> time_slot = m5::nfc::f::TimeSlot::Slot16, <span class="keyword">const</span> uint32_t timeout_ms = 500U)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720">detect</a>(piccs, &amp;private_code, 1, time_slot, timeout_ms);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720">detect</a>(std::vector&lt;m5::nfc::f::PICC&gt;&amp; piccs, <span class="keyword">const</span> uint16_t* private_code, <span class="keyword">const</span> uint8_t pc_size,</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_enumeration" href="nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84">m5::nfc::f::TimeSlot</a> time_slot = m5::nfc::f::TimeSlot::Slot16, <span class="keyword">const</span> uint32_t timeout_ms = 500U);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec">activate</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc);</div>
<div class="foldopen" id="foldopen00142" data-start="{" data-end="}">
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06"> 142</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06">reactivate</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc)</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> {</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec">activate</a>(picc);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> }</div>
</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#aa34354dea55ce71e7c70aecb1ec22a8a">deactivate</a>();</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e">requestService</a>(uint16_t&amp; key_version, <span class="keyword">const</span> uint16_t node_code);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e">requestService</a>(uint16_t key_version[], <span class="keyword">const</span> uint16_t* node_code, <span class="keyword">const</span> uint8_t node_num);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="foldopen" id="foldopen00181" data-start="{" data-end="}">
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648"> 181</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648">requestResponse</a>(<a class="code hl_enumeration" href="nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c">m5::nfc::f::standard::Mode</a>&amp; mode)</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> {</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a">valid</a>() &amp;&amp; request_response_impl(_activePICC, mode);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> }</div>
</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#aeedd43471a62cde89d8b62229ba3c19d">requestSystemCode</a>(uint16_t code_list[255], uint8_t&amp; code_num);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94">dump</a>();</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94">dump</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block);</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="foldopen" id="foldopen00219" data-start="{" data-end="}">
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d"> 219</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d">read16</a>(uint8_t rx[16], <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block,</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">const</span> uint16_t service_code = m5::nfc::f::service_random_read)</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> {</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d">read16</a>(rx, &amp;block, 1, service_code);</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> }</div>
</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d">read16</a>(uint8_t rx[16], <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a>* block, <span class="keyword">const</span> uint8_t block_num,</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">const</span> uint16_t service_code = m5::nfc::f::service_random_read);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6">read</a>(uint8_t* rx, uint16_t&amp; rx_len, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> sblock);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="foldopen" id="foldopen00258" data-start="{" data-end="}">
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0"> 258</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0">read</a>(uint8_t* rx, uint16_t&amp; rx_len, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a>* block_list, <span class="keyword">const</span> uint8_t block_num,</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keyword">const</span> uint16_t* service_code, <span class="keyword">const</span> uint8_t service_num)</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> {</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a">valid</a>() &amp;&amp;</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> read_without_encryption_impl(rx, rx_len, block_list, block_num, service_code, service_num, _activePICC);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> }</div>
</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#afb06a34128696f7c450a212258409834">write16</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block, <span class="keyword">const</span> uint8_t tx[16], <span class="keyword">const</span> uint16_t tx_len);</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f">write</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> sblock, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len);</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab313782218cdc477b5aaccab7ca19f1f">clearSPAD</a>();</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad82b91839ba166ddf3436bf778c53ca2">internalAuthenticate</a>(<span class="keyword">const</span> uint8_t ck[16], <span class="keyword">const</span> uint16_t ckv, <span class="keyword">const</span> uint8_t rc[16]);</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac1af90c0d51679b17f6683363f2e10e5">externalAuthenticate</a>(<span class="keyword">const</span> uint8_t ck[16], <span class="keyword">const</span> uint16_t ckv);</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
<div class="foldopen" id="foldopen00313" data-start="{" data-end="}">
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21"> 313</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21">clearAuthenticate</a>()</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> {</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> _authenticated = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> }</div>
</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a603413d14aae3edf6cf6ab8ced48aa09">readWithMAC16</a>(uint8_t rx[16], <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34899dba220ca49f9762bc5a0d9db3c3">writeWithMAC16</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block, <span class="keyword">const</span> uint8_t tx[16], <span class="keyword">const</span> uint16_t tx_len);</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> </div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad1520432e55adb603947654d20161360">ndefIsValidFormat</a>(<span class="keywordtype">bool</span>&amp; valid);</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#abe7f8fa12217d61879a285a6f49e3dc7">ndefRead</a>(<a class="code hl_class" href="classm5_1_1nfc_1_1ndef_1_1_t_l_v.html">m5::nfc::ndef::TLV</a>&amp; msg);</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a090972d382390655204396fa987ed61b">ndefWrite</a>(<span class="keyword">const</span> <a class="code hl_class" href="classm5_1_1nfc_1_1ndef_1_1_t_l_v.html">m5::nfc::ndef::TLV</a>&amp; msg);</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acbea08d87d6b3991eedc426a8f7b0abd">writeSupportNDEF</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> enabled);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6">read</a>(uint8_t* rx, uint16_t&amp; rx_len, <span class="keyword">const</span> uint16_t saddr) <span class="keyword">override</span>;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f">write</a>(<span class="keyword">const</span> uint16_t saddr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len) <span class="keyword">override</span>;</div>
<div class="foldopen" id="foldopen00377" data-start="{" data-end="}">
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d"> 377</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d">first_user_block</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac3b14091a6e255fdd111dc5058106573">firstUserBlock</a>();</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> }</div>
</div>
<div class="foldopen" id="foldopen00381" data-start="{" data-end="}">
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23"> 381</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23">last_user_block</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3e1acb785f96fe267425388e2519b544">lastUserBlock</a>();</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> }</div>
</div>
<div class="foldopen" id="foldopen00385" data-start="{" data-end="}">
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92"> 385</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92">user_area_size</a>()<span class="keyword"> const</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19b5720e144a758fc9a26d9045fc35c2">userAreaSize</a>();</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> }</div>
</div>
<div class="foldopen" id="foldopen00389" data-start="{" data-end="}">
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175"> 389</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175">unit_size_read</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">return</span> 16;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> }</div>
</div>
<div class="foldopen" id="foldopen00393" data-start="{" data-end="}">
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee"> 393</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee">unit_size_write</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keywordflow">return</span> 16;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> }</div>
</div>
<div class="foldopen" id="foldopen00397" data-start="{" data-end="}">
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796"> 397</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint8_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796">maximum_read_blocks</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad034f19064f3e2e66e13758a72e38b23">maximumReadBlocks</a>();</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> }</div>
</div>
<div class="foldopen" id="foldopen00401" data-start="{" data-end="}">
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d"> 401</a></span> <span class="keyword">inline</span> <span class="keyword">virtual</span> uint8_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d">maximum_write_blocks</a>()<span class="keyword"> const override</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab1ca680451a84ccf5b3bda589fb03ca3">maximumWriteBlocks</a>();</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> }</div>
</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> </div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="keywordtype">bool</span> request_response_impl(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc, <a class="code hl_enumeration" href="nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c">m5::nfc::f::standard::Mode</a>&amp; mode);</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordtype">bool</span> read_without_encryption_impl(uint8_t* rx, uint16_t&amp; rx_len, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a>* block_list,</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keyword">const</span> uint8_t block_num, <span class="keyword">const</span> uint16_t* service_code, <span class="keyword">const</span> uint8_t service_num,</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> <span class="keywordtype">bool</span> write_without_encryption_impl(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a>&amp; picc, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a>* block_list,</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keyword">const</span> uint8_t block_num, <span class="keyword">const</span> uint16_t* service_code, <span class="keyword">const</span> uint8_t service_num,</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keywordtype">bool</span> dump_felica_lite();</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">bool</span> dump_felica_lite_s();</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keywordtype">bool</span> dump_block(<a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a> block);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordtype">bool</span> internal_authenticate_lite_s(<span class="keyword">const</span> uint8_t ck[16], <span class="keyword">const</span> uint16_t ckv, <span class="keyword">const</span> uint8_t rc[16],</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> include_wcnt = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="keywordtype">bool</span> external_authenticate_lite_s(<span class="keyword">const</span> uint8_t ck[16], <span class="keyword">const</span> uint16_t ckv);</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> </div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a> _activePICC{};</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> std::unique_ptr&lt;Adapter&gt; _impl;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <a class="code hl_class" href="classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html">m5::nfc::ndef::NDEFLayer</a> _ndef;</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> uint8_t _sk[16]{};</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> uint8_t _sk1[8];</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> uint8_t _sk2[8];</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> };</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> };</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> uint8_t _rc[16]{};</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordtype">bool</span> _authenticated{};</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span>};</div>
</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span><span class="comment">// Impl for units</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span><span class="keyword">struct </span>NFCLayerF::Adapter {</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keyword">virtual</span> ~Adapter() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> </div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keyword">virtual</span> uint16_t max_fifo_depth() <span class="keyword">const</span> = 0;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> transceive(uint8_t* rx, uint16_t&amp; rx_len, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len,</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keyword">const</span> uint32_t timeout_ms) = 0;</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span>};</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> </div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span>} <span class="comment">// namespace nfc</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span>} <span class="comment">// namespace m5</span></div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html">m5::nfc::NFCLayerF</a></div><div class="ttdoc">Common interface layer for each chip of the NFC-F reader.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:37</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a089dbc2c19a53d7df1e8dd07af25647d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a089dbc2c19a53d7df1e8dd07af25647d">m5::nfc::NFCLayerF::read16</a></div><div class="ttdeci">bool read16(uint8_t rx[16], const m5::nfc::f::block_t block, const uint16_t service_code=m5::nfc::f::service_random_read)</div><div class="ttdoc">Read the 1 block with service code.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:219</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a090972d382390655204396fa987ed61b"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a090972d382390655204396fa987ed61b">m5::nfc::NFCLayerF::ndefWrite</a></div><div class="ttdeci">bool ndefWrite(const m5::nfc::ndef::TLV &amp;msg)</div><div class="ttdoc">Write NDEF message TLV.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:783</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a122ec944def369e0b084f8f1f3d14e7e"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a122ec944def369e0b084f8f1f3d14e7e">m5::nfc::NFCLayerF::requestService</a></div><div class="ttdeci">bool requestService(uint16_t &amp;key_version, const uint16_t node_code)</div><div class="ttdoc">Request service.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:311</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a173474e60fa825cca43c1f96c2d23648"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a173474e60fa825cca43c1f96c2d23648">m5::nfc::NFCLayerF::requestResponse</a></div><div class="ttdeci">bool requestResponse(m5::nfc::f::standard::Mode &amp;mode)</div><div class="ttdoc">Request response.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:181</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a240d28b530067a9fcdc8c71757d38cf6"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a240d28b530067a9fcdc8c71757d38cf6">m5::nfc::NFCLayerF::read</a></div><div class="ttdeci">bool read(uint8_t *rx, uint16_t &amp;rx_len, const m5::nfc::f::block_t sblock)</div><div class="ttdoc">Read any bytes from user area.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:494</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a25f967cdd0b42931f81251a6de95ee1d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a25f967cdd0b42931f81251a6de95ee1d">m5::nfc::NFCLayerF::first_user_block</a></div><div class="ttdeci">virtual uint16_t first_user_block() const override</div><div class="ttdoc">First user block.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:377</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a34899dba220ca49f9762bc5a0d9db3c3"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34899dba220ca49f9762bc5a0d9db3c3">m5::nfc::NFCLayerF::writeWithMAC16</a></div><div class="ttdeci">bool writeWithMAC16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)</div><div class="ttdoc">Write the 1 block.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:684</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a34ca54b19d762ad541378304dd751175"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a34ca54b19d762ad541378304dd751175">m5::nfc::NFCLayerF::unit_size_read</a></div><div class="ttdeci">virtual uint16_t unit_size_read() const override</div><div class="ttdoc">Unit size for read.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:389</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a3b3990b2beea5f67e15f08c4ba99c796"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a3b3990b2beea5f67e15f08c4ba99c796">m5::nfc::NFCLayerF::maximum_read_blocks</a></div><div class="ttdeci">virtual uint8_t maximum_read_blocks() const override</div><div class="ttdoc">Maximum read blocks for NFC-F.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:397</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a4a11ce7567ba28e73b190fc8f85a80c8"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a4a11ce7567ba28e73b190fc8f85a80c8">m5::nfc::NFCLayerF::detect</a></div><div class="ttdeci">bool detect(std::vector&lt; m5::nfc::f::PICC &gt; &amp;piccs, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)</div><div class="ttdoc">Detect PICCs.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:94</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a5de1bdcebe2ccdb11afce01c935dc02c"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a5de1bdcebe2ccdb11afce01c935dc02c">m5::nfc::NFCLayerF::maximum_fifo_depth</a></div><div class="ttdeci">virtual uint16_t maximum_fifo_depth() const override</div><div class="ttdoc">Maximum FIFO depth.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:82</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a603413d14aae3edf6cf6ab8ced48aa09"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a603413d14aae3edf6cf6ab8ced48aa09">m5::nfc::NFCLayerF::readWithMAC16</a></div><div class="ttdeci">bool readWithMAC16(uint8_t rx[16], const m5::nfc::f::block_t block)</div><div class="ttdoc">Read the 1 block.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:546</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a65609df72661c064e263393568a4ee94"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a65609df72661c064e263393568a4ee94">m5::nfc::NFCLayerF::dump</a></div><div class="ttdeci">bool dump()</div><div class="ttdoc">Dump all blocks.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:814</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a66f6f636a210a8a78f41a94cfc7bcfee"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a66f6f636a210a8a78f41a94cfc7bcfee">m5::nfc::NFCLayerF::unit_size_write</a></div><div class="ttdeci">virtual uint16_t unit_size_write() const override</div><div class="ttdoc">Unit size for write.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:393</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a7322e1fce003b6e46b97e3f22ee5426c"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a7322e1fce003b6e46b97e3f22ee5426c">m5::nfc::NFCLayerF::isActive</a></div><div class="ttdeci">bool isActive(const m5::nfc::f::PICC &amp;picc) const</div><div class="ttdoc">Is the specified PICC currently active?</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:50</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a8bb0ddf3d83e1a97f6a48a0785843677"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a8bb0ddf3d83e1a97f6a48a0785843677">m5::nfc::NFCLayerF::detect</a></div><div class="ttdeci">bool detect(std::vector&lt; m5::nfc::f::PICC &gt; &amp;piccs, const uint16_t private_code, m5::nfc::f::TimeSlot time_slot=m5::nfc::f::TimeSlot::Slot16, const uint32_t timeout_ms=500U)</div><div class="ttdoc">Detect PICCs matching the specified system code.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:109</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a923fe889716bb854eb3301021c8aab06"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a923fe889716bb854eb3301021c8aab06">m5::nfc::NFCLayerF::reactivate</a></div><div class="ttdeci">bool reactivate(const m5::nfc::f::PICC &amp;picc)</div><div class="ttdoc">Activate a specific PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:142</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a956455e727841c422a74291153826b23"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a956455e727841c422a74291153826b23">m5::nfc::NFCLayerF::last_user_block</a></div><div class="ttdeci">virtual uint16_t last_user_block() const override</div><div class="ttdoc">Last user block.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:381</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_a9fa7a8af76839d34cac5f331f977e720"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#a9fa7a8af76839d34cac5f331f977e720">m5::nfc::NFCLayerF::detect</a></div><div class="ttdeci">bool detect(m5::nfc::f::PICC &amp;picc, const uint32_t timeout_ms=100U)</div><div class="ttdoc">Detect single PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:121</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_aa34354dea55ce71e7c70aecb1ec22a8a"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#aa34354dea55ce71e7c70aecb1ec22a8a">m5::nfc::NFCLayerF::deactivate</a></div><div class="ttdeci">bool deactivate()</div><div class="ttdoc">Deactivate PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:304</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ab313782218cdc477b5aaccab7ca19f1f"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab313782218cdc477b5aaccab7ca19f1f">m5::nfc::NFCLayerF::clearSPAD</a></div><div class="ttdeci">bool clearSPAD()</div><div class="ttdoc">Clear SPAD_0 - 13.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:739</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ab684a8b787b35c412f1355628d69bc21"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ab684a8b787b35c412f1355628d69bc21">m5::nfc::NFCLayerF::clearAuthenticate</a></div><div class="ttdeci">void clearAuthenticate()</div><div class="ttdoc">Internal authentication.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:313</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_abe7f8fa12217d61879a285a6f49e3dc7"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#abe7f8fa12217d61879a285a6f49e3dc7">m5::nfc::NFCLayerF::ndefRead</a></div><div class="ttdeci">bool ndefRead(m5::nfc::ndef::TLV &amp;msg)</div><div class="ttdoc">Read NDEF Message TLV.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:771</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ac08779e3debb8d158e3aa213677d6a92"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac08779e3debb8d158e3aa213677d6a92">m5::nfc::NFCLayerF::user_area_size</a></div><div class="ttdeci">virtual uint16_t user_area_size() const</div><div class="ttdoc">User area size (bytes)</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:385</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ac1af90c0d51679b17f6683363f2e10e5"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac1af90c0d51679b17f6683363f2e10e5">m5::nfc::NFCLayerF::externalAuthenticate</a></div><div class="ttdeci">bool externalAuthenticate(const uint8_t ck[16], const uint16_t ckv)</div><div class="ttdoc">External authentication.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:753</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ac21ff34e93d4973fca6eccdaf093f79f"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ac21ff34e93d4973fca6eccdaf093f79f">m5::nfc::NFCLayerF::write</a></div><div class="ttdeci">bool write(const m5::nfc::f::block_t sblock, const uint8_t *tx, const uint16_t tx_len)</div><div class="ttdoc">Write any bytes to user area.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:618</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_acac7c970e5610b59b0f81e508e636b6d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acac7c970e5610b59b0f81e508e636b6d">m5::nfc::NFCLayerF::maximum_write_blocks</a></div><div class="ttdeci">virtual uint8_t maximum_write_blocks() const override</div><div class="ttdoc">Maximum write blocks for NFC-F.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:401</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_acb1e41eb54c5b681ca9ae7cd376d2eec"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acb1e41eb54c5b681ca9ae7cd376d2eec">m5::nfc::NFCLayerF::activate</a></div><div class="ttdeci">bool activate(const m5::nfc::f::PICC &amp;picc)</div><div class="ttdoc">Activate a specific PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:294</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_acbea08d87d6b3991eedc426a8f7b0abd"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#acbea08d87d6b3991eedc426a8f7b0abd">m5::nfc::NFCLayerF::writeSupportNDEF</a></div><div class="ttdeci">bool writeSupportNDEF(const bool enabled)</div><div class="ttdoc">Write changes for NDEF Support.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:789</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ad1520432e55adb603947654d20161360"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad1520432e55adb603947654d20161360">m5::nfc::NFCLayerF::ndefIsValidFormat</a></div><div class="ttdeci">bool ndefIsValidFormat(bool &amp;valid)</div><div class="ttdoc">Is the PICC data in NDEF format?</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:765</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ad82b91839ba166ddf3436bf778c53ca2"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ad82b91839ba166ddf3436bf778c53ca2">m5::nfc::NFCLayerF::internalAuthenticate</a></div><div class="ttdeci">bool internalAuthenticate(const uint8_t ck[16], const uint16_t ckv, const uint8_t rc[16])</div><div class="ttdoc">Internal authentication.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:745</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_adca10cd40a000169aab21a481b71af39"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#adca10cd40a000169aab21a481b71af39">m5::nfc::NFCLayerF::activatedPICC</a></div><div class="ttdeci">const m5::nfc::f::PICC &amp; activatedPICC() const</div><div class="ttdoc">Retrieve the currently activated PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:59</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ade2cd62f823c42002b8e472037df8a47"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ade2cd62f823c42002b8e472037df8a47">m5::nfc::NFCLayerF::polling</a></div><div class="ttdeci">bool polling(m5::nfc::f::PICC &amp;picc, const uint16_t system_code, const m5::nfc::f::RequestCode request_code, const m5::nfc::f::TimeSlot time_slot)</div><div class="ttdoc">Polling.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:87</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_ae221de1f093613ca44369d3ca97ac9b0"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#ae221de1f093613ca44369d3ca97ac9b0">m5::nfc::NFCLayerF::read</a></div><div class="ttdeci">bool read(uint8_t *rx, uint16_t &amp;rx_len, const m5::nfc::f::block_t *block_list, const uint8_t block_num, const uint16_t *service_code, const uint8_t service_num)</div><div class="ttdoc">Read the specified block list and service codes.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.hpp:258</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_aeedd43471a62cde89d8b62229ba3c19d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#aeedd43471a62cde89d8b62229ba3c19d">m5::nfc::NFCLayerF::requestSystemCode</a></div><div class="ttdeci">bool requestSystemCode(uint16_t code_list[255], uint8_t &amp;code_num)</div><div class="ttdoc">Request system code.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:397</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_f_html_afb06a34128696f7c450a212258409834"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_f.html#afb06a34128696f7c450a212258409834">m5::nfc::NFCLayerF::write16</a></div><div class="ttdeci">bool write16(const m5::nfc::f::block_t block, const uint8_t tx[16], const uint16_t tx_len)</div><div class="ttdoc">Write the 1 block.</div><div class="ttdef"><b>Definition</b> nfc_layer_f.cpp:608</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_interface_html"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_interface.html">m5::nfc::NFCLayerInterface</a></div><div class="ttdoc">Common interface for NFC layer.</div><div class="ttdef"><b>Definition</b> nfc_layer.hpp:26</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer_html"><div class="ttname"><a href="classm5_1_1nfc_1_1ndef_1_1_n_d_e_f_layer.html">m5::nfc::ndef::NDEFLayer</a></div><div class="ttdoc">NDEF operations layer.</div><div class="ttdef"><b>Definition</b> ndef_layer.hpp:35</div></div>
<div class="ttc" id="aclassm5_1_1nfc_1_1ndef_1_1_t_l_v_html"><div class="ttname"><a href="classm5_1_1nfc_1_1ndef_1_1_t_l_v.html">m5::nfc::ndef::TLV</a></div><div class="ttdoc">NDEF TLV container.</div><div class="ttdef"><b>Definition</b> ndef_tlv.hpp:27</div></div>
<div class="ttc" id="aclassm5_1_1unit_1_1_cap_s_t25_r3916_html"><div class="ttname"><a href="classm5_1_1unit_1_1_cap_s_t25_r3916.html">m5::unit::CapST25R3916</a></div><div class="ttdoc">ST25R3916 unit in CapCC1101 (SPI)</div><div class="ttdef"><b>Definition</b> unit_ST25R3916.hpp:2062</div></div>
<div class="ttc" id="aclassm5_1_1unit_1_1_unit_s_t25_r3916_html"><div class="ttname"><a href="classm5_1_1unit_1_1_unit_s_t25_r3916.html">m5::unit::UnitST25R3916</a></div><div class="ttdoc">ST25R3916 Unit.</div><div class="ttdef"><b>Definition</b> unit_ST25R3916.hpp:38</div></div>
<div class="ttc" id="anamespacem5_html"><div class="ttname"><a href="namespacem5.html">m5</a></div><div class="ttdoc">Top level namespace of M5stack.</div></div>
<div class="ttc" id="anamespacenfc_html"><div class="ttname"><a href="namespacenfc.html">nfc</a></div><div class="ttdoc">NFC related definitions.</div></div>
<div class="ttc" id="anamespaceunit_html"><div class="ttname"><a href="namespaceunit.html">unit</a></div><div class="ttdoc">Unit-related namespace.</div></div>
<div class="ttc" id="andef__layer_8hpp_html"><div class="ttname"><a href="ndef__layer_8hpp.html">ndef_layer.hpp</a></div><div class="ttdoc">Common layer for NDEF related.</div></div>
<div class="ttc" id="anfc__layer_8hpp_html"><div class="ttname"><a href="nfc__layer_8hpp.html">nfc_layer.hpp</a></div><div class="ttdoc">Common layer for NFC related units.</div></div>
<div class="ttc" id="anfcf_8hpp_html"><div class="ttname"><a href="nfcf_8hpp.html">nfcf.hpp</a></div><div class="ttdoc">NFC-F definitions.</div></div>
<div class="ttc" id="anfcf_8hpp_html_a1ca4eeb3808f5d0529b603128edc5b84"><div class="ttname"><a href="nfcf_8hpp.html#a1ca4eeb3808f5d0529b603128edc5b84">m5::nfc::f::TimeSlot</a></div><div class="ttdeci">TimeSlot</div><div class="ttdoc">Timeslot value for Polling.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:107</div></div>
<div class="ttc" id="anfcf_8hpp_html_a6959bdf0a008260dcec938adc6a7db5c"><div class="ttname"><a href="nfcf_8hpp.html#a6959bdf0a008260dcec938adc6a7db5c">m5::nfc::f::standard::Mode</a></div><div class="ttdeci">Mode</div><div class="ttdoc">Mode for Standard.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:236</div></div>
<div class="ttc" id="anfcf_8hpp_html_aa85476c3807a205b8d13cb06347bb144"><div class="ttname"><a href="nfcf_8hpp.html#aa85476c3807a205b8d13cb06347bb144">m5::nfc::f::RequestCode</a></div><div class="ttdeci">RequestCode</div><div class="ttdoc">Request code for Polling.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:97</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html">m5::nfc::f::PICC</a></div><div class="ttdoc">PICC information for NFC-F.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:381</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_a19b5720e144a758fc9a26d9045fc35c2"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a19b5720e144a758fc9a26d9045fc35c2">m5::nfc::f::PICC::userAreaSize</a></div><div class="ttdeci">uint16_t userAreaSize() const</div><div class="ttdoc">Total user area size.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:403</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_a3e1acb785f96fe267425388e2519b544"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#a3e1acb785f96fe267425388e2519b544">m5::nfc::f::PICC::lastUserBlock</a></div><div class="ttdeci">uint16_t lastUserBlock() const</div><div class="ttdoc">Gets the last user block.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:413</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_ab1ca680451a84ccf5b3bda589fb03ca3"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ab1ca680451a84ccf5b3bda589fb03ca3">m5::nfc::f::PICC::maximumWriteBlocks</a></div><div class="ttdeci">uint8_t maximumWriteBlocks() const</div><div class="ttdoc">Maximum number of blocks that can be write simultaneously.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:429</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_ac3b14091a6e255fdd111dc5058106573"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ac3b14091a6e255fdd111dc5058106573">m5::nfc::f::PICC::firstUserBlock</a></div><div class="ttdeci">uint16_t firstUserBlock() const</div><div class="ttdoc">Gets the first user block.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:408</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_ad034f19064f3e2e66e13758a72e38b23"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#ad034f19064f3e2e66e13758a72e38b23">m5::nfc::f::PICC::maximumReadBlocks</a></div><div class="ttdeci">uint8_t maximumReadBlocks() const</div><div class="ttdoc">Maximum number of blocks that can be read simultaneously.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:424</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1_p_i_c_c_html_af69afa2b56967446faeeec15e9785f3a"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1_p_i_c_c.html#af69afa2b56967446faeeec15e9785f3a">m5::nfc::f::PICC::valid</a></div><div class="ttdeci">bool valid() const</div><div class="ttdoc">Valid for detection?</div><div class="ttdef"><b>Definition</b> nfcf.cpp:310</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1f_1_1block__t_html"><div class="ttname"><a href="structm5_1_1nfc_1_1f_1_1block__t.html">m5::nfc::f::block_t</a></div><div class="ttdoc">Block list element.</div><div class="ttdef"><b>Definition</b> nfcf.hpp:147</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_59410e1461a4f8107dcbc9b19538c327.html">nfc</a></li><li class="navelem"><a class="el" href="dir_ee0b121c304f64b8cbf8ff0b0f1683d3.html">layer</a></li><li class="navelem"><a class="el" href="dir_e07bad691a8267b98ac2c5d5c5a70f9f.html">f</a></li><li class="navelem"><a class="el" href="nfc__layer__f_8hpp.html">nfc_layer_f.hpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
</ul>
</div>
</body>
</html>