现在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
|