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