📄 song_task.c
字号:
mem_select_next(); /* select next memory */
disp_name_stop();
song_state = SONG_START;
break;
default:
break;
}
gl_key_press = FALSE; /* ack key usage */
}
else
{ /* check card presence */
if (mem_check_card() == KO)
{
disp_name_stop();
mem_select_next();
song_state = SONG_START; /* card has been unplugged */
}
}
break;
}
case SONG_INIT:
{
disp_clock_reset(); /* reset clock timer */
if (Fopen(READ) == OK)
{
if (song_init() != SONG_NO_ERR) /* init song playing */
{
song_stop(); /* stop playing song */
Fclose();
if (file_seek_next(FILE_MP3, song_loop)) /* select next song */
{
song_state = SONG_NEW;
gl_key_press = FALSE; /* no key usage */
}
else
{
song_state = SONG_STOP;
}
}
else
{
song_state = SONG_PLL;
}
}
else
{
song_state = SONG_ERROR;
}
break;
}
case SONG_PLL:
{
if (Pll_get_lock()) /* pll locked? */
{
song_start(); /* start playing song */
disp_clock_start(); /* start clock timer */
print_state_play(); /* display play icon */
song_state = SONG_PLAY;
}
break;
}
case SONG_PLAY: /* one file openned */
{
if (Feof() == TRUE) /* end of file? */
{
song_stop(); /* stop playing song */
Fclose();
if (file_seek_next(FILE_MP3, song_loop)) /* select next song */
{
song_state = SONG_NEW;
gl_key_press = FALSE; /* no key usage */
}
else
{
song_state = SONG_STOP;
}
}
if (gl_key_press) /* a key is pressed? */
{
switch (gl_key)
{
case KEY_PAUSE:
Aud_song_pause(); /* suspend sample request */
disp_clock_stop(); /* suspend clock timer */
print_state_pause(); /* display pause icon */
song_state = SONG_PAUSE;
break;
case KEY_NEXT:
song_stop(); /* stop playing song */
disp_clock_stop(); /* suspend clock timer */
Fclose();
file_seek_next(FILE_MP3, TRUE); /* select next song & loop */
song_state = SONG_NEW;
break;
case KEY_PREV:
song_stop(); /* stop playing song */
disp_clock_stop(); /* suspend clock timer */
Fclose();
file_seek_prev(FILE_MP3); /* select previous song */
song_state = SONG_NEW;
break;
case KEY_INC:
song_snd_inc(); /* increment selected control */
print_sound_level(); /* display new level */
break;
case KEY_DEC:
song_snd_dec(); /* decrement selected control */
print_sound_level(); /* display new level */
break;
case KEY_SOUND:
song_snd_select(); /* select next sound control */
print_sound(); /* display selected sound icon */
print_sound_level(); /* display new level */
break;
case KEY_REPEAT:
song_loop = ~song_loop; /* display repeat or not */
print_repeat(song_loop);
break;
case KEY_STOP:
song_stop(); /* stop playing song */
Fclose();
song_state = SONG_STOP;
break;
default:
break;
}
gl_key_press = FALSE; /* ack key usage */
}
break;
}
case SONG_PAUSE: /* one file openned */
{
if (gl_key_press) /* a key is pressed? */
{
switch (gl_key)
{
case KEY_PLAY:
disp_clock_start(); /* restart clock timer */
Aud_song_play(); /* restart sample request */
print_state_play(); /* display play icon */
song_state = SONG_PLAY;
break;
case KEY_NEXT:
song_stop(); /* stop playing song */
Fclose();
file_seek_next(FILE_MP3, TRUE); /* select next song */
print_file_name(); /* display song name */
song_state = SONG_IDLE;
break;
case KEY_PREV:
song_stop(); /* stop playing song */
Fclose();
file_seek_prev(FILE_MP3); /* select previous song */
print_file_name(); /* display song name */
song_state = SONG_IDLE;
break;
case KEY_INC:
song_snd_inc(); /* increment selected control */
print_sound_level(); /* display new level */
break;
case KEY_DEC:
song_snd_dec(); /* decrement selected control */
print_sound_level(); /* display new level */
break;
case KEY_SOUND:
song_snd_select(); /* select next sound control */
print_sound(); /* display selected sound icon */
print_sound_level(); /* display new level */
break;
case KEY_REPEAT:
song_loop = ~song_loop; /* display repeat or not */
print_repeat(song_loop);
break;
case KEY_STOP:
song_stop(); /* stop playing song */
Fclose();
song_state = SONG_STOP;
break;
default:
break;
}
gl_key_press = FALSE; /* ack key usage */
}
break;
}
case SONG_NEW:
{
song_state = SONG_INIT; /* new song */
print_file_name(); /* display file name */
break;
}
case SONG_STOP:
{
disp_end_of_play(); /* end of music... */
disp_clock_reset(); /* reset clock timer */
print_file_name(); /* display file name */
song_state = SONG_IDLE;
break;
}
case SONG_NO_SONG:
{
if (gl_key_press) /* a key is pressed? */
{
switch (gl_key)
{
case KEY_MEM:
mem_select_next(); /* select next memory */
song_state = SONG_START;
break;
case KEY_MODE:
mode_set_init(); /* exit from song task */
song_state = SONG_START;
break;
}
gl_key_press = FALSE; /* ack key usage */
}
else
{ /* check card presence */
if (mem_check_card() == KO)
{
mem_select_next();
song_state = SONG_START; /* card has been unplugged */
}
}
break;
}
case SONG_ERROR:
{
song_stop(); /* stop playing song */
Fclose(); /* close opened file */
disp_clock_reset(); /* reset clock timer */
print_state_error(); /* display error icon */
disp_name_stop();
song_state = SONG_IDLE;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -