⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvb_ca.c

📁 我国有线电视条件接受标准目前还没有统一
💻 C
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <cyg/io/io.h>#include <cyg/hal/types.h>#include <cyg/infra/diag.h>#include <cyg/kernel/kapi.h>#include "custom.h"#include "kinf.h"#include "dvb_ca.h"#include "DVB_CAEcm.h"#include "DVB_CAEmm.h"#include "DVB_CADb.h"#include "DVB_CALogo.h"#include "DVB_CAService.h"#include "message_id.h"#include "mbuf_ext_data.h"#include "LogicEncryptCard.h"static UINT8 			g_ucCaThreadState = CA_IDLE;static cyg_handle_t		ca_thread;static cyg_thread		ca_thrdObject;static UINT8 			g_ucCaStack[4096];static cyg_mutex_t 	g_CaLock;static void DVB_CAThread(cyg_addrword_t data);void DVB_CACardParse(void);void DVB_CAInit(void){			memset(g_ucCaStack,0x0,4096);	cyg_mutex_init(&g_CaLock);	g_ucCaThreadState = CA_POLLING;	DVB_CADB_Init();	DVB_CAService_Init();	DVB_CAECM_Init();	DVB_CAEMM_Init();	DVB_CALogo_Init();	SIEMENS_LogicEncryptCard_Init();		cyg_thread_create(4, DVB_CAThread, (cyg_addrword_t)0,			"CAThread", (void *)g_ucCaStack, 4096,			&ca_thread, &ca_thrdObject);	cyg_thread_resume(ca_thread);	}void DVB_CASetState(UINT8 ucState){	cyg_mutex_lock(&g_CaLock);	g_ucCaThreadState = ucState;	cyg_mutex_unlock(&g_CaLock);}static void DVB_CAThread(cyg_addrword_t data){	while(1)	{		cyg_mutex_lock(&g_CaLock);		switch(g_ucCaThreadState)		{			case CA_POLLING:				DVB_CAECM_Polling();				DVB_CAEMM_Polling();				break;			case CA_IDLE:			default:				break;		}		DVB_CACardParse();		cyg_mutex_unlock(&g_CaLock);		cyg_thread_delay(1);	}}static INT8 	 gs_cardInsert = -1; static UINT32  g_uiTimes = 0;static UINT8    g_ucCardInit = 0;#if (SMART_CARD == SLE4442)	#define 	DEFAULT_RESET_DATA	0x911013A2#elif(SMART_CARD == SLE4428)	#define   DEFAULT_RESET_DATA 0x91102392#endifUINT8 DVB_CACardGetState(void){	return g_ucCardInit;}void DVB_CACardParse(void){	UINT8 ucCardState = 0;	UINT32 u32Data = 0;		g_uiTimes++;	if(g_uiTimes % 50 != 0)		return;	ucCardState = SIEMENS_LogicEncryptCard_State();	if(ucCardState != gs_cardInsert)	{			if(ucCardState)		{			SIEMENS_LogicEncryptCard_SetVccb(0);			SIEMENS_LogicEncryptCard_Reset((unsigned char*)&u32Data);				if(DEFAULT_RESET_DATA == u32Data)				g_ucCardInit = 1;			else				g_ucCardInit = 0;			ecos_printf("ucCardState:%01x\n",ucCardState);			ecos_printf("u32Data:%08x\n",u32Data);						ecos_printf("g_ucCardInit:%01x\n",g_ucCardInit);			main_prog_msg_t stMsg;			UINT8 ucMessage = CA_CARD_PRESS;			stMsg.u8MsgID   	= DVB_MODULE_ID;			stMsg.u8SubModID = CA_UI_ID;			stMsg.u16FuncID  	= CA_MESSAGE;			stMsg.pData = (void *)&ucMessage;			DVB_SendBackMsg(&stMsg, 1);		}		else		{			SIEMENS_LogicEncryptCard_SetVccb(1);			g_ucCardInit = 0;		}				gs_cardInsert = ucCardState;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -