4 #include "task_fileio.h"
5 #include "task_audio.h"
10 static FILINFO filinfo;
12 static int readfunc(void *buf, int siz)
15 pf_read(buf, siz, &cnt);
19 static int play(const char *filename)
21 FRESULT r = pf_open(filename);
25 static int vol_prev = 0, vol_curr = 0;
28 while (audio_play(readfunc)) {
29 switch ((divcnt++) % 8) {
32 *
\e$BAaAw$j$d4,$-La$7
\e(B
34 menu_get_audio_control(&control);
37 case AUDIO_CONTROL_FWD:
38 if (fatfs.fptr + 8192 < fatfs.fsize) {
39 pf_lseek(fatfs.fptr + 8192);
43 case AUDIO_CONTROL_REW:
44 if (16384 < fatfs.fptr) {
45 pf_lseek(fatfs.fptr - 16384);
54 *
\e$B%U%!%$%k>pJs$NDLCN
\e(B
57 filinfo.fname, fatfs.fptr * 100 / fatfs.fsize);
61 *
\e$B%*!<%G%#%*>pJs$N<hF@
\e(B
63 menu_get_audio_info(&vol_curr);
64 if (vol_curr != vol_prev) {
65 audio_volume(vol_curr, vol_curr);
74 static int is_music_file(const char *filename)
76 int len = strlen(filename);
80 if (strcmp(filename + len - 4, ".MP3") == 0) {
83 if (strcmp(filename + len - 4, ".WAV") == 0) {
89 int task_fileio(int argc, char *argv[])
92 menu_file_info("Mounting...", 0);
93 if (pf_mount(&fatfs)) {
97 menu_file_info("Directory", 0);
98 if (pf_opendir(&dir, "")) {
101 while (!pf_readdir(&dir, &filinfo) && filinfo.fname[0]) {
102 menu_file_info(filinfo.fname, 0);
103 if (!(filinfo.fattrib & (AM_DIR | AM_HID))) {
104 if (is_music_file(filinfo.fname)) {
105 if (play(filinfo.fname)) {