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

📄 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="l00349"></a>00349         idx = dirobj-&gt;<a class="code" href="struct__DIR.html#036a031851bde1b63d85c59293412a8d">index</a> + 1;<a name="l00350"></a>00350         <span class="keywordflow">if</span> ((idx &amp; 15) == 0) {          <span class="comment">/* Table sector changed? */</span><a name="l00351"></a>00351                 dirobj-&gt;<a class="code" href="struct__DIR.html#edba9551167ea52746b5f2c57ddce945">sect</a>++;                 <span class="comment">/* Next sector */</span><a name="l00352"></a>00352                 <span class="keywordflow">if</span> (!dirobj-&gt;<a class="code" href="struct__DIR.html#36b08a0927f70fb693aac83949ee19b8">clust</a>) {           <span class="comment">/* In static table */</span><a name="l00353"></a>00353                         <span class="keywordflow">if</span> (idx &gt;= fs-&gt;<a class="code" href="struct__FATFS.html#c33c59bc32161ba408c0b7d4227a9d9e">n_rootdir</a>) <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>; <span class="comment">/* Reached to end of table */</span><a name="l00354"></a>00354                 } <span class="keywordflow">else</span> {                                        <span class="comment">/* In dynamic table */</span><a name="l00355"></a>00355                         <span class="keywordflow">if</span> (((idx / 16) &amp; (fs-&gt;<a class="code" href="struct__FATFS.html#cf77b8f2c894bc68302efe617ed9e09e">sects_clust</a> - 1)) == 0) {        <span class="comment">/* Cluster changed? */</span><a name="l00356"></a>00356                                 clust = get_cluster(dirobj-&gt;<a class="code" href="struct__DIR.html#36b08a0927f70fb693aac83949ee19b8">clust</a>);                     <span class="comment">/* Get next cluster */</span><a name="l00357"></a>00357                                 <span class="keywordflow">if</span> (clust &lt; 2 || clust &gt;= fs-&gt;<a class="code" href="struct__FATFS.html#7f5a5466252185cec7c0903feaf6d702">max_clust</a>)        <span class="comment">/* Reached to end of table */</span><a name="l00358"></a>00358                                         <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a93f0eb578d23995850d61f7d61c55c1">FALSE</a>;<a name="l00359"></a>00359                                 dirobj-&gt;<a class="code" href="struct__DIR.html#36b08a0927f70fb693aac83949ee19b8">clust</a> = clust;                          <span class="comment">/* Initialize for new cluster */</span><a name="l00360"></a>00360                                 dirobj-&gt;<a class="code" href="struct__DIR.html#edba9551167ea52746b5f2c57ddce945">sect</a> = clust2sect(clust);<a name="l00361"></a>00361                         }<a name="l00362"></a>00362                 }<a name="l00363"></a>00363         }<a name="l00364"></a>00364         dirobj-&gt;<a class="code" href="struct__DIR.html#036a031851bde1b63d85c59293412a8d">index</a> = idx;    <span class="comment">/* Lower 4 bit of dirobj-&gt;index indicates offset in dirobj-&gt;sect */</span><a name="l00365"></a>00365         <span class="keywordflow">return</span> <a class="code" href="common_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;<a name="l00366"></a>00366 }<a name="l00367"></a>00367 <a name="l00368"></a>00368 <a name="l00369"></a>00369 <a name="l00370"></a>00370 <a name="l00371"></a>00371 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00372"></a>00372 <span class="comment">/* Get file status from directory entry                                  */</span><a name="l00373"></a>00373 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00374"></a>00374 <a name="l00375"></a>00375 <span class="preprocessor">#if _FS_MINIMIZE &lt;= 1</span><a name="l00376"></a>00376 <span class="preprocessor"></span><span class="keyword">static</span><a name="l00377"></a>00377 <span class="keywordtype">void</span> get_fileinfo (             <span class="comment">/* No return code */</span><a name="l00378"></a>00378         <a class="code" href="struct__FILINFO.html">FILINFO</a> *finfo,         <span class="comment">/* Ptr to store the File Information */</span><a name="l00379"></a>00379         <span class="keyword">const</span> BYTE *dir         <span class="comment">/* Ptr to the directory entry */</span><a name="l00380"></a>00380 )<a name="l00381"></a>00381 {<a name="l00382"></a>00382         BYTE n, c, a;<a name="l00383"></a>00383         <span class="keywordtype">char</span> *p;<a name="l00384"></a>00384 <a name="l00385"></a>00385 <a name="l00386"></a>00386         p = &amp;finfo-&gt;<a class="code" href="struct__FILINFO.html#7279fa6b57203d143e96021a099e7e57">fname</a>[0];<a name="l00387"></a>00387         a = _USE_NTFLAG ? dir[DIR_NTres] : 0;   <span class="comment">/* NT flag */</span><a name="l00388"></a>00388         <span class="keywordflow">for</span> (n = 0; n &lt; 8; n++) {       <span class="comment">/* Convert file name (body) */</span><a name="l00389"></a>00389                 c = dir[n];<a name="l00390"></a>00390                 <span class="keywordflow">if</span> (c == <span class="charliteral">' '</span>) <span class="keywordflow">break</span>;<a name="l00391"></a>00391                 <span class="keywordflow">if</span> (c == 0x05) c = 0xE5;<a name="l00392"></a>00392                 <span class="keywordflow">if</span> (a &amp; 0x08 &amp;&amp; c &gt;= <span class="charliteral">'A'</span> &amp;&amp; c &lt;= <span class="charliteral">'Z'</span>) c += 0x20;<a name="l00393"></a>00393                 *p++ = c;<a name="l00394"></a>00394         }<a name="l00395"></a>00395         <span class="keywordflow">if</span> (dir[8] != <span class="charliteral">' '</span>) {            <span class="comment">/* Convert file name (extension) */</span><a name="l00396"></a>00396                 *p++ = <span class="charliteral">'.'</span>;<a name="l00397"></a>00397                 <span class="keywordflow">for</span> (n = 8; n &lt; 11; n++) {<a name="l00398"></a>00398                         c = dir[n];<a name="l00399"></a>00399                         <span class="keywordflow">if</span> (c == <span class="charliteral">' '</span>) <span class="keywordflow">break</span>;<a name="l00400"></a>00400                         <span class="keywordflow">if</span> (a &amp; 0x10 &amp;&amp; c &gt;= <span class="charliteral">'A'</span> &amp;&amp; c &lt;= <span class="charliteral">'Z'</span>) c += 0x20;<a name="l00401"></a>00401                         *p++ = c;<a name="l00402"></a>00402                 }<a name="l00403"></a>00403         }<a name="l00404"></a>00404         *p = <span class="charliteral">'\0'</span>;<a name="l00405"></a>00405 <a name="l00406"></a>00406         finfo-&gt;<a class="code" href="struct__FILINFO.html#983a99f79b704ced3a6cb640719aa679">fattrib</a> = dir[DIR_Attr];                 <span class="comment">/* Attribute */</span><a name="l00407"></a>00407         finfo-&gt;<a class="code" href="struct__FILINFO.html#385f3afc63d4bcb8b3ffa9bf233d192e">fsize</a> = LD_DWORD(&amp;dir[DIR_FileSize]);    <span class="comment">/* Size */</span><a name="l00408"></a>00408         finfo-&gt;<a class="code" href="struct__FILINFO.html#02a8fc36e823eb9ebe84d9e7342c218e">fdate</a> = LD_WORD(&amp;dir[DIR_WrtDate]);      <span class="comment">/* Date */</span><a name="l00409"></a>00409         finfo-&gt;<a class="code" href="struct__FILINFO.html#c9b7c36ac48cb9b7fdd4ca0aae8b00b7">ftime</a> = LD_WORD(&amp;dir[DIR_WrtTime]);      <span class="comment">/* Time */</span><a name="l00410"></a>00410 }<a name="l00411"></a>00411 <span class="preprocessor">#endif </span><span class="comment">/* _FS_MINIMIZE &lt;= 1 */</span><a name="l00412"></a>00412 <a name="l00413"></a>00413 <a name="l00414"></a>00414 <a name="l00415"></a>00415 <a name="l00416"></a>00416 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00417"></a>00417 <span class="comment">/* Pick a paragraph and create the name in format of directory entry     */</span><a name="l00418"></a>00418 <span class="comment">/*-----------------------------------------------------------------------*/</span><a name="l00419"></a>00419 <a name="l00420"></a>00420 <span class="keyword">static</span><a name="l00421"></a>00421 <span class="keywordtype">char</span> make_dirfile (                     <span class="comment">/* 1: error - detected an invalid format, '\0'or'/': next character */</span><a name="l00422"></a>00422         <span class="keyword">const</span> <span class="keywordtype">char</span> **path,              <span class="comment">/* Pointer to the file path pointer */</span><a name="l00423"></a>00423         <span class="keywordtype">char</span> *dirname                   <span class="comment">/* Pointer to directory name buffer {Name(8), Ext(3), NT flag(1)} */</span><a name="l00424"></a>00424 )<a name="l00425"></a>00425 {<a name="l00426"></a>00426         BYTE n, t, c, a, b;<a name="l00427"></a>00427 <a name="l00428"></a>00428 <a name="l00429"></a>00429         memset(dirname, <span class="charliteral">' '</span>, 8+3);      <span class="comment">/* Fill buffer with spaces */</span><a name="l00430"></a>00430         a = 0; b = 0x18;        <span class="comment">/* NT flag */</span><a name="l00431"></a>00431         n = 0; t = 8;<a name="l00432"></a>00432         <span class="keywordflow">for</span> (;;) {<a name="l00433"></a>00433                 c = *(*path)++;<a name="l00434"></a>00434                 <span class="keywordflow">if</span> (c == <span class="charliteral">'\0'</span> || c == <span class="charliteral">'/'</span>) {            <span class="comment">/* Reached to end of str or directory separator */</span><a name="l00435"></a>00435                         <span class="keywordflow">if</span> (n == 0) <span class="keywordflow">break</span>;<a name="l00436"></a>00436                         dirname[11] = _USE_NTFLAG ? (a &amp; b) : 0;<a name="l00437"></a>00437                         <span class="keywordflow">return</span> c;<a name="l00438"></a>00438                 }<a name="l00439"></a>00439                 <span class="keywordflow">if</span> (c &lt;= <span class="charliteral">' '</span> || c == 0x7F) <span class="keywordflow">break</span>;               <span class="comment">/* Reject invisible chars */</span><a name="l00440"></a>00440                 <span class="keywordflow">if</span> (c == <span class="charliteral">'.'</span>) {<a name="l00441"></a>00441                         <span class="keywordflow">if</span> (!(a &amp; 1) &amp;&amp; n &gt;= 1 &amp;&amp; n &lt;= 8) {     <span class="comment">/* Enter extension part */</span><a name="l00442"></a>00442                                 n = 8; t = 11; <span class="keywordflow">continue</span>;<a name="l00443"></a>00443                         }<a name="l00444"></a>00444                         <span class="keywordflow">break</span>;<a name="l00445"></a>00445                 }<a name="l00446"></a>00446                 <span class="keywordflow">if</span> (_USE_SJIS &amp;&amp; <a name="l00447"></a>00447                         ((c &gt;= 0x81 &amp;&amp; c &lt;= 0x9F) ||            <span class="comment">/* Accept S-JIS code */</span><a name="l00448"></a>00448                     (c &gt;= 0xE0 &amp;&amp; c &lt;= 0xFC))) {<a name="l00449"></a>00449                         <span class="keywordflow">if</span> (n == 0 &amp;&amp; c == 0xE5)                <span class="comment">/* Change heading \xE5 to \x05 */</span><a name="l00450"></a>00450                                 c = 0x05;<a name="l00451"></a>00451                         a ^= 1; <span class="keywordflow">goto</span> md_l2;<a name="l00452"></a>00452                 }<a name="l00453"></a>00453                 <span class="keywordflow">if</span> (c == <span class="charliteral">'"'</span>) <span class="keywordflow">break</span>;                            <span class="comment">/* Reject " */</span><a name="l00454"></a>00454                 <span class="keywordflow">if</span> (c &lt;= <span class="charliteral">')'</span>) <span class="keywordflow">goto</span> md_l1;                       <span class="comment">/* Accept ! # $ % &amp; ' ( ) */</span><a name="l00455"></a>00455                 <span class="keywordflow">if</span> (c &lt;= <span class="charliteral">','</span>) <span class="keywordflow">break</span>;                            <span class="comment">/* Reject * + , */</span><a name="l00456"></a>00456                 <span class="keywordflow">if</span> (c &lt;= <span class="charliteral">'9'</span>) <span class="keywordflow">goto</span> md_l1;                       <span class="comment">/* Accept - 0-9 */</span><a name="l00457"></a>00457                 <span class="keywordflow">if</span> (c &lt;= <span class="charliteral">'?'</span>) <span class="keywordflow">break</span>;                            <span class="comment">/* Reject : ; &lt; = &gt; ? */</span><a name="l00458"></a>00458                 <span class="keywordflow">if</span> (!(a &amp; 1)) { <span class="comment">/* These checks are not applied to S-JIS 2nd byte */</span><a name="l00459"></a>00459                         <span class="keywordflow">if</span> (c == <span class="charliteral">'|'</span>) <span class="keywordflow">break</span>;                    <span class="comment">/* Reject | */</span><a name="l00460"></a>00460                         <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">'['</span> &amp;&amp; c &lt;= <span class="charliteral">']'</span>) <span class="keywordflow">break</span>;<span class="comment">/* Reject [ \ ] */</span><a name="l00461"></a>00461                         <span class="keywordflow">if</span> (_USE_NTFLAG &amp;&amp; c &gt;= <span class="charliteral">'A'</span> &amp;&amp; c &lt;= <span class="charliteral">'Z'</span>)<a name="l00462"></a>00462                                 (t == 8) ? (b &amp;= ~0x08) : (b &amp;= ~0x10);<a name="l00463"></a>00463                         <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">'a'</span> &amp;&amp; c &lt;= <span class="charliteral">'z'</span>) {             <span class="comment">/* Convert to upper case */</span><a name="l00464"></a>00464                                 c -= 0x20;<a name="l00465"></a>00465                                 <span class="keywordflow">if</span> (_USE_NTFLAG) (t == 8) ? (a |= 0x08) : (a |= 0x10);<a name="l00466"></a>00466                         }<a name="l00467"></a>00467                 }<a name="l00468"></a>00468         md_l1:<a name="l00469"></a>00469                 a &amp;= ~1;<a name="l00470"></a>00470         md_l2:

⌨️ 快捷键说明

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