📄 flmenu.c
字号:
}
#ifdef ISO_LAST_MEM
if (_wFlCurAdoIdx != 0xFFFF)
{
#ifdef MP3_LAST_MEMORY
#ifdef FLMENU_DEFAULT_DISC_LIST
vFlCmdCreate(FLPARM_LIST_DISC, 0, 0, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
#else
vFlCmdCreate(FLPARM_LIST_FOLDER,
FLPARM_INC_PARENT,
_wFlCurAdoDir, FLPARM_FF_DIR|FLMN_DEF_FFAC, FLPARM_SO_GDIR);
#endif
#else
vFlCmdCreate(FLPARM_LIST_FOLDER,
FLPARM_INC_FILE|FLPARM_INC_FOLDER|FLPARM_INC_PARENT,
_wFlCurAdoDir, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
#endif
}
else
#endif
{
#ifdef SUPPORT_PCD
if (fgIsPcdPlay())
{
#ifdef SUPPORT_FJCD//071029
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
#endif
{
bLoByte(wTmp) = bSharedInfo(SI_FS_PCD_BASEDIR_LO);
bHiByte(wTmp) = bSharedInfo(SI_FS_PCD_BASEDIR_HI);
vFlCmdCreate(FLPARM_LIST_FOLDER,
0x0, wTmp, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
}
#ifdef SUPPORT_FJCD//071029
else
{
wFCfg = FLPARM_FF_JPEG;
bListType = FLPARM_LIST_FJPIC;
bIncItemType = FLPARM_INC_HI_RES_PICS | FLPARM_INC_LO_RES_PICS;
vFlCmdCreate(bListType, bIncItemType,
0, wFCfg, FLPARM_SO_GDIR);
}
#endif
}
else
#endif
{
#ifdef FLMENU_DEFAULT_DISC_LIST
vFlCmdCreate(FLPARM_LIST_DISC, 0, 0, FLMN_DEF_FFAC, FLPARM_SO_GDIR);
#else
vFlCmdCreate(FLPARM_LIST_FOLDER,
FLPARM_INC_PARENT, 0x0, FLPARM_FF_DIR|FLMN_DEF_FFAC, FLPARM_SO_GDIR);
#endif
}
}
#ifdef UNICODE_SUPPORT_COPY
_bUSBCopyState = USB_COPY_STATE_NONE;
#endif
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////
//
#ifdef ENABLE_ID3
static code BYTE _pbId3V1Tag[3] = { 'T', 'A', 'G' };
static code BYTE _pbId3V1FldLen[ID3V1_MAX] = { 3, 30, 30, 30, 4, 30 , 1 };
static code BYTE _pbId3V1FldPos[ID3V1_MAX] = { 0, 3, 33, 63, 93, 97, 127 };
static void vFlGetId3Info(void) large
{
DWRD dwAddr;
BYTE pbStr[31];
BYTE bFld, bLen, i, bChar;
#ifndef MT1379_MANUFACTURE_TEST
#ifdef SUPPORT_CAPTURE_LOGO
vPlayerShowLogo(ISO_NOMAL_LOGO, ISO_LOGO_COLOR);
#else
vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
#endif
#endif
bLoByte(wLoWord(dwAddr)) = bSharedInfo(SI_MP3_ID3TAG_B1);
bHiByte(wLoWord(dwAddr)) = bSharedInfo(SI_MP3_ID3TAG_B2);
bLoByte(wHiWord(dwAddr)) = bSharedInfo(SI_MP3_ID3TAG_B3);
bHiByte(wHiWord(dwAddr)) = bSharedInfo(SI_MP3_ID3TAG_B4);
if (dwAddr == 0xffffffff)
return;
for (bFld=0, bLen=0; bFld < ID3V1_MAX; bFld++)
{
pbStr[0] = _pbId3V1FldLen[bFld];
for (i=0; i<_pbId3V1FldLen[bFld]; i++)
{
bChar = bReadDRAMTbl(bLoByte(wHiWord(dwAddr)), wLoWord(dwAddr));
if (bFld == 0)
{
if (bChar != _pbId3V1Tag[i])
return;
}
if (bChar == 0x00)
{
pbStr[0] = i;
dwAddr += (_pbId3V1FldLen[bFld] - i);
break;
}
else
{
pbStr[i+1] = bChar;
dwAddr ++;
}
}
if (bFld != 0)
{
_wStartX = (WORD) FLMN_PREVIEW_X - FSMENU_BASIC_WB_LEFT;
_wStartY = (WORD) FLMN_PREVIEW_Y - FSMENU_BASIC_WB_TOP + 15 + 30 * bFld;
vOsdShowStrMax(FL_MENU_WB, pbStr, 200, 0);
}
}
}
#endif
////////////////////////////////////////////////////////////////////////////////
//
#ifndef MP3_LAST_MEMORY
#ifdef ISO_LAST_MEM
static void vFlMnGetLastMemItem(void) large
{
WORD wSlotSa, wIdx;
_wFlCurAdoIdx = 0xFFFF;
wSlotSa = wSIItemPos(bSharedInfo(SI_DDISC_LASTMEM_GRP), 1);
wSlotSa += ((bSharedInfo(SI_DDISC_LASTMEM_NS)-1) *
bSharedInfo(SI_DDISC_MEM_SLOT_SZ));
wSlotSa++;
if (bSharedInfo(wSlotSa) != SV_MEM_SLOT_DDISC)
{
return;
}
wSlotSa += 9;
bLoByte(wIdx) = bSharedInfo(wSlotSa);
wSlotSa ++;
bHiByte(wIdx) = bSharedInfo(wSlotSa);
_wFlCurAdoDir = wIdx;
wSlotSa ++;
bLoByte(wIdx) = bSharedInfo(wSlotSa);
wSlotSa ++;
bHiByte(wIdx) = bSharedInfo(wSlotSa);
_wFlCurAdoIdx = wIdx;
if (_wFlCurAdoDir != 0)
_wFlCurAdoIdx++;
}
#endif
#endif
#ifdef MT1379_MANUFACTURE_TEST
extern void vNotMp4CD() large;
#endif
////////////////////////////////////////////////////////////////////////////////
// Command return
/**
* Check the return value of command "FLCMD_CREATE".
*/
static void vFlMnRetCreate(void) large
{
WORD wBlkPtr;
BYTE bRCode;
wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
bRCode = bSharedInfo(wBlkPtr ++);
// - mark the command is done
vFlCmdDone();
if (bRCode == FLRET_S_OK)
{
// - read in the newly created list info
if (fgFlClIsLock())
{
switch(bFlClPath())
{
case FL_CMDPATH_INIT_0:
_bFlMnListId = bSharedInfo(wBlkPtr ++);
vFlMnRdListInfo(_bFlMnListId);
#ifdef ISO_AUTO_PLAY
vFlClNext();
vFlCmdCreate(FLPARM_LIST_DISC, 0, 0x0,
#ifdef MT1379_MANUFACTURE_TEST
FLPARM_FF_MPG,
#else
FL_AUDIO_FILE,
#endif
FLPARM_SO_GDIR);
break;
case FL_CMDPATH_INIT_1:
_bFlRefListId = bSharedInfo(wBlkPtr ++);
#ifdef MT1379_MANUFACTURE_TEST
vFlMnRdListInfo(_bFlRefListId);
#ifdef RS232_LOG
DRS232LogS("Aft FlCreate");
DRS232LogB(_wFlMnListLen,0,0,0);
#endif
if (!_wFlMnListLen)
vNotMp4CD();
else
vFlCmdClickItem(_bFlRefListId, 0);
#endif
#endif
#ifdef SUPPORT_FJCD//071029
if( (bSharedInfo(SI_DISC_TYPE) == SV_PCD)||(bSharedInfo(SI_DISC_TYPE) == SV_FJCD))
#else
if (bSharedInfo(SI_DISC_TYPE) == SV_PCD)
#endif
{
vFlSetCmdTarget(FL_CMD_TARGET_JPEG);
}
else
{
if (_wFlMnListLen)
{
if (_wFlCurAdoIdx == 0xFFFF)
{
fgFlCmdGetItems(_bFlMnListId, 0);
//vFlSetCmdTarget(FL_CMD_TARGET_MENU);
}
else
{
_bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - _bFlMnCurItemIdx);
}
}
else
{
#ifdef SUPPORT_EMD
vFlMnShowPage();
vFlMnDrawInfoPanel(_bFlIpState);
vFlIpShowInfo(IP_INFO_FILE_INDEX, 0, 0);
_wStartX = FLMN_BTN_1_X + FLMN_MENU_BORDER + 80;
_wStartY = FLMN_BTN_1_Y + FLMN_MENU_BORDER + 2;
if (bSharedInfo(SI_FAT_ERR_CODE) == SV_FAT_E_NOT_SUPPORT)
vOsdMsgPaste(FL_MENU_WB, OSD_MSG_ERR_DISC_NOT_SUPPORT);
else
//Alan Cheng: temporarily for porting
vOsdMsgPaste(FL_MENU_WB, OSD_MSG_EMPTY_CARD);
_bFlCmdTarget = FL_CMD_TARGET_MENU;
#ifdef UNICODE_SUPPORT_COPY
vFlMnClrPage();
#endif
vFlClRls();
#endif
}
}
break;
}
}
}
else
{
// - error occurs
_bFlMnListId = 0xFF;
_bFlRefListId = 0xFF;
}
return;
}
/**
* Check the return value of command "FLCMD_SET".
*/
static void vFlMnRetSet(void) large
{
WORD wBlkPtr;
BYTE bRCode;
wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
bRCode = bSharedInfo(wBlkPtr ++);
//bRetOp = bFlCmdRetOp();
// - mark the command is done
vFlCmdDone();
if (bRCode == FLRET_S_OK)
{
// - successful
vFlMnRdListInfo(_bFlMnListId);
if (fgFlClIsLock())
{
switch(bFlClPath())
{
case FL_CMDPATH_RETURN:
_bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - _bFlMnCurItemIdx);
break;
case FL_CMDPATH_CHG_DIR:
case FL_CMDPATH_DIR_UP_0:
case FL_CMDPATH_DIR_UP_1:
_bFlMnCurItemIdx = 0x0;
fgFlCmdGetItems(_bFlMnListId, 0);
break;
case FL_CMDPATH_CHG_LIST:
fgFlCmdGetItems(_bFlMnListId, 0x0);
break;
case FL_CMDPATH_ATPLY_1:
_wFlCurAdoIdx += wFlGetSubFldrNs(_bFlMnListId);
fgFlCmdGetItems(_bFlMnListId, _wFlCurAdoIdx - (_wFlCurAdoIdx % FLMN_ITEM_N));
break;
}
}
else
{
#if 0
if (bRetOp == FLCMD_RET_OP_CHG_LIST)
fgFlCmdGetItems(_bFlMnListId, 0x0);
else
#endif
fgFlCmdGetItems(_bFlMnListId, 0x0);
_bFlMnCurItemIdx = 0x0;
}
}
else
{
// - error occurs
}
return;
}
/**
* Check the return value of command "FLCMD_GET_ITEMS".
*/
static void vFlMnRetGetItems(void) large
{
WORD wBlkPtr;
WORD wNum;
BYTE bType;
BYTE bRCode;
wBlkPtr = FL_CMD_BLK_SA + 1; // - shift to the parameter block
bRCode = bSharedInfo(wBlkPtr ++);
if (bRCode == FLRET_S_OK)
{
// - successful, update the item number, redraw the page
_bFlMnItemNs = bSharedInfo(wBlkPtr ++);
vFlCmdDone();
switch(bFlClPath())
{
#ifdef ISO_AUTO_PLAY
case FL_CMDPATH_INIT_1:
#else
case FL_CMDPATH_INIT_0:
#endif
#ifdef MP3_LAST_MEMORY
// lastmem & autoplay can't be happened at the same time
if (_wFlCurAdoIdx != 0xffff)
{
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
_bFlPlayListType = bSharedInfo(FL_LIST_FIELD(_bFlMnListId));
vFlCmdClickItem(_bFlMnListId, _wFlCurAdoIdx);
}else
#endif
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
break;
case FL_CMDPATH_CHG_LIST:
vFlIpShowInfo(IP_INFO_LIST_TYPE, bSharedInfo(FL_LIST_FIELD(_bFlMnListId)), 0);
case FL_CMDPATH_CHG_DIR:
case FL_CMDPATH_REDRAW:
case FL_CMDPATH_DIR_UP_1:
case FL_CMDPATH_UP:
case FL_CMDPATH_DOWN:
case FL_CMDPATH_RETURN:
vFlMnSyncState();
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
vFlClRls();
#ifdef CDFS_AUTO_PLAY
if((bFlClPath() == FL_CMDPATH_REDRAW) && (bSharedInfo(SI_FS_FSTYPE) == FSTYPE_CDFS))
{
if((!_bFlMnCurItemIdx) && (bSharedInfo(SI_PBC_STATE) == SV_STOP))
{
#ifdef RS232_LOG
DBGLogS(" send play \n ");
#endif
fgSetPlayPostKey(IR_PLAY);
}
}
#endif
break;
#ifdef UNICODE_SUPPORT_COPY
case FL_CMDPATH_USBCP0: //SUPPORT_USB_COPY_MENU //for usb copy item select
vFlMnSyncState();
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
vUSBCpShowAllChkbox();
vFlClRls();
break;
#endif
case FL_CMDPATH_SEL_2:
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
vFlClRls();
break;
case FL_CMDPATH_DIR_DOWN:
fgFlMnEntDir(0x0, FALSE);
break;
case FL_CMDPATH_DIR_UP_0:
vFlClNext();
fgFlMnEntDir(0x0, TRUE);
break;
case FL_CMDPATH_PL_RM:
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
vFlClRls();
break;
case FL_CMDPATH_SEL_0:
_fgFlMdChg = TRUE;
// PL00003850, need to set _bFlMnItemType or it'll be wrong type
_bFlMnItemType = bFlGetItemType(_bFlMnCurItemIdx);
switch (_bFlMnItemType)
{
case FTYPE_FOLDER:
vFlClNext();
if (fgIsParentDir())
vParseFolderName(_bFlMnCurItemIdx, TRUE);
else
vParseFolderName(_bFlMnCurItemIdx, FALSE);
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
break;
case FTYPE_AUDIO:
vFlClNext();
vFlSetCmdTarget(FL_CMD_TARGET_MENU);
break;
case FTYPE_STILL:
vFlClNext();
vFlSetCmdTarget(FL_CMD_TARGET_JPEG);
break;
case FTYPE_AV:
// 20050503, PL00000140, set PBC state to SV_PRE_PLAY so that we don't accept setup key from here.
vSetSharedInfo(SI_PBC_STATE, SV_PRE_PLAY) ;
vFlClNext();
// PL00003626, why change to MPEG need to change to MENU first ??
// Correct it.
vFlSetCmdTarget(FL_CMD_TARGET_MPEG);
//vFlSetCmdTarget(FL_CMD_TARGET_MENU);
break;
}
break;
#ifdef ISO_AUTO_PLAY
case FL_CMDPATH_ATPLY_0:
vFlCmdQueryItem(_bFlRefListId, _wFlAtplyIdx);
break;
case FL_CMDPATH_ATPLY_1:
_bFlMnCurItemIdx = _wFlCurAdoIdx % FLMN_ITEM_N;
#ifdef FL_AUTO_PLAY_SYNC_MENU
vFlMnDrawPage();
fgFlMnEntItem(_bFlMnCurItemIdx);
#endif
vFlCmdClickItem(_bFlMnListId, _wFlCurAdoIdx);
break;
#endif
}
}
else
{
// - error occurs, mark the number of item is negative
vFlCmdDone();
switch(bFlClPath())
{
case FL_CMDPATH_CHG_LIST:
bType = bSharedInfo(FL_LIST_FIELD(_bFlMnListId));
switch (bType)
{
case FLPARM_LIST_FOLDER:
#if defined (DATA_DISC_SUPPORT_DISC_LIST)
bType = FLPARM_LIST_DISC;
_wFlCurAdoIdx = _wFlFdIdx;
#elif defined (DATA_DISC_SUPPORT_PLAY_LIST)
bType = FLPARM_LIST_PLAYLIST;
_wFlCurAdoIdx = _wFlFlIdx;
#else
_wFlCurAdoIdx = _wFlPlIdx;
#endif
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -