📄 flcmd.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 04/08/27 9:39a $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : File list ****************/
/*************** manipulation module ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Jacob Lin ****************/
/**********************************************************************/
/*
* $(PROJ_HOME)/8032/custom/demo/fslist/flcmd.c
*
* File list manipulation module.
*
* This module is responsible to make sure the OOC
* (out of order command) doesn't happen.
*/
#define __FLCMD_C_
#include "flcmd.h"
#pragma NOAREGS
#ifdef PLAYER_FLMENU
/*
* Global variables
*/
static xdata BYTE _bFlCmdOOCCnt = 0x0; // - OOC (out of order comand) conter
/*
* Global functions
*/
/**
* Mark the command is done for OOC check later.
*/
void vFlCmdDone(void)
{
_rFlCmdLock.fgBlock = FALSE;
return;
}
/**
* Check if it is a OOC (out of order command).
*/
BOOL fgFlCmdIsOOC(void) large
{
if (_rFlCmdLock.fgBlock == TRUE)
{
// - it's OOC
_bFlCmdOOCCnt ++;
return TRUE;
}
// - it's not OOC
return FALSE;
}
/**
* Lock command locks with the given method and path and target.
*/
BOOL fgFlClLock(BYTE bPath) large
{
if (_rFlCmdLock.fgLock == FALSE)
{
_rFlCmdLock.fgLock = TRUE;
_rFlCmdLock.bPath = bPath;
_rFlCmdLock.fgLeap = FALSE;
return TRUE;
}
return FALSE;
}
/**
* Release command lock.
*/
void vFlClRls(void) large
{
_rFlCmdLock.fgLock = FALSE;
return;
}
/**
* Go to next path.
*/
void vFlClNext(void) large
{
switch (_rFlCmdLock.bPath)
{
case FL_CMDPATH_DIR_UP_0:
case FL_CMDPATH_SEL_0:
case FL_CMDPATH_SEL_1:
case FL_CMDPATH_INIT_0:
case FL_CMDPATH_ATPLY_0:
case FL_CMDPATH_ATPLY_1:
case FL_CMDPATH_ATPLY_2:
_rFlCmdLock.bPath++;
break;
}
return;
}
/**
* Check if the command lock is locked.
*/
BOOL fgFlClIsLock(void) large
{
return (_rFlCmdLock.fgLock == TRUE);
}
/**
* Get the path of the command lock.
*/
BYTE bFlClPath(void) large
{
return _rFlCmdLock.bPath;
}
/**
* Create a list of given types and parameters.
*/
void vFlCmdCreate(BYTE bType, BYTE bIncItemType,
WORD wBaseDirIdx, WORD wFCfg, BYTE bSCfg) large
{
WORD wBlkPtr;
// - check if there is a returned command
if (fgFlCmdIsOOC())
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_CREATE);
vSetSharedInfo(wBlkPtr ++, bType);
vSetSharedInfo(wBlkPtr ++, bIncItemType);
vSetSharedInfo(wBlkPtr ++, bLoByte(wBaseDirIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wBaseDirIdx));
vSetSharedInfo(wBlkPtr ++, bLoByte(wFCfg));
vSetSharedInfo(wBlkPtr ++, bHiByte(wFCfg));
vSetSharedInfo(wBlkPtr ++, bSCfg);
// - lock the ack and send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
/**
* Send "FS LIST" command "FLCMD_SET".
*/
void vFlCmdSet(BYTE bId, BYTE bType, BYTE bIncItemType,
WORD wBaseDirIdx, WORD wFCfg, BYTE bSCfg) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_SET);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bType);
vSetSharedInfo(wBlkPtr ++, bIncItemType);
vSetSharedInfo(wBlkPtr ++, bLoByte(wBaseDirIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wBaseDirIdx));
vSetSharedInfo(wBlkPtr ++, bLoByte(wFCfg));
vSetSharedInfo(wBlkPtr ++, bHiByte(wFCfg));
vSetSharedInfo(wBlkPtr ++, bSCfg);
// - lock the ack and send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
/**
* Send "FS LIST" command "FLCMD_GET_ITEMS".
*/
BOOL fgFlCmdGetItems(BYTE bId, WORD wBIdx) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return FALSE;
if ((bId == 0xFF) || (wBIdx == 0xFFFF))
return FALSE;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_GET_ITEMS);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wBIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wBIdx));
// - lock the ack and send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return TRUE;
}
/**
* Send "FS LIST" command "FLCMD_CLICK_ITEM".
*/
void vFlCmdClickItem(BYTE bId, WORD wItemIdx) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_CLICK_ITEM);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wItemIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wItemIdx));
// - lock the ack and send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
#ifdef DATA_DISC_SUPPORT_PLAY_LIST
/**
* Send "FS LIST" command "FLCMD_ADD_TO_PL".
*/
void vFlCmdAddToPl(BYTE bId, WORD wSrcIdx, WORD wDestIdx) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_ADD_TO_PL);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wSrcIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wSrcIdx));
vSetSharedInfo(wBlkPtr ++, bLoByte(wDestIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wDestIdx));
// - lock the ack and send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
/**
* Send "FS LIST" command "FLCMD_RM_FROM_PL".
*/
void vFlCmdRmFromPl(WORD wItemIdx) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_RM_FROM_PL);
vSetSharedInfo(wBlkPtr ++, bLoByte(wItemIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wItemIdx));
// - send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
/**
* Send "FS LIST" command "FLCMD_CLEAN".
*/
void vFlCmdRmAllFromPl(BYTE bId) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_CLEAN);
vSetSharedInfo(wBlkPtr ++, bId);
// - send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
#endif // DATA_DISC_SUPPORT_PLAY_LIST
/**
* Send "FS LIST" command "FLCMD_QUERY_ITEM".
*/
#ifdef ISO_AUTO_PLAY
void vFlCmdQueryItem(BYTE bId, WORD wItemIdx) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_QUERY_ITEM);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wItemIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wItemIdx));
// - send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
#endif
/**
* Send "FS LIST" command "FLCMD_ADD_ITEM".
*/
#if 0
void vFlCmdAddItem(BYTE bSId, WORD wSIdx,
BYTE bDId, WORD wDIdx, BYTE bOpt) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if ((bSId == 0xFF) || (bDId == 0xFF))
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block
vSetSharedInfo(wBlkPtr ++, FLCMD_ADD_ITEM);
vSetSharedInfo(wBlkPtr ++, bSId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wSIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wSIdx));
vSetSharedInfo(wBlkPtr ++, bDId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wDIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wDIdx));
vSetSharedInfo(wBlkPtr ++, bOpt);
// - send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
#endif
/**
* Send "FS LIST" command "FLCMD_DEL_ITEM".
*/
#if 0
void vFlCmdDelItem(BYTE bId, WORD wIdx, BYTE bOpt) large
{
WORD wBlkPtr;
if (fgFlCmdIsOOC())
return;
if (bId == 0xFF)
return;
wBlkPtr = FL_CMD_BLK_SA;
// - fill the command block;
vSetSharedInfo(wBlkPtr ++, FLCMD_DEL_ITEM);
vSetSharedInfo(wBlkPtr ++, bId);
vSetSharedInfo(wBlkPtr ++, bLoByte(wIdx));
vSetSharedInfo(wBlkPtr ++, bHiByte(wIdx));
vSetSharedInfo(wBlkPtr ++, bOpt);
// - send out the notification
_rFlCmdLock.fgBlock = TRUE;
vNotifySharedInfo(FL_CMD_ASSERT, 0x0, 0x0);
return;
}
#endif
#endif // #ifdef PLAYER_FLMENU
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -