xref: /utopia/UTPA2-700.0.x/modules/dscmb/api/nsk2hdi/hdi_121.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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