现在HDCP key基本上都是放在flash中,在没有任何debug 工具辅助的情况下,且不接HDMI信号的条件下,如何知道HDCP key是否有烧写或者是是否有效,以下函数MApp_ZUI_ACT_isHdcpValid 给出了一种方法供参考: 
 
 
#if ENABLE_SHOW_HDCP_VALID_INFO_IN_FAC_MENU 
static BOOLEAN MApp_ZUI_ACT_isHdcpValid(void) 
{ 
 
int i; 
UINT8 j,cnt=0; 
UINT8 data[5]; 
UINT8 compare[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; 
BOOL b_isHdcpValid = FALSE; 
       MS_U8 u8HdcpKey[HDCP_KEY_SIZE]; 
 
#if (HDCP_KEY_TYPE==HDCP_KEY_IN_CODE) 
MApp_XC_Sys_GetHDCP_KEY_FromCode((MS_U8 *)u8HdcpKey);// for hdcp key in code 
#elif (HDCP_KEY_TYPE==HDCP_KEY_IN_DB)  // readkey from db 
MApp_DB_LoadHDCP_KEY((MS_U8 *)u8HdcpKey); 
#else 
msAPI_hdcpkeyBurstReadBytes(HDCP_KEY_ADDR, (MS_U8 *)&u8HdcpKey, HDCP_KEY_SIZE); 
#endif 
 
b_isHdcpValid = FALSE; 
 
 
for (i=0;i<5;i++) 
{ 
data = u8HdcpKey; 
 
for(j=0; j<8; j++) 
{ 
if (data & compare[j]) 
{ 
cnt++; 
} 
} 
} 
 
if (cnt == 20) 
{ 
b_isHdcpValid = TRUE; 
//printf("HdmiTable_Init:check BKSV bit pass(cnt=%d)\n",cnt); 
} 
else 
{ 
//printf("HdmiTable_Init:check BKSV bit error(cnt=%d)\n",cnt); 
} 
 
return b_isHdcpValid; 
} 
#endif 
 
 
 
 
 |