📄 fileio.h
字号:
#ifndef _FILEIO_H#define _FILEIO_H#include <avr/io.h>#include <avr/interrupt.h>#include <inttypes.h>#include <string.h>#include <stdlib.h>#include <avr/pgmspace.h>#include <avr/wdt.h>#include "const.h"#ifndef MMC#include "compact.h"#else#include "mmc.h"#endif#include "lcd.h"// ID3 tag types#define TPE1 1#define TALB 2#define TRCK 3#define TIT2 4extern unsigned long fatstart, rootdir, data, maxsect, dirfilesize, playlistlength;extern unsigned char secpercluster, attrib;extern unsigned int heads, sectors_per_track, dircluster, filecluster, playtime;extern unsigned int playlistptr, playlistcl;extern unsigned char filename[50];extern unsigned char artalb[50];extern unsigned char dirname[16];extern unsigned char lcd_upd, file_bitrate;extern char artalbpos, titlepos, artalbdir, titledir, scrolltimer;static unsigned char bitrate[] __attribute__ ((progmem)) = {4, 4, 4, 4, 4, 1, 8, 6, 5, 8, 6, 2, 12, 7, 6, 12, 7, 3, 16, 8, 7, 16, 8, 4, 20, 10, 8, 20, 10, 8, 24, 12, 10, 24, 12, 10, 28, 14, 12, 28, 14, 7, 32, 16, 14, 32, 16, 8, 36, 20, 16, 36, 20, 16, 40, 24, 20, 40, 24, 20, 44, 28, 24, 44, 28, 14, 48, 32, 28, 48, 32, 16, 52, 40, 32, 52, 40, 32, 56, 48, 40, 56, 48, 40};struct __attribute__((packed)) boot_record{unsigned char jump[3];unsigned char oem[8];unsigned int bytes_per_sector;unsigned char sectors_per_cluster;unsigned int reserved_sectors;unsigned char number_of_fats;unsigned int root_direntries;unsigned int small_sects;unsigned char media_desc;unsigned int sec_per_fat;unsigned int sec_per_track;unsigned int num_heads;unsigned long num_hidden_sec;unsigned long sec_per_part;unsigned int logical_nr;unsigned char ext_signature;unsigned long serial_no;unsigned char volume_label[11];unsigned char fat_name[8];unsigned char exec[448];unsigned int exec_mark;};struct __attribute__((packed)) attr{int read_only: 1;int hidden: 1;int system: 1;int volume_label: 1;int directory: 1;int archive: 1;int reserved: 2;};struct __attribute__((packed)) entry{ unsigned char filename[8]; unsigned char ext[3]; unsigned char attribute; unsigned char res; unsigned char timestamp; unsigned long creation; unsigned int last_access; unsigned int ea_index; unsigned long mod_time; unsigned int filecluster; unsigned long filesize;};#ifdef MMC // wrapper for MMC_Read for checking lba <= maxsectunsigned char MMC_Read_Wrapper(unsigned long lba);#endifint get_disk_parms(); // fetch cf parameter & fatunsigned int get_next_cluster(unsigned int lastcl); // locates next file clusterunsigned int get_next_direntry(unsigned int dircluster, unsigned int num, char dir, unsigned char type, unsigned char get_id3);unsigned char get_next_playlist_entry(unsigned char playlistid, char dir);unsigned char get_lfn(unsigned int dirid);void get_id3_info(unsigned int startcl);char parse_tag(unsigned long * offs, unsigned char * buffer);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -