Example #1
0
extern CDCA_BOOL CDSTBCA_GetPrivateData(CDCA_U8 byReqID, const CDCA_U8* pbyFilter, const CDCA_U8* pbyMask, CDCA_U8 byLen, CDCA_U16 wPid, CDCA_U8 byWaitSeconds)
{
	UINT8 i;
	UINT8 value[MAX_SEC_MASK_LEN];
	UINT8 mask[MAX_SEC_MASK_LEN];

	CAS_DMX_PRINTF("STBCA_GetPrivateData:PID: %04x, req_id:%02x\n", wPid, byReqID);	
#if 0
	//CAS_DMX_PRINTF("STBCA_GetPrivateData:req_id:%02x, timeout:%02x\n", byReqID, byWaitSeconds);	
	CAS_DMX_PRINTF("pid:%04x, MVlen:%02x\n", wPid, byLen);
	CAS_DMX_PRINTF("Value: ");
	CAS_DMX_DUMP(pbyFilter, 8);
	CAS_DMX_PRINTF("Mask: ");
	CAS_DMX_DUMP(pbyMask, 8);
#endif
	MEMSET(value, 0, sizeof(value));
	MEMSET(mask, 0, sizeof(mask));
	value[0] = pbyFilter[0];
	mask[0] = pbyMask[0];
	for(i=1; i<byLen-2; i++)
	{
		value[i+2] = pbyFilter[i];
		mask[i+2] = pbyMask[i];
	}

	return cas_demux_request(byReqID, value, mask, byLen, wPid, byWaitSeconds);

}
Example #2
0
/*-------------------------------------------------------------------------------

	Description:  Allocate Filters to filter private ca data, such as ECM, EMM.

	Paramenters:  byReqID:				请求收表的请求号。机顶盒应该保存该数据,
	              接收到CAS私有数据后调用DVTCASTB_StreamGuardDataGot()时应该
	              将该数据返回。
	              
	              wEcmPID:				需要过滤的流的PID。
	              
	              szFilter:				过滤器的值,为一个8个字节的数组,相当于8*8的过滤器。
	              
	              szMask:				过滤器的掩码,为一个8个字节的数组,
	              与8*8的过滤器对应,当szMask的某一bit位为0时表示要过滤的表对应的
	              bit位不需要与szFilter里对应的bit位相同,当szMask某一位为1时表示
	              要过滤的表对应的bit位一定要与szFilter里对应的bit位相同。
	              
	              byLen:				过滤器的长度,为8。
	              
	              nWaitSeconds:			收此表最长的等待时间,如果为0则无限等待,单位秒。 
	
	Return:       0 Stand for success, otherwise, fail.    

-------------------------------------------------------------------------------*/
HRESULT DVTSTBCA_SetStreamGuardFilter(BYTE byReqID, WORD wPID, const BYTE * szFilter, const BYTE * szMask, BYTE byLen, int nWaitSeconds)
{
	int i;
	DEBUG_DVTCA("DVTSTBCA_SetStreamGuardFilter byReqID = %d,wPID= 0x%x, tableid = %x, szMask = %x,byLen = %d, nWaitSeconds = %d\n",byReqID,wPID, szFilter[0], szMask[0],byLen, nWaitSeconds);
	for (i = 0; i < byLen; i++)
		DEBUG_DVTCA ("0x%x ", szFilter[i]);
	DEBUG_DVTCA("\n");

	return cas_demux_request(byReqID, szFilter, szMask, byLen, wPID, nWaitSeconds);
}