⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flutil.c

📁 MTK 1389e版 MINI组合音响代码
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 03/09/10 11:03a   $       ****************/
/***************  $Revision:: 7                $       ****************/
/***************                                       ****************/
/***************   Description : File List             ****************/
/***************                 Utility Function      ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Jacob Lin             ****************/
/**********************************************************************/

/**
 *          $(PROJ_HOME)/8032/custom/demo/fslist/flutil.c
 *
 *          Utility function for all modules of "FILE BROWSER".
 */

#define __FLUTIL_C_ 


#include "../general.h"
#include "flcomm.h"

#pragma NOAREGS

//#define DEBUG_FLM
#ifdef DEBUG_FLM
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif

#ifdef PLAYER_FLMENU

WORD wFlGetSubFldrNs(BYTE bListId) large
{
  WORD  wPos, wFldrNs;
  
  if (bListId > FL_LIST_NS)
    return 0xFFFF;

  wPos = FL_LIST_FIELD(bListId);  
  
  bLoByte(wFldrNs) = bSharedInfo(wPos + 9);
  bHiByte(wFldrNs) = bSharedInfo(wPos + 10);  
  
  return wFldrNs;
}

/**
 * Get the index of the given item in the item buffer.
 *
 * NOTE: The item is in the item buffer and you should make sure that
 *  the content of the buffer syncs with the list you want.
 */
WORD wFlGetItemIdx(BYTE bItemIdx) large
{
  WORD wPos, wIdx;

  if (bItemIdx >= _bFlMnItemNs)
    return 0xFFFF;

  wPos = FL_ITEM_FIELD(bItemIdx);
  bLoByte(wIdx) = bSharedInfo(wPos + 6);
  bHiByte(wIdx) = bSharedInfo(wPos + 7);

  return wIdx;
}

BYTE bFlGetItemType(BYTE bItemIdx) large
{
  switch (bSharedInfo(FL_ITEM_FIELD(bItemIdx)+5))
  {
  case FTYPE_MP1:
  case FTYPE_MP2:
  case FTYPE_MP3:
  case FTYPE_WMA:
  case FTYPE_ASF:
  case FTYPE_DST:
  case FTYPE_DSD:
#ifdef DATA_DISC_AAC_SUPPORT  // 20030831 added by sammy 
  case FTYPE_AAC:
#endif
  return FTYPE_AUDIO;

  case FTYPE_JPG:
    return FTYPE_STILL;

  case FTYPE_MPG:
  case FTYPE_DAT:
  case FTYPE_VOB:
  case FTYPE_AVI:
  case FTYPE_TS1:
  case FTYPE_TS2:
  //case FTYPE_TS3:
 // case FTYPE_OGG:
 // case FTYPE_TS4:
  #ifdef SUPPORT_OGG //)&&defined(SUPPORT_WAIXIAO)
 case FTYPE_OGG:  //tide@0311
#ifdef DEBUG_FLM
DRS232LogS("T2");
#endif
 #endif	
    return FTYPE_AV;
    
  case FTYPE_DIR:
    return FTYPE_FOLDER;
    
#ifdef BBK_MENU
  case FTYPE_TS4:
    vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
    vSetExitInputState();
    return FTYPE_NONE;
#endif
  }

  return FTYPE_NONE;
}

BYTE bFlGetFgPbcState(void) large
{
  switch (_bFlCmdTarget)
  {
  case FL_CMD_TARGET_MENU:
    return bSharedInfo(SI_MP3_MOD);
  case FL_CMD_TARGET_JPEG:
  case FL_CMD_TARGET_MPEG:
    return bSharedInfo(SI_PBC_STATE);
  }
}

BYTE bFlGetRepeatType(void) large
{
  return _bFlPbMode;
}

#if 1 // - JACOB: test "shuffle" and "randome"
BYTE bFlNextRepeatType(void) large
{
  switch (_bFlPbMode)
  {
    case SV_REPEAT_NONE:
/*10/06      _bFlPbMode = SV_SHUFFLE;
      break;
    case SV_SHUFFLE:
      _bFlPbMode = SV_RANDOM;
      break;
    case SV_RANDOM:*/
      _bFlPbMode = SV_SINGLE;
      break;
    case SV_SINGLE:
      _bFlPbMode = SV_REPEAT_TRACK;
      break;
    case SV_REPEAT_TRACK:
      _bFlPbMode = SV_REPEAT_ALL;
      break;
    case SV_REPEAT_ALL:
      _bFlPbMode = SV_REPEAT_NONE;
      break;
    default:
      _bFlPbMode = SV_REPEAT_ALL;
      break;
  }

  return _bFlPbMode;
}
#else
BYTE bFlNextRepeatType(void) large
{
  switch (_bFlPbMode)
  {
    case SV_REPEAT_NONE:
    case SV_SHUFFLE:
#ifdef DDISC_PB_SINGLE_ENABLED
      _bFlPbMode = SV_SINGLE;
#else
      _bFlPbMode = SV_REPEAT_TRACK;
#endif
      break;
    case SV_SINGLE:
      _bFlPbMode = SV_REPEAT_TRACK;
      break;
    case SV_REPEAT_ALL:
      _bFlPbMode = SV_REPEAT_NONE;
      break;
    default:
      _bFlPbMode = SV_REPEAT_ALL;
      break;
  }

  return _bFlPbMode;
}
#endif //1

static void vFlVfdNumOnTtCh(WORD wNum) large
{
//10/13am
#ifdef BBK //BillDen
  WORD wBsDir;
#endif

#ifdef BBK //BillDen
  bLoByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 2);
  bHiByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 3);
  if(bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId)) == FLPARM_LIST_FOLDER && wBsDir)
    wNum = wWRDToBCD(wNum);
  else
#endif
  wNum = wWRDToBCD(wNum + 1);
  
#ifdef VFD_FLD_CH100
  vVfdWord(VFD_WORD_CH100, bHiByte(wNum), 0);
#else
  vVfdWord(VFD_WORD_TT, bHiByte(wNum), 0);
#endif

  vVfdWord(VFD_WORD_CH, bLoByte(wNum), 1);
  vVfdSymbol(VFD_SYM_PLAYINFO_TRACK);
}

//10/15am
#ifndef BBK
static void vFlVfdNumOnTime(WORD wNum) large
{
  wNum = wWRDToBCD(wNum + 1);

  vVfdUpdateTime(0, bHiByte(wNum), bLoByte(wNum));
}
#endif
void vFlUpdateVfd(BOOL fgInit) large
{
  WORD  wNum;
  BYTE  bPbcState;
  //BYTE  bISOType = bSharedInfo(SI_A_CODE_MODE);//DVD_AMP

  if (fgInit && bSharedInfo(SI_MP3_BITRATE_LO) == 0xff) //BillDen
    vVfdMessage(VFD_MESSAGE_CLR_ALL);   //  lxp-050506

  switch (_bFlCmdTarget)
  {
  case FL_CMD_TARGET_MENU:
    wNum = wFlGetItemIdx(_bFlMnCurItemIdx);
    vFlVfdNumOnTtCh(wNum);
    bPbcState = bSharedInfo(SI_MP3_MOD);
    break;
  case FL_CMD_TARGET_JPEG:
    wNum = (WORD)bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + bSharedInfo(SI_JPG_ITEM_IDX_LO);
    
     //if (bISOType != SV_A_CODE_MP3 && bISOType != SV_A_CODE_WMA)//DVD_AMP
      //vVfdClearAll();
     
#if 1 //Vincent Del @04-21-04 def VFD_MESSAGE_JPEG
    if (fgInit)
      vVfdMessage(VFD_MESSAGE_JPEG);
#endif    
//10/15am
#ifndef BBK
    vFlVfdNumOnTime(wNum);
#else
    if(bSharedInfo(SI_DISC_TYPE) == SV_PCD)//10/17pm
      wNum++;//10/17pm
    vFlVfdNumOnTtCh(wNum);
#endif
    break;
  case FL_CMD_TARGET_MPEG:
    wNum = (WORD)bSharedInfo(SI_MPIC_ITEM_IDX_HI) * 256 + bSharedInfo(SI_MPIC_ITEM_IDX_LO);
    vFlVfdNumOnTtCh(wNum);
    bPbcState = bSharedInfo(SI_PBC_STATE);
    break;
  }

  switch (bPbcState)
  {
  case SV_STOP:
    vVfdMessageClr();
    vVfdRotate(VFD_DISC_LIGHT_OFF);
    vVfdMessage(VFD_MESSAGE_STOP);
    vVfdClrAudInfo();
    vVfdSymbol(VFD_SYM_STOP);
    break;
  }
}

#if (!defined(NO_ADD10_KEY) && defined(ISO_SELECT_USE_ADD10_KEY))
#else
WORD wFlGetListLen(void) large
{
  return _wFlMnListLen;
}
#endif
#ifdef MPEG4_TXT_SP //Vincent -5Version @03-28-04
void vFlSetMp4SpParam(BYTE bWbIdx, BYTE bAlign, BYTE bCfg, BYTE bSpace) large
{
  vWaitBusy();
  vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_SET_MP4SP_PARAM);
  vWriteNextSharedItem(bWbIdx);
  vWriteNextSharedItem(bLoByte(_wStartX));
  vWriteNextSharedItem(bHiByte(_wStartX));
  vWriteNextSharedItem(bLoByte(_wStartY));
  vWriteNextSharedItem(bHiByte(_wStartY));
  vWriteNextSharedItem(bLoByte(_wEndX));
  vWriteNextSharedItem(bHiByte(_wEndX));
  vWriteNextSharedItem(bLoByte(_wEndY));
  vWriteNextSharedItem(bHiByte(_wEndY));
  vWriteNextSharedItem(bAlign);
  vWriteNextSharedItem(bCfg);

 
   /*
  vWriteNextSharedItem(bSpace);

  #ifdef SUPPORT_ASIAN
  vWriteNextSharedItem(0xFF); //这行为新加行,必须写
  vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
  #else
  vWriteNextSharedItem(0);      //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
  #endif  
  vSendOsdCmd();
*/


#ifdef NEIXIAO
  vWriteNextSharedItem(bSpace);
  vSendOsdCmd();
  vWriteNextSharedItem(0xFF); //这行为新加行,必须写
  #ifdef SUPPORT_ASIAN
  vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
  #else
  vWriteNextSharedItem(0);      //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
  #endif  
#else   //NEIXIAO
  #ifdef SUPPORT_ASIAN
  vWriteNextSharedItem(bSpace);
  vWriteNextSharedItem(0xFF); //这行为新加行,必须写
  vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
  #else
  vWriteNextSharedItem(0);      //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
  #endif  
#endif //NEIXIAO
  vSendOsdCmd();

}
#endif

#ifdef SUPPORT_KOREAN_FILE_NAME
void vDrawStrAddr(BYTE bWbIdx, BYTE bStrLen, DWRD dwAddr, BYTE bChar, BYTE bJoliet) large
{
  vWaitBusy();
  vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_DRAW_STR_ADDR);
  vWriteNextSharedItem(bWbIdx);
  vWriteNextSharedItem(bLoByte(_wStartX));
  vWriteNextSharedItem(bHiByte(_wStartX));
  vWriteNextSharedItem(bLoByte(_wStartY));
  vWriteNextSharedItem(bHiByte(_wStartY));
  vWriteNextSharedItem(bStrLen);

  vWriteNextSharedItem(bLoByte(wLoWord(dwAddr)));
  vWriteNextSharedItem(bHiByte(wLoWord(dwAddr)));
  vWriteNextSharedItem(bLoByte(wHiWord(dwAddr)));
  vWriteNextSharedItem(bHiByte(wHiWord(dwAddr)));

  vWriteNextSharedItem(bChar);

  vWriteNextSharedItem(bJoliet);

  vSendOsdCmd();
}
#endif


#else  // #ifdef PLAYER_FLMENU

#endif  // #ifdef PLAYER_FLMENU

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -