Files
M5Unit-NFC/apdu_8hpp_source.html

350 lines
48 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/apdu/apdu.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">M5Unit-NFC<span id="projectnumber">&#160;0.0.3 git rev:59f5362</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('apdu_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">apdu.hpp</div></div>
</div><!--header-->
<div class="contents">
<a href="apdu_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="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#ifndef M5_UNIT_UNIFIED_NFC_NFC_APDU_APDU_HPP</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#define M5_UNIT_UNIFIED_NFC_NFC_APDU_APDU_HPP</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacem5.html">m5</a> {</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacenfc.html">nfc</a> {</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceapdu.html">apdu</a> {</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a"> 27</a></span><span class="keyword">constexpr</span> uint16_t <a class="code hl_variable" href="apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a">RESPONSE_OK</a>{0x9000};</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8"> 29</a></span><span class="keyword">constexpr</span> uint16_t <a class="code hl_variable" href="apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8">SUCCESSFULLY_1</a>{0x6100};</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64"> 31</a></span><span class="keyword">constexpr</span> uint16_t <a class="code hl_variable" href="apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64">SUCCESSFULLY_2</a>{0x9F00};</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a526ff7f8c3bf24f7a29439dfd8c94abf"> 33</a></span><span class="keyword">constexpr</span> uint8_t <a class="code hl_variable" href="apdu_8hpp.html#a526ff7f8c3bf24f7a29439dfd8c94abf">RESPONSE_BYTES_STILL_AVAILABLE</a>{0x61}; </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a47cfe093613fbd3f11fcf22156238da3"> 34</a></span><span class="keyword">constexpr</span> uint8_t <a class="code hl_variable" href="apdu_8hpp.html#a47cfe093613fbd3f11fcf22156238da3">WRONG_LENGTH_LE</a>{0x6C}; </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="foldopen" id="foldopen00038" data-start="{" data-end="}">
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244"> 38</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">is_response_OK</a>(<span class="keyword">const</span> uint16_t sw12)</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span>{</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">return</span> sw12 == <a class="code hl_variable" href="apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a">RESPONSE_OK</a> || ((sw12 &amp; 0xFF00) == <a class="code hl_variable" href="apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8">SUCCESSFULLY_1</a>) || ((sw12 &amp; 0xFF00) == <a class="code hl_variable" href="apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64">SUCCESSFULLY_2</a>);</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span>}</div>
</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
<div class="foldopen" id="foldopen00044" data-start="{" data-end="}">
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a02f2cf412748d5964bb0034cb40dd622"> 44</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">is_response_OK</a>(<span class="keyword">const</span> uint8_t sw[2])</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span>{</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">is_response_OK</a>((uint16_t)((sw[0] &lt;&lt; 8) | sw[1]));</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span>}</div>
</div>
<div class="foldopen" id="foldopen00049" data-start="{" data-end="}">
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#adba4a567d412579a8447c2da5425e935"> 49</a></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">is_response_OK</a>(<span class="keyword">const</span> uint8_t sw1, <span class="keyword">const</span> uint8_t sw2)</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span>{</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">is_response_OK</a>((uint16_t)((sw1 &lt;&lt; 8) | sw2));</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span>}</div>
</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="foldopen" id="foldopen00058" data-start="{" data-end="};">
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45"> 58</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45">INS</a> : uint8_t {</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// ISO/IEC 7816-4</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> SELECT_FILE = 0xA4,</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> CREATE_FILE = 0xE0,</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> READ_BINARY = 0xB0,</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> WRITE_BINARY = 0xD0,</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> UPDATE_BINARY = 0xD6,</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> ERASE_BINARY = 0x0E,</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> READ_RECORD = 0xB2,</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> WRITE_RECORD = 0xD2,</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> APPEND_RECORD = 0xE2,</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> UPDATE_RECORRD = 0xDC,</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> GET_RESPONSE = 0xC0,</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> GET_DATA = 0xCA,</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> PUT_DATA = 0xDA,</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> VERIFY = 0x20,</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> INTERNAL_AUTHENTICATE = 0x88,</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> EXTERNAL_AUTHENTICATE = 0x82,</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> GET_CHALLEMGE = 0x84,</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// Not ISO/IEC 7816-4</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> LOCK_DF = 0x50,</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> UNLOCK_DF = 0x52,</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> UNLOCK_KEY = 0x54,</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> CHANGE_KEY = 0x32,</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> ERASE_ALL_RECORDS = 0x06,</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> GET_VERSION = 0x60,</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// DESFire</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> DF_CREATE_APPLICATION = 0xCA,</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> DF_DELETE_APPLICATION = 0xDA,</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> DF_SELECT_APPLICATION = 0x5A,</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> DF_GET_APPLICATION_IDS = 0x6A,</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> DF_CREATE_STD_DATA_FILE = 0xCD,</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> DF_GET_FREE_MEMORY = 0x6E,</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> DF_GET_FILE_IDS = 0x6F,</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> DF_GET_ISO_FILE_IDS = 0x61,</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> DF_GET_KEY_SETTINGS = 0x45,</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> DF_SET_CONFIGURATION = 0x5C,</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> DF_CHANGE_FILE_SETTINGS = 0x5F,</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> DF_AUTHENTICATE = 0x0A,</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> DF_AUTHENTICATE_ISO = 0x1A,</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> DF_AUTHENTICATE_AES = 0xAA,</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> DF_AUTHENTICATE_EV2 = 0x71,</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> DF_FORMAT_PICC = 0xFC,</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> DF_READ_DATA = 0xBD,</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> DF_WRITE_DATA = 0x3D,</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> DF_GET_FILE_SETTINGS = 0xF5,</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> DF_DELETE_TRANSACTION_MAC_FILE = 0xDF,</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> DF_CREATE_TRANSACTION_MAC_FILE = 0xCE,</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>};</div>
</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="foldopen" id="foldopen00122" data-start="{" data-end="};">
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad"> 122</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad">SelectBy</a> : uint8_t {</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881">FileId</a> = 0x00, </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5">ChildDf</a> = 0x01, </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778">EfUnderCurrentDf</a> = 0x02, </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61">ParentDf</a> = 0x03, </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe">DfName</a> = 0x04, </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb">PathFromMf</a> = 0x08, </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a">PathFromCurrentDf</a> = 0x09, </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span>};</div>
</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
<div class="foldopen" id="foldopen00137" data-start="{" data-end="};">
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400"> 137</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400">SelectOccurrence</a> : uint8_t {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0">FirstOrOnly</a> = 0x00, </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b">Last</a> = 0x01, </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55">Next</a> = 0x02, </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b">Previous</a> = 0x03, </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span>};</div>
</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="foldopen" id="foldopen00148" data-start="{" data-end="};">
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf"> 148</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf">SelectResponse</a> : uint8_t {</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a">FCI</a> = 0x00, </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <a class="code hl_struct" href="structm5_1_1nfc_1_1_f_c_p.html">FCP</a> = 0x04, </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_enumvalue" href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d">FMD</a> = 0x08, </div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> None = 0x0C, </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span>};</div>
</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a78d50d5bfaabce84eeec859500b2422d"> 155</a></span><span class="keyword">constexpr</span> uint16_t <a class="code hl_variable" href="apdu_8hpp.html#a78d50d5bfaabce84eeec859500b2422d">master_file_id</a>{0x3F00}; </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="keyword">inline</span> <span class="keywordtype">bool</span> need_select_file_le(<span class="keyword">const</span> uint8_t param2)</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span>{</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordflow">return</span> (param2 &amp; 0x0C) != 0x0C;</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span>}</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="foldopen" id="foldopen00166" data-start="{" data-end="};">
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html"> 166</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html">TLV</a> {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce"> 167</a></span> uint32_t <a class="code hl_variable" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce">tag</a>{}; </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a23282914a0c23b080895fb06291de1aa"> 168</a></span> uint32_t <a class="code hl_variable" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a23282914a0c23b080895fb06291de1aa">len</a>{}; </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"><a class="line" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a62f5cacf0a1d57d2e0b0f5c328755697"> 169</a></span> <span class="keyword">const</span> uint8_t* <a class="code hl_namespace" href="namespacev.html">v</a>{}; </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a6d0ee1d7ab0eb35aeaa7e34c22f4fa97"> 170</a></span> uint8_t <a class="code hl_variable" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a6d0ee1d7ab0eb35aeaa7e34c22f4fa97">tag_len</a>{}; </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> is_constructed()<span class="keyword"> const</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">return</span> (<a class="code hl_variable" href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce">tag</a> &amp; 0x20) != 0;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> }</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> is_primitive()<span class="keyword"> const</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">return</span> !is_constructed();</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> }</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span>};</div>
</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>std::vector&lt;TLV&gt; parse_tlv(<span class="keyword">const</span> uint8_t* ptr, <span class="keyword">const</span> uint32_t len);</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="keywordtype">void</span> dump_tlv(<span class="keyword">const</span> std::vector&lt;TLV&gt;&amp; tlvs, <span class="keyword">const</span> uint8_t depth = 0);</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span>std::vector&lt;uint8_t&gt; make_apdu_command(<span class="keyword">const</span> uint8_t cla, <span class="keyword">const</span> uint8_t ins, <span class="keyword">const</span> uint8_t param1 = 0x00,</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">const</span> uint8_t param2 = 0x00, <span class="keyword">const</span> uint8_t* data = <span class="keyword">nullptr</span>,</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keyword">const</span> uint16_t data_len = 0, <span class="keyword">const</span> uint16_t rx_len = 0);</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="foldopen" id="foldopen00203" data-start="{" data-end="}">
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351"> 203</a></span><span class="keyword">inline</span> std::vector&lt;uint8_t&gt; <a class="code hl_function" href="apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351">make_apdu_case1</a>(<span class="keyword">const</span> uint8_t cla, <span class="keyword">const</span> uint8_t ins, <span class="keyword">const</span> uint8_t p1, <span class="keyword">const</span> uint8_t p2)</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span>{</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">make_apdu_command</a>(cla, ins, p1, p2, <span class="keyword">nullptr</span>, 0, 0);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span>}</div>
</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="foldopen" id="foldopen00209" data-start="{" data-end="}">
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01"> 209</a></span><span class="keyword">inline</span> std::vector&lt;uint8_t&gt; <a class="code hl_function" href="apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01">make_apdu_case2</a>(<span class="keyword">const</span> uint8_t cla, <span class="keyword">const</span> uint8_t ins, <span class="keyword">const</span> uint8_t p1, <span class="keyword">const</span> uint8_t p2,</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">const</span> uint16_t le)</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span>{</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">make_apdu_command</a>(cla, ins, p1, p2, <span class="keyword">nullptr</span>, 0, le);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span>}</div>
</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="foldopen" id="foldopen00216" data-start="{" data-end="}">
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d"> 216</a></span><span class="keyword">inline</span> std::vector&lt;uint8_t&gt; <a class="code hl_function" href="apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d">make_apdu_case3</a>(<span class="keyword">const</span> uint8_t cla, <span class="keyword">const</span> uint8_t ins, <span class="keyword">const</span> uint8_t p1, <span class="keyword">const</span> uint8_t p2,</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">const</span> uint8_t* data, <span class="keyword">const</span> uint16_t data_len)</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span>{</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">make_apdu_command</a>(cla, ins, p1, p2, data, data_len, 0);</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span>}</div>
</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="foldopen" id="foldopen00223" data-start="{" data-end="}">
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"><a class="line" href="apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff"> 223</a></span><span class="keyword">inline</span> std::vector&lt;uint8_t&gt; <a class="code hl_function" href="apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff">make_apdu_case4</a>(<span class="keyword">const</span> uint8_t cla, <span class="keyword">const</span> uint8_t ins, <span class="keyword">const</span> uint8_t p1, <span class="keyword">const</span> uint8_t p2,</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">const</span> uint8_t* data, <span class="keyword">const</span> uint16_t data_len, <span class="keyword">const</span> uint16_t le)</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span>{</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keywordflow">return</span> <a class="code hl_function" href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">make_apdu_command</a>(cla, ins, p1, p2, data, data_len, le);</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>}</div>
</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span>} <span class="comment">// namespace apdu</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span>} <span class="comment">// namespace nfc</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span>} <span class="comment">// namespace m5</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aapdu_8cpp_html_ade33069f0d2d930a92d79591644b8ed8"><div class="ttname"><a href="apdu_8cpp.html#ade33069f0d2d930a92d79591644b8ed8">m5::nfc::apdu::make_apdu_command</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; make_apdu_command(const uint8_t cla, const uint8_t ins, const uint8_t param1, const uint8_t param2, const uint8_t *data, const uint16_t data_len, const uint16_t rx_len)</div><div class="ttdoc">Make APDU command.</div><div class="ttdef"><b>Definition</b> apdu.cpp:22</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08ad"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ad">m5::nfc::apdu::SelectBy</a></div><div class="ttdeci">SelectBy</div><div class="ttdoc">Select control for SELECT_FILE.</div><div class="ttdef"><b>Definition</b> apdu.hpp:122</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada127a046b88390d6cf9d13d8f74d04778">m5::nfc::apdu::SelectBy::EfUnderCurrentDf</a></div><div class="ttdeci">@ EfUnderCurrentDf</div><div class="ttdoc">Select EF under current DF (FID in data)</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada225a9460e6eedf7af126fdc580345881">m5::nfc::apdu::SelectBy::FileId</a></div><div class="ttdeci">@ FileId</div><div class="ttdoc">Select MF/DF/EF by file ID.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada6bf1a0b1d6bc92eae6416611613dbafe">m5::nfc::apdu::SelectBy::DfName</a></div><div class="ttdeci">@ DfName</div><div class="ttdoc">Select by DF name (AID)</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08ada7998394ef65789d8e3a93fb947d3c8a5">m5::nfc::apdu::SelectBy::ChildDf</a></div><div class="ttdeci">@ ChildDf</div><div class="ttdoc">Select child DF (FID in data)</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adabf1f53068262ad6525671112c94790cb">m5::nfc::apdu::SelectBy::PathFromMf</a></div><div class="ttdeci">@ PathFromMf</div><div class="ttdoc">Select by path from MF.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adada937e05c426e8439cd1f4130d69562a">m5::nfc::apdu::SelectBy::PathFromCurrentDf</a></div><div class="ttdeci">@ PathFromCurrentDf</div><div class="ttdoc">Select by path from current DF.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61"><div class="ttname"><a href="apdu_8hpp.html#a15996a2f517e76dafb70c61654cb08adae0b5d60e5eea9e28524ae742a4a85b61">m5::nfc::apdu::SelectBy::ParentDf</a></div><div class="ttdeci">@ ParentDf</div><div class="ttdoc">Select parent DF.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a1b669f6a49f7093762d3dad36c420b6a"><div class="ttname"><a href="apdu_8hpp.html#a1b669f6a49f7093762d3dad36c420b6a">m5::nfc::apdu::RESPONSE_OK</a></div><div class="ttdeci">constexpr uint16_t RESPONSE_OK</div><div class="ttdoc">Command successfully executed (OK)</div><div class="ttdef"><b>Definition</b> apdu.hpp:27</div></div>
<div class="ttc" id="aapdu_8hpp_html_a3758d358b5278fdb64b90cffcb4f0a64"><div class="ttname"><a href="apdu_8hpp.html#a3758d358b5278fdb64b90cffcb4f0a64">m5::nfc::apdu::SUCCESSFULLY_2</a></div><div class="ttdeci">constexpr uint16_t SUCCESSFULLY_2</div><div class="ttdoc">Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.</div><div class="ttdef"><b>Definition</b> apdu.hpp:31</div></div>
<div class="ttc" id="aapdu_8hpp_html_a3f8d54d3187aa2aebd756f6da9523351"><div class="ttname"><a href="apdu_8hpp.html#a3f8d54d3187aa2aebd756f6da9523351">m5::nfc::apdu::make_apdu_case1</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; make_apdu_case1(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2)</div><div class="ttdoc">Make APDU case1 command [CLA | INS | P1 | P2].</div><div class="ttdef"><b>Definition</b> apdu.hpp:203</div></div>
<div class="ttc" id="aapdu_8hpp_html_a43277a89917969f53d3b2feb57caecbf"><div class="ttname"><a href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbf">m5::nfc::apdu::SelectResponse</a></div><div class="ttdeci">SelectResponse</div><div class="ttdoc">Response for SELECT_FILE.</div><div class="ttdef"><b>Definition</b> apdu.hpp:148</div></div>
<div class="ttc" id="aapdu_8hpp_html_a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d"><div class="ttname"><a href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa4b25de86ef47d3b09525b1176978b34d">m5::nfc::apdu::SelectResponse::FMD</a></div><div class="ttdeci">@ FMD</div><div class="ttdoc">FMD template.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a"><div class="ttname"><a href="apdu_8hpp.html#a43277a89917969f53d3b2feb57caecbfa74198f9e44085e24bba72b3ccac4c13a">m5::nfc::apdu::SelectResponse::FCI</a></div><div class="ttdeci">@ FCI</div><div class="ttdoc">FCI template.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a47cfe093613fbd3f11fcf22156238da3"><div class="ttname"><a href="apdu_8hpp.html#a47cfe093613fbd3f11fcf22156238da3">m5::nfc::apdu::WRONG_LENGTH_LE</a></div><div class="ttdeci">constexpr uint8_t WRONG_LENGTH_LE</div><div class="ttdoc">Wrong length Le.</div><div class="ttdef"><b>Definition</b> apdu.hpp:34</div></div>
<div class="ttc" id="aapdu_8hpp_html_a4a2d632c8b477931e48b04663927ce01"><div class="ttname"><a href="apdu_8hpp.html#a4a2d632c8b477931e48b04663927ce01">m5::nfc::apdu::make_apdu_case2</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; make_apdu_case2(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint16_t le)</div><div class="ttdoc">Make APDU case2 command [CLA | INS | P1 | P2 | Le].</div><div class="ttdef"><b>Definition</b> apdu.hpp:209</div></div>
<div class="ttc" id="aapdu_8hpp_html_a52383af4e666193fc52faa7c2c0f1c45"><div class="ttname"><a href="apdu_8hpp.html#a52383af4e666193fc52faa7c2c0f1c45">m5::nfc::apdu::INS</a></div><div class="ttdeci">INS</div><div class="ttdoc">APDU instruction code.</div><div class="ttdef"><b>Definition</b> apdu.hpp:58</div></div>
<div class="ttc" id="aapdu_8hpp_html_a526ff7f8c3bf24f7a29439dfd8c94abf"><div class="ttname"><a href="apdu_8hpp.html#a526ff7f8c3bf24f7a29439dfd8c94abf">m5::nfc::apdu::RESPONSE_BYTES_STILL_AVAILABLE</a></div><div class="ttdeci">constexpr uint8_t RESPONSE_BYTES_STILL_AVAILABLE</div><div class="ttdoc">Response bytes still available.</div><div class="ttdef"><b>Definition</b> apdu.hpp:33</div></div>
<div class="ttc" id="aapdu_8hpp_html_a64594933a9df521c8ebaafa07ece39e8"><div class="ttname"><a href="apdu_8hpp.html#a64594933a9df521c8ebaafa07ece39e8">m5::nfc::apdu::SUCCESSFULLY_1</a></div><div class="ttdeci">constexpr uint16_t SUCCESSFULLY_1</div><div class="ttdoc">Command successfully executed; xx bytes of data are available and can be requested using GET RESPON.</div><div class="ttdef"><b>Definition</b> apdu.hpp:29</div></div>
<div class="ttc" id="aapdu_8hpp_html_a74836436e907c80c9a02040d912e6400"><div class="ttname"><a href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400">m5::nfc::apdu::SelectOccurrence</a></div><div class="ttdeci">SelectOccurrence</div><div class="ttdoc">Select occurrence for SELECT_FILE.</div><div class="ttdef"><b>Definition</b> apdu.hpp:137</div></div>
<div class="ttc" id="aapdu_8hpp_html_a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55"><div class="ttname"><a href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a10ac3d04253ef7e1ddc73e6091c0cd55">m5::nfc::apdu::SelectOccurrence::Next</a></div><div class="ttdeci">@ Next</div><div class="ttdoc">Select the next match.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0"><div class="ttname"><a href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400a703aba6102ad8dd4829bc645f464c0b0">m5::nfc::apdu::SelectOccurrence::FirstOrOnly</a></div><div class="ttdeci">@ FirstOrOnly</div><div class="ttdoc">Select the first (or only) match.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b"><div class="ttname"><a href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400ad55b30607c2a9a2616347d6edb789f6b">m5::nfc::apdu::SelectOccurrence::Last</a></div><div class="ttdeci">@ Last</div><div class="ttdoc">Select the last match.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b"><div class="ttname"><a href="apdu_8hpp.html#a74836436e907c80c9a02040d912e6400add1f775e443ff3b9a89270713580a51b">m5::nfc::apdu::SelectOccurrence::Previous</a></div><div class="ttdeci">@ Previous</div><div class="ttdoc">Select the previous match.</div></div>
<div class="ttc" id="aapdu_8hpp_html_a78d50d5bfaabce84eeec859500b2422d"><div class="ttname"><a href="apdu_8hpp.html#a78d50d5bfaabce84eeec859500b2422d">m5::nfc::apdu::master_file_id</a></div><div class="ttdeci">constexpr uint16_t master_file_id</div><div class="ttdoc">Master file ID.</div><div class="ttdef"><b>Definition</b> apdu.hpp:155</div></div>
<div class="ttc" id="aapdu_8hpp_html_a8661d1015977051ff244e69214a9f244"><div class="ttname"><a href="apdu_8hpp.html#a8661d1015977051ff244e69214a9f244">m5::nfc::apdu::is_response_OK</a></div><div class="ttdeci">bool is_response_OK(const uint16_t sw12)</div><div class="ttdoc">Is response successfully?</div><div class="ttdef"><b>Definition</b> apdu.hpp:38</div></div>
<div class="ttc" id="aapdu_8hpp_html_aa98f1a34a0201b9011bab4fe0c3af7ff"><div class="ttname"><a href="apdu_8hpp.html#aa98f1a34a0201b9011bab4fe0c3af7ff">m5::nfc::apdu::make_apdu_case4</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; make_apdu_case4(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len, const uint16_t le)</div><div class="ttdoc">Make APDU case4 command [CLA | INS | P1 | P2 | Lc | C-Data | Le].</div><div class="ttdef"><b>Definition</b> apdu.hpp:223</div></div>
<div class="ttc" id="aapdu_8hpp_html_aca08fb7d12f53387b2a9d8350e01499d"><div class="ttname"><a href="apdu_8hpp.html#aca08fb7d12f53387b2a9d8350e01499d">m5::nfc::apdu::make_apdu_case3</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; make_apdu_case3(const uint8_t cla, const uint8_t ins, const uint8_t p1, const uint8_t p2, const uint8_t *data, const uint16_t data_len)</div><div class="ttdoc">Make APDU case3 command [CLA | INS | P1 | P2 | Lc | C-Data].</div><div class="ttdef"><b>Definition</b> apdu.hpp:216</div></div>
<div class="ttc" id="anamespaceapdu_html"><div class="ttname"><a href="namespaceapdu.html">apdu</a></div><div class="ttdoc">For APDU.</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="anamespacev_html"><div class="ttname"><a href="namespacev.html">v</a></div><div class="ttdoc">NFC-V definitions.</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1_f_c_p_html"><div class="ttname"><a href="structm5_1_1nfc_1_1_f_c_p.html">m5::nfc::FCP</a></div><div class="ttdoc">File Control Parameters.</div><div class="ttdef"><b>Definition</b> file_system.hpp:26</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1apdu_1_1_t_l_v_html"><div class="ttname"><a href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html">m5::nfc::apdu::TLV</a></div><div class="ttdoc">TLV element.</div><div class="ttdef"><b>Definition</b> apdu.hpp:166</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1apdu_1_1_t_l_v_html_a23282914a0c23b080895fb06291de1aa"><div class="ttname"><a href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a23282914a0c23b080895fb06291de1aa">m5::nfc::apdu::TLV::len</a></div><div class="ttdeci">uint32_t len</div><div class="ttdoc">L (length)</div><div class="ttdef"><b>Definition</b> apdu.hpp:168</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1apdu_1_1_t_l_v_html_a6d0ee1d7ab0eb35aeaa7e34c22f4fa97"><div class="ttname"><a href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#a6d0ee1d7ab0eb35aeaa7e34c22f4fa97">m5::nfc::apdu::TLV::tag_len</a></div><div class="ttdeci">uint8_t tag_len</div><div class="ttdoc">Tag length.</div><div class="ttdef"><b>Definition</b> apdu.hpp:170</div></div>
<div class="ttc" id="astructm5_1_1nfc_1_1apdu_1_1_t_l_v_html_ac1307ea0301b70d618bd97927c9bf5ce"><div class="ttname"><a href="structm5_1_1nfc_1_1apdu_1_1_t_l_v.html#ac1307ea0301b70d618bd97927c9bf5ce">m5::nfc::apdu::TLV::tag</a></div><div class="ttdeci">uint32_t tag</div><div class="ttdoc">T (Tag)</div><div class="ttdef"><b>Definition</b> apdu.hpp:167</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_f9c0924a82716dee5be0d585bcd92f13.html">apdu</a></li><li class="navelem"><a class="el" href="apdu_8hpp.html">apdu.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>