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

📄 tvpsmrtcard.h

📁 ti的数字电视芯片 tvp9000的源码
💻 H
字号:
#ifndef  TVP_SMRT_CARD_DOT_H_IS_DEFINED
#define  TVP_SMRT_CARD_DOT_H_IS_DEFINED

/********************************************************************* 
*    Property of Texas Instruments Incorporated, Copyright 2004
*    All rights reserved
**********************************************************************/
/*********************************************************************
*
* Description:
*   public include file for module
*   It includes only the definitions that are needed for the API
*   
**********************************************************************/
/*********************************************************************
*
* $Revision: $
*
* $History: TvpSmrtCard.h $
* 
*********************************************************************/


/* Common Constants */

#define TVP_INSTALLED       1       // Card present                                 
#define TVP_REMOVED         0       // Card absent                                  

#define TVP_SMRT_CLKMX        10    // Maximum passed clock freq selection 0-10     
#define TVP_CLK_RATE_MAX      13    // Maximum passed clock rate factor 0-13        
#define TVP_BAUD_RATE_MAX      9    // Maximum passed bit rate factor 0-15          
#define TVP_MAX_BTD         (1<<17) // Maximum Bit Time Divisor

#define TVP_RETRANSMX       0x0f    // Maximum number of Xmit retries               
#define TVP_RERECVMX        0x0f    // Maximum number of Recv retries               
#define TVP_RETRAN          0x30    // Initial number of Xmit retries               
#define TVP_RERECV          0x03    // Initial number of Recv retries               

#define TVP_GDTIMMX         255     // Maximum number of guardtime etus             
#define TVP_INIT_ETU        372     // Initial ETU value                            

#define TVP_ISO_RESET_ETU   372     // Initial etu bit time divisor                     
#define TVP_IRDETO_RESET_ETU 625    // Init BRD for Irdeto card (9600 baud; 6MHz)       


#define TVP_OPERATIONAL     1       // Active card is ready for data xfer           
#define TVP_NON_OPERATIONAL 0       // Active card is NOT ready for data xfer       

/* Card Status code for smcInsertCard function   */                             
#define TVP_SMRT_IN          1      // Card inserted                                
#define TVP_SMRT_OUT         0      // Card absent                                  


/* Parameters for smcBoardInit function */
#define TVP_SMRT_DETECT_H        1  // SMCDETECT Uses 1 for Card present
#define TVP_SMRT_DETECT_L        0  // SMCDETECT Uses 0 for Card present

#define TVP_SMRT_VCCDETECT       2
#define TVP_SMRT_NO_VCCDET       0

#define TVP_SMRT_VCC_POLARITY_H  4
#define TVP_SMRT_VCC_POLARITY_L  0

#define TVP_SMRT_VPP_POLARITY_H  8
#define TVP_SMRT_VPP_POLARITY_L  0

#define TVP_SMRT_SMIO_NO_DRIVE   0x10    // Open Collector
#define TVP_SMRT_SMIO_DRIVE      0       // Drive SMIO line when transmitting a 1

#define TVP_SMRT_ACTIVE_HIGH     (TVP_SMRT_VCC_POLARITY_H + TVP_SMRT_VPP_POLARITY_H)
#define TVP_SMRT_ACTIVE_LOW      (TVP_SMRT_VCC_POLARITY_L + TVP_SMRT_VPP_POLARITY_L)

#define TVP_SMRT_TDA8004_CHIP    0x20
#define TVP_SMRT_NO_TDA8004_CHIP 0

#define TVP_SMRT_TDA8004_CLKDIV    0x40
#define TVP_SMRT_NO_TDA8004_CLKDIV 0

/* control_flag defines for smcSetUart parameter */
#define TVP_SMRT_PROTOCOL_T0     0
#define TVP_SMRT_PROTOCOL_T1     1
#define TVP_SMRT_PROTOCOL_IRDETO 2
#define TVP_SMRT_PROTOCOL_UNDEF  0xf
#define TVP_SMRT_PROTOCOL_MASK   0xf

#define TVP_SMRT_FLOW_ENABLE     0x10
#define TVP_SMRT_FLOW_DISABLE    0
#define TVP_SMRT_FLOW_MASK       TVP_SMRT_FLOW_ENABLE

#define TVP_SMRT_PARITY_ENABLE   0x20
#define TVP_SMRT_PARITY_DISABLE  0
#define TVP_SMRT_PARITY_MASK     TVP_SMRT_PARITY_ENABLE

#define TVP_SMRT_USE_CRC         0x40
#define TVP_SMRT_USE_LRC         0
#define TVP_SMRT_NO_EDC          0x80
#define TVP_SMRT_EDC_MASK        (TVP_SMRT_USE_CRC + TVP_SMRT_NO_EDC)

#define TVP_SMRT_HW_VPP          0       
#define TVP_SMRT_SW_VPP          0x100
#define TVP_SMRT_VPP_MASK        TVP_SMRT_SW_VPP

#define TVP_SMRT_TS_OVERRIDE     0x400   
#define TVP_SMRT_ICC_INVERSE     0x800
#define TVP_SMRT_ICC_DIRECT      0x1000

// smrtReset parameeter
#define TVP_SMRT_PROCESS_STD_ATR_LEN  0x40
#define TVP_SMRT_WWT_ATR_LEN          0

#define TVP_SMRT_NO_FORCED_CONVENTION  0
#define TVP_SMRT_FORCE_INVERSE   (TVP_SMRT_TS_OVERRIDE + TVP_SMRT_ICC_INVERSE)
#define TVP_SMRT_FORCE_DIRECT    (TVP_SMRT_TS_OVERRIDE + TVP_SMRT_ICC_DIRECT)


/* Smart Card Status codes returned to the User through the IRQ     */
#define TVP_RESET_COMPL         0x00000001   // Reset Completed                      
#define TVP_IO_COMPL            0x00000002   // I/O Transaction completed             
                                             // Not Used                             
#define TVP_WWTIMOUT            0x00000008   // I/O Time out occurred                 
#define TVP_POWER_FAIL          0x00000010   // Loss of Vcc power detected           
#define TVP_CARD_REMVD          0x00000020   // Card Removal detected                
#define TVP_CARD_INSRTD         0x00000040   // Card Insertion detected              
                                             // Not Used
                                             // Not Used
#define TVP_XS_NAK              0x00000200   // Excessive No Ack errors occurred     
#define TVP_XS_PAR              0x00000400   // Excessive parity errors occurred     
#define TVP_POWRDN              0x00000800   // Power Down Completed                 
#define TVP_POWRUP              0x00001000   // Card power up operation completed    
#define TVP_BADBLK              0x00002000   // Invalid T=1 protocol block received  
#define TVP_BADVPP              0x00004000   // Invalid Vpp control command received 
#define TVP_FLWCTL              0x00008000   // WWTE occurred during send to card    
#define TVP_INT_RESET           0x00010000   // Card is internally reset when 1      
                                             //    Active Low Reset when 0; this bit 
                                             //    is ONLY valid when RESET_COMPL!!  
#define TVP_FIFOVER             0x00020000   // Fifo Overflow occurred in rec fifo   
                                             //    Data from the card was lost!      
#define TVP_INVALID_ATR         0x00040000   // Bad ATR Sequence                     
#define TVP_BWTIMOUT            0x00080000   // Block Waiting Timeout                

#define TVP_SMRT_CARD_STATE      0x10000000  // Used during Callbacks to identify changes 
                                             //  in the state of the card
/* Vccdet values */
#define TVP_VCCDET_USED        TVP_SMRT_VCCDETECT
#define TVP_VCCDET_NOT_USED    TVP_SMRT_NO_VCCDET

/* detect_level values */
#define TVP_DETECT_LEVEL_0     TVP_SMRT_DETECT_L
#define TVP_DETECT_LEVEL_1     TVP_SMRT_DETECT_H


/*******************************************
* StructureType description
*******************************************/
/* Defines for the smcIO functions parameter */
typedef enum {
   TVP_FROM_CARD,
   TVP_TO_CARD
} TvpSmrtT0Dir;

#define TVP_TO_CAM          TVP_TO_CARD  
#define TVP_SEND            TVP_TO_CARD  
#define TVP_FROM_CAM        TVP_FROM_CARD
#define TVP_RECEIVE         TVP_FROM_CARD

typedef unsigned char  TvpSmrtCardData;
typedef unsigned short TvpSmrtDataSize;

/* Clock values */
typedef enum {
   TVP_SMRT_CLOCK_3_375  = 0,   // 3.375    MHz 
   TVP_SMRT_CLOCK_3_6    = 1,   // 3.6      MHz 
   TVP_SMRT_CLOCK_4_5    = 2,   // 4.5      MHz 
   TVP_SMRT_CLOCK_6_0    = 3,   // 6.0      MHz 
   TVP_SMRT_CLOCK_6_75   = 4,   // 6.75     MHz 
   TVP_SMRT_CLOCK_9_0    = 5,   // 9.0      MHz 
   TVP_SMRT_CLOCK_13_5   = 6,   // 13.5     MHz 
   TVP_SMRT_CLOCK_18_0   = 7,   // 18.0     MHz 
   TVP_SMRT_CLOCK_4_608  = 8,   // 4.608    MHz 
   TVP_SMRT_CLOCK_9_216  = 9,   // 9.216    MHz 
   TVP_SMRT_CLOCK_18_432 = 10   // 18.432   MHz
} TvpSmrtClock;
 
#define TVP_ISO_RESET_CLOCK     TVP_SMRT_CLOCK_4_608
#define TVP_IRDETO_RESET_CLOCK  TVP_SMRT_CLOCK_6_0

/* Clock Rate Factor Defines (F) */
typedef enum {
   TVP_SMRT_CR_372  =  1,
   TVP_SMRT_CR_558  =  2,
   TVP_SMRT_CR_744  =  3,
   TVP_SMRT_CR_1116 =  4,
   TVP_SMRT_CR_1488 =  5,
   TVP_SMRT_CR_1860 =  6,
   TVP_SMRT_CR_512  =  9,
   TVP_SMRT_CR_768  = 10,
   TVP_SMRT_CR_1024 = 11,
   TVP_SMRT_CR_1536 = 12,
   TVP_SMRT_CR_2048 = 13
} TvpSmrtClockRate;

/* Baud Rate Factor Defines (D) */
typedef enum {
   TVP_SMRT_BR_1  = 1,
   TVP_SMRT_BR_2  = 2,
   TVP_SMRT_BR_4  = 3,
   TVP_SMRT_BR_8  = 4,
   TVP_SMRT_BR_16 = 5,
   TVP_SMRT_BR_32 = 6,
   TVP_SMRT_BR_12 = 8,
   TVP_SMRT_BR_20 = 9
} TvpSmrtBaudRate;

/* Parameters for smcStopClock function */
typedef enum {
   TVP_SMRT_CLK_START = 0,
   TVP_SMRT_CLK_STOP  = 1
} TvpSmrtClockStop;

typedef enum {
   TVP_SMRT_CLK_L = 0,
   TVP_SMRT_CLK_H = 1
} TvpSmrtStopPolarity;

typedef enum {
   TVP_NO_CHECK             =   0,
   TVP_CHECK_NORMAL_INVERSE =   1,
   TVP_CHECK_NORMAL_DIRECT  =   2,
   TVP_CHECK_NORMAL_EITHER  =   3,
   TVP_CHECK_UNIQUE_DIRECT  =   8,          
   TVP_CHECK_UNIQUE_INVERSE =   12   
} TvpSmrtFirstByteCheck;

#define TVP_CHECK_UNIQUE       8         // Bit position for check unique paramters

typedef enum {
   TVP_SMRT_DIRECT_CONVENTION = 0,
   TVP_SMRT_INVERSE_CONVENTION = 0x20000
} TvpSmrtConvention;

typedef unsigned long  TvpSmrtStatusOut;
typedef unsigned long  TvpSmrtBoardParams;
typedef unsigned long  TvpSmrtBitTimeDiv;
typedef unsigned short TvpSmrtInputTime;
typedef unsigned long  TvpSmrtEtuTime;
typedef unsigned short TvpSmrtGuardTime;
typedef unsigned char  TvpSmrtParityAtrLen;
typedef unsigned char  TvpSmrtParNakCount;
typedef unsigned long  TvpSmrtUartControl;
typedef unsigned long  TvpSmrtVdtimTime;


// Maintained for backward compatibilty with previous release
#define TVP_GUARDTIME_MASK      0xff
#define TVP_TURN_GDTIME_SHIFT   8
#define TVP_SMRT_LOAD_GUARDTIME(normal, turnaround)    (((turnaround & TVP_GUARDTIME_MASK) << TVP_TURN_GDTIME_SHIFT) | \
                                                               (normal & TVP_GUARDTIME_MASK))


typedef struct {
    unsigned char card_status;
    unsigned char active_status;
    Tvp_On_Off    vcc_status;
} TvpCardStatus_s;

typedef struct {
   unsigned long  int_reason;
   unsigned long  error_status;
} TvpSmrtCbReason;

typedef struct {
   TvpSmrtCardData  *card_data;
   TvpSmrtDataSize  data_bytes;
} TvpSmrtCbData;

/*****************************************************************************
    Function prototypes
******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
TVP_FERROR tvpSmrtDrvrInit(TvpIntNum int_num, 
                           TvpSmrtStatusOut *status, TvpSmrtBoardParams board_params);
void tvpSmrtUartInit(void);
TVP_FERROR   tvpSmrtReset (TvpSmrtEtuTime wwtim,
                           TvpSmrtCardData *scin, TvpSmrtDataSize *sizein, 
                           TvpSmrtClock clock, TvpSmrtBitTimeDiv bit_time_divisor,
                           TvpSmrtGuardTime guard_time, TvpSmrtParityAtrLen parity_enable,
                           TvpSmrtFirstByteCheck check_first_char, 
                           TvpSmrtCardData unique_first_char);
TVP_FERROR tvpSmrtClockStopControl (TvpSmrtClockStop clk_stop_flag, 
                                    TvpSmrtStopPolarity stop_polarity);
TVP_FERROR tvpSmrtCalcBitTimeDivisor (TvpSmrtClockRate  clock_rate_factor, 
                                      TvpSmrtBaudRate   baud_rate_factor,
                                      TvpSmrtBitTimeDiv *bit_time_divisor);
TvpSmrtEtuTime  tvpSmrtCalcTime (TvpSmrtInputTime time, 
                                 TvpSmrtBitTimeDiv bit_time_divisor, 
                                 TvpSmrtClock clock);
TVP_FERROR tvpSmrtUartSet(TvpSmrtClock clock, 
                          TvpSmrtBitTimeDiv bit_time_divisor, TvpSmrtParNakCount retrans, 
                          TvpSmrtParNakCount rerecv, TvpSmrtGuardTime gdtime, 
                          TvpSmrtUartControl control_flags, TvpSmrtEtuTime char_waittime, 
                          TvpSmrtEtuTime block_waittime);
TVP_FERROR tvpSmrtIO (TvpSmrtT0Dir dir, 
                      TvpSmrtCardData *scout, TvpSmrtDataSize sizeout, 
                      TvpSmrtCardData *scin, TvpSmrtDataSize *sizein);
TVP_FERROR  tvpSmrtInsertStatus(TvpCardStatus_s *status);
TVP_FERROR   tvpSmrtPpsSend (TvpSmrtCardData *pps, 
                             TvpSmrtDataSize *pps_size, TvpSmrtCardData *pps_rtn);
TVP_FERROR  tvpSmrtVccControl(Tvp_En_Dis status, 
                              TvpSmrtVdtimTime timeout);
void tvpSmrtConventionForce (TvpSmrtConvention convention);

#ifdef __cplusplus
};
#endif

#endif

⌨️ 快捷键说明

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