1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi = 3*53ee8cc1Swenshuai.xi Hdi_121.h 4*53ee8cc1Swenshuai.xi Description : This is the header file for CA Hardware Driver High-Level Interface for NSK2 chips 5*53ee8cc1Swenshuai.xi = 6*53ee8cc1Swenshuai.xi ====================================================================================================*/ 7*53ee8cc1Swenshuai.xi 8*53ee8cc1Swenshuai.xi #ifndef H_HDI_121 9*53ee8cc1Swenshuai.xi #define H_HDI_121 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi #include "ndstypes.h" 12*53ee8cc1Swenshuai.xi 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi /* ***** Defines ***** */ 15*53ee8cc1Swenshuai.xi #define NSK2HDX_OK 0U 16*53ee8cc1Swenshuai.xi #define NSK2HDX_FAIL 2U /* should not be changed */ 17*53ee8cc1Swenshuai.xi #define NSK2HDX_INVALID_REQUEST 3U 18*53ee8cc1Swenshuai.xi 19*53ee8cc1Swenshuai.xi #define NSK2HDX_MAX_STREAMS 20U 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi /****************************************/ 22*53ee8cc1Swenshuai.xi /* Driver Initialization */ 23*53ee8cc1Swenshuai.xi /****************************************/ 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi //NDS_STATUS32 NSK2HDX_GetCaDriverVersion(NDS_ULONG *version_no/* RPC IN OUT */); 26*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_GetCaDriverVersion(char **version_no/* RPC IN OUT */); // barry replace with this one 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetScreaderHwInfo(NDS_ULONG *screader_ids/* RPC IN OUT */, NDS_ULONG number_of_screaders); 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetEmmHwInfo(NDS_ULONG num_emm_buffers); 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetEcmHwInfo(NDS_ULONG num_ecm_buffers); 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /****************************************/ 36*53ee8cc1Swenshuai.xi /* Smart Card Driver */ 37*53ee8cc1Swenshuai.xi /****************************************/ 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_CardInserted(NDS_ULONG screader_id); 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_CardRemoved(NDS_ULONG screader_id); 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_CardError(NDS_ULONG screader_id); 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi #define NSK2HDX_CARD_INSERTED 0U 46*53ee8cc1Swenshuai.xi #define NSK2HDX_CARD_REMOVED 1U 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_CheckCardPresence(NDS_ULONG screader_id, NDS_ULONG *card_presence/* RPC IN OUT */); 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi /* VCC LEVEL */ 51*53ee8cc1Swenshuai.xi #define NSK2HDX_VCC_3V 0U 52*53ee8cc1Swenshuai.xi #define NSK2HDX_VCC_5V 1U 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetVccLevel(NDS_ULONG screader_id, NDS_UBYTE vcc_level); 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi /* VCC SWITCH */ 57*53ee8cc1Swenshuai.xi #define NSK2HDX_VCC_ON 0U 58*53ee8cc1Swenshuai.xi #define NSK2HDX_VCC_OFF 1U 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetVcc(NDS_ULONG screader_id, NDS_UBYTE vcc_switch); 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_WarmResetCard(NDS_ULONG screader_id, NDS_UBYTE *atr_data/* RPC IN OUT SIZECONST(32) */, NDS_UBYTE *atr_len/* RPC IN OUT */, NDS_UBYTE *first_history_byte/* RPC IN OUT */); 63*53ee8cc1Swenshuai.xi 64*53ee8cc1Swenshuai.xi #define NSK2HDX_ISO_INVERSE_CONVENTION 0U 65*53ee8cc1Swenshuai.xi #define NSK2HDX_ISO_DIRECT_CONVENTION 1U 66*53ee8cc1Swenshuai.xi 67*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_PROTOCOL_T_0 0U 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_CLOCK_1 1U /* 4.5 Mhz */ 70*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_CLOCK_3 3U /* 6.75 Mhz */ 71*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_CLOCK_5 5U /* 13.5 Mhz */ 72*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_CLOCK_6 6U /* 20 Mhz */ 73*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_1 1U /* baud rate of 9600 */ 74*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_2 2U /* baud rate of 19K */ 75*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_3 3U /* baud rate of 38K */ 76*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_4 4U /* baud rate of 76K */ 77*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_5 5U /* baud rate of 153K */ 78*53ee8cc1Swenshuai.xi #define NSK2HDX_SC_BR_F 0x0FU /* baud rate of 1M */ 79*53ee8cc1Swenshuai.xi 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi typedef struct _NSK2HDX_UARTCONFIGURATION 82*53ee8cc1Swenshuai.xi { 83*53ee8cc1Swenshuai.xi NDS_UBYTE card_clock; 84*53ee8cc1Swenshuai.xi NDS_UBYTE card_baud_rate; 85*53ee8cc1Swenshuai.xi NDS_UBYTE nak_retries; 86*53ee8cc1Swenshuai.xi NDS_UBYTE parity_retries; 87*53ee8cc1Swenshuai.xi NDS_UBYTE work_wait_time; 88*53ee8cc1Swenshuai.xi NDS_UBYTE guard_time; 89*53ee8cc1Swenshuai.xi NDS_UBYTE convention; 90*53ee8cc1Swenshuai.xi NDS_UBYTE protocol; 91*53ee8cc1Swenshuai.xi NDS_UBYTE spare[4]; 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi } NSK2HDX_UARTCONFIGURATION; 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetUartParams(NDS_ULONG screader_id, NSK2HDX_UARTCONFIGURATION *conf/* RPC IN OUT */); 96*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_GetUartParams(NDS_ULONG screader_id, NSK2HDX_UARTCONFIGURATION *conf/* RPC IN OUT */); 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi #define NSK2HDX_DIRECTION_FROM_CARD 0U 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi #define NSK2HDX_DIRECTION_TO_CARD 1U 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_CardIoCommand(NDS_ULONG screader_id, NDS_UBYTE *to_card/* RPC IN OUT SIZEPARAM(to_card_len) */, NDS_ULONG to_card_len, NDS_UBYTE *from_card/* RPC SIZECONST(256) */, NDS_ULONG *from_card_len/* RPC IN OUT */, NDS_UBYTE direction, NDS_USHORT timeout); 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_IO_C7_ON 0x04U 105*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_IO_C4_ON 0x08U 106*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_IO_C8_ON 0x10U 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_C7_ON 0x80U 109*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_C4_ON 0x20U 110*53ee8cc1Swenshuai.xi #define NSK2HDX_UART_COMMAND_C8_ON 0x40U 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_SetUartCommand(NDS_ULONG screader_id, NDS_UBYTE pin_mask); 113*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_GetUartCommand(NDS_ULONG screader_id, NDS_UBYTE *pin_mask/* RPC IN OUT */); 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi /****************************************/ 116*53ee8cc1Swenshuai.xi /* EMM Filtering and Reception */ 117*53ee8cc1Swenshuai.xi /****************************************/ 118*53ee8cc1Swenshuai.xi 119*53ee8cc1Swenshuai.xi /* values for filter_type */ 120*53ee8cc1Swenshuai.xi #define NSK2HDX_LABEL_01 0x01U 121*53ee8cc1Swenshuai.xi #define NSK2HDX_LABEL_02 0x02U 122*53ee8cc1Swenshuai.xi #define NSK2HDX_LABEL_03 0x03U 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi /* values for table_id_flag */ 125*53ee8cc1Swenshuai.xi #define NSK2HDX_DISABLE_TID 0x00U 126*53ee8cc1Swenshuai.xi #define NSK2HDX_ENABLE_TID 0x01U 127*53ee8cc1Swenshuai.xi #define NSK2HDX_ENABLE_TID_NDS 0x02U 128*53ee8cc1Swenshuai.xi 129*53ee8cc1Swenshuai.xi typedef struct _NSK2_EMM_FILTER_DEF 130*53ee8cc1Swenshuai.xi { 131*53ee8cc1Swenshuai.xi NDS_UBYTE filter_type; 132*53ee8cc1Swenshuai.xi NDS_UBYTE filter_address[4]; 133*53ee8cc1Swenshuai.xi NDS_UBYTE filter_address_mask[4]; 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi } NSK2HDX_EMM_FILTER_DEF; 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi typedef struct _NSK2_EMM_FILTER 138*53ee8cc1Swenshuai.xi { 139*53ee8cc1Swenshuai.xi NDS_ULONG size_of_struct; 140*53ee8cc1Swenshuai.xi NDS_USHORT emm_pid; 141*53ee8cc1Swenshuai.xi NDS_ULONG num_of_filters; 142*53ee8cc1Swenshuai.xi NDS_UBYTE table_id[16]; 143*53ee8cc1Swenshuai.xi NDS_UBYTE table_id_flag[16]; 144*53ee8cc1Swenshuai.xi NSK2HDX_EMM_FILTER_DEF filter_def[8]; 145*53ee8cc1Swenshuai.xi 146*53ee8cc1Swenshuai.xi } NSK2HDX_EMM_FILTER; 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_RequestEmm(NDS_ULONG x_connection, NSK2HDX_EMM_FILTER *emmfl/* RPC IN OUT */); 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_EmmArrived(NDS_ULONG x_connection, NDS_UBYTE *emm_buf/* RPC SIZECONST(256) */); 151*53ee8cc1Swenshuai.xi 152*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_EmmBufferOverflow(NDS_ULONG x_connection); 153*53ee8cc1Swenshuai.xi 154*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_EmmProcessingFinished(NDS_UBYTE *emm_buf/* RPC SIZECONST(256) */); 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_StopEmm(NDS_ULONG x_connection); 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi /****************************************/ 159*53ee8cc1Swenshuai.xi /* ECM Filtering and Reception */ 160*53ee8cc1Swenshuai.xi /****************************************/ 161*53ee8cc1Swenshuai.xi 162*53ee8cc1Swenshuai.xi #define NSK2HDX_ODD_ECM 0U 163*53ee8cc1Swenshuai.xi #define NSK2HDX_EVEN_ECM 1U 164*53ee8cc1Swenshuai.xi 165*53ee8cc1Swenshuai.xi 166*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_RequestEcm(NDS_ULONG x_connection, NDS_USHORT ecm_pid); 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_EcmArrived(NDS_ULONG x_connection, NDS_USHORT ecm_pid, NDS_UBYTE *ecm_buf/* RPC SIZECONST(256) */, NDS_UBYTE polarity); 169*53ee8cc1Swenshuai.xi 170*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_GetPacketCounter(NDS_ULONG x_connection, NDS_ULONG packet_counter_length, NDS_UBYTE *packet_counter/* RPC IN OUT SIZEPARAM(packet_counter_length) */); 171*53ee8cc1Swenshuai.xi 172*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_EcmProcessingFinished(NDS_USHORT ecm_pid, NDS_UBYTE *ecm_buf/* RPC SIZECONST(256) */, NDS_UBYTE polarity); 173*53ee8cc1Swenshuai.xi 174*53ee8cc1Swenshuai.xi NDS_STATUS32 NSK2HDX_StopEcm(NDS_ULONG x_connection, NDS_USHORT ecm_pid); 175*53ee8cc1Swenshuai.xi 176*53ee8cc1Swenshuai.xi #endif 177