📄 cas21.h
字号:
/****************************************************************************
*
* ALi
*
* File: cas21.h
*
* Description:
*
* History:
* Date Author Version Comment
* ==== ====== ======= =======
* 2003.08.18
*
****************************************************************************/
#ifndef TFCAS21EX_H
#define TFCAS21EX_H
#include "pub_st.h"
#ifdef __cplusplus
extern "C" {
#endif
/*---------------------------以下接口是CAS提供给STB-------------------------------------*/
/*++
* 在CA中将启动几个任务,bThreadPrior就是这几个任务的优先级
-*/
extern bool TFCASTB_Init(BYTE bThreadPrior);
/*++
* 这个函数将被用来判断是否是CASYSTEMID能够被当前CA识别
-*/
extern bool TFCASTB_IsTfCa(WORD wCaSystemID);
/*+
* 这个函数用来重新格式化分配给CA的数据flash
* 如果flash的内容由于不正常关机或者其它原因导致错误可调用这个函数重新格式化flash FormatType用 0
* 如果想删除所有邮件 但是不想一封一封的删除 可以调用这个函数删除所有的邮件 FormatType用 1
* 目前只支持 0 和1 其它FormatType值,不对flash做任何操作
-*/
extern void TFCASTB_FormatBuffer(BYTE FormatType);
extern ULONG TFCASTB_GetVer(void);
extern bool TFCASTB_SCInsert(void);
extern void TFCASTB_SCRemove(void);
/*++
if(用户切换频道||或者当前频道中ECMPID发生增加或者减少)
{
TFCASTB_SetEcmPid(TFCAS_LIST_FIRST,NULL);
if(如果当前频道中有ECMPID,既节目是加扰的) //有几个ECMPID送几次,ECMPID相同送一次就可以
TFCASTB_SetEcmPid(TFCAS_LIST_ADD,pServiceInfo);
TFCASTB_SetEcmPid(TFCAS_LIST_OK,NULL);
}
if(当前频道中的某一个ECMPID控制的节目发生变化)
{
修改pServiceInfo中的内容
if(如果当前频道中有ECMPID,既节目是加扰的)//有几个ECMPID送几次,ECMPID相同送一次就可以
TFCASTB_SetEcmPid(TFCAS_LIST_UPDATE,pServiceInfo);
TFCASTB_SetEcmPid(TFCAS_LIST_OK,NULL);
}
--*/
extern void TFCASTB_SetEcmPid(BYTE byType,IN STFCASServiceInfo* pServiceInfo);
extern void TFCASTB_SetEmmPid(WORD wEmmPid);
extern void TFCASTB_PrivateDataGot(BYTE byReqID,bool bOK, WORD wPid,IN const BYTE* pbyReceiveData, WORD wLen);
/*++
说明 :
这个例子可以修改PIN
例子:
BYTE byOldPin[TFCA_MAXLEN_PINCODE]={0x01,0x02,0x03,0x04,0x05,0x06};
BYTE byNewPin[TFCA_MAXLEN_PINCODE]={0x01,0x01,0x01,0x01,0x01,0x01};
WORD wRet = 0;
wRet= TFCASTB_ChangePin(byOldPin,byNewPin)
switch(wRet)
{
case TFCAS_OK;
printf("修改成功");
break;
case other:
printf("其它相应错误");
break;
default:
break;
}
*/
extern WORD TFCASTB_ChangePin(IN BYTE* pbyOldPin, IN BYTE* pbyNewPin);
extern WORD TFCASTB_GetRating(OUT BYTE* pbyRating);
/*++
说明 :
这个例子可以修改观看
例子:
BYTE byPin[TFCA_MAXLEN_PINCODE]={0x01,0x02,0x03,0x04,0x05,0x06};
BYTE byRating = 18;
WORD wRet = 0;
wRet= TFCASTB_SetRating(byPin,byRating)
switch(wRet)
{
case TFCAS_OK;
printf("修改成功");
break;
case other:
printf("其它相应错误");
break;
default:
break;
}
级别说明:
byRating的范围是[4,18],是年龄
*/
extern WORD TFCASTB_SetRating(IN BYTE* pbyPin,BYTE byRating);
extern WORD TFCASTB_GetWorkTime(OUT BYTE* pbyStartHour, OUT BYTE* pbyEndHour);
extern WORD TFCASTB_SetWorkTime(IN BYTE* pbyPin, BYTE byStartHour, BYTE byEndHour);
/*++
说明 :
这个pwTVSID至少指向TFCA_MAXLEN_OPERATOR个WORD数组的地址,如果没有运营商pwTVSID[i]值是0
例子:
WORD wArrTvsID[TFCA_MAXLEN_OPERATOR];
BYTE index=0;
STFCAOperatorInfo OperatorInfo;
if(TFCASTB_GetOperatorIds(wArrTvsID) == TFCAS_OK)
{
for(index=0,index<TFCA_MAXLEN_OPERATOR;index++)
{
if(wArrTvsID[index]==0)
break;
if(TFCASTB_GetOperatorInfo(wArrTvsID[index],&OperatorInfo) == TFCAS_OK)
{
printf("运营商ID: %d 运营商名称:%s \r\n",wArrTvsID[i],OperatorInfo.m_szTVSPriInfo);
}
}
}
--*/
extern WORD TFCASTB_GetOperatorIds(OUT WORD* pwTVSID);
extern WORD TFCASTB_GetOperatorInfo(WORD wTVSID,OUT STFCAOperatorInfo* pOperatorInfo);
/*++
说明 :
这个pACArray至少指向TFCA_MAXLEN_ACLIST个ULONG数组的地址
例子:
ULONG ACArray[TFCA_MAXLEN_ACLIST];
WORD wOperatorID = 12345;
if(TFCASTB_GetACList(wOperatorID,ACArray) == TFCAS_OK)
{
printf("Get operator AC OK!);
}
--*/
extern WORD TFCASTB_GetACList(WORD wTVSID,ULONG * pACArray);
extern WORD TFCASTB_IsPinLocked(OUT bool* pbPinLock);
extern WORD TFCASTB_SetPaired(BYTE* pPinCode);
/*++
说明 :
检查当前机顶盒和智能卡对应的情况
例子:
WORD wRet = 0;
wRet = TFCASTB_IsPaired();
if(wRet == TFCAS_OK)
printf("当前机卡对应");
else if(wRet == TFCAS_CARD_INVALID)
printf("检测不到有效智能卡");
else if(wRet == TFCAS_CARD_NOPAIR)
printf("智能卡没有对应任何机顶盒");
else if(wRet == TFCAS_CARD_PAIROTHER)
printf("智能卡已经对应其它机顶盒");
--*/
extern WORD TFCASTB_IsPaired(void);
/*++
说明 :
获得某一个运营商的授权信息
例子:
STFCAEntitles Entitle;
WORD wRet = 0;
WORD wIndex;
wRet= TFCASTB_GetServiceEntitles(1,&Entitle);
if(wRet == TFCAS_OK)
{
printf("共有授权 %d个",Entitle.m_wProductCount);
for(wIndex =0 ; wIndex < Entitle.m_wProductCount ; wIndex++)
{
printf("节目ID %d\n:",Entitle.m_Entitles[wIndex].m_dwProductID);
printf("节目是否允许录像 %d\n:",Entitle.m_Entitles[wIndex].m_bCanTape);
printf("授权结束时间\n:",Entitle.m_Entitles[wIndex].m_tExpriData);
}
}
else
printf("相应的错误");
*/
extern WORD TFCASTB_GetServiceEntitles(WORD wTVSID,OUT STFCAEntitles* pServiceEntitles);
extern void TFCASTB_RefreshInterface(void);
#if INCLUDE_IPPV_APP
/*++
说明 :
获得一个运营商的某一个钱包所有的IPPV节目
例子:
WORD wNumber;
STFCAIppvInfo ArrIppv[TFCA_MAXLEN_IPPVP];
wNumber = TFCA_MAXLEN_IPPVP;
if(TFCASTB_GetIPPVProgram(1,1,ArrIppv,&wNumber) == TFCAS_OK)
{
for(BYTE i = 0;i<wNumber;i++)
{
printf("节目ID = %4x\r\n",ArrIppv[i].m_wProductID);
}
}
--*/
extern WORD TFCASTB_GetIPPVProgram(WORD wTVSID,BYTE bySlotID,OUT STFCAIppvInfo* pIppv,INOUT WORD* pwNumber);
/*++
说明 :
这个byArrSlotID必须指向TFCA_MAXLEN_SLOT数组的地址
例子:
BYTE byArrSlotID[TFCA_MAXLEN_SLOT];
if(TFCASTB_GetSlotIDs(1,byArrSlotID) == TFCAS_OK)
{
for(BYTE i = 0;i<TFCA_MAXLEN_SLOT;i++)
{
if(byArrSlotID[i] != 0)
{
printf("钱包ID = %4x\r\n",byArrSlotID[i]);
}
else
break;
}
}
--*/
extern WORD TFCASTB_GetSlotIDs(WORD wTVSID ,OUT BYTE* pbySlotID);
extern WORD TFCASTB_GetSlotInfo(WORD wTVSID ,BYTE bySlotID,OUT STFCATVSSlotInfo* pSlotInfo);
/*++
说明 :
用户对IPPV节目是否购买进行选择的时候,调用该函数
例子:
在IPPV提示购买的对话框显示在电视上的时候
WORD wRet =0;
if(用户选择购买)
{
用户输入PIN;
BYTE byPin[TFCA_MAXLEN_PINCODE]={用户输入的PIN};
wRet = TFCASTB_StopIPPVBuyDlg(true, wEcmPid,byPin,Price);
switch(wRet)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -