-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSdVolume_8h_source.html
271 lines (269 loc) · 45.7 KB
/
SdVolume_8h_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Prusa3d Marlin fork: SdVolume.h 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>
<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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Prusa3d Marlin fork
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">SdVolume.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="SdVolume_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Arduino SdFat Library</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2009 by William Greiman</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This file is part of the Arduino SdFat Library</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * This Library is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * This Library is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * GNU General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * along with the Arduino SdFat Library. If not, see</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * <http://www.gnu.org/licenses/>.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> */</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "Marlin.h"</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifdef SDSUPPORT</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef SdVolume_h</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define SdVolume_h</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="SdFatConfig_8h.html">SdFatConfig.h</a>"</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="Sd2Card_8h.html">Sd2Card.h</a>"</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="SdFatStructs_8h.html">SdFatStructs.h</a>"</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//==============================================================================</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// SdVolume class</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="unioncache__t.html"> 37</a></span> <span class="comment"></span><span class="keyword">union </span><a class="code" href="unioncache__t.html">cache_t</a> {</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="unioncache__t.html#a1828419d5a551c9cc9a5e4212085f20b"> 39</a></span>  uint8_t <a class="code" href="unioncache__t.html#a1828419d5a551c9cc9a5e4212085f20b">data</a>[512 + 1]; <span class="comment">// abuse the last byte for saving '\n' - ugly optimization of read_filtered's inner skipping loop</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887"> 41</a></span> <span class="comment"></span> uint16_t <a class="code" href="unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887">fat16</a>[256];</div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83"> 43</a></span>  uint32_t <a class="code" href="unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83">fat32</a>[128];</div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1"> 45</a></span>  <a class="code" href="structdirectoryEntry.html">dir_t</a> <a class="code" href="unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1">dir</a>[16];</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6"> 47</a></span>  <a class="code" href="structmasterBootRecord.html">mbr_t</a> <a class="code" href="unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6">mbr</a>;</div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764"> 49</a></span>  <a class="code" href="structfat__boot.html">fat_boot_t</a> <a class="code" href="unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764">fbs</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="unioncache__t.html#ad0613173ed4e83920eedfeb33102848a"> 51</a></span>  <a class="code" href="structfat32__boot.html">fat32_boot_t</a> <a class="code" href="unioncache__t.html#ad0613173ed4e83920eedfeb33102848a">fbs32</a>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="unioncache__t.html#a46c7b14586a6248824a97101111cbae1"> 53</a></span>  <a class="code" href="structfat32__fsinfo.html">fat32_fsinfo_t</a> <a class="code" href="unioncache__t.html#a46c7b14586a6248824a97101111cbae1">fsinfo</a>;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classSdVolume.html"> 60</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classSdVolume.html">SdVolume</a> {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSdVolume.html#a30d4489087fbdce20b8fe1a624dbe658"> 63</a></span>  <a class="code" href="classSdVolume.html#a30d4489087fbdce20b8fe1a624dbe658">SdVolume</a>() : fatType_(0) {}</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSdVolume.html#adaecef65fdf94d323597a461eb641f5e"> 68</a></span>  <a class="code" href="unioncache__t.html">cache_t</a>* <a class="code" href="classSdVolume.html#adaecef65fdf94d323597a461eb641f5e">cacheClear</a>() {</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span> (!cacheFlush()) <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  cacheBlockNumber_ = 0XFFFFFFFF;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> &cacheBuffer_;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d"> 83</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">init</a>(<a class="code" href="classSd2Card.html">Sd2Card</a>* dev) { <span class="keywordflow">return</span> <a class="code" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">init</a>(dev, 1) ? true : <a class="code" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">init</a>(dev, 0);}</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">bool</span> <a class="code" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">init</a>(<a class="code" href="classSd2Card.html">Sd2Card</a>* dev, uint8_t part);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// inline functions that return volume info</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classSdVolume.html#a89de160ba292b3f7cc6cd5c168ac4301"> 88</a></span> <span class="comment"></span> uint8_t <a class="code" href="classSdVolume.html#a89de160ba292b3f7cc6cd5c168ac4301">blocksPerCluster</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> blocksPerCluster_;}</div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classSdVolume.html#a9a080a9f8b62cdaa808fb2ff4e8a2101"> 90</a></span>  uint32_t <a class="code" href="classSdVolume.html#a9a080a9f8b62cdaa808fb2ff4e8a2101">blocksPerFat</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> blocksPerFat_;}</div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSdVolume.html#aeed496f4c45d3fedeca0eb8a454ce07e"> 92</a></span>  uint32_t <a class="code" href="classSdVolume.html#aeed496f4c45d3fedeca0eb8a454ce07e">clusterCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> clusterCount_;}</div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSdVolume.html#aa860b21be40dc9cbbac843504eb493a7"> 94</a></span>  uint8_t <a class="code" href="classSdVolume.html#aa860b21be40dc9cbbac843504eb493a7">clusterSizeShift</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> clusterSizeShift_;}</div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSdVolume.html#a94e4b136f2422e2144a1d3ddc030810d"> 96</a></span>  uint32_t <a class="code" href="classSdVolume.html#a94e4b136f2422e2144a1d3ddc030810d">dataStartBlock</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> dataStartBlock_;}</div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classSdVolume.html#a2940ada09a816d71d2d96dca9a4675cc"> 98</a></span>  uint8_t <a class="code" href="classSdVolume.html#a2940ada09a816d71d2d96dca9a4675cc">fatCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> fatCount_;}</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSdVolume.html#ada7da1bdaf3a6fa3e3ecefb592d61d00"> 100</a></span>  uint32_t <a class="code" href="classSdVolume.html#ada7da1bdaf3a6fa3e3ecefb592d61d00">fatStartBlock</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> fatStartBlock_;}</div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSdVolume.html#a1381a95702d1487fd64693dd397b95cf"> 102</a></span>  uint8_t <a class="code" href="classSdVolume.html#a1381a95702d1487fd64693dd397b95cf">fatType</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> fatType_;}</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  int32_t <a class="code" href="classSdVolume.html#a162efe707ab46847202300cb38739629">freeClusterCount</a>();</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSdVolume.html#a8e4f3f1d450c69a346c0ed031c02d737"> 105</a></span>  uint32_t <a class="code" href="classSdVolume.html#a8e4f3f1d450c69a346c0ed031c02d737">rootDirEntryCount</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> rootDirEntryCount_;}</div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSdVolume.html#a01f5b69c45c0d3c2cc6a98d0695fb8ba"> 108</a></span>  uint32_t <a class="code" href="classSdVolume.html#a01f5b69c45c0d3c2cc6a98d0695fb8ba">rootDirStart</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> rootDirStart_;}</div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classSdVolume.html#afe76a9f7c181458995518dc8530a1fad"> 112</a></span>  <a class="code" href="classSd2Card.html">Sd2Card</a>* <a class="code" href="classSdVolume.html#afe76a9f7c181458995518dc8530a1fad">sdCard</a>() {<span class="keywordflow">return</span> sdCard_;}</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSdVolume.html#a4dbcb7b34a83468b1c6f8c4556393526"> 119</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSdVolume.html#a4dbcb7b34a83468b1c6f8c4556393526">dbgFat</a>(uint32_t n, uint32_t* v) {<span class="keywordflow">return</span> fatGet(n, v);}</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">private</span>:</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSdFile.html">SdFile</a>;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Allow SdBaseFile access to SdVolume private data.</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSdBaseFile.html">SdBaseFile</a>;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// value for dirty argument in cacheRawBlock to indicate read from cache</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> CACHE_FOR_READ = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// value for dirty argument in cacheRawBlock to indicate write to cache</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> CACHE_FOR_WRITE = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#if USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="unioncache__t.html">cache_t</a> cacheBuffer_; <span class="comment">// 512 byte cache for device blocks</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  uint32_t cacheBlockNumber_; <span class="comment">// Logical number of block in the cache</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classSd2Card.html">Sd2Card</a>* sdCard_; <span class="comment">// Sd2Card object for cache</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">bool</span> cacheDirty_; <span class="comment">// cacheFlush() will write block if true</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  uint32_t cacheMirrorBlock_; <span class="comment">// block number for mirror FAT</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#else </span><span class="comment">// USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">static</span> <a class="code" href="unioncache__t.html">cache_t</a> cacheBuffer_; <span class="comment">// 512 byte cache for device blocks</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">static</span> uint32_t cacheBlockNumber_; <span class="comment">// Logical number of block in the cache</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">static</span> <a class="code" href="classSd2Card.html">Sd2Card</a>* sdCard_; <span class="comment">// Sd2Card object for cache</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> cacheDirty_; <span class="comment">// cacheFlush() will write block if true</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">static</span> uint32_t cacheMirrorBlock_; <span class="comment">// block number for mirror FAT</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif </span><span class="comment">// USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  uint32_t allocSearchStart_; <span class="comment">// start cluster for alloc search</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  uint8_t blocksPerCluster_; <span class="comment">// cluster size in blocks</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  uint32_t blocksPerFat_; <span class="comment">// FAT size in blocks</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  uint32_t clusterCount_; <span class="comment">// clusters in one FAT</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  uint8_t clusterSizeShift_; <span class="comment">// shift to convert cluster count to block count</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  uint32_t dataStartBlock_; <span class="comment">// first data block number</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  uint8_t fatCount_; <span class="comment">// number of FATs on volume</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  uint32_t fatStartBlock_; <span class="comment">// start block for first FAT</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  uint8_t fatType_; <span class="comment">// volume type (12, 16, OR 32)</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  uint16_t rootDirEntryCount_; <span class="comment">// number of entries in FAT16 root dir</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  uint32_t rootDirStart_; <span class="comment">// root start block for FAT16, cluster for FAT32</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//----------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">bool</span> allocContiguous(uint32_t count, uint32_t* <a class="code" href="classSdBaseFile.html#a08fb9d5226f3308479928ec6a1d72ffc">curCluster</a>);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  uint8_t blockOfCluster(uint32_t position)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> (position >> 9) & (blocksPerCluster_ - 1);}</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  uint32_t clusterStartBlock(uint32_t cluster)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);}</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  uint32_t blockNumber(uint32_t cluster, uint32_t position)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> clusterStartBlock(cluster) + blockOfCluster(position);}</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="unioncache__t.html">cache_t</a> *cache() {<span class="keywordflow">return</span> &cacheBuffer_;}</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  uint32_t cacheBlockNumber() {<span class="keywordflow">return</span> cacheBlockNumber_;}</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#if USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">bool</span> cacheFlush();</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">bool</span> cacheRawBlock(uint32_t blockNumber, <span class="keywordtype">bool</span> dirty);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#else </span><span class="comment">// USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> cacheFlush();</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> cacheRawBlock(uint32_t blockNumber, <span class="keywordtype">bool</span> dirty);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#endif </span><span class="comment">// USE_MULTIPLE_CARDS</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// used by SdBaseFile write to assign cache to SD location</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordtype">void</span> cacheSetBlockNumber(uint32_t blockNumber, <span class="keywordtype">bool</span> dirty) {</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  cacheDirty_ = dirty;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  cacheBlockNumber_ = blockNumber;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> cacheSetDirty() {cacheDirty_ |= CACHE_FOR_WRITE;}</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordtype">bool</span> chainSize(uint32_t beginCluster, uint32_t* size);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordtype">bool</span> fatGet(uint32_t cluster, uint32_t* value);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">bool</span> fatPut(uint32_t cluster, uint32_t value);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">bool</span> fatPutEOC(uint32_t cluster) {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> fatPut(cluster, 0x0FFFFFFF);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">bool</span> freeChain(uint32_t cluster);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">bool</span> isEOC(uint32_t cluster)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (FAT12_SUPPORT && fatType_ == 12) <span class="keywordflow">return</span> cluster >= <a class="code" href="SdFatStructs_8h.html#af1754604787f709306101dcc04391ff2">FAT12EOC_MIN</a>;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (fatType_ == 16) <span class="keywordflow">return</span> cluster >= <a class="code" href="SdFatStructs_8h.html#a79b2cefbcfdbf3507fe0496804541b0d">FAT16EOC_MIN</a>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> cluster >= <a class="code" href="SdFatStructs_8h.html#af5bcc97de8cc4956435d06349d6e714b">FAT32EOC_MIN</a>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> readBlock(uint32_t block, uint8_t* dst) {</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> sdCard_-><a class="code" href="classSd2Card.html#a6b015ee1c94004b8b16639910e5a3466">readBlock</a>(block, dst);}</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">bool</span> writeBlock(uint32_t block, <span class="keyword">const</span> uint8_t* dst) {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> sdCard_-><a class="code" href="classSd2Card.html#ad5eecc3e1e68b9e5a43edfb8e4205469">writeBlock</a>(block, dst);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Deprecated functions - suppress cpplint warnings with NOLINT comment</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN)</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSdVolume.html#ae73dd382a6805b5f43d5e34d7a457bb2"> 203</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classSdVolume.html#ae73dd382a6805b5f43d5e34d7a457bb2">init</a>(<a class="code" href="classSd2Card.html">Sd2Card</a>& dev) {<span class="keywordflow">return</span> <a class="code" href="classSdVolume.html#ae73dd382a6805b5f43d5e34d7a457bb2">init</a>(&dev);} <span class="comment">// NOLINT</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSdVolume.html#ac336e9fe0d8c5c4e8165329645e9781d"> 209</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classSdVolume.html#ac336e9fe0d8c5c4e8165329645e9781d">init</a>(<a class="code" href="classSd2Card.html">Sd2Card</a>& dev, uint8_t part) { <span class="comment">// NOLINT</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">init</a>(&dev, part);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#endif </span><span class="comment">// ALLOW_DEPRECATED_FUNCTIONS</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> };</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#endif </span><span class="comment">// SdVolume</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#endif</span></div>
<div class="ttc" id="aSd2Card_8h_html"><div class="ttname"><a href="Sd2Card_8h.html">Sd2Card.h</a></div><div class="ttdoc">Sd2Card class for V2 SD/SDHC cards.</div></div>
<div class="ttc" id="aSdFatConfig_8h_html"><div class="ttname"><a href="SdFatConfig_8h.html">SdFatConfig.h</a></div><div class="ttdoc">configuration definitions</div></div>
<div class="ttc" id="aSdFatStructs_8h_html"><div class="ttname"><a href="SdFatStructs_8h.html">SdFatStructs.h</a></div><div class="ttdoc">FAT file structures.</div></div>
<div class="ttc" id="aSdFatStructs_8h_html_a79b2cefbcfdbf3507fe0496804541b0d"><div class="ttname"><a href="SdFatStructs_8h.html#a79b2cefbcfdbf3507fe0496804541b0d">FAT16EOC_MIN</a></div><div class="ttdeci">uint16_t const FAT16EOC_MIN</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:458</div></div>
<div class="ttc" id="aSdFatStructs_8h_html_af1754604787f709306101dcc04391ff2"><div class="ttname"><a href="SdFatStructs_8h.html#af1754604787f709306101dcc04391ff2">FAT12EOC_MIN</a></div><div class="ttdeci">uint16_t const FAT12EOC_MIN</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:454</div></div>
<div class="ttc" id="aSdFatStructs_8h_html_af5bcc97de8cc4956435d06349d6e714b"><div class="ttname"><a href="SdFatStructs_8h.html#af5bcc97de8cc4956435d06349d6e714b">FAT32EOC_MIN</a></div><div class="ttdeci">uint32_t const FAT32EOC_MIN</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:462</div></div>
<div class="ttc" id="aclassSd2Card_html"><div class="ttname"><a href="classSd2Card.html">Sd2Card</a></div><div class="ttdoc">Raw access to SD and SDHC flash memory cards.</div><div class="ttdef"><b>Definition:</b> Sd2Card.h:148</div></div>
<div class="ttc" id="aclassSd2Card_html_a6b015ee1c94004b8b16639910e5a3466"><div class="ttname"><a href="classSd2Card.html#a6b015ee1c94004b8b16639910e5a3466">Sd2Card::readBlock</a></div><div class="ttdeci">bool readBlock(uint32_t block, uint8_t *dst)</div><div class="ttdef"><b>Definition:</b> Sd2Card.cpp:393</div></div>
<div class="ttc" id="aclassSd2Card_html_ad5eecc3e1e68b9e5a43edfb8e4205469"><div class="ttname"><a href="classSd2Card.html#ad5eecc3e1e68b9e5a43edfb8e4205469">Sd2Card::writeBlock</a></div><div class="ttdeci">bool writeBlock(uint32_t blockNumber, const uint8_t *src)</div><div class="ttdef"><b>Definition:</b> Sd2Card.cpp:632</div></div>
<div class="ttc" id="aclassSdBaseFile_html"><div class="ttname"><a href="classSdBaseFile.html">SdBaseFile</a></div><div class="ttdoc">Base class for SdFile with Print and C++ streams.</div><div class="ttdef"><b>Definition:</b> SdBaseFile.h:182</div></div>
<div class="ttc" id="aclassSdBaseFile_html_a08fb9d5226f3308479928ec6a1d72ffc"><div class="ttname"><a href="classSdBaseFile.html#a08fb9d5226f3308479928ec6a1d72ffc">SdBaseFile::curCluster</a></div><div class="ttdeci">uint32_t curCluster() const</div><div class="ttdef"><b>Definition:</b> SdBaseFile.h:210</div></div>
<div class="ttc" id="aclassSdFile_html"><div class="ttname"><a href="classSdFile.html">SdFile</a></div><div class="ttdoc">SdBaseFile with Print.</div><div class="ttdef"><b>Definition:</b> SdFile.h:36</div></div>
<div class="ttc" id="aclassSdVolume_html"><div class="ttname"><a href="classSdVolume.html">SdVolume</a></div><div class="ttdoc">Access FAT16 and FAT32 volumes on SD and SDHC cards.</div><div class="ttdef"><b>Definition:</b> SdVolume.h:60</div></div>
<div class="ttc" id="aclassSdVolume_html_a01f5b69c45c0d3c2cc6a98d0695fb8ba"><div class="ttname"><a href="classSdVolume.html#a01f5b69c45c0d3c2cc6a98d0695fb8ba">SdVolume::rootDirStart</a></div><div class="ttdeci">uint32_t rootDirStart() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:108</div></div>
<div class="ttc" id="aclassSdVolume_html_a0ac221eda119ddccae8ac6bc20a4b12d"><div class="ttname"><a href="classSdVolume.html#a0ac221eda119ddccae8ac6bc20a4b12d">SdVolume::init</a></div><div class="ttdeci">bool init(Sd2Card *dev)</div><div class="ttdef"><b>Definition:</b> SdVolume.h:83</div></div>
<div class="ttc" id="aclassSdVolume_html_a1381a95702d1487fd64693dd397b95cf"><div class="ttname"><a href="classSdVolume.html#a1381a95702d1487fd64693dd397b95cf">SdVolume::fatType</a></div><div class="ttdeci">uint8_t fatType() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:102</div></div>
<div class="ttc" id="aclassSdVolume_html_a162efe707ab46847202300cb38739629"><div class="ttname"><a href="classSdVolume.html#a162efe707ab46847202300cb38739629">SdVolume::freeClusterCount</a></div><div class="ttdeci">int32_t freeClusterCount()</div><div class="ttdef"><b>Definition:</b> SdVolume.cpp:280</div></div>
<div class="ttc" id="aclassSdVolume_html_a2940ada09a816d71d2d96dca9a4675cc"><div class="ttname"><a href="classSdVolume.html#a2940ada09a816d71d2d96dca9a4675cc">SdVolume::fatCount</a></div><div class="ttdeci">uint8_t fatCount() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:98</div></div>
<div class="ttc" id="aclassSdVolume_html_a30d4489087fbdce20b8fe1a624dbe658"><div class="ttname"><a href="classSdVolume.html#a30d4489087fbdce20b8fe1a624dbe658">SdVolume::SdVolume</a></div><div class="ttdeci">SdVolume()</div><div class="ttdef"><b>Definition:</b> SdVolume.h:63</div></div>
<div class="ttc" id="aclassSdVolume_html_a4dbcb7b34a83468b1c6f8c4556393526"><div class="ttname"><a href="classSdVolume.html#a4dbcb7b34a83468b1c6f8c4556393526">SdVolume::dbgFat</a></div><div class="ttdeci">bool dbgFat(uint32_t n, uint32_t *v)</div><div class="ttdef"><b>Definition:</b> SdVolume.h:119</div></div>
<div class="ttc" id="aclassSdVolume_html_a89de160ba292b3f7cc6cd5c168ac4301"><div class="ttname"><a href="classSdVolume.html#a89de160ba292b3f7cc6cd5c168ac4301">SdVolume::blocksPerCluster</a></div><div class="ttdeci">uint8_t blocksPerCluster() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:88</div></div>
<div class="ttc" id="aclassSdVolume_html_a8e4f3f1d450c69a346c0ed031c02d737"><div class="ttname"><a href="classSdVolume.html#a8e4f3f1d450c69a346c0ed031c02d737">SdVolume::rootDirEntryCount</a></div><div class="ttdeci">uint32_t rootDirEntryCount() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:105</div></div>
<div class="ttc" id="aclassSdVolume_html_a94e4b136f2422e2144a1d3ddc030810d"><div class="ttname"><a href="classSdVolume.html#a94e4b136f2422e2144a1d3ddc030810d">SdVolume::dataStartBlock</a></div><div class="ttdeci">uint32_t dataStartBlock() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:96</div></div>
<div class="ttc" id="aclassSdVolume_html_a9a080a9f8b62cdaa808fb2ff4e8a2101"><div class="ttname"><a href="classSdVolume.html#a9a080a9f8b62cdaa808fb2ff4e8a2101">SdVolume::blocksPerFat</a></div><div class="ttdeci">uint32_t blocksPerFat() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:90</div></div>
<div class="ttc" id="aclassSdVolume_html_aa860b21be40dc9cbbac843504eb493a7"><div class="ttname"><a href="classSdVolume.html#aa860b21be40dc9cbbac843504eb493a7">SdVolume::clusterSizeShift</a></div><div class="ttdeci">uint8_t clusterSizeShift() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:94</div></div>
<div class="ttc" id="aclassSdVolume_html_ac336e9fe0d8c5c4e8165329645e9781d"><div class="ttname"><a href="classSdVolume.html#ac336e9fe0d8c5c4e8165329645e9781d">SdVolume::init</a></div><div class="ttdeci">bool init(Sd2Card &dev, uint8_t part)</div><div class="ttdef"><b>Definition:</b> SdVolume.h:209</div></div>
<div class="ttc" id="aclassSdVolume_html_ada7da1bdaf3a6fa3e3ecefb592d61d00"><div class="ttname"><a href="classSdVolume.html#ada7da1bdaf3a6fa3e3ecefb592d61d00">SdVolume::fatStartBlock</a></div><div class="ttdeci">uint32_t fatStartBlock() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:100</div></div>
<div class="ttc" id="aclassSdVolume_html_adaecef65fdf94d323597a461eb641f5e"><div class="ttname"><a href="classSdVolume.html#adaecef65fdf94d323597a461eb641f5e">SdVolume::cacheClear</a></div><div class="ttdeci">cache_t * cacheClear()</div><div class="ttdef"><b>Definition:</b> SdVolume.h:68</div></div>
<div class="ttc" id="aclassSdVolume_html_ae73dd382a6805b5f43d5e34d7a457bb2"><div class="ttname"><a href="classSdVolume.html#ae73dd382a6805b5f43d5e34d7a457bb2">SdVolume::init</a></div><div class="ttdeci">bool init(Sd2Card &dev)</div><div class="ttdef"><b>Definition:</b> SdVolume.h:203</div></div>
<div class="ttc" id="aclassSdVolume_html_aeed496f4c45d3fedeca0eb8a454ce07e"><div class="ttname"><a href="classSdVolume.html#aeed496f4c45d3fedeca0eb8a454ce07e">SdVolume::clusterCount</a></div><div class="ttdeci">uint32_t clusterCount() const</div><div class="ttdef"><b>Definition:</b> SdVolume.h:92</div></div>
<div class="ttc" id="aclassSdVolume_html_afe76a9f7c181458995518dc8530a1fad"><div class="ttname"><a href="classSdVolume.html#afe76a9f7c181458995518dc8530a1fad">SdVolume::sdCard</a></div><div class="ttdeci">Sd2Card * sdCard()</div><div class="ttdef"><b>Definition:</b> SdVolume.h:112</div></div>
<div class="ttc" id="astructdirectoryEntry_html"><div class="ttname"><a href="structdirectoryEntry.html">directoryEntry</a></div><div class="ttdoc">FAT short directory entry.</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:496</div></div>
<div class="ttc" id="astructfat32__boot_html"><div class="ttname"><a href="structfat32__boot.html">fat32_boot</a></div><div class="ttdoc">Boot sector for a FAT32 volume.</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:262</div></div>
<div class="ttc" id="astructfat32__fsinfo_html"><div class="ttname"><a href="structfat32__fsinfo.html">fat32_fsinfo</a></div><div class="ttdoc">FSINFO sector for a FAT32 volume.</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:420</div></div>
<div class="ttc" id="astructfat__boot_html"><div class="ttname"><a href="structfat__boot.html">fat_boot</a></div><div class="ttdoc">Boot sector for a FAT12/FAT16 volume.</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:134</div></div>
<div class="ttc" id="astructmasterBootRecord_html"><div class="ttname"><a href="structmasterBootRecord.html">masterBootRecord</a></div><div class="ttdoc">Master Boot Record.</div><div class="ttdef"><b>Definition:</b> SdFatStructs.h:111</div></div>
<div class="ttc" id="aunioncache__t_html"><div class="ttname"><a href="unioncache__t.html">cache_t</a></div><div class="ttdoc">Cache for an SD data block.</div><div class="ttdef"><b>Definition:</b> SdVolume.h:37</div></div>
<div class="ttc" id="aunioncache__t_html_a1828419d5a551c9cc9a5e4212085f20b"><div class="ttname"><a href="unioncache__t.html#a1828419d5a551c9cc9a5e4212085f20b">cache_t::data</a></div><div class="ttdeci">uint8_t data[512+1]</div><div class="ttdef"><b>Definition:</b> SdVolume.h:39</div></div>
<div class="ttc" id="aunioncache__t_html_a46c7b14586a6248824a97101111cbae1"><div class="ttname"><a href="unioncache__t.html#a46c7b14586a6248824a97101111cbae1">cache_t::fsinfo</a></div><div class="ttdeci">fat32_fsinfo_t fsinfo</div><div class="ttdef"><b>Definition:</b> SdVolume.h:53</div></div>
<div class="ttc" id="aunioncache__t_html_a57e16421bf460d1ba6cb9ce9a23a4a83"><div class="ttname"><a href="unioncache__t.html#a57e16421bf460d1ba6cb9ce9a23a4a83">cache_t::fat32</a></div><div class="ttdeci">uint32_t fat32[128]</div><div class="ttdef"><b>Definition:</b> SdVolume.h:43</div></div>
<div class="ttc" id="aunioncache__t_html_a6ac10bfb1ebb1139c448456679663bb6"><div class="ttname"><a href="unioncache__t.html#a6ac10bfb1ebb1139c448456679663bb6">cache_t::mbr</a></div><div class="ttdeci">mbr_t mbr</div><div class="ttdef"><b>Definition:</b> SdVolume.h:47</div></div>
<div class="ttc" id="aunioncache__t_html_a7396fdbdb7c52bd1d72c5329ff32acd1"><div class="ttname"><a href="unioncache__t.html#a7396fdbdb7c52bd1d72c5329ff32acd1">cache_t::dir</a></div><div class="ttdeci">dir_t dir[16]</div><div class="ttdef"><b>Definition:</b> SdVolume.h:45</div></div>
<div class="ttc" id="aunioncache__t_html_a8f3a4e9392a7d8ace954fc44c57df887"><div class="ttname"><a href="unioncache__t.html#a8f3a4e9392a7d8ace954fc44c57df887">cache_t::fat16</a></div><div class="ttdeci">uint16_t fat16[256]</div><div class="ttdef"><b>Definition:</b> SdVolume.h:41</div></div>
<div class="ttc" id="aunioncache__t_html_ad0613173ed4e83920eedfeb33102848a"><div class="ttname"><a href="unioncache__t.html#ad0613173ed4e83920eedfeb33102848a">cache_t::fbs32</a></div><div class="ttdeci">fat32_boot_t fbs32</div><div class="ttdef"><b>Definition:</b> SdVolume.h:51</div></div>
<div class="ttc" id="aunioncache__t_html_ad1a4f1c0e8b8ca4d530427dbc920c764"><div class="ttname"><a href="unioncache__t.html#ad1a4f1c0e8b8ca4d530427dbc920c764">cache_t::fbs</a></div><div class="ttdeci">fat_boot_t fbs</div><div class="ttdef"><b>Definition:</b> SdVolume.h:49</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>