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

📄 logo_cap.c

📁 MTK 1389e版 MINI组合音响代码
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 03/05/15 5:23p    $       ****************/
/***************  $Revision:: 1                $       ****************/
/***************                                       ****************/
/***************   Description : Logo capture          ****************/
/***************                 control module        ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#include "general.h"

#pragma NOAREGS

#ifdef SUPPORT_CAPTURE_LOGO

typedef struct structBookmark
{
  BYTE bState:4;
  BYTE Reserve:4;
} strucLogoCap;

static xdata strucLogoCap _rLogoCap;

#define LCAP_START        1
#define LCAP_WAIT_UOP     2
#define LCAP_WAIT_ENC     3
#define LCAP_WAIT_WRITE   4
#define LCAP_FINISH       5

// *********************************************************************
// Function : void vLogoCapStart(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
static void vLogoCapStart(void) large
{
  // update OSD first
  // should we wait OSD finished? Or RISC will flsuh the OSD queue?
  // NOTE: when writing flash, RISC could not access flash
  // NOTE: since we do not have OSD core timer here, use direct OSD command here

  // switch UI state
  _rUI.bState = UI_LOGO_CAPTURE;
}

// *********************************************************************
// Function : void vLogoCapEncode(void)
// Description : this is callded from UI_LOGO_CAPTURE
// Parameter :
// Return    : None
// *********************************************************************
void vLogoCapEncode(void) large
{
  BYTE bEncState = bSharedInfo(SI_CAP_LOGO_ST);

  if (_rLogoCap.bState == LCAP_WAIT_ENC)
  {
    if (bEncState == SV_LCAP_WRITE)
    {
      // update OSD
      
      // switch to next state
      _rLogoCap.bState = LCAP_WAIT_WRITE;
    }
  }
  else if (_rLogoCap.bState == LCAP_WAIT_WRITE)
  {
    if (bEncState == SV_LCAP_IDLE)
    {
      // update OSD

      // switch UI state
      _rUI.bState = UI_RUN;

      // switch to next state
      _rLogoCap.bState = LCAP_FINISH;

      fgSetPlayPostKey(IR_TIME_OUT);
    }
  }
  else
  {
    return;
  }
}

// *********************************************************************
// Function : void vLogoCapInit(BYTE fgInit)
// Description : this is callded from UI_RUN
// Parameter :
// Return    : None
// *********************************************************************
void vLogoCapInit(BYTE fgInit) large
{
  if (!fgIsLogoCaptureAllow())
  {
    vSetExitInputState();
    return;
  }
  vOsdPosClear(OSD_POS_AUD_CTRL);//leguo
  vOsdPosClear(OSD_POS_REMAIN_MSG);//BillDen
  vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_WAIT_CAPTURE_LOGO, OSD_NO_DISAPPEAR);

  // for state transition
  fgSetPlayPostKey(IR_TIME_OUT);

  _rLogoCap.bState = LCAP_START;

  vSetOsdRefreshNow();
}

// *********************************************************************
// Function : BOOL fgLogoCapState(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BOOL fgLogoCapState(void) large
{
  switch (_rLogoCap.bState)
  {
    case LCAP_START:
      vSendUopCmd(UOP_CAPTURE, 0, 0, 0);
      // set servo stop flag
      _bUISrvStatus = PLAYER_SRV_STOP;
      _rLogoCap.bState = LCAP_WAIT_UOP;
      break;

    case LCAP_WAIT_UOP:
      if (1)//(_bIRKey == IR_CAPTURE)
      {
        vLogoCapStart();
        // switch to next state
        _rLogoCap.bState = LCAP_WAIT_ENC;
      }
      else /* if (_bIRKey == IR_TIME_OUT) */
      {
        // other key cancel the capture logo
        vSetExitInputState();
      }
      break;

    case LCAP_WAIT_ENC:
      break;

    case LCAP_WAIT_WRITE:
      break;

    case LCAP_FINISH:
    default:
      vSetExitInputState();
      break;
  }

  return(TRUE);
}

// *********************************************************************
// Function : void vLogoCapExit(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
void vLogoCapExit(void) large
{
  // clear OSD here
  if (_rLogoCap.bState == LCAP_FINISH)
  {
  #ifndef BBK_MENU
    vOsdPosClear(OSD_POS_NORMAL);
  #else
    vOsdPosShow(OSD_POS_NORMAL,OSD_MSG_BBK_CAPTURE_OK, OSD_TIMEOUT);
//10/20
//BillDen bg		  
	if (bEepromReadByte(LOGO_TYPE_POSITION)!=EV_LOGO_CAPTURED)
	{
	  fgEepromWriteByte(LOGO_TYPE_POSITION, EV_LOGO_CAPTURED);
	  vSetSharedInfo(SI_DEFAULT_LOGO, SV_LOGO_CAPTURE);
	  vNotifySharedInfo(SI_DEFAULT_LOGO, 0, 0);  
	}
//BillDen end 	 

  //leguo bg
  if(fgIsMute())
    vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_MUTE, OSD_NO_DISAPPEAR);
  //leguo end
  #endif
  }
  else
  {
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
  }
}

// *********************************************************************
// Function : BOOL fgIsLogoCaptureAllow(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BOOL fgIsLogoCaptureAllow(void) large
{
  BYTE bPbcState;
  
  // DVD-Audio? some special VCD? CD-G?
  //if (fgIsNonPlay() || fgIsCddaPlay() || fgIsIsoPlay())
  if(bSharedInfo(SI_ZOOM_SWITCH) != 0) //BillDen
  {
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
    return (FALSE);
  }
  
  if (fgIsNonPlay())
  {
    return (FALSE);
  }
  else if (fgIsCddaPlay())
  {
    //if (bSharedInfo(SI_DISC_TYPE) != SV_CDG)
    {
      return (FALSE);
    }
  }else if (fgIsIsoPlay()) //BillDen
  {
    if(bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_JPG || bSharedInfo(SI_MP3_BITRATE_LO) != 0xff)
      return (FALSE);
  }
  else if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO && bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_MLP) //BillDen
      return (FALSE);

  bPbcState = bSharedInfo(SI_PBC_STATE);
#ifdef BBK
  if (!fgIsPlay(bPbcState) && !fgIsPause(bPbcState))
#else
  if (!fgIsDiscPlay(bPbcState))
#endif  
  {
    return (FALSE);
  }

  return (TRUE);
}

#endif /* SUPPORT_CAPTURE_LOGO */

⌨️ 快捷键说明

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