mirror of
https://github.com/m5stack/M5Unit-NFC.git
synced 2026-05-20 11:48:34 -07:00
474 lines
95 KiB
HTML
474 lines
95 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/a/nfc_layer_a.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"> 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&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&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&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&dn=expat.txt MIT */
|
|
$(function(){initNavTree('nfc__layer__a_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_a.hpp</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="nfc__layer__a_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="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#ifndef M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_A_HPP</span></div>
|
|
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#define M5_UNIT_NFC_NFC_LAYER_NFC_LAYER_A_HPP</span></div>
|
|
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
|
|
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include "<a class="code" href="nfc__layer_8hpp.html">nfc/layer/nfc_layer.hpp</a>"</span></div>
|
|
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include "<a class="code" href="nfca_8hpp.html">nfc/a/nfca.hpp</a>"</span></div>
|
|
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include "<a class="code" href="iso_d_e_p_8hpp.html">nfc/isoDEP/isoDEP.hpp</a>"</span></div>
|
|
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include "<a class="code" href="ndef__layer_8hpp.html">nfc/layer/ndef_layer.hpp</a>"</span></div>
|
|
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include "<a class="code" href="ndef_8hpp.html">nfc/ndef/ndef.hpp</a>"</span></div>
|
|
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include <vector></span></div>
|
|
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include <memory></span></div>
|
|
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
|
|
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacem5.html">m5</a> {</div>
|
|
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
|
|
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceunit.html">unit</a> {</div>
|
|
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="keyword">class </span>UnitMFRC522; <span class="comment">// M5Unit-RFID</span></div>
|
|
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">class </span>UnitWS1850S; <span class="comment">// M5Unit-RFID</span></div>
|
|
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">class </span>UnitST25R3916;</div>
|
|
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">class </span>CapST25R3916;</div>
|
|
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span>} <span class="comment">// namespace unit</span></div>
|
|
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
|
|
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacenfc.html">nfc</a> {</div>
|
|
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
|
|
<div class="foldopen" id="foldopen00043" data-start="{" data-end="};">
|
|
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html"> 43</a></span><span class="keyword">class </span><a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">NFCLayerA</a> : <span class="keyword">public</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_interface.html">m5::nfc::NFCLayerInterface</a> {</div>
|
|
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keyword">public</span>:</div>
|
|
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">struct </span>Adapter;</div>
|
|
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">NFCLayerA</a>(m5::unit::UnitMFRC522& u); <span class="comment">// The implementation of this function is located in M5Unit-RFID</span></div>
|
|
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">NFCLayerA</a>(m5::unit::UnitWS1850S& u); <span class="comment">// The implementation of this function is located in M5Unit-RFID</span></div>
|
|
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">NFCLayerA</a>(<a class="code hl_class" href="classm5_1_1unit_1_1_unit_s_t25_r3916.html">m5::unit::UnitST25R3916</a>& u);</div>
|
|
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">NFCLayerA</a>(<a class="code hl_class" href="classm5_1_1unit_1_1_cap_s_t25_r3916.html">m5::unit::CapST25R3916</a>& u);</div>
|
|
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
|
|
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</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_a.html#af922fdf273e872f865fb78312796393b">transceive</a>(uint8_t* rx, uint16_t& 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="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">const</span> uint32_t timeout_ms) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// virtual bool transmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms) override;</span></div>
|
|
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// virtual bool receive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms) override;</span></div>
|
|
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">virtual</span> <a class="code hl_enumeration" href="nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1">m5::nfc::NFCForumTag</a> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac9a9341857b32fa2016d93e2dce4d053">supportsNFCTag</a>() <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="nfc_8hpp.html#a14c7cd97b5b6e6bef9a0485ee5b430a3">file_system_feature_t</a> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a439668b546644bf82e4bf402806c4fc3">supportsFilesystem</a>() <span class="keyword">const override</span>;</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_a.html#a7959e21229eebefebf607d65dd2ca8cd"> 59</a></span> <span class="keyword">virtual</span> <a class="code hl_class" href="classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html">m5::nfc::isodep::IsoDEP</a>* <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a7959e21229eebefebf607d65dd2ca8cd">isoDEP</a>()<span class="keyword"> override</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> &_isoDEP;</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> <span class="keyword">virtual</span> uint16_t <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#adc1ce9c8c03feea93406d287df7b355b">maximum_fifo_depth</a>() <span class="keyword">const override</span>;</div>
|
|
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
|
|
<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a2865997fa2380a732230f9eb49a86a8c"> 71</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_a.html#a2865997fa2380a732230f9eb49a86a8c">isActive</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc)<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6332d499b3dd5c2c5c1d2bc8e4ae812b">valid</a>() && _activePICC == picc;</div>
|
|
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> }</div>
|
|
</div>
|
|
<div class="foldopen" id="foldopen00080" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c"> 80</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c">activatedPICC</a>()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordflow">return</span> _activePICC;</div>
|
|
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
|
|
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
|
|
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0db4941c60b2f67a8415ef2fd505ead4">request</a>(uint16_t& atqa);</div>
|
|
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af0ee18fb7743f541ce135af87c950275">wakeup</a>(uint16_t& atqa);</div>
|
|
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
|
|
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab">detect</a>(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc, <span class="keyword">const</span> uint32_t timeout_ms = 100U);</div>
|
|
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab">detect</a>(std::vector<m5::nfc::a::PICC>& piccs, <span class="keyword">const</span> uint32_t timeout_ms = 1000U);</div>
|
|
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a6c5ba9ff6ce1ad9c5c2ec5adf17a9299">select</a>(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc);</div>
|
|
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a48ebe154a123b7213cb9783b6b0d24dd">activate</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc, <span class="keyword">const</span> <span class="keywordtype">bool</span> force_rats = <span class="keyword">false</span>);</div>
|
|
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e">reactivate</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc, <span class="keyword">const</span> <span class="keywordtype">bool</span> force_rats = <span class="keyword">false</span>);</div>
|
|
<div class="foldopen" id="foldopen00160" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e"> 160</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_a.html#a9a8e6e8c38c98228e83974bd6584f42e">reactivate</a>()</div>
|
|
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> {</div>
|
|
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e">reactivate</a>(_activePICC);</div>
|
|
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
|
|
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
|
|
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac1bb18ba571351953246a97168e30c79">deactivate</a>();</div>
|
|
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
|
|
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aaae6d1f24bed2b0e6bb13697fd11a9e5">identify</a>(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc);</div>
|
|
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
|
|
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ab668e6b37b0a4263efc29ee97ec2f44d">read4</a>(uint8_t rx[4], <span class="keyword">const</span> uint8_t addr);</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_a.html#a80e45ceb5b4bdf04ac2a667fde3b92ee">read16</a>(uint8_t rx[16], <span class="keyword">const</span> uint8_t addr);</div>
|
|
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d">read</a>(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint8_t saddr,</div>
|
|
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d">read</a>(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint8_t saddr, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& key);</div>
|
|
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> </div>
|
|
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a972e8373f292165448f7a5d384a9f875">write4</a>(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len, <span class="keyword">const</span> <span class="keywordtype">bool</span> safety = <span class="keyword">true</span>);</div>
|
|
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af7efea879304539a9874d23e5c957f74">write16</a>(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len, <span class="keyword">const</span> <span class="keywordtype">bool</span> safety = <span class="keyword">true</span>);</div>
|
|
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912">write</a>(<span class="keyword">const</span> uint8_t saddr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len,</div>
|
|
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912">write</a>(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len,</div>
|
|
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& key);</div>
|
|
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
|
|
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6">dump</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& mkey = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6">dump</a>(<span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
|
|
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
|
|
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ace7c09b993fdabbea85583b2e9f4d49c">mifareClassicAuthenticateA</a>(</div>
|
|
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac0661dac6e7ca06ef108871cc822b2c8">mifareClassicAuthenticateB</a>(</div>
|
|
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> </div>
|
|
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#add99392d776e0757afc345dabec6dffd">mifareClassicReadAccessCondition</a>(uint8_t& c123, <span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac3d2c944c286800b9e1147674172f248">mifareClassicWriteAccessCondition</a>(<span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> uint8_t c123,</div>
|
|
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& akey,</div>
|
|
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& bkey);</div>
|
|
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> </div>
|
|
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a193ff49621bbb0b026c4439781803f03">mifareClassicIsValueBlock</a>(<span class="keywordtype">bool</span>& is_value_block, <span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a147ccb42b8a90d435c7018595e980026">mifareClassicReadValueBlock</a>(int32_t& value, <span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a654141401bac8480c56593bf476a822a">mifareClassicWriteValueBlock</a>(<span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> int32_t value);</div>
|
|
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a86871cce9cdaf6ebb5bb2bdfdf860248">mifareClassicDecrementValueBlock</a>(<span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> uint32_t delta, <span class="keyword">const</span> <span class="keywordtype">bool</span> transfer = <span class="keyword">true</span>);</div>
|
|
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdcc37375bccbdf436826b2f1f973212">mifareClassicIncrementValueBlock</a>(<span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> uint32_t delta, <span class="keyword">const</span> <span class="keywordtype">bool</span> transfer = <span class="keyword">true</span>);</div>
|
|
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0d05ef0dfeba94dfee5ecfeae7363776">mifareClassicTransferValueBlock</a>(<span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aebcd787d8bc53fd994135a0507f80abe">mifareClassicRestoreValueBlock</a>(<span class="keyword">const</span> uint8_t block);</div>
|
|
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
|
|
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
|
|
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a55e8d544bdd962d449d1b033fbc8bd75">mifareUltralightChangeFormatToNDEF</a>();</div>
|
|
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> </div>
|
|
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> </div>
|
|
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a4d73b0666a5550b26b70cfbcc24bb6c4">mifareUltralightCAuthenticate</a>(<span class="keyword">const</span> uint8_t key[16]);</div>
|
|
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
|
|
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> </div>
|
|
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c80db943efcf56c086c5d70ac1ad0d4">mifarePlusUpgradeSecurityLevel1</a>(</div>
|
|
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& card_config_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,</div>
|
|
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& card_master_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,</div>
|
|
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& l2_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,</div>
|
|
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& l3_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY,</div>
|
|
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& aes_sector_key = m5::nfc::a::mifare::plus::DEFAULT_FF_KEY,</div>
|
|
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key_a = m5::nfc::a::mifare::classic::DEFAULT_KEY,</div>
|
|
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key_b = m5::nfc::a::mifare::classic::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c28bbf7fb09613378f7bc3150d091f7">mifarePlusUpgradeSecurityLevel2</a>(</div>
|
|
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& sl2_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad305314219e83a82d21ed46c163e18b1">mifarePlusUpgradeSecurityLevel3</a>(</div>
|
|
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& l3_switch_key = m5::nfc::a::mifare::plus::DEFAULT_KEY);</div>
|
|
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
|
|
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
|
|
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> </div>
|
|
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a67ad153f9d8d8a13d05bc4b8048dbf7b">ndefIsValidFormat</a>(<span class="keywordtype">bool</span>& valid);</div>
|
|
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#acd1252e937569b38de4d1e0c15d7217d">ndefPrepareDesfireLight</a>();</div>
|
|
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a59f94b281ece2f3f24ec537613b7b2c1">ndefPrepareDesfire</a>(<span class="keyword">const</span> uint32_t max_ndef_size);</div>
|
|
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b">ndefRead</a>(<a class="code hl_class" href="classm5_1_1nfc_1_1ndef_1_1_t_l_v.html">m5::nfc::ndef::TLV</a>& msg);</div>
|
|
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b">ndefRead</a>(std::vector<m5::nfc::ndef::TLV>& tlvs,</div>
|
|
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keyword">const</span> <a class="code hl_typedef" href="ndef_8hpp.html#a5716a98da0909374b245e22ea5b4bfed">m5::nfc::ndef::TagBits</a> tagBits = m5::nfc::ndef::tagBitsAll);</div>
|
|
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6">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>& msg);</div>
|
|
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6">ndefWrite</a>(<span class="keyword">const</span> std::vector<m5::nfc::ndef::TLV>& tlvs);</div>
|
|
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> </div>
|
|
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span><span class="keyword">protected</span>:</div>
|
|
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</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_a.html#af03e1b30f185127ecd3efe7c2e69562d">read</a>(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint16_t saddr) <span class="keyword">override</span>;</div>
|
|
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</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_a.html#a23492234bf6f5701225f7cc5943d1912">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="foldopen00550" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a12e0b5658e8ed72322d01fc247801ba0"> 550</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_a.html#a12e0b5658e8ed72322d01fc247801ba0">first_user_block</a>()<span class="keyword"> const override</span></div>
|
|
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a74c5f76b9399c37a5a14d936d353429b">firstUserBlock</a>();</div>
|
|
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> }</div>
|
|
</div>
|
|
<div class="foldopen" id="foldopen00554" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a347f20c1818de724908bba309e42909f"> 554</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_a.html#a347f20c1818de724908bba309e42909f">last_user_block</a>()<span class="keyword"> const override</span></div>
|
|
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a89f0ac9f0e12dabd86b4cd45d760de">lastUserBlock</a>();</div>
|
|
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> }</div>
|
|
</div>
|
|
<div class="foldopen" id="foldopen00558" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a569a7bfed33c5202acacb045b39519a2"> 558</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_a.html#a569a7bfed33c5202acacb045b39519a2">user_area_size</a>()<span class="keyword"> const</span></div>
|
|
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13570108ce5e10a9f91495c254c5156d">userAreaSize</a>();</div>
|
|
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> }</div>
|
|
</div>
|
|
<div class="foldopen" id="foldopen00562" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aa249c4d6c5425dbf0f79ae9d29be3540"> 562</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_a.html#aa249c4d6c5425dbf0f79ae9d29be3540">unit_size_read</a>()<span class="keyword"> const override</span></div>
|
|
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <span class="keywordflow">return</span> _activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a">supportsNFC</a>() ? (_activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8f0546bace218cbda64584054e5863db">isMifareUltralight</a>() ? 16 : 4) : 16;</div>
|
|
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> }</div>
|
|
</div>
|
|
<div class="foldopen" id="foldopen00566" data-start="{" data-end="}">
|
|
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"><a class="line" href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad24a58b5b02a26316e0c14bda504e243"> 566</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_a.html#ad24a58b5b02a26316e0c14bda504e243">unit_size_write</a>()<span class="keyword"> const override</span></div>
|
|
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span><span class="keyword"> </span>{</div>
|
|
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">return</span> (_activePICC.<a class="code hl_function" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a">supportsNFC</a>()) ? 4 : 16;</div>
|
|
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> }</div>
|
|
</div>
|
|
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> </div>
|
|
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="keywordtype">bool</span> identify_picc(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc);</div>
|
|
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <a class="code hl_enumeration" href="nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9">m5::nfc::a::Type</a> identify_picc_st25ta();</div>
|
|
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> uint8_t identify_plus_sl03();</div>
|
|
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> </div>
|
|
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordtype">bool</span> read_using_fast(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint8_t saddr);</div>
|
|
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> <span class="keywordtype">bool</span> read_using_read16(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint8_t saddr,</div>
|
|
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key);</div>
|
|
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <span class="keywordtype">bool</span> write_using_write4(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len);</div>
|
|
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keywordtype">bool</span> write_using_write16(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t* tx, <span class="keyword">const</span> uint16_t tx_len,</div>
|
|
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key);</div>
|
|
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> </div>
|
|
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="keywordtype">bool</span> nfca_request_ats(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_a_t_s.html">m5::nfc::a::ATS</a>& ats, <span class="keyword">const</span> uint8_t fsdi = 5, <span class="keyword">const</span> uint8_t cid = 0);</div>
|
|
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordtype">bool</span> nfca_deselect();</div>
|
|
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> </div>
|
|
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="keywordtype">bool</span> mifare_get_version_L3(uint8_t ver[8]);</div>
|
|
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <span class="keywordtype">bool</span> mifare_get_version_L4_raw(uint8_t* ver, uint16_t& ver_len);</div>
|
|
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordtype">bool</span> mifare_get_version_L4_wrapped(uint8_t* ver, uint16_t& ver_len);</div>
|
|
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> </div>
|
|
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="keywordtype">bool</span> mifare_plus_authenticateAES(<span class="keyword">const</span> uint16_t key_no, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& key);</div>
|
|
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <span class="keywordtype">bool</span> mifare_plus_authenticateAES_L3(<span class="keyword">const</span> uint16_t key_no, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& key);</div>
|
|
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> <span class="keywordtype">bool</span> mifare_plus_read_plain_nomac(<span class="keyword">const</span> uint16_t block, <span class="keyword">const</span> uint8_t count, std::vector<uint8_t>& out);</div>
|
|
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> <span class="keywordtype">bool</span> mifare_plus_read_plain_mac(<span class="keyword">const</span> uint16_t block, <span class="keyword">const</span> uint8_t count, std::vector<uint8_t>& out);</div>
|
|
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="keywordtype">bool</span> mifare_plus_read_mac_l4(<span class="keyword">const</span> uint16_t block, <span class="keyword">const</span> uint8_t count, std::vector<uint8_t>& out,</div>
|
|
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> plain);</div>
|
|
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <span class="keywordtype">bool</span> mifare_plus_write_mac_l4(<span class="keyword">const</span> uint16_t block, <span class="keyword">const</span> uint8_t* data, <span class="keyword">const</span> uint16_t data_len, <span class="keyword">const</span> <span class="keywordtype">bool</span> plain);</div>
|
|
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
|
|
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="keywordtype">bool</span> mifare_classic_value_block(<span class="keyword">const</span> <a class="code hl_enumeration" href="nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac">m5::nfc::a::Command</a> cmd, <span class="keyword">const</span> uint8_t block, <span class="keyword">const</span> uint32_t arg = 0);</div>
|
|
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> </div>
|
|
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="keywordtype">bool</span> mifare_ultralightC_authenticate1(uint8_t ek[8]);</div>
|
|
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <span class="keywordtype">bool</span> mifare_ultralightC_authenticate2(uint8_t rx_ek[8], <span class="keyword">const</span> uint8_t tx_ek[16]);</div>
|
|
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> </div>
|
|
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="keywordtype">bool</span> ntag_read_page(uint8_t* rx, uint16_t& rx_len, <span class="keyword">const</span> uint8_t spage, <span class="keyword">const</span> uint8_t epage);</div>
|
|
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keywordtype">bool</span> ntag_write_page(<span class="keyword">const</span> uint8_t page, <span class="keyword">const</span> uint8_t tx[4]); <span class="comment">// NTAG,UL,ULC</span></div>
|
|
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> </div>
|
|
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> <span class="keywordtype">bool</span> dump_sector_structure(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc, <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key);</div>
|
|
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="keywordtype">bool</span> dump_sector(<span class="keyword">const</span> uint8_t sector);</div>
|
|
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> <span class="keywordtype">bool</span> dump_sector_mifare_plus_sl3(<span class="keyword">const</span> uint8_t sector);</div>
|
|
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordtype">bool</span> dump_page_structure(<span class="keyword">const</span> uint16_t maxPage);</div>
|
|
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <span class="keywordtype">bool</span> dump_page(<span class="keyword">const</span> uint8_t page, <span class="keyword">const</span> uint16_t maxPage);</div>
|
|
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="keywordtype">bool</span> dump_mifare_plus_sl3(<span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a>& key);</div>
|
|
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> <span class="keywordtype">bool</span> dump_desfire();</div>
|
|
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordtype">bool</span> dump_desfire_light();</div>
|
|
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> <span class="keywordtype">bool</span> dump_st25ta();</div>
|
|
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> </div>
|
|
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> push_back_picc(std::vector<m5::nfc::a::PICC>& <a class="code hl_namespace" href="namespacev.html">v</a>, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc);</div>
|
|
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> </div>
|
|
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span><span class="keyword">protected</span>:</div>
|
|
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a> _activePICC{};</div>
|
|
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</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="l00620" name="l00620"></a><span class="lineno"> 620</span> <a class="code hl_class" href="classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html">m5::nfc::isodep::IsoDEP</a> _isoDEP;</div>
|
|
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
|
|
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span><span class="keyword">private</span>:</div>
|
|
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> <span class="keywordtype">bool</span> mifare_plus_transceive_raw(uint8_t* rx, uint16_t& 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="l00624" name="l00624"></a><span class="lineno"> 624</span> </div>
|
|
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="keyword">struct </span>MifarePlusSession {</div>
|
|
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="keywordtype">bool</span> authenticated{};</div>
|
|
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> uint16_t key_no{};</div>
|
|
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> uint16_t r_ctr{};</div>
|
|
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> uint16_t w_ctr{};</div>
|
|
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> uint8_t frame_num{};</div>
|
|
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> std::array<uint8_t, 4> ti{};</div>
|
|
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> std::array<uint8_t, 16> kenc{};</div>
|
|
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> std::array<uint8_t, 16> kmac{};</div>
|
|
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> };</div>
|
|
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> </div>
|
|
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> MifarePlusSession _mfp_session{};</div>
|
|
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> std::unique_ptr<Adapter> _impl;</div>
|
|
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span>};</div>
|
|
</div>
|
|
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> </div>
|
|
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span><span class="comment">// Impl for units</span></div>
|
|
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span><span class="keyword">struct </span>NFCLayerA::Adapter {</div>
|
|
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> <span class="keyword">virtual</span> ~Adapter() = <span class="keywordflow">default</span>;</div>
|
|
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> </div>
|
|
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <span class="keyword">virtual</span> uint16_t max_fifo_depth() <span class="keyword">const</span> = 0;</div>
|
|
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> </div>
|
|
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> transceive(uint8_t* rx, uint16_t& 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="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="keyword">const</span> uint32_t timeout_ms) = 0;</div>
|
|
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> </div>
|
|
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> request(uint16_t& atqa) = 0;</div>
|
|
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> wakeup(uint16_t& atqa) = 0;</div>
|
|
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> </div>
|
|
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> select(<a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc) = 0;</div>
|
|
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> activate(<span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc) = 0;</div>
|
|
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> hlt() = 0;</div>
|
|
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> </div>
|
|
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> nfca_read_block(uint8_t rx[16], <span class="keyword">const</span> uint8_t addr) = 0;</div>
|
|
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> nfca_write_block(<span class="keyword">const</span> uint8_t addr, <span class="keyword">const</span> uint8_t tx[16]) = 0;</div>
|
|
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> mifare_classic_authenticate(<span class="keyword">const</span> <span class="keywordtype">bool</span> auth_a, <span class="keyword">const</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a>& picc, <span class="keyword">const</span> uint8_t block,</div>
|
|
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keyword">const</span> <a class="code hl_typedef" href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a>& key) = 0;</div>
|
|
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> mifare_classic_value_block(<span class="keyword">const</span> <a class="code hl_enumeration" href="nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac">m5::nfc::a::Command</a> cmd, <span class="keyword">const</span> uint8_t block,</div>
|
|
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <span class="keyword">const</span> uint32_t arg = 0) = 0;</div>
|
|
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span>};</div>
|
|
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> </div>
|
|
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span>} <span class="comment">// namespace nfc</span></div>
|
|
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span>} <span class="comment">// namespace m5</span></div>
|
|
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> </div>
|
|
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span><span class="preprocessor">#endif</span></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html">m5::nfc::NFCLayerA</a></div><div class="ttdoc">Common interface layer for each chip of the NFC-A reader.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.hpp:43</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a0c0801275c5203877f67619d338fc3f6"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0c0801275c5203877f67619d338fc3f6">m5::nfc::NFCLayerA::dump</a></div><div class="ttdeci">bool dump(const m5::nfc::a::mifare::classic::Key &mkey=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Dump all blocks/files.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:906</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a0d05ef0dfeba94dfee5ecfeae7363776"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0d05ef0dfeba94dfee5ecfeae7363776">m5::nfc::NFCLayerA::mifareClassicTransferValueBlock</a></div><div class="ttdeci">bool mifareClassicTransferValueBlock(const uint8_t block)</div><div class="ttdoc">Transfer inner buffer value to block.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1104</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a0db4941c60b2f67a8415ef2fd505ead4"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a0db4941c60b2f67a8415ef2fd505ead4">m5::nfc::NFCLayerA::request</a></div><div class="ttdeci">bool request(uint16_t &atqa)</div><div class="ttdoc">Send REQA to discover a PICC in IDLE.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:199</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a12e0b5658e8ed72322d01fc247801ba0"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a12e0b5658e8ed72322d01fc247801ba0">m5::nfc::NFCLayerA::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_a.hpp:550</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a147ccb42b8a90d435c7018595e980026"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a147ccb42b8a90d435c7018595e980026">m5::nfc::NFCLayerA::mifareClassicReadValueBlock</a></div><div class="ttdeci">bool mifareClassicReadValueBlock(int32_t &value, const uint8_t block)</div><div class="ttdoc">Read the specific block as the value block.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1050</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a193ff49621bbb0b026c4439781803f03"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a193ff49621bbb0b026c4439781803f03">m5::nfc::NFCLayerA::mifareClassicIsValueBlock</a></div><div class="ttdeci">bool mifareClassicIsValueBlock(bool &is_value_block, const uint8_t block)</div><div class="ttdoc">Is specific block the value block?</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1018</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a1b671840e2fce10e1d7a800fe084e2ab"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1b671840e2fce10e1d7a800fe084e2ab">m5::nfc::NFCLayerA::detect</a></div><div class="ttdeci">bool detect(m5::nfc::a::PICC &picc, const uint32_t timeout_ms=100U)</div><div class="ttdoc">Detect single idle PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:211</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a1c28bbf7fb09613378f7bc3150d091f7"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c28bbf7fb09613378f7bc3150d091f7">m5::nfc::NFCLayerA::mifarePlusUpgradeSecurityLevel2</a></div><div class="ttdeci">bool mifarePlusUpgradeSecurityLevel2(const m5::nfc::a::mifare::plus::AESKey &sl2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)</div><div class="ttdoc">Upgrade security level to SL2 (AES over CRYPTO1)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1312</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a1c80db943efcf56c086c5d70ac1ad0d4"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a1c80db943efcf56c086c5d70ac1ad0d4">m5::nfc::NFCLayerA::mifarePlusUpgradeSecurityLevel1</a></div><div class="ttdeci">bool mifarePlusUpgradeSecurityLevel1(const m5::nfc::a::mifare::plus::AESKey &card_config_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &card_master_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l2_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY, const m5::nfc::a::mifare::plus::AESKey &aes_sector_key=m5::nfc::a::mifare::plus::DEFAULT_FF_KEY, const m5::nfc::a::mifare::classic::Key &key_a=m5::nfc::a::mifare::classic::DEFAULT_KEY, const m5::nfc::a::mifare::classic::Key &key_b=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Upgrade security level to SL1 (Classic compatibility mode)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1222</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a23492234bf6f5701225f7cc5943d1912"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a23492234bf6f5701225f7cc5943d1912">m5::nfc::NFCLayerA::write</a></div><div class="ttdeci">bool write(const uint8_t saddr, const uint8_t *tx, const uint16_t tx_len, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Write any bytes to user area.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:746</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a2865997fa2380a732230f9eb49a86a8c"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a2865997fa2380a732230f9eb49a86a8c">m5::nfc::NFCLayerA::isActive</a></div><div class="ttdeci">bool isActive(const m5::nfc::a::PICC &picc) const</div><div class="ttdoc">Is the specified PICC currently active?</div><div class="ttdef"><b>Definition</b> nfc_layer_a.hpp:71</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a347f20c1818de724908bba309e42909f"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a347f20c1818de724908bba309e42909f">m5::nfc::NFCLayerA::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_a.hpp:554</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a439668b546644bf82e4bf402806c4fc3"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a439668b546644bf82e4bf402806c4fc3">m5::nfc::NFCLayerA::supportsFilesystem</a></div><div class="ttdeci">virtual file_system_feature_t supportsFilesystem() const override</div><div class="ttdoc">activePICC's File system</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:194</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a48ebe154a123b7213cb9783b6b0d24dd"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a48ebe154a123b7213cb9783b6b0d24dd">m5::nfc::NFCLayerA::activate</a></div><div class="ttdeci">bool activate(const m5::nfc::a::PICC &picc, const bool force_rats=false)</div><div class="ttdoc">Activate a specific PICC (anti-collision against the given PICC)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:274</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a4d73b0666a5550b26b70cfbcc24bb6c4"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a4d73b0666a5550b26b70cfbcc24bb6c4">m5::nfc::NFCLayerA::mifareUltralightCAuthenticate</a></div><div class="ttdeci">bool mifareUltralightCAuthenticate(const uint8_t key[16])</div><div class="ttdoc">Authentication for MIFARE UltralightC.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1144</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a55e8d544bdd962d449d1b033fbc8bd75"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a55e8d544bdd962d449d1b033fbc8bd75">m5::nfc::NFCLayerA::mifareUltralightChangeFormatToNDEF</a></div><div class="ttdeci">bool mifareUltralightChangeFormatToNDEF()</div><div class="ttdoc">Write change to NFC Type-2 (NDEF) format for MIFARE Ultralight/C.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1114</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a569a7bfed33c5202acacb045b39519a2"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a569a7bfed33c5202acacb045b39519a2">m5::nfc::NFCLayerA::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_a.hpp:558</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a59f94b281ece2f3f24ec537613b7b2c1"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a59f94b281ece2f3f24ec537613b7b2c1">m5::nfc::NFCLayerA::ndefPrepareDesfire</a></div><div class="ttdeci">bool ndefPrepareDesfire(const uint32_t max_ndef_size)</div><div class="ttdoc">Prepare NDEF files on MIFARE DESFire (EV1/EV2/EV3)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1362</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a654141401bac8480c56593bf476a822a"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a654141401bac8480c56593bf476a822a">m5::nfc::NFCLayerA::mifareClassicWriteValueBlock</a></div><div class="ttdeci">bool mifareClassicWriteValueBlock(const uint8_t block, const int32_t value)</div><div class="ttdoc">Write the specific block as the value block.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1077</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a67ad153f9d8d8a13d05bc4b8048dbf7b"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a67ad153f9d8d8a13d05bc4b8048dbf7b">m5::nfc::NFCLayerA::ndefIsValidFormat</a></div><div class="ttdeci">bool ndefIsValidFormat(bool &valid)</div><div class="ttdoc">Is the PICC data in NDEF format?</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1348</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a6c5ba9ff6ce1ad9c5c2ec5adf17a9299"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a6c5ba9ff6ce1ad9c5c2ec5adf17a9299">m5::nfc::NFCLayerA::select</a></div><div class="ttdeci">bool select(m5::nfc::a::PICC &picc)</div><div class="ttdoc">Select a PICC (anti-collision + SELECT cascade to ACTIVE)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:259</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a7959e21229eebefebf607d65dd2ca8cd"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a7959e21229eebefebf607d65dd2ca8cd">m5::nfc::NFCLayerA::isoDEP</a></div><div class="ttdeci">virtual m5::nfc::isodep::IsoDEP * isoDEP() override</div><div class="ttdoc">ISO-DEP interface (nullptr if not supported)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.hpp:59</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a80e45ceb5b4bdf04ac2a667fde3b92ee"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a80e45ceb5b4bdf04ac2a667fde3b92ee">m5::nfc::NFCLayerA::read16</a></div><div class="ttdeci">bool read16(uint8_t rx[16], const uint8_t addr)</div><div class="ttdoc">Read the 1 block / 4 page (16 bytes)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:520</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a86871cce9cdaf6ebb5bb2bdfdf860248"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a86871cce9cdaf6ebb5bb2bdfdf860248">m5::nfc::NFCLayerA::mifareClassicDecrementValueBlock</a></div><div class="ttdeci">bool mifareClassicDecrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)</div><div class="ttdoc">Decrement value of the value block.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1088</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a88b5213b7feafcec4c5e0e12d53d1a8c"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a88b5213b7feafcec4c5e0e12d53d1a8c">m5::nfc::NFCLayerA::activatedPICC</a></div><div class="ttdeci">const m5::nfc::a::PICC & activatedPICC() const</div><div class="ttdoc">Retrieve the currently activated PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.hpp:80</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a9434350fb2af7119b16cdcb1170fb66b"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9434350fb2af7119b16cdcb1170fb66b">m5::nfc::NFCLayerA::ndefRead</a></div><div class="ttdeci">bool ndefRead(m5::nfc::ndef::TLV &msg)</div><div class="ttdoc">Read NDEF Message TLV.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1370</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a972e8373f292165448f7a5d384a9f875"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a972e8373f292165448f7a5d384a9f875">m5::nfc::NFCLayerA::write4</a></div><div class="ttdeci">bool write4(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)</div><div class="ttdoc">Write the 1 page (4 bytes)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:698</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_a9a8e6e8c38c98228e83974bd6584f42e"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#a9a8e6e8c38c98228e83974bd6584f42e">m5::nfc::NFCLayerA::reactivate</a></div><div class="ttdeci">bool reactivate()</div><div class="ttdoc">Reactivate the previously selected PICC.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.hpp:160</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_aa249c4d6c5425dbf0f79ae9d29be3540"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aa249c4d6c5425dbf0f79ae9d29be3540">m5::nfc::NFCLayerA::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_a.hpp:562</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_aaae6d1f24bed2b0e6bb13697fd11a9e5"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aaae6d1f24bed2b0e6bb13697fd11a9e5">m5::nfc::NFCLayerA::identify</a></div><div class="ttdeci">bool identify(m5::nfc::a::PICC &picc)</div><div class="ttdoc">Identify the specified PICC type.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:331</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ab668e6b37b0a4263efc29ee97ec2f44d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ab668e6b37b0a4263efc29ee97ec2f44d">m5::nfc::NFCLayerA::read4</a></div><div class="ttdeci">bool read4(uint8_t rx[4], const uint8_t addr)</div><div class="ttdoc">Read the 1 page.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:502</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ac0661dac6e7ca06ef108871cc822b2c8"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac0661dac6e7ca06ef108871cc822b2c8">m5::nfc::NFCLayerA::mifareClassicAuthenticateB</a></div><div class="ttdeci">bool mifareClassicAuthenticateB(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Authentication by KeyB for MIFARE classic.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:951</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ac1bb18ba571351953246a97168e30c79"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac1bb18ba571351953246a97168e30c79">m5::nfc::NFCLayerA::deactivate</a></div><div class="ttdeci">bool deactivate()</div><div class="ttdoc">Send HLTA to the currently selected PICC (deactivate)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:316</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ac3d2c944c286800b9e1147674172f248"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac3d2c944c286800b9e1147674172f248">m5::nfc::NFCLayerA::mifareClassicWriteAccessCondition</a></div><div class="ttdeci">bool mifareClassicWriteAccessCondition(const uint8_t block, const uint8_t c123, const m5::nfc::a::mifare::classic::Key &akey, const m5::nfc::a::mifare::classic::Key &bkey)</div><div class="ttdoc">Write the specific block access conditions.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:982</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ac9a9341857b32fa2016d93e2dce4d053"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ac9a9341857b32fa2016d93e2dce4d053">m5::nfc::NFCLayerA::supportsNFCTag</a></div><div class="ttdeci">virtual m5::nfc::NFCForumTag supportsNFCTag() const override</div><div class="ttdoc">activePICC's NDEF type</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:189</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_acd1252e937569b38de4d1e0c15d7217d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#acd1252e937569b38de4d1e0c15d7217d">m5::nfc::NFCLayerA::ndefPrepareDesfireLight</a></div><div class="ttdeci">bool ndefPrepareDesfireLight()</div><div class="ttdoc">Prepare NDEF files on MIFARE DESFire Light.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1354</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ace7c09b993fdabbea85583b2e9f4d49c"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ace7c09b993fdabbea85583b2e9f4d49c">m5::nfc::NFCLayerA::mifareClassicAuthenticateA</a></div><div class="ttdeci">bool mifareClassicAuthenticateA(const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Authentication by KeyA for MIFARE classic.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:946</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ad2434059c53afed91402c9ccffd156b6"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad2434059c53afed91402c9ccffd156b6">m5::nfc::NFCLayerA::ndefWrite</a></div><div class="ttdeci">bool ndefWrite(const m5::nfc::ndef::TLV &msg)</div><div class="ttdoc">Write NDEF message.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1387</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ad24a58b5b02a26316e0c14bda504e243"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad24a58b5b02a26316e0c14bda504e243">m5::nfc::NFCLayerA::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_a.hpp:566</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_ad305314219e83a82d21ed46c163e18b1"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#ad305314219e83a82d21ed46c163e18b1">m5::nfc::NFCLayerA::mifarePlusUpgradeSecurityLevel3</a></div><div class="ttdeci">bool mifarePlusUpgradeSecurityLevel3(const m5::nfc::a::mifare::plus::AESKey &l3_switch_key=m5::nfc::a::mifare::plus::DEFAULT_KEY)</div><div class="ttdoc">Upgrade security level to SL3 (AES)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1330</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_adc1ce9c8c03feea93406d287df7b355b"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#adc1ce9c8c03feea93406d287df7b355b">m5::nfc::NFCLayerA::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_a.cpp:184</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_add99392d776e0757afc345dabec6dffd"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#add99392d776e0757afc345dabec6dffd">m5::nfc::NFCLayerA::mifareClassicReadAccessCondition</a></div><div class="ttdeci">bool mifareClassicReadAccessCondition(uint8_t &c123, const uint8_t block)</div><div class="ttdoc">Read the specific block access conditions.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:956</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_aebcd787d8bc53fd994135a0507f80abe"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#aebcd787d8bc53fd994135a0507f80abe">m5::nfc::NFCLayerA::mifareClassicRestoreValueBlock</a></div><div class="ttdeci">bool mifareClassicRestoreValueBlock(const uint8_t block)</div><div class="ttdoc">Restore block value to inner buffer.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1109</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_af03e1b30f185127ecd3efe7c2e69562d"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af03e1b30f185127ecd3efe7c2e69562d">m5::nfc::NFCLayerA::read</a></div><div class="ttdeci">bool read(uint8_t *rx, uint16_t &rx_len, const uint8_t saddr, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)</div><div class="ttdoc">Read any bytes from user area.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:528</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_af0ee18fb7743f541ce135af87c950275"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af0ee18fb7743f541ce135af87c950275">m5::nfc::NFCLayerA::wakeup</a></div><div class="ttdeci">bool wakeup(uint16_t &atqa)</div><div class="ttdoc">Send WUPA to wake a PICC from IDLE or HALT.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:204</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_af7efea879304539a9874d23e5c957f74"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af7efea879304539a9874d23e5c957f74">m5::nfc::NFCLayerA::write16</a></div><div class="ttdeci">bool write16(const uint8_t addr, const uint8_t *tx, const uint16_t tx_len, const bool safety=true)</div><div class="ttdoc">Write the 1 block / 4 page (16 bytes)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:714</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_af922fdf273e872f865fb78312796393b"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#af922fdf273e872f865fb78312796393b">m5::nfc::NFCLayerA::transceive</a></div><div class="ttdeci">virtual bool transceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms) override</div><div class="ttdoc">Transceive (RF command)</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:178</div></div>
|
|
<div class="ttc" id="aclassm5_1_1nfc_1_1_n_f_c_layer_a_html_afdcc37375bccbdf436826b2f1f973212"><div class="ttname"><a href="classm5_1_1nfc_1_1_n_f_c_layer_a.html#afdcc37375bccbdf436826b2f1f973212">m5::nfc::NFCLayerA::mifareClassicIncrementValueBlock</a></div><div class="ttdeci">bool mifareClassicIncrementValueBlock(const uint8_t block, const uint32_t delta, const bool transfer=true)</div><div class="ttdoc">Increment value of the value block.</div><div class="ttdef"><b>Definition</b> nfc_layer_a.cpp:1096</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_1isodep_1_1_iso_d_e_p_html"><div class="ttname"><a href="classm5_1_1nfc_1_1isodep_1_1_iso_d_e_p.html">m5::nfc::isodep::IsoDEP</a></div><div class="ttdoc">ISO Data Exchange Protocol.</div><div class="ttdef"><b>Definition</b> isoDEP.hpp:190</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="aiso_d_e_p_8hpp_html"><div class="ttname"><a href="iso_d_e_p_8hpp.html">isoDEP.hpp</a></div><div class="ttdoc">ISO Data Exchange Protocol.</div></div>
|
|
<div class="ttc" id="amifare_8hpp_html_a3eeb737dbb14ec10fceed6a5286b961e"><div class="ttname"><a href="mifare_8hpp.html#a3eeb737dbb14ec10fceed6a5286b961e">m5::nfc::a::mifare::plus::AESKey</a></div><div class="ttdeci">std::array< uint8_t, 16 > AESKey</div><div class="ttdoc">MIFARE Plus SL2/3 Key (AES)</div><div class="ttdef"><b>Definition</b> mifare.hpp:279</div></div>
|
|
<div class="ttc" id="amifare_8hpp_html_af1db86974ac295e399755ea6fb89e792"><div class="ttname"><a href="mifare_8hpp.html#af1db86974ac295e399755ea6fb89e792">m5::nfc::a::mifare::classic::Key</a></div><div class="ttdeci">std::array< uint8_t, 6 > Key</div><div class="ttdoc">MIFARE classic Key.</div><div class="ttdef"><b>Definition</b> mifare.hpp:50</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="anamespacev_html"><div class="ttname"><a href="namespacev.html">v</a></div><div class="ttdoc">NFC-V definitions.</div></div>
|
|
<div class="ttc" id="andef_8hpp_html"><div class="ttname"><a href="ndef_8hpp.html">ndef.hpp</a></div><div class="ttdoc">NDEF related.</div></div>
|
|
<div class="ttc" id="andef_8hpp_html_a5716a98da0909374b245e22ea5b4bfed"><div class="ttname"><a href="ndef_8hpp.html#a5716a98da0909374b245e22ea5b4bfed">m5::nfc::ndef::TagBits</a></div><div class="ttdeci">uint8_t TagBits</div><div class="ttdoc">TLV(Tag,Length,Value) tag bit group for type2/5.</div><div class="ttdef"><b>Definition</b> ndef.hpp:55</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_8hpp_html_a14c7cd97b5b6e6bef9a0485ee5b430a3"><div class="ttname"><a href="nfc_8hpp.html#a14c7cd97b5b6e6bef9a0485ee5b430a3">m5::nfc::file_system_feature_t</a></div><div class="ttdeci">uint8_t file_system_feature_t</div><div class="ttdoc">Alias for file_system_feature_t.</div><div class="ttdef"><b>Definition</b> nfc.hpp:62</div></div>
|
|
<div class="ttc" id="anfc_8hpp_html_a952a1a2c9c08aa278d2aadafe02a5cd1"><div class="ttname"><a href="nfc_8hpp.html#a952a1a2c9c08aa278d2aadafe02a5cd1">m5::nfc::NFCForumTag</a></div><div class="ttdeci">NFCForumTag</div><div class="ttdoc">NFC Forum Tag Type.</div><div class="ttdef"><b>Definition</b> nfc.hpp:39</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="anfca_8hpp_html"><div class="ttname"><a href="nfca_8hpp.html">nfca.hpp</a></div><div class="ttdoc">NFC-A definitions.</div></div>
|
|
<div class="ttc" id="anfca_8hpp_html_a1a21e28554c0dc7d49466fff910e90ac"><div class="ttname"><a href="nfca_8hpp.html#a1a21e28554c0dc7d49466fff910e90ac">m5::nfc::a::Command</a></div><div class="ttdeci">Command</div><div class="ttdoc">ISO-14443-3/4,MIFARE,NTAG commands.</div><div class="ttdef"><b>Definition</b> nfca.hpp:538</div></div>
|
|
<div class="ttc" id="anfca_8hpp_html_ab84bb90cd0fe7b0457f4d2a7969da0d9"><div class="ttname"><a href="nfca_8hpp.html#ab84bb90cd0fe7b0457f4d2a7969da0d9">m5::nfc::a::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of the PICC.</div><div class="ttdef"><b>Definition</b> nfca.hpp:31</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_a_t_s_html"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_a_t_s.html">m5::nfc::a::ATS</a></div><div class="ttdoc">Answer to request.</div><div class="ttdef"><b>Definition</b> nfca.hpp:256</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html">m5::nfc::a::PICC</a></div><div class="ttdoc">PICC for NFC-A.</div><div class="ttdef"><b>Definition</b> nfca.hpp:335</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a13570108ce5e10a9f91495c254c5156d"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13570108ce5e10a9f91495c254c5156d">m5::nfc::a::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> nfca.hpp:458</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a13e5f8003b32199e33633f2e7959ad5a"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a13e5f8003b32199e33633f2e7959ad5a">m5::nfc::a::PICC::supportsNFC</a></div><div class="ttdeci">bool supportsNFC() const</div><div class="ttdoc">Supports NFC?</div><div class="ttdef"><b>Definition</b> nfca.hpp:487</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a3a89f0ac9f0e12dabd86b4cd45d760de"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a3a89f0ac9f0e12dabd86b4cd45d760de">m5::nfc::a::PICC::lastUserBlock</a></div><div class="ttdeci">uint16_t lastUserBlock() const</div><div class="ttdoc">Total size.</div><div class="ttdef"><b>Definition</b> nfca.hpp:473</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a6332d499b3dd5c2c5c1d2bc8e4ae812b"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a6332d499b3dd5c2c5c1d2bc8e4ae812b">m5::nfc::a::PICC::valid</a></div><div class="ttdeci">bool valid() const</div><div class="ttdoc">Valid?</div><div class="ttdef"><b>Definition</b> nfca.hpp:356</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a74c5f76b9399c37a5a14d936d353429b"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a74c5f76b9399c37a5a14d936d353429b">m5::nfc::a::PICC::firstUserBlock</a></div><div class="ttdeci">uint16_t firstUserBlock() const</div><div class="ttdoc">Gets the first user block/page address.</div><div class="ttdef"><b>Definition</b> nfca.hpp:469</div></div>
|
|
<div class="ttc" id="astructm5_1_1nfc_1_1a_1_1_p_i_c_c_html_a8f0546bace218cbda64584054e5863db"><div class="ttname"><a href="structm5_1_1nfc_1_1a_1_1_p_i_c_c.html#a8f0546bace218cbda64584054e5863db">m5::nfc::a::PICC::isMifareUltralight</a></div><div class="ttdeci">bool isMifareUltralight() const</div><div class="ttdoc">Is MIFARE Ultralight series?</div><div class="ttdef"><b>Definition</b> nfca.hpp:393</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_daf7a45c10064dc7c67962aad70357d8.html">a</a></li><li class="navelem"><a class="el" href="nfc__layer__a_8hpp.html">nfc_layer_a.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>
|