📄 tvpsmrtcard.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 + -