📄 nx58_dec.c
字号:
if(display_update == 0xF5){//PLAYLIST ADD
display_update = 0;
FuncInMode = PLAYLIST_STATE;
decode_state = MODE_EXIT_STATE;
key_check = 1;
}
}
else{ //IMAGE_SCROLL
if(NAV_IMAGE_INFO.Info.bc.b0) {
if(NAV_IMAGE_INFO.Info.bc.b2) {
#if defined L320x240
NAV_scrolltitle( (display_cur_in_section*20)+74, 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
NAV_scrolltitle( (display_cur_in_section*20)+82, 1, SEL_COLOR, 0, F_WHITE);
#elif defined L128x128
NAV_scrolltitle( (display_cur_in_section*20)+6, 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
NAV_scrolltitle( (display_cur_in_section*20)+14, 1, SEL_COLOR, 0, F_WHITE);
#elif defined L96x64
NAV_scrolltitle( (display_cur_in_section<<4), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
NAV_scrolltitle( (display_cur_in_section<<4) + 8, 1, SEL_COLOR, 0, F_WHITE);
#elif defined ML128x64
#ifdef MONO_LCD
NAV_scrolltitle( ((display_cur_in_section+1)<<1), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
NAV_scrolltitle( ((display_cur_in_section+1)<<1) + 1, 1, SEL_COLOR, 0, F_WHITE);
#else
NAV_scrolltitle( (display_cur_in_section<<1), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
NAV_scrolltitle( (display_cur_in_section<<1) + 1, 1, SEL_COLOR, 0, F_WHITE);
#endif
#endif
NAV_IMAGE_INFO.pos += 2;
if(NAV_IMAGE_INFO.pos>=NAV_IMAGE_INFO.size)
NAV_IMAGE_INFO.pos = 0;
NAV_IMAGE_INFO.Info.bc.b2 = 0;
}
}
}
}
}
void TRAN_Message(void)
{
xdata _subdir_navi *SubDirInfo = ((_subdir_navi volatile xdata *)(SUBDIR_BUFF+0x10000));
display_update = 0;
if((Is_LRC_file == LYRIC_YES_DIS_NO) || (Is_LRC_file == LYRIC_YES_DIS_YES)) Is_LRC_file = LYRIC_YES_DIS_NO;
if((song_title == DIS_NAME_MODE) || ((ID3_INFO.id3_check == ID3_NO)&&(song_title == DIS_ID3_MODE))||
((Is_LRC_file == LYRIC_NO)&&(song_title == DIS_LYRICS_MODE))){//filename
if(FILE_NAME.info){
IMAGE_INFO.size = Get_LongFileName(IMAGE_BUFF0);
}else{
IMAGE_INFO.size = Get_ShortFileName(IMAGE_BUFF0);
}
}else if((ID3_INFO.id3_check == ID3_YES)&&(song_title == DIS_ID3_MODE)){//id3
IMAGE_INFO.size = make_ID3Image(IMAGE_BUFF0);
}
else if((Is_LRC_file == LYRIC_YES_DIS_NO)&&(song_title == DIS_LYRICS_MODE))//lyric
{//lyric file exist!
Is_LRC_file = LYRIC_YES_DIS_YES;
#ifdef LYRIC_FUNC
Vbr_Lyric_Init();
#endif
}
else {
if(FILE_NAME.info){
IMAGE_INFO.size = Get_LongFileName(IMAGE_BUFF0);
}else{
IMAGE_INFO.size = Get_ShortFileName(IMAGE_BUFF0);
}
}
if(IMAGE_INFO.Info.bc.b0 == 0){
IMAGE_INFO.pos = 0;
IMAGE_INFO.Info.bc.b0 = 1;
}
MakeCurDirName(&CUR_DIR, SubDirInfo, 0);
if(PBmode == NO_ACT){
if(CUR_DIR_NAME.info == 1){
Get_LongDirName(IMAGE_BUFF1);
}else{
Get_ShortDirName(IMAGE_BUFF1);
}
}else{
if(PBmode == PLAYLIST_ACT){
Init_PLBM("P-LIST ");
}
else if(PBmode == BOOKMARK_ACT){
Init_PLBM("B-MARK ");
}
}
Dec_Lcd_Init();
if(scroll_speed_idx == 0) { // if scroll_speed > 0
IMAGE_INFO.Info.bc.b2 = 1;
IMAGE_INFO.pos = 0;
}
#ifdef MEDIASYNC_INCLUDE
if(bIsLyricst){
// bLyricst_fire = 1;
mediaSync_Display_Step = 0;
}
if(Is_LRC_file==LYRIC_YES_DIS_YES)
fnMediaSyncDecInitLyric(0, 1, 4, 16);
#endif
cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
#ifndef L320x240
if(Is_LRC_file != LYRIC_YES_DIS_YES)
#endif
d_DisplayBar(cur_bar_pos);
sub_mode_in_play = DEC_DEC;
IMAGE_INFO.Info.bc.b1 = 0;
#ifndef G5_BOARD
backlight_time_count = 0;
#endif
previous_bat_value = 0x0f;
Change_PlaySpeed(play_speed);
EQ_mode_set(eq_mode);
}
#ifdef DEC_TEST
UINT8 File_Control_Message(UINT8 dec_progress){
xdata UINT16 buf_address;
xdata UINT8 dec_buf_full = 0;
xdata UINT8 *DMA_SECTOR_BUFF0;
if( pFileIO->sector_cur < pFileIO->sector_end ) {
if(read_XDATA(BSTATUS) & 0x01) { // if buffer0 is empty
if (AB_REPEAT.mode == 0 && (dec_progress == 0)){
AB_REPEAT.start_cluster = pFileIO->cluster;
AB_REPEAT.data_cnt = FILE_INFO.DecodingSectorCnt;
AB_REPEAT.DecSector = pFileIO->sector_cur;
AB_REPEAT.DecEndSector = pFileIO->sector_end;
}
Dma_B0_RAM2PERI_Close();
Dma_B0_PERI2RAM_Close();
B0_Reset();
switch(dec_progress) {
case 0://
buf_address = BUFFER0;
B0_SetAddr(buf_address);
DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+0x10000));
if((sub_mode_in_play != DEC_MENU) && (sub_mode_in_play != DEC_NAV))
dec_buf_full = 1;
break;
case 1: //
buf_address = BUFFER0+512;
B0_SetAddr(buf_address);
DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+512+0x10000));
break;
case 2: //
buf_address = BUFFER0+1024;
B0_SetAddr(BUFFER0+1024);
DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+1024+0x10000));
break;
case 3: //
buf_address = BUFFER0+1536;
B0_SetAddr(BUFFER0+1536);
DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+1536+0x10000));
dec_buf_full = 1;
break;
}
B0_Size(512);
LRead_SectorCloseEcc(DMA0, pFileIO->sector_cur, DATA_REMAP);
#ifndef NETSYNC_INCLUDE
#ifdef XSYNC_INCLUDE
if(file_type == FILE_MTX){
fnXSyncDecSet(FILE_INFO.DecodingSectorCnt);
fnXSyncDecode(buf_address);
}
#endif
#ifdef MEDIASYNC_INCLUDE//Incase of xsync and Mediasync
if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
fnMediaSyncDecFindLyric(buf_address);//DMA_SECTOR_BUFF0);
}
#endif
if(dec_buf_full){
B0_Reset();
B0_SetAddr(BUFFER0);
switch(dec_progress) {
case 0://
B0_Size(512);
break;
case 1: //
B0_Size(1024);
break;
case 2: //
B0_Size(1536);
break;
case 3: //
B0_Size(2048);
break;
}
dec_progress = 3;
write_XDATA(B0_BSTATUS, BUFFER_FULL);
Dma_B0_RAM2PERI_Open(DMA_MP3);
}
else
write_XDATA(B0_BSTATUS, BUFFER_EMPTY);
#else
//----------------------------------------------------------------------------------------------
/*************************************** NetSync START ****************************************/
#ifdef MEDIASYNC_INCLUDE//Incase of Netsync and Mediasync
if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
fnMediaSyncDecFindLyric(buf_address);//DMA_SECTOR_BUFF0);
}
#endif
if(FILE_INFO.DecodingSectorCnt == 0)
{
NED_CheckDrm(&gNEDInfo, DMA_SECTOR_BUFF0);
if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode ){
B0_Reset();
}else{
if(dec_buf_full){
B0_Reset();
B0_SetAddr(BUFFER0);
switch(dec_progress) {
case 0://
B0_Size(512);
break;
case 1: //
B0_Size(1024);
break;
case 2: //
B0_Size(1536);
break;
case 3: //
B0_Size(2048);
break;
}
dec_progress = 3;
write_XDATA(B0_BSTATUS, BUFFER_FULL);
Dma_B0_RAM2PERI_Open(DMA_MP3);
}
else
write_XDATA(B0_BSTATUS, BUFFER_EMPTY);
}
}
else
{
if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode )
{
NED_Decrypt(&gNEDInfo, DMA_SECTOR_BUFF0);
}
if(dec_buf_full){
B0_Reset();
B0_SetAddr(BUFFER0);
switch(dec_progress) {
case 0://
B0_Size(512);
break;
case 1: //
B0_Size(1024);
break;
case 2: //
B0_Size(1536);
break;
case 3: //
B0_Size(2048);
break;
}
dec_progress = 3;
write_XDATA(B0_BSTATUS, BUFFER_FULL);
Dma_B0_RAM2PERI_Open(DMA_MP3);
}
else
write_XDATA(B0_BSTATUS, BUFFER_EMPTY);
}
/*************************************** NetSync END *******************************************/
//----------------------------------------------------------------------------------------------
#endif
pFileIO->sector_cur++;
FILE_INFO.DecodingSectorCnt++;
dec_progress++;
}
else{
dec_progress = 4;
}
}
else//else of if( pFileIO->sector_cur < pFileIO->sector_end) {
{
if(read_XDATA(BSTATUS) & 0x01) { // if buffer0 is empty
Dma_B0_PERI2RAM_Close();
Dma_B0_RAM2PERI_Close();
pre_cluster = pFileIO->cluster;
Dec_Get_Next_Cluster();
}
}//end of if( DeSector < DeEndSector)
if(getIsEOF(pFileIO->cluster))
dec_progress = 5;
return dec_progress;
}
#else
void File_Control_Message(void){
xdata UINT8 *DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata *)(BUFFER0+0x10000));
if( pFileIO->sector_cur < pFileIO->sector_end) {
if(read_XDATA(BSTATUS) & 0x01) { // if buffer0 is empty
if (AB_REPEAT.mode == 0){
AB_REPEAT.start_cluster = pFileIO->cluster;
AB_REPEAT.data_cnt = FILE_INFO.DecodingSectorCnt;
AB_REPEAT.DecSector = pFileIO->sector_cur;
AB_REPEAT.DecEndSector = pFileIO->sector_end;
}
Dma_B0_RAM2PERI_Close();
Dma_B0_PERI2RAM_Close();
// LRead_SectorClose(DMA0, pFileIO->sector_cur, DATA_REMAP);
LRead_SectorCloseEcc(DMA0,/* BUFFER0,*/ pFileIO->sector_cur, DATA_REMAP);
#ifndef NETSYNC_INCLUDE
#ifdef XSYNC_INCLUDE
if(file_type == FILE_MTX){
fnXSyncDecSet(FILE_INFO.DecodingSectorCnt);
fnXSyncDecode(BUFFER0);
}
#endif
#ifdef MEDIASYNC_INCLUDE//Incase of xsync and Mediasync
if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
fnMediaSyncDecFindLyric(BUFFER0);//DMA_SECTOR_BUFF0);
}
#endif
Dma_B0_RAM2PERI_Open(DMA_MP3);
#else
//----------------------------------------------------------------------------------------------
/*************************************** NetSync START ****************************************/
#ifdef MEDIASYNC_INCLUDE//Incase of Netsync and Mediasync
if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
fnMediaSyncDecFindLyric(BUFFER0);//DMA_SECTOR_BUFF0);
}
#endif
if(FILE_INFO.DecodingSectorCnt == 0)
{
NED_CheckDrm(&gNEDInfo, DMA_SECTOR_BUFF0);
if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode ){
B0_Reset();
}else{
Dma_B0_RAM2PERI_Open(DMA_MP3);
}
}
else
{
if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode )
{
NED_Decrypt(&gNEDInfo, DMA_SECTOR_BUFF0);
}
Dma_B0_RAM2PERI_Open(DMA_MP3);
}
/*************************************** NetSync END *******************************************/
//----------------------------------------------------------------------------------------------
#endif
pFileIO->sector_cur++;
FILE_INFO.DecodingSectorCnt++;
Other_process = 1;
}
}
else//else of if( pFileIO->sector_cur < pFileIO->sector_end) {
{
if(read_XDATA(BSTATUS) & 0x01) { // if buffer0 is empty
Dma_B0_PERI2RAM_Close();
Dma_B0_RAM2PERI_Close();
pre_cluster = pFileIO->cluster;
Dec_Get_Next_Cluster();
Other_process = 0;
}
}//end of if( DeSector < DeEndSector)
}
#endif
void AB_Repeat_Message(void){
if((AB_REPEAT.mode == 2)&& (pFileIO->cluster == AB_REPEAT.end_cluster) ) {
#ifdef MEDIASYNC_INCLUDE
fnMediaSyncDecInitLyric(0, 1, 4, 16);
#endif
#ifdef LYRIC_FUNC
InitLyricTimeStamp(1);
#endif
pFileIO->cluster = AB_REPEAT.start_cluster;
pFileIO->sector_cur = AB_REPEAT.DecSector;
pFileIO->sector_end = AB_REPEAT.DecEndSector;
FILE_INFO.DecodingSectorCnt = AB_REPEAT.data_cnt;
if(sub_mode_in_play == DEC_DEC && (Is_LRC_file != LYRIC_YES_DIS_YES)){
#ifdef MONO_LCD
#else
#if defined L128x128 || defined L320x240
LcdDisplayImage(IMG_PROGRESS_ANGLE);
#endif
#endif
#if defined L320x240
bar_temp = (File_Size>>9)/190;
#elif defined L128x128
bar_temp = (File_Size>>9)/79;
#elif defined L96x64
bar_temp = (File_Size>>9)/42;
#elif defined MONO_LCD
bar_temp = (File_Size>>9)/80;
#endif
cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
d_DisplayBar(cur_bar_pos);
UI_DISPLAY(UI_DEC_TIME, 1);
}
else {
#ifdef L320x240
LcdDisplayImage(IMG_PROGRESS_ANGLE);
bar_temp = (File_Size>>9)/190;
cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
d_DisplayBar(cur_bar_pos);
UI_DISPLAY(UI_DEC_TIME, 1);
#endif
}
#ifdef FADE_IN_FUNC
audio_fad = 1;
#endif
vol_step_up = 0;
vol_mask_init = 1;
#ifdef LYRIC_FUNC
Vbr_Lyric_Init();
#endif
}
}
void Volume_Mask_Message(void){
if((vol_step_up < (volume_value+1)) && (read_XDATA(MP3_FRAME_CNT_LOW) > 0)){
setVolume(vol_step_up);
vol_step_up++;
if(vol_step_up == volume_value){
vol_mask_init = 0;
}
}
}
UINT8 Battery_Message(void){
current_bat_value = Check_BAT();
#ifdef G5_BOARD
if ((current_bat_value == CUT_BAT) && (!USB_ON))
#else
if(current_bat_value == CUT_BAT)
#endif
{
LcdDisplayImage(IMG_POP_BG);
LcdDisplayImage(IMG_LOW_BATTERY_00);
{
UINT8 j,k;
for( j = 0; j < IMAGE_BLINK_CNT; j++){
for( k = 0; k < IMG_LOW_BATTERY_BATT_ANI_NUM; k++){
LcdDisplayImage(IMG_LOW_BATTERY_01(k));
uDelay(0xffff);
}
}
}
FuncInMode = POWER_OFF_STATE;
decode_state = MODE_EXIT_STATE;
return 1;
}else{
#if defined L320x240
if(sub_mode_in_play == DEC_DEC){
#else
if(sub_mode_in_play == DEC_DEC && (Is_LRC_file != LYRIC_YES_DIS_YES)){
#endif
if(current_bat_value != previous_bat_value){
UI_DISPLAY(UI_BATTERY, current_bat_value); // display battery when battery value is changed.
}
}
}
return 0;
}
UINT8 Intro_Message(void){
#ifdef G5_BOARD
if((repeat_mode == 5) && (FILE_INFO.DecodingSectorCnt/FILE_INFO.HEADER.BufcntInSec > 9))
#else
if((repeat_mode == 6) && (FILE_INFO.DecodingSectorCnt/FILE_INFO.HEADER.BufcntInSec > 9))
#endif
{
decode_state = FF_REW_STATE;
Repeat_Message(0);
return 1;
}
return 0;
}
UINT8 USB_Message(void){
static UINT8 usb_on_cnt = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -