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

📄 tvpsmrtcard_fw.h

📁 ti的数字电视芯片 tvp9000的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
#define TVP_CRC_RXCRC_READ      0x10000 // Use the last 2 bytes in CRC calculation  
#define TVP_CRC_RXCRC_WRITE     0x100   // Use the last 2 bytes in CRC calculation  
#define TVP_CRC_INF_BYTES       0xff00  // CRC interface byte                           
#define TVP_CRC_TEST_NAKPE      0xf0    // Number of NAK/PAR errors to gen in test mode
#define TVP_CRC_LENGTH          0xe     // Byte number of LEN byte in T=1 block         
#define TVP_CRC_MSB_FIRST       0x1     // Generate CRC chars with MSB first            

#define TVP_ISO_CRC_LENGTH  0x4         // Default ISO value is 2                       
#define TVP_DEFAULT_CRC     (TVP_ISO_CRC_LENGTH + TVP_CRC_MSB_FIRST + TVP_CRC_RXCRC_WRITE) 


/* Smart UART system state machine designations */

#define TVP_SMRT_UNDEF_ST                0x000

#define TVP_SMRT_POWER_OFF               0x010
#define TVP_SMRT_POWER_DOWN              0x020
#define TVP_SMRT_POWER_READY             0x030
#define TVP_SMRT_POWER_REMOVE            0x035
#define TVP_SMRT_POWER_RESTART           0x038
#define TVP_SMRT_POWER_UP                0x040

#define TVP_SMRT_PR_RST_ST               0x200

#define TVP_SMRT_RST_CHK_ST              0x320
#define TVP_SMRT_RST_ST                  0x340
#define TVP_SMRT_RST_SET_UART            0x380
#define TVP_SMRT_RST_PPS_ST              0x3a0

#define TVP_SMRT_CLOCK_STOPPED_ST        0x3f0

#define TVP_SMRT_IDLE_ST                 0x400
#define TVP_SMRT_TX_NOT_STARTED          0x400   // Used to be 0x700 - Old T=1 idle
#define TVP_SMRT_PST_RST_ST              0x400   // Old T=0 idle
                            
#define TVP_SMRT_SND_ALL                 0x500

#define TVP_SMRT_RCV_T0_PCB              0x600   // NULL, ACK, or SW1
#define TVP_SMRT_RCV_ONE                 0x610
#define TVP_SMRT_RCV_MANY                0x620
#define TVP_SMRT_RCV_SW2                 0x640

#define TVP_SMRT_TX_IN_PROGRESS          0x700

#define TVP_SMRT_RCV_NAD                 0x800
#define TVP_SMRT_RCV_T1_PCB              0x810
#define TVP_SMRT_RCV_LENGTH              0x820
#define TVP_SMRT_RCV_DATA                0x830
#define TVP_SMRT_RCV_EDC_BYTE0           0x840
#define TVP_SMRT_RCV_EDC_BYTE1           0x850

#define TVP_SMRT_TX_IRDETO_IN_PROGRESS   0x900

#define TVP_SMRT_RCV_IRDETO_HDR          0xa00
#define TVP_SMRT_RCV_IRDETO_LEN          0xa10
#define TVP_SMRT_RCV_IRDETO_DATA         0xa20
#define TVP_SMRT_RCV_IRDETO_EDC          0xa30

#define TVP_SMRT_RCV_ERROR_DUMP          0xb00
#define TVP_SMRT_DUMP_RCVD_BYTES         0xb00

/* Smart Card State machine for T=1 protocol Vpp Control */
#define TVP_SMRT_VPP_IDLE            0
#define TVP_SMRT_VPP_WAIT_PCB        1
#define TVP_SMRT_VPP_ACTIVE          2


/* Time values */
#define TVP_SMRT_INITWWT         10887   // 1.2 seconds at init etu              
#define TVP_SMRT_VCCDETTIME      576     // 500us of fastest clock in units of (etu*16)
#define TVP_SMRT_FTOTIME         75      // 2^6+11 etu (approx half CWT)         

/* Smart Card UART interface structure definitions  */
#define TVP_LEN_BYTE            2           // Location in receive buffer of length byte 
#define TVP_T0_HDR_SIZE         5           // Number of bytes in T=1 block header       
#define TVP_T1_HDR_SIZE         3           // Number of bytes in T=1 block header       
#define TVP_IRDETO_LEN_BYTE     7           // Location in receive buffer of length byte 
#define TVP_IRDETO_HDR_SIZE     8           // Number of bytes in Irdeto Rcv block header

#define TVP_SMRT_DONT_SEND_EDC   0
#define TVP_SMRT_SEND_EDC        1

#define TVP_LAST_BYTE_FLAG      0x100       // Signal UART Tx logic to send the EDC      
#define TVP_CTRLF               0x100       // Control flag for T=0 VPP logic. Identifies
                                        //   the INS and P3 bytes as they are sent  
#define TVP_INS_BYTE            1           // Index value of the INS byte in the T=0 hdr

#define TVP_P3_BYTE             4           // Index value of the P3 byte in the T=0 hdr
#define TVP_ROLL_VALUE          21          // Number of bits available for Wait Time   
#define TVP_MAX_NON_ROLL_VALUE  ((1<<TVP_ROLL_VALUE) - 1)

#define TVP_SMRT_MAX_SIZE_T0     256     // Maximum message length in bytes              
#define TVP_SMRT_MAX_LENGTH_T1   254     // Maximum value for length byte in T=1 data    
#define TVP_SMRT_MAX_LENGTH_IRDETO   64  // Maximum value for len byte in Irdeto data    

#define TVP_MAX_PTS_SIZE         6       // Largest PTS string                           
#define TVP_SMRT_NULL            0x60    // NULL value for T=0 protocol                  
								 
#define TVP_INVERSE_BYTE         0x3f
#define TVP_DIRECT_BYTE          0x3b

#define TVP_GET_TURNAROUND_GUARDTIME(x)  ((x>>8) & 0xff)
#define TVP_GET_NORMAL_GUARDTIME(x)      (x & TVP_GUARDTIME_MASK)
 
/*******************************************
* StructureType description
*******************************************/

typedef struct {
    unsigned short  smrt_state;         // Smart card Interface state machine           
    unsigned char   data_dir;           // Data direction to/from smart card            
    unsigned char   vpp_cntrl_state;    // State of Vpp Control if under SW control      
    unsigned char   *snd_data;          // Pointer to the data to send to the       
                                        //  smart card                                  
    unsigned char   *rcv_data;          // Pointer to user's buffer for received    
                                        //   data from smart card                       
    TvpSmrtStatusOut *status;           // User's status pointer        
    unsigned short  *rcv_sz;            // Size of data received from smart card        
    unsigned short  rcv_ptr;            // Receive buffer index                           
    unsigned short  rcv_limit;          // Max number of chars to receive               
    unsigned short  snd_ptr;            // Send buffer index                            
    unsigned short  snd_sz;             // Size of data to send to smart card           
                                        //  (Application software supplied)             
    unsigned char   int_num;            // IRQ number that the smart card driver        
                                        //  interface will use to interrupt the user    
    unsigned long   protocol;           // Protocol type                                
    unsigned short  roll_count;         // Current number of timer roll-overs           
    unsigned short  roll_goal;          // Timeout value in number of roll-overs        
    Tvp_On_Off      power;              // Power Down = 0 ; Power UP 1                  
    Tvp_True_False  edc_flag;           // Send and check the edc characters            
    unsigned char   check_first_char;   // Flag indicating check of 1st char of ATR
    unsigned char   unique_first_char;  // 1st ATR char for check of unique 1st char
    unsigned char   process_atr_len;    // Process the standard ATR length
    unsigned char   turnaround_gdtime;
    unsigned char   normal_gdtime;
}TvpSmrtCardGlbl_s;

typedef struct {
   volatile unsigned long buffer;     // Transmit and Receive Buffer
   volatile unsigned long sccc;       // Comm Control Register
   volatile unsigned long scs;        // Status Register
   volatile unsigned long scic;       // Interface Control Register
   volatile unsigned long bitdiv;     // Bit Time Divisor
   volatile unsigned long vdtim;      // Vcc Detect Time
   volatile unsigned long wwtim;      // Work Wait Time
   volatile unsigned long rx_edc;     // Receiver EDC Register
   volatile unsigned long bwt;        // Block Wait Time
   volatile unsigned long fto;        // Fifo Time Out
   volatile unsigned long scim;       // Interrupt Mask Register
   volatile unsigned long scis;       // Interrupt Status Register
   volatile unsigned long scrc;       // CRC Register
   volatile unsigned long tx_edc;     // Transmit EDC Register
   volatile unsigned long sbitdiv;    // Start Bit Divisor Register
}TvpSmrtUartRegisters_s;

typedef struct {
   unsigned short upper;
   unsigned short lower;
} TvpWord2Shorts;

typedef void (*TVP_SMCISR_PTR)();

/*********************************************************************
* PRIVATE FUNCTION PROTOTYPES                                        *
*********************************************************************/

TVP_FERROR tvpSmrtUartReset_l(void);
TVP_SMCISR_PTR tvpSmrtReplaceIsr (TVP_SMCISR_PTR new_isr, unsigned char bit_num);
unsigned long *tvpSmrtRegsAddress (void);

#ifdef DEBUG_SMART_CARD_TI
void tvpSmrtGetSmrtMemory (TvpSmrtUartRegisters_s *hwRegs,
                           TvpSmrtCardGlbl_s *swRegs);
#endif

#endif

⌨️ 快捷键说明

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