www.pudn.com > 6027_HD65.rar > flutil.c


/**********************************************************************/ 
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/ 
/***************                                       ****************/ 
/***************  $Modtime:: 04/07/28 10:30p   $       ****************/ 
/***************  $Revision:: 12               $       ****************/ 
/***************                                       ****************/ 
/***************   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 
 
#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 
#ifdef CDDA_USE_CDFS 
  case FTYPE_CDA: 
  case FTYPE_DTS: 
#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: 
    return FTYPE_AV; 
     
  case FTYPE_DIR: 
    return FTYPE_FOLDER; 
  } 
 
  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); 
  } 
} 
 
#if defined (SUPPORT_PCD) 
BYTE bFlGetRepeatType(void) large 
{ 
  return _bFlPbMode; 
} 
#endif 
 
#if 1 // - JACOB: test "shuffle" and "randome" 
BYTE bFlNextRepeatType(void) large 
{ 
  switch (_bFlPbMode) 
  { 
    case SV_REPEAT_NONE: 
#if defined (DDISC_PB_SHUFFLE_ENABLED) 
      _bFlPbMode = SV_SHUFFLE; 
#elif defined (DDISC_PB_RANDOM_ENABLED) 
      _bFlPbMode = SV_RANDOM; 
#elif defined (DDISC_PB_SINGLE_ENABLED) 
      _bFlPbMode = SV_SINGLE; 
#else 
      _bFlPbMode = SV_REPEAT_TRACK; 
#endif 
      break; 
 
#ifdef DDISC_PB_SHUFFLE_ENABLED 
    case SV_SHUFFLE: 
  #if defined (DDISC_PB_RANDOM_ENABLED) 
      _bFlPbMode = SV_RANDOM; 
  #elif defined (DDISC_PB_SINGLE_ENABLED) 
      _bFlPbMode = SV_SINGLE; 
  #else 
      _bFlPbMode = SV_REPEAT_TRACK; 
  #endif 
      break; 
#endif // DDISC_PB_SHUFFLE_ENABLED 
 
#ifdef DDISC_PB_RANDOM_ENABLED 
    case SV_RANDOM: 
  #if defined (DDISC_PB_SINGLE_ENABLED) 
      _bFlPbMode = SV_SINGLE; 
  #else 
      _bFlPbMode = SV_REPEAT_TRACK; 
  #endif 
      break; 
#endif 
 
#ifdef DDISC_PB_SINGLE_ENABLED 
    case SV_SINGLE: 
      _bFlPbMode = SV_REPEAT_TRACK; 
      break; 
#endif 
 
    case SV_REPEAT_TRACK: 
#ifdef DDISC_PB_REP_FOLDER_ENABLED 
      _bFlPbMode = SV_REPEAT_ALL; 
#else 
      _bFlPbMode = SV_REPEAT_NONE; 
#endif 
      break; 
 
#ifdef DDISC_PB_REP_FOLDER_ENABLED 
    case SV_REPEAT_ALL: 
      _bFlPbMode = SV_REPEAT_NONE; 
      break; 
#endif 
 
    default: 
#ifdef DDISC_PB_REP_FOLDER_ENABLED 
      _bFlPbMode = SV_REPEAT_ALL; 
#else 
      _bFlPbMode = SV_REPEAT_NONE; 
#endif 
      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 
 
static void vFlVfdNumOnTtCh(WORD wNum) large 
{ 
  wNum = wWRDToBCD(wNum + 1); 
 
  VfdShowPlayInfo(VFD_INFO_NUMBER, bHiByte(wNum), bLoByte(wNum)); 
} 
 
static void vFlVfdNumOnTime(WORD wNum) large 
{ 
  VfdShowPlayTime(0, bHiByte(wNum+1), bLoByte(wNum+1)); 
} 
 
void vFlUpdateVfd(BOOL fgInit) large 
{ 
  WORD  wNum; 
  BYTE  bPbcState; 
 
 
  if (fgInit) 
    VfdMsg(VFDMSG_clearall); 
 
  switch (_bFlCmdTarget) 
  { 
  case FL_CMD_TARGET_MENU: 
    if(bSharedInfo(SI_MP3_MOD) == SV_STOP) 
      wNum = wFlGetItemIdx(_bFlMnCurItemIdx); 
    else 
    	wNum = _wFlCurAdoIdx; 
    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); 
#ifdef VFDMSG_jpeg 
    if (fgInit) 
      VfdMsg(VFDMSG_jpeg); 
#endif     
    vFlVfdNumOnTime(wNum); 
    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; 
  } 
*/ 
} 
 
WORD wFlGetListLen(void) large 
{ 
  return _wFlMnListLen; 
} 
 
#ifdef MPEG4_TXT_SP 
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); 
  vSendOsdCmd(); 
} 
#endif 
 
#else  // #ifdef PLAYER_FLMENU 
 
#endif  // #ifdef PLAYER_FLMENU