⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tff_8c-source.html

📁 MSP acquires data and sends through USB to PC. Check the link for PC capture software and project d
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00227"></a>00227 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00228"></a>00228 <a name="l00229"></a>00229 <span class="preprocessor">#if !_FS_READONLY</span><a name="l00230"></a>00230 <span class="preprocessor"></span><span class="keyword">static</span><a name="l00231"></a>00231 BOOL remove_chain (             <span class="comment">/* TRUE: successful, FALSE: failed */</span><a name="l00232"></a>00232         CLUST clust                     <span class="comment">/* Cluster# to remove chain from */</span><a name="l00233"></a>00233 )<a name="l00234"></a>00234 {<a name="l00235"></a>00235         CLUST nxt;<a name="l00236"></a>00236         <a class="code" href="struct__FATFS.html">FATFS</a> *fs = FatFs;<a name="l00237"></a>00237 <a name="l00238"></a>00238 <a name="l00239"></a>00239         <span class="keywordflow">while</span> (clust &gt;= 2 &amp;&amp; clust &lt; fs-&gt;max_clust) {<a name="l00240"></a>00240                 nxt = get_cluster(clust);<a name="l00241"></a>00241                 <span class="keywordflow">if</span> (nxt == 1) <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>;<a name="l00242"></a>00242                 <span class="keywordflow">if</span> (!put_cluster(clust, 0)) <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>;<a name="l00243"></a>00243                 <span class="keywordflow">if</span> (fs-&gt;<a class="code" href="struct__FATFS.html#a8360b3d9614f1bdf103e321239d71ff">free_clust</a> != (CLUST)0xFFFFFFFF) {<a name="l00244"></a>00244                         fs-&gt;<a class="code" href="struct__FATFS.html#a8360b3d9614f1bdf103e321239d71ff">free_clust</a>++;<a name="l00245"></a>00245 <span class="preprocessor">#if _USE_FSINFO</span><a name="l00246"></a>00246 <span class="preprocessor"></span>                        fs-&gt;fsi_flag = 1;<a name="l00247"></a>00247 <span class="preprocessor">#endif</span><a name="l00248"></a>00248 <span class="preprocessor"></span>                }<a name="l00249"></a>00249                 clust = nxt;<a name="l00250"></a>00250         }<a name="l00251"></a>00251         <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;<a name="l00252"></a>00252 }<a name="l00253"></a>00253 <span class="preprocessor">#endif</span><a name="l00254"></a>00254 <span class="preprocessor"></span><a name="l00255"></a>00255 <a name="l00256"></a>00256 <a name="l00257"></a>00257 <a name="l00258"></a>00258 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00259"></a>00259 <span class="comment">/* Stretch or create a cluster chain                                     */</span><a name="l00260"></a>00260 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00261"></a>00261 <a name="l00262"></a>00262 <span class="preprocessor">#if !_FS_READONLY</span><a name="l00263"></a>00263 <span class="preprocessor"></span><span class="keyword">static</span><a name="l00264"></a>00264 CLUST create_chain (    <span class="comment">/* 0: no free cluster, 1: error, &gt;=2: new cluster number */</span><a name="l00265"></a>00265         CLUST clust                     <span class="comment">/* Cluster# to stretch, 0 means create new */</span><a name="l00266"></a>00266 )<a name="l00267"></a>00267 {<a name="l00268"></a>00268         CLUST cstat, ncl, scl, mcl;<a name="l00269"></a>00269         <a class="code" href="struct__FATFS.html">FATFS</a> *fs = FatFs;<a name="l00270"></a>00270 <a name="l00271"></a>00271 <a name="l00272"></a>00272         mcl = fs-&gt;<a class="code" href="struct__FATFS.html#7f5a5466252185cec7c0903feaf6d702">max_clust</a>;<a name="l00273"></a>00273         <span class="keywordflow">if</span> (clust == 0) {               <span class="comment">/* Create new chain */</span><a name="l00274"></a>00274                 scl = fs-&gt;<a class="code" href="struct__FATFS.html#fefa77a3df67f4de4d858293935781c0">last_clust</a>;                   <span class="comment">/* Get last allocated cluster */</span><a name="l00275"></a>00275                 <span class="keywordflow">if</span> (scl &lt; 2 || scl &gt;= mcl) scl = 1;<a name="l00276"></a>00276         }<a name="l00277"></a>00277         <span class="keywordflow">else</span> {                                  <span class="comment">/* Stretch existing chain */</span><a name="l00278"></a>00278                 cstat = get_cluster(clust);             <span class="comment">/* Check the cluster status */</span><a name="l00279"></a>00279                 <span class="keywordflow">if</span> (cstat &lt; 2) <span class="keywordflow">return</span> 1;                <span class="comment">/* It is an invalid cluster */</span><a name="l00280"></a>00280                 <span class="keywordflow">if</span> (cstat &lt; mcl) <span class="keywordflow">return</span> cstat;  <span class="comment">/* It is already followed by next cluster */</span><a name="l00281"></a>00281                 scl = clust;<a name="l00282"></a>00282         }<a name="l00283"></a>00283 <a name="l00284"></a>00284         ncl = scl;                              <span class="comment">/* Start cluster */</span><a name="l00285"></a>00285         <span class="keywordflow">for</span> (;;) {<a name="l00286"></a>00286                 ncl++;                                                  <span class="comment">/* Next cluster */</span><a name="l00287"></a>00287                 <span class="keywordflow">if</span> (ncl &gt;= mcl) {                               <span class="comment">/* Wrap around */</span><a name="l00288"></a>00288                         ncl = 2;<a name="l00289"></a>00289                         <span class="keywordflow">if</span> (ncl &gt; scl) <span class="keywordflow">return</span> 0;        <span class="comment">/* No free custer */</span><a name="l00290"></a>00290                 }<a name="l00291"></a>00291                 cstat = get_cluster(ncl);               <span class="comment">/* Get the cluster status */</span><a name="l00292"></a>00292                 <span class="keywordflow">if</span> (cstat == 0) <span class="keywordflow">break</span>;                  <span class="comment">/* Found a free cluster */</span><a name="l00293"></a>00293                 <span class="keywordflow">if</span> (cstat == 1) <span class="keywordflow">return</span> 1;               <span class="comment">/* Any error occured */</span><a name="l00294"></a>00294                 <span class="keywordflow">if</span> (ncl == scl) <span class="keywordflow">return</span> 0;               <span class="comment">/* No free custer */</span><a name="l00295"></a>00295         }<a name="l00296"></a>00296 <a name="l00297"></a>00297         <span class="keywordflow">if</span> (!put_cluster(ncl, (CLUST)0x0FFFFFFF)) <span class="keywordflow">return</span> 1;     <span class="comment">/* Mark the new cluster "in use" */</span><a name="l00298"></a>00298         <span class="keywordflow">if</span> (clust &amp;&amp; !put_cluster(clust, ncl)) <span class="keywordflow">return</span> 1;        <span class="comment">/* Link it to previous one if needed */</span><a name="l00299"></a>00299 <a name="l00300"></a>00300         fs-&gt;<a class="code" href="struct__FATFS.html#fefa77a3df67f4de4d858293935781c0">last_clust</a> = ncl;                           <span class="comment">/* Update fsinfo */</span><a name="l00301"></a>00301         <span class="keywordflow">if</span> (fs-&gt;<a class="code" href="struct__FATFS.html#a8360b3d9614f1bdf103e321239d71ff">free_clust</a> != (CLUST)0xFFFFFFFF) {<a name="l00302"></a>00302                 fs-&gt;<a class="code" href="struct__FATFS.html#a8360b3d9614f1bdf103e321239d71ff">free_clust</a>--;<a name="l00303"></a>00303 <span class="preprocessor">#if _USE_FSINFO</span><a name="l00304"></a>00304 <span class="preprocessor"></span>                fs-&gt;fsi_flag = 1;<a name="l00305"></a>00305 <span class="preprocessor">#endif</span><a name="l00306"></a>00306 <span class="preprocessor"></span>        }<a name="l00307"></a>00307 <a name="l00308"></a>00308         <span class="keywordflow">return</span> ncl;             <span class="comment">/* Return new cluster number */</span><a name="l00309"></a>00309 }<a name="l00310"></a>00310 <span class="preprocessor">#endif </span><span class="comment">/* !_FS_READONLY */</span><a name="l00311"></a>00311 <a name="l00312"></a>00312 <a name="l00313"></a>00313 <a name="l00314"></a>00314 <a name="l00315"></a>00315 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00316"></a>00316 <span class="comment">/* Get sector# from cluster#                                             */</span><a name="l00317"></a>00317 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00318"></a>00318 <a name="l00319"></a>00319 <span class="keyword">static</span><a name="l00320"></a>00320 DWORD clust2sect (      <span class="comment">/* !=0: sector number, 0: failed - invalid cluster# */</span><a name="l00321"></a>00321         CLUST clust             <span class="comment">/* Cluster# to be converted */</span><a name="l00322"></a>00322 )<a name="l00323"></a>00323 {<a name="l00324"></a>00324         <a class="code" href="struct__FATFS.html">FATFS</a> *fs = FatFs;<a name="l00325"></a>00325 <a name="l00326"></a>00326 <a name="l00327"></a>00327         clust -= 2;<a name="l00328"></a>00328         <span class="keywordflow">if</span> (clust &gt;= (fs-&gt;<a class="code" href="struct__FATFS.html#7f5a5466252185cec7c0903feaf6d702">max_clust</a> - 2)) <span class="keywordflow">return</span> 0;             <span class="comment">/* Invalid cluster# */</span><a name="l00329"></a>00329         <span class="keywordflow">return</span> (DWORD)clust * fs-&gt;<a class="code" href="struct__FATFS.html#cf77b8f2c894bc68302efe617ed9e09e">sects_clust</a> + fs-&gt;<a class="code" href="struct__FATFS.html#f5866e883dc225244f15abd7894fafc8">database</a>;<a name="l00330"></a>00330 }<a name="l00331"></a>00331 <a name="l00332"></a>00332 <a name="l00333"></a>00333 <a name="l00334"></a>00334 <a name="l00335"></a>00335 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00336"></a>00336 <span class="comment">/* Move directory pointer to next                                        */</span><a name="l00337"></a>00337 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00338"></a>00338 <a name="l00339"></a>00339 <span class="keyword">static</span><a name="l00340"></a>00340 BOOL next_dir_entry (   <span class="comment">/* TRUE: successful, FALSE: could not move next */</span><a name="l00341"></a>00341         <a class="code" href="struct__DIR.html">DIR</a> *dirobj                     <span class="comment">/* Pointer to directory object */</span><a name="l00342"></a>00342 )<a name="l00343"></a>00343 {<a name="l00344"></a>00344         CLUST clust;<a name="l00345"></a>00345         WORD idx;<a name="l00346"></a>00346         <a class="code" href="struct__FATFS.html">FATFS</a> *fs = FatFs;<a name="l00347"></a>00347 <a name="l00348"></a>00348 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -