📄 drm.c
字号:
#ifndef _DRM_C
#define _DRM_C
#include "general.h"
#include "../osdshow.h"
#pragma NOAREGS
#ifdef SUPPORT_DRM
void vDRMShowItems(sTextItem **prItem,BYTE bItemNO) large
{
BYTE i;
for(i=0;i<bItemNO;i++)//sizeof(prItem)
{
vOsdMsgPosPaste(WB_DRM,prItem[i]->wPosX,prItem[i]->wPosY,prItem[i]->wMsgId);
}
}
void vDRMDrawRect(void) large
{
//draw outside rectangle
_wStartX=2;
_wStartY=2;
_wEndX=622; // modiy it from 582 to 622 by Bright /2005/10/21/, for CQ(PL00205062)
_wEndY=356;
vRectangle(WB_DRM,4,0x0e,FALSE,0X00);
//draw inside rectangle
_wStartX=12;
_wStartY=12;
_wEndX=612; // modiy it from 572 to 612 by Bright /2005/10/21/, for CQ(PL00205062)
_wEndY=346;
vRectangle(WB_DRM,2,0x0e,FALSE,0X00);
}
void vDRMShowRgCode(void) large
{
BYTE pbStr[9];
BYTE i;
pbStr[0]=8;
//get registeration from share infor registeration
/*pbStr[1]='a';
pbStr[2]='b';
pbStr[3]='c';
pbStr[4]='d';
pbStr[5]='e';
pbStr[6]='f';
pbStr[7]='g';
pbStr[8]='h';*/
for(i=0;i<8;i++)
{
pbStr[1+i]= bSharedInfo(SI_DRM_REGCODE+i);
}
#ifdef PLAYER_GOTO
vOsdPasteMsgXYArg(DRM_DRC_RG_CODE_X,DRM_DRC_RG_CODE_Y,WB_DRM,OSD_MSG_DRM_DRC4,pbStr);
#endif
}
void vDRMShowRntLmt(void) large
{
BYTE pbStr[4];
BYTE bTemp;
pbStr[0]=3;
//get the limit times from share infor
bTemp=bSharedInfo(SI_DRM_VIEWS);
if(bTemp<10)
{
pbStr[1]=0X20;
pbStr[2]=bTemp+'0';
pbStr[3]=0X20;
}
else if(bTemp<100)
{
pbStr[1]=0X20;
pbStr[2]=bTemp/10+'0';
pbStr[3]=bTemp%10+'0';
}
else
{
pbStr[1]=bTemp/100+'0';
pbStr[2]=(bTemp%100)/10+'0';
pbStr[3]=bTemp%10+'0';
}
#ifdef PLAYER_GOTO
vOsdPasteMsgXYArg(DRM_RNTLMT_X,DRM_RNTLMT_Y,WB_DRM,OSD_MSG_DRM_DRRTLM2,pbStr);
#endif
#ifdef DRM_USE_NEW_UI
vOsdPasteMsgXYArg(DRM_RNTLMT4_X,DRM_RNTLMT4_Y,WB_DRM,OSD_MSG_DRM_DRRTLM4,pbStr);
#endif
}
void vDRMDisRgCdShow(void) large
{
BYTE i;
//show the title name
vSetMsgCol4(WB_DRM,0,0,2,0x0e);
vDRMShowItems(_prDRMDRCTT,TBL_SIZE(_prDRMDRCTT));
//show the content
vSetMsgCol4(WB_DRM,0,0,2,3);
vDRMShowItems(_prDRMDRCCNT,TBL_SIZE(_prDRMDRCCNT));
//show the regiteration code
vDRMShowRgCode();
//show the button
vSetBtnCol(WB_DRM,0,0x0b,2,3);
_wStartX=252;
_wStartY=300;
_wEndX=332;
_wEndY=340;
#ifdef DRM_USE_NEW_UI
_wStartY=260;
_wEndX=352;
_wEndY=300;
#endif
vSetMsgCol4(WB_DRM,0,0x0b,2,3);
vCreateMsgButton(WB_DRM,0,4,OSD_MSG_DRM_BTN_OK,20,5);
//vSelButton(WB_DRM,0);
vUnselButton(WB_DRM,0);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
void vDRMDisRntLmtShow(void) large
{
BYTE i;
//show the title name
vSetMsgCol4(WB_DRM,0,0,2,0x0e);
vDRMShowItems(_prDRMRTLMTTT,TBL_SIZE(_prDRMRTLMTTT));
//show the content
vSetMsgCol4(WB_DRM,0,0,2,3);
vDRMShowItems(_prDRMRTLMTCnt,TBL_SIZE(_prDRMRTLMTCnt));
//show the limit times
vDRMShowRntLmt();
//show the button
_wStartX=150;
_wStartY=300;
_wEndX=230;
_wEndY=340;
#ifdef DRM_USE_NEW_UI
_wStartY=280;
_wEndY=320;
#endif
vSetMsgCol4(WB_DRM,0x0,0x0b,2,3);
vCreateMsgButton(WB_DRM,0,4,OSD_MSG_DRM_BTN_YES,20,5);
vSetBtnCol(WB_DRM,0x0b,0x0f,2,3);
vSelButton(WB_DRM,0);
//vUnselButton(WB_DRM,0);
_wStartX=300;
_wEndX=380;
vSetMsgCol4(WB_DRM,0x0,0x0f,2,3);
vCreateMsgButton(WB_DRM,1,4,OSD_MSG_DRM_BTN_NO,20,5);
//vSelButton(WB_DRM,0);
vUnselButton(WB_DRM,1);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
void vDRMDisErrAuthShow(void) large
{
BYTE i;
//show the title name
vSetMsgCol4(WB_DRM,0,0,2,0x0f);
vDRMShowItems(_prDRMErrTT,TBL_SIZE(_prDRMErrTT));
//show the content
vSetMsgCol4(WB_DRM,0,0,2,3);
vDRMShowItems(_prDRMErrCnt,TBL_SIZE(_prDRMErrCnt));
//show the limit times
//show the button
vSetBtnCol(WB_DRM,0,0x0b,2,3);
_wStartX=200;
_wStartY=250;
_wEndX=280;
_wEndY=290;
#ifdef DRM_USE_NEW_UI
_wStartX=252;
_wStartY=220;
_wEndX=352;
_wEndY=260;
#endif
vSetMsgCol4(WB_DRM,0,0x0b,2,3);
vCreateMsgButton(WB_DRM,0,4,OSD_MSG_DRM_BTN_OK,20,5);
//vSelButton(WB_DRM,0);
vUnselButton(WB_DRM,0);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
void vDRMDisRntExpShow(void) large
{
BYTE i;
//show the title name
vSetMsgCol4(WB_DRM,0,0,2,0x0f);
vDRMShowItems(_prDRMRntExpTT,TBL_SIZE(_prDRMRntExpTT));
//show the content
//zhy 20050822 do not show this
// vSetMsgCol4(WB_DRM,0,0,2,3);
// vDRMShowItems(_prDRMRntExpCnt,TBL_SIZE(_prDRMRntExpCnt));
//show the limit times
//show the button
vSetBtnCol(WB_DRM,0x0e,0x0b,2,3);
_wStartX=240;
_wStartY=250;
_wEndX=320;
_wEndY=290;
#ifdef DRM_USE_NEW_UI
_wStartY=210;
_wEndX=340;
_wEndY=250;
#endif
vSetMsgCol4(WB_DRM,0x0b,0x0b,2,3);
vCreateMsgButton(WB_DRM,0,4,OSD_MSG_DRM_BTN_OK,20,5);
//vSelButton(WB_DRM,0);
vUnselButton(WB_DRM,0);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
void vDRMShowInit(void) large
{
switch(_bDRMState)
{
case DRM_REG_CODE_ST:
vDRMDisRgCdShow();
break;
case DRM_AUTH_ERR_ST:
vDRMDisErrAuthShow();
break;
case DRM_RENT_EXP_ST:
vDRMDisRntExpShow();
break;
case DRM_RENT_LMT_ST:
vDRMDisRntLmtShow();
break;
}
}
void vJudgeDRMType(void) large
{
/*#define SI_DRM_CODE wSIItemPos(SI_DRM_MEM1, 27) //error or success
#define DRM_ERROR_NOT_AUTH_USER 15 //from: drmQueryRentalStatus, drmCommitPlayback
#define DRM_ERROR_RENTAL_EXPIRED 16 //from: drmQueryRentalStatus, drmCommitPlayback
#define SI_DRM_VIEWS wSIItemPos(SI_DRM_MEM1, 28)
#define SI_DRM_LIMIT wSIItemPos(SI_DRM_MEM1, 29)
#define SI_DRM_TYPE wSIItemPos(SI_DRM_MEM1, 30)
#define SV_DRM_RENTAL 0
#define SV_DRM_PURCHASE 1*/
BYTE bValue;
bValue=bSharedInfo(SI_DRM_CODE);
if(bValue==DRM_ERROR_NOT_AUTH_USER)
{
_bDRMState=DRM_AUTH_ERR_ST;
return;
}
else if(bValue==DRM_ERROR_RENTAL_EXPIRED)
{
_bDRMState=DRM_RENT_EXP_ST;
return;
}
else
{
_bDRMState=DRM_MAX_ST;
}
}
extern BYTE xdata _bIsSetupMenuShow;
void vDRMInit(void) large
{
_bIsSetupMenuShow = TRUE;
_rOsdStateCtx.fgDRMShow=FALSE;
#ifdef PLAYER_FLMENU
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
// tmp
vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
vDisableWB(FSMENU_OSD_WBIDX_BASIC);
vDisableWB(FSMENU_INFO);
// wFlMnLeave();
}
#endif
if (fgIsInSetupMenu())
{
vSetupMenuClose();
}
// - disable all previous white board
vOsdShowWb(OSD_WB_DISABLE);
#ifdef SETUP_MENU_TRUECOLOR
vCreateWB(WB_DRM, TRUE);
#else
vCreateWB(WB_DRM, FALSE);
#endif
#ifdef SETUP_MENU_TRUECOLOR
vSetWBTcColor(WB_DRM);
#else
#endif
//draw rectangle
vDRMDrawRect();
//show the page
vDRMShowInit();
//variable init
_bSelBtnNo=0;
//enable the white board
vOsdSetSt(OSD_ST_BURST);
vEnableWB(WB_DRM);
vOsdSetSt(OSD_ST_NML);
_rOsdStateCtx.fgDRMShow=TRUE;
}
void vDRMDisRgCdExitState(void) large
{
vOsdSetSt(OSD_ST_BURST);
vDeleteWB(WB_DRM);
vOsdSetSt(OSD_ST_NML);
_bIsSetupMenuShow = FALSE;
vOsdShowWb(OSD_WB_RESTORE);
//_bDRMState=DRM_MAX_ST;
#ifdef PLAYER_FLMENU
if (fgFlCheckStatus(FL_STATUS_IN_MENU))
{
// tmp
//vSetSharedInfo(SI_JPG_DIGEST_BG, 2); //[runma] add line.
#ifndef MT1379_MANUFACTURE_TEST
vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
#endif
vEnableWB(FSMENU_OSD_WBIDX_BASIC);
vEnableWB(FSMENU_INFO);
#ifdef WB_ALLOC_MIN
vFlRecover();
#endif
}
#endif
_fgInputEscape = TRUE;
}
void vDRMDisRgCdState(void) large
{
switch(_bIRKey)
{
case IR_CMD_DONE:
switch(DRM_ACK(_dwIrDoneParm))
{
case SI_DRM_REGCODE:
vDRMInit();
break;
}
break;
case IR_DRM_REG:
case IR_PLAY_ENTER:
case IR_PLAY:
case IR_ENTER:
vSetSharedInfo(SI_DRM_RENTCHK,SV_DRM_RENTFAIL);
vNotifySharedInfo(SI_DRM_RENTCHK,0,0);
// vDRMDisRgCdExitState();
_fgInputEscape = TRUE;
break;
}
_bIRKey=IR_NONE;
}
void vDRMJudgeState(void) large
{
switch(DRM_ACK(_dwIrDoneParm))
{
case SI_DRM_REGCODE:
vDRMDisRgCdState();
break;
case SI_DRM_CODE:
vJudgeDRMType();
if(_bDRMState<DRM_MAX_ST)
{
vChangeInputState(INPUT_STATE_DRM_OTHER,FALSE);
}
_bIRKey=IR_NONE;
break;
case SI_DRM_LIMIT:
_bDRMState=DRM_RENT_LMT_ST;
vChangeInputState(INPUT_STATE_DRM_OTHER,FALSE);
_bIRKey=IR_NONE;
break;
case SI_DRM_MEM_OK:
vEepromWriteDRMMemList();
break;
}
}
void vDRMDisRntLmtState(void) large
{
switch(_bIRKey)
{
case IR_LEFT:
if(_bSelBtnNo)
{
vSetMsgCol4(WB_DRM,0x0,0x0f,2,3);
vUnselButton(WB_DRM,_bSelBtnNo);
_bSelBtnNo--;
vSetMsgCol4(WB_DRM,0x0,0x0b,2,3);
vSelButton(WB_DRM,_bSelBtnNo);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
break;
case IR_RIGHT:
if(_bSelBtnNo<DRM_RNTLMT_MAX_BTN_NO-1)
{
vSetMsgCol4(WB_DRM,0x0,0x0f,2,3);
vUnselButton(WB_DRM,_bSelBtnNo);
_bSelBtnNo++;
vSetMsgCol4(WB_DRM,0x0,0x0b,2,3);
vSelButton(WB_DRM,_bSelBtnNo);
vSetMsgCol4(WB_DRM,0,1,2,3);
}
break;
case IR_PLAY_ENTER:
case IR_PLAY:
case IR_ENTER:
switch(_bSelBtnNo)
{
case 0://YES BUTTON
vSetSharedInfo(SI_DRM_RENTCHK,SV_DRM_RENTOK);
vNotifySharedInfo(SI_DRM_RENTCHK,0,0);
break;
case 1://no button
vSetSharedInfo(SI_DRM_RENTCHK,SV_DRM_RENTFAIL);
vNotifySharedInfo(SI_DRM_RENTCHK,0,0);
break;
}
// vDRMDisRgCdExitState();
_fgInputEscape = TRUE;
break;
case IR_DRM_REG:
vSetSharedInfo(SI_DRM_RENTCHK,SV_DRM_RENTFAIL);
vNotifySharedInfo(SI_DRM_RENTCHK,0,0);
// vDRMDisRgCdExitState();
_fgInputEscape = TRUE;
break;
}
_bIRKey=IR_NONE;
}
void vDRMState(void) large
{
switch(_bDRMState)
{
case DRM_REG_CODE_ST:
case DRM_AUTH_ERR_ST:
case DRM_RENT_EXP_ST:
vDRMDisRgCdState();
break;
case DRM_RENT_LMT_ST:
vDRMDisRntLmtState();
break;
}
}
void vDRMExit(void) large
{
if(fgIsInDRMShow())
{
vDRMDisRgCdExitState(); //zhy 20050822 add it to delete the wb when exit
_rOsdStateCtx.fgDRMShow=FALSE;
}
/*play DVD or VCD, press STOP key and enter setupmenu, enter DIVX VOD's option,
and press OK key, characters of "press play key to continue" disappear. It cause by
setup WB's exiting. luoqing20060214
*/
if(bSharedInfo(SI_PBC_STATE)==SV_STOP_RESUME)
vOsdDisplayChange(DISP_STOP_RESUME, 0);
}
void vDRMDisRgCdInit(void) large
{
_bDRMState=DRM_REG_CODE_ST;
//notify risc
vNotifySharedInfo(SI_DRM_ACTIVATION,0,0);
}
BYTE xdata _bDrmCounter = 0;
#define TIMER_EXPIRE_LOCK_IR_DRM 30
void vDRMRegCodeKey(void) large
{
if(_bDrmCounter == 0)
{
_bDrmCounter = TIMER_EXPIRE_LOCK_IR_DRM;
vChangeInputState(INPUT_STATE_DRM_DISRGCD,FALSE);
}
}
#else
code BYTE _bDRM[] = {0} ;
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -