Пример #1
0
/*****************************************************************************
* Interal functions
******************************************************************************/
INT32 cas_demux_init(void (*dmx_cb)(UINT8 req_id, BOOL bOK, UINT16 pid, UINT8* sec_data, UINT16 length))
{
	UINT8 i;
	struct cas_channel *tmp_channel;
	CAS_DMX_MUTEX_INIT();
#if (SYS_CHIP_MODULE == ALI_S3601 || SYS_CHIP_MODULE == ALI_S3602)
	cas_dmx_dev =  (struct dmx_device *)dev_get_by_name("DMX_S3601_0");
#else
	cas_dmx_dev =  (struct dmx_device*)dev_get_by_name("DMX_M3327_0");
#endif
	dmx_io_control(cas_dmx_dev, DMX_BYPASS_CSA, 0);	
	for(i=0; i<CAS_MAX_CHAN_NUM; i++)
	{
		tmp_channel = (struct cas_channel*) MALLOC(sizeof(struct cas_channel));
		if(tmp_channel == NULL)
		{
			CAS_DMXERR_PRINTF("cas_demux_request: malloc error!\n");
			return CDCA_FALSE;
		}
		MEMSET(tmp_channel, 0, sizeof(struct cas_channel));
		tmp_channel->get_sec_param.pid = INVALID_PID;
		channel_array[i] = tmp_channel;
	}
	cas_demux_callback = dmx_cb;
	return CDCA_TRUE;
}
Пример #2
0
static BS32 cas_demux_init()
{
	BU32 i;
	CAS_DMX_MUTEX_INIT();
	for (i = 0; i< CA_REQID_NUM; i++)
	{
		CAReqID[i].u32ChannelID = 0;
		CAReqID[i].u32FilterID = 0;
		CAReqID[i].u16reqid = 0x1fff;
		CAReqID[i].u16tspid = 0x1fff;
		CAReqID[i].u8runflag = 0;
		CAReqID[i].u8callbackflag = 0;
		CAReqID[i].u32tick = 0;
		CAReqID[i].u32waittime = 0;
	}
	FYF_API_demux_set_CA_notify(CA_SectionCallback);
	return FYF_OK;
}