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

📄 cas21.h

📁 EMU_FTAbox_ref441328_code_source ali m3327
💻 H
📖 第 1 页 / 共 2 页
字号:
				case TFCAS_OK;
					printf("购买成功");
					break;
				case other:
					printf("其它相应错误");
					break;
				default:
					break;
			}
		}	
		else
			TFCASTB_StopIPPVBuyDlg(false,wEcmPid,NULL,NULL);
	 */
	extern WORD TFCASTB_StopIPPVBuyDlg(bool bBuyProgram,WORD wEcmPid,IN BYTE* pPinCode,IN STFCAIPPVPrice   *pPrice);
	extern WORD TFCASTB_DelIPPVProgram(WORD wTVSID,BYTE bySlotID,WORD wProductID,TFDATE wExpireDate);
#endif
#if INCLUDE_ADDRESSING_APP

	/*++
	说明 :
		一下方法可以获得邮箱中全部邮件头信息
	注意:
		byFromIndex = 5并不是从逻辑上的第五封信开始取,而是从邮箱物理空间的第5封邮件位置开始取,
	例子:
		STFCAEmailHead  ArrEmailHead[10];
		BYTE			byCount;
		BYTE			byFromIndex = 0;
		while(true)
		{
			byCount = 10;
			if(TFCASTB_GetEmailHeads(ArrEmailHead,&byCount,&byFromIndex) == TFCAS_OK)
			{
				for(BYTE i = 0;i<byCount;i++)
				{
					STFCAEmailContent EmailContent;
					printf("邮件ID = 0x%8x\r\n",ArrEmailHead[i].m_dwActionID);
					ArrEmailHead[i].m_szEmailHead[TFCA_MAXLEN_EMAIL_TITLE] = 0; //防止溢出+++
					printf("邮件标题 = %s\r\n",ArrEmailHead[i].m_szEmailHead);	
					if(TFCASTB_GetEmailContent(ArrEmailHead[i].m_dwActionID,&EmailContent)==TFCAS_OK)
					{
						EmailContent.m_szEmail[TFCA_MAXLEN_EMAIL_CONTENT] = 0;//防止溢出+++
						printf("邮件内容 = %s\r\n",EmailContent.m_szEmail);	
					}
					//如果想删掉邮件
					TFCASTB_DelEmail(ArrEmailHead[i].m_dwActionID);
				}
			}
			if(byCount < 10) //所有邮件都已经取出
				break;
		}
	--*/
	extern WORD TFCASTB_GetEmailHeads(OUT STFCAEmailHead* pEmailHead,INOUT BYTE* pbyCount,INOUT BYTE* pbyFromIndex);
	/*++
	说明 :
		和TFCASTB_GetEmailHeads相对应的函数 TFCASTB_GetEmailHeads是从前向后去找邮件
		TFCASTB_GetEmailHeadsForFornt是从后向前找邮件,两着结合可以实现前后翻页
		用法参考TFCASTB_GetEmailHeads
	注意:
	    和TFCASTB_GetEmailHeads不同的是如果用TFCASTB_GetEmailHeadsForFornt获取全部邮件
		*pbyFromIndex初始值等于TFCA_MAXLEN_EMAIL
	--*/
	extern WORD TFCASTB_GetEmailHeadsForFornt(OUT STFCAEmailHead* pEmailHead,INOUT BYTE* pbyCount,INOUT BYTE* pbyFromIndex);
	extern WORD TFCASTB_GetEmailHead(ULONG dwEmailID,OUT STFCAEmailHead* pEmailHead);
	extern WORD TFCASTB_GetEmailContent(ULONG dwEmailID,OUT STFCAEmailContent* pEmailContent);
		/*++
	说明 :
		删除某一封邮件的方法在TFCASTB_GetEmailHeads使用介绍中已经介绍
		下面介绍删除所有邮件的方法 
	说明:
		在TFCASTB_FormatBuffer使用介绍中,也提供一种删除所有邮件的方法。
		最好使用TFCASTB_DelEmail来删除所有邮件,效率和TFCASTB_FormatBuffer
		是一样的,但是TFCASTB_DelEmail是管理邮件的接口,用它删除邮件比较统一
	例子:
		TFCASTB_DelEmail(0);
	--*/
	extern void	TFCASTB_DelEmail(ULONG dwEmailID);
	/*++
	说明 :
		获得信箱使用的情况
	例子:
		BYTE			byEmailNum;
		BYTE			byEmptyNum;
		if(TFCASTB_GetEmailSpaceInfo(&byEmailNum,&byEmptyNum) == TFCAS_OK)
		{
			printf("信箱中有邮件 = %d个\n",byEmailNum);
			printf("信箱还可容纳邮件 = %d个\n",byEmptyNum);
		}
	--*/
	extern WORD	TFCASTB_GetEmailSpaceInfo(OUT BYTE*  pByEmailNum,OUT BYTE* pByEmptyNum);
	extern void TFCASTB_EnterMailManager(void);
	extern void TFCASTB_LeaveMailManager(void);
#endif

/*------------------------以上接口是CAS提供给STB----------------------------------------*/
/*------------------------以下接口是STB提供给CAS----------------------------------------*/
/*++
说明 :
    获取falsh的开始地址和长度,其中开始地址在CA模块不会修改
调用的例子:
	ULONG g_STBMemBeginAdd = 0,g_STBMemLen = 0;
	TFSTBCA_GetBuffer(&g_STBMemBeginAdd,&g_STBMemLen);
	if(g_STBMemLen<64*1024){
		TFSTBCA_Printf(0,"flash is small\r\n");
	}
机顶盒实现的例子:
	ULONG  dwCaFlashBeginAddress = 0x80000000;
	TFSTBCA_GetBuffer( OUT ULONG* pdwStartAddr,OUT ULONG* pdwSize){
		*pdwStartAddr = dwCaFlashBeginAddress;
		*pdwSize = 64*1024;
		.
		.
		.
	}
--*/
extern void TFSTBCA_GetBuffer( OUT ULONG* pdwStartAddr,OUT ULONG* pdwSize);
/*++
说明 :
	CA模块只在启动的时候读取一次falsh
调用的例子:
	BYTE temp[1000];
	ULONG dwreadLen = 1000;
	TFSTBCA_ReadBuffer(g_STBMemBeginAdd,temp,&dwreadLen);
	if(dwReadLen != 1000){
		TFSTBCA_Printf(0,"TFSTBCA_ReadBuffer is fail");
	}
--*/
extern void TFSTBCA_ReadBuffer(ULONG pdwStartAddr,OUT BYTE* pbyData,INOUT ULONG* pdwLen);
/*++
说明 :
    CA运行的过程中会多次写flash,每次的地址和长度都是一样的
调用的例子:
	BYTE temp[1000];
	ULONG dwreadLen = 1000;
	TFSTBCA_WriteBuffer(g_STBMemBeginAdd,temp,dwreadLen);
--*/
extern void TFSTBCA_WriteBuffer(ULONG pdwStartAddr,IN BYTE* pbyData,ULONG dwLen);
extern void TFSTBCA_Sleep(WORD wMilliSeconds );
/*++
说明 :
调用的例子:
	char  test[]="ABCDEFGHABCDEFGH";
	char* pTmp = (char*)TFSTBCA_Malloc(TFSTBCA_Strlen(test)+1);
	if(pTmp==NULL) return;
	TFSTBCA_Memset(pTmp,0,TFSTBCA_Strlen(test)+1);
	TFSTBCA_Memcpy(pTmp,test,TFSTBCA_Strlen(test));
	TFSTBCA_Free(pTmp);
--*/
extern void* TFSTBCA_Malloc(BYTE byBufSize);
extern void  TFSTBCA_Free(void* pBuf);
extern void  TFSTBCA_Memset(void* pDestBuf,BYTE c,WORD wSize);
extern void  TFSTBCA_Memcpy(void* pDestBuf,void* pSrcBuf,WORD wSize);
extern WORD  TFSTBCA_Strlen(char* pString);
/*++
说明 :
	对信号量进行初始化
调用的例子:
	TFCA_Semaphore  Semaphore1;
	TFSTBCA_SemaphoreInit(&Semaphore1,true);
	TFCA_Semaphore  Semaphore2;
	TFSTBCA_SemaphoreInit(&Semaphore2,false);
	结果 Semaphore1有信号
		 Semaphore2没有信号
--*/
extern void TFSTBCA_SemaphoreInit(OUT  TFCA_Semaphore* pSemaphore ,bool bInitVal);
extern void TFSTBCA_SemaphoreSignal(INOUT TFCA_Semaphore* pSemaphore );
extern void TFSTBCA_SemaphoreWait(INOUT  TFCA_Semaphore* pSemaphore );
extern bool TFSTBCA_SCReset(void);
extern bool TFSTBCA_RegisterTask(IN const char* szName, BYTE byPriority,IN void* pTaskFun,IN void* pParam, WORD nStackSize);
/*++
    //注意 具体的EMMPID 由CAT中分析出来
    BYTE byFilter[8]={0,1,2,3,4,5,6,7};
 	BYTE byMask[8]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
 	if(TFSTBCA_GetPrivateData(2,byFilter,byMask,8, 0x211, 2))
	{
 		//CA内部更改保存的过滤器状态
	}
	else
	{
 		// 设置失败将重新设置
	}
-*/
extern bool TFSTBCA_GetPrivateData(BYTE byReqID,IN const BYTE* pbyFilter,IN const BYTE* pbyMask,BYTE byLen, WORD wPid, BYTE byWaitSeconds);
extern void TFSTBCA_ScrSetCW(WORD wEcmPID,IN const BYTE* pbyOddKey,IN const BYTE* pbyEvenKey,BYTE byKeyLen,bool bTaingEnabled);
/*++
   在这里我举一个实现的模型 具体怎么做由机顶盒决定
 	
	TFSTBCA_SCPBRun(IN const BYTE* pbyCommand, WORD wCommandLen, OUT BYTE* pbyReply, OUT WORD* pwReplyLen)
	{
 		命令字节送卡
		if(不成功)
 			return false;
		获取卡返回的数据放到pbyReply //指针指向的空间由CA分配管理 t0协议中返回数据长度不会大于256个字节
		if(不成功)
 			return false;
 	    *pwReplyLen等于返回的数据长度
		pbyReply[*pwReplyLen] = 过程字节1
		pbyReply[(*pwReplyLen)+1] = 过程字节2
		*pwReplyLen+=2;
 		return true;
 	}
-*/
extern bool TFSTBCA_SCPBRun(IN const BYTE* pbyCommand, WORD wCommandLen, OUT BYTE* pbyReply, OUT WORD* pwReplyLen);
extern void TFSTBCA_ShowBuyMessage(WORD wEcmPID,BYTE byMessageType);
extern void TFSTBCA_ShowFingerMessage(WORD wEcmPID,ULONG dwCardID);
extern void TFSTBCA_Printf(BYTE byLevel,IN const char* pbyMesssage);

#if INCLUDE_LOCK_SERVICE
	extern void TFSTBCA_LockService(WORD wServiceID, WORD wTSID);
#endif
#if INCLUDE_ADDRESSING_APP
	extern void TFSTBCA_ShowOSDMessage(BYTE byStyle,IN char * szMesage);
	extern void TFSTBCA_HideOSDMessage(BYTE byStyle);
	/*++
		当byShow=Email_New && dwEmailID!=0 的时候dwEmailID是一封新邮件的ID
	 	这个时候可以调用	TFCASTB_GetEmailHead
	 						TFCASTB_GetEmailContent 获取这封邮件的标题和内容
		如果邮箱内有多封新邮件,这个ID是其中的某一封邮件的ID
	 	机顶盒也可以不关心这个ID,因为TFCASTB_GetEmailHeads会返回邮箱内所有的邮件的标题信息内容的
	--*/
	extern void TFSTBCA_EmailNotifyIcon(BYTE byShow,ULONG dwEmailID);
#endif

#if INCLUDE_IPPV_APP
	extern void TFSTBCA_HideCurrentDlg(WORD wEcmPid);
	extern void TFSTBCA_StartIppvBuyDlg(BYTE byMessageType,WORD wEcmPid,IN STFCAIppvBuyInfo *pIppvProgram);
#endif
/*---------------------------以上接口是STB提供给CAS-------------------------------------*/
#ifdef   __cplusplus
}
#endif
#endif   

⌨️ 快捷键说明

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