FreeCalypso > hg > fc-tourmaline
comparison src/cs/drivers/drv_app/sim/sim.h @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children | b37e6c916df1 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4e78acac3d88 |
---|---|
1 /* | |
2 * SIM.H | |
3 * | |
4 * Pole Star SIM | |
5 * | |
6 * Target : ARM | |
7 * | |
8 * Copyright (c) Texas Instruments 1995-1997 | |
9 * | |
10 */ | |
11 | |
12 /* | |
13 * Device addresses - GCS000 (Gemini / Polestar) | |
14 * HER207 (Hercules) | |
15 */ | |
16 | |
17 #ifndef _WINDOWS | |
18 #include "l1sw.cfg" | |
19 #include "chipset.cfg" | |
20 #endif | |
21 | |
22 #include "nucleus.h" | |
23 | |
24 /* Flags activation section */ | |
25 // #define SIM_RETRY /* by default : NOT ACTIVE */ | |
26 //#define SIM_DEBUG_TRACE /* by default : NOT ACTIVE */ | |
27 //#define SIM_UWORD16_MASK 0x00ff //when using SIM entity not maped to length on 16 bits | |
28 #define SIM_UWORD16_MASK 0xffff //when using SIM entity maped to length on 16 bits | |
29 //#define SIM_APDU_TEST | |
30 //#define SIM_SAT_REFRESH_TEST | |
31 | |
32 #define SIM_CMD (MEM_SIM + 0x00) | |
33 #define SIM_STAT (MEM_SIM + 0x02) | |
34 #define SIM_CONF1 (MEM_SIM + 0x04) | |
35 #define SIM_CONF2 (MEM_SIM + 0x06) | |
36 #define SIM_IT (MEM_SIM + 0x08) | |
37 #define SIM_DRX (MEM_SIM + 0x0A) | |
38 #define SIM_DTX (MEM_SIM + 0x0C) | |
39 #define SIM_MASK (MEM_SIM + 0x0E) | |
40 | |
41 | |
42 | |
43 /* | |
44 * Bit definitions | |
45 */ | |
46 // control regidter | |
47 #define SIM_CMD_CRST 0x0001 | |
48 #define SIM_CMD_SWRST 0x0002 | |
49 #define SIM_CMD_STOP 0x0004 | |
50 #define SIM_CMD_START 0x0008 | |
51 #define SIM_CMD_CLKEN 0x0010 | |
52 | |
53 // status register | |
54 #define SIM_STAT_CD 0x0001 // card present | |
55 #define SIM_STAT_TXPAR 0x0002 // transmit parity status | |
56 #define SIM_STAT_FFULL 0x0004 // fifo full | |
57 #define SIM_STAT_FEMPTY 0x0008 // fifo empty | |
58 | |
59 // configuration register | |
60 #define SIM_CONF1_CHKPAR 0x0001 // enable receipt check parity | |
61 #define SIM_CONF1_CONV 0x0002 // coding convention | |
62 #define SIM_CONF1_TXRX 0x0004 // SIO line direction | |
63 #define SIM_CONF1_SCLKEN 0x0008 // enable SIM clock | |
64 #define SIM_CONF1_RSVD 0x0010 // reserved | |
65 #define SIM_CONF1_SCLKDIV 0x0020 // SIM clock frquency | |
66 #define SIM_CONF1_SCLKLEV 0x0040 // SIM clock idle level | |
67 #define SIM_CONF1_ETU 0x0080 // ETU period | |
68 #define SIM_CONF1_BYPASS 0x0100 // bypass hardware timers | |
69 #define SIM_CONF1_SVCCLEV 0x0200 | |
70 #define SIM_CONF1_SRSTLEV 0x0400 | |
71 #define SIM_CONF1_SIOLOW 0x8000 //force SIO to low level | |
72 | |
73 // interrupt status register | |
74 #define SIM_IT_NATR 0x0001 // No answer to reset | |
75 #define SIM_IT_WT 0x0002 | |
76 #define SIM_IT_ITOV 0x0004 | |
77 #define SIM_IT_ITTX 0x0008 // Transmit | |
78 #define SIM_IT_ITRX 0x0010 // Receipt | |
79 | |
80 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) | |
81 #define SIM_IT_CD 0x0001 // Card insertion/extraction | |
82 #else | |
83 #define SIM_IT_CD 0x0020 // Card insertion/extraction | |
84 #endif | |
85 | |
86 // interrupt mask register | |
87 #define SIM_MASK_NATR 0x0001 // No answer to reset | |
88 #define SIM_MASK_WT 0x0002 | |
89 #define SIM_MASK_OV 0x0004 | |
90 #define SIM_MASK_TX 0x0008 // Transmit | |
91 #define SIM_MASK_RX 0x0010 // Receipt | |
92 #define SIM_MASK_CD 0x0020 // Card insertion/extraction | |
93 | |
94 // receveid byte register | |
95 #define SIM_DRX_STATRXPAR 0x0100 // received byte parity status | |
96 | |
97 // SIM return code OK | |
98 #define SIM_OK 0 | |
99 | |
100 // SIM return error codes | |
101 #define SIM_ERR_NOCARD 1 | |
102 #define SIM_ERR_NOINT 2 | |
103 #define SIM_ERR_NATR 3 | |
104 #define SIM_ERR_READ 4 | |
105 #define SIM_ERR_XMIT 5 | |
106 #define SIM_ERR_OVF 6 | |
107 #define SIM_ERR_LEN 7 | |
108 #define SIM_ERR_CARDREJECT 8 | |
109 #define SIM_ERR_WAIT 9 | |
110 #define SIM_ERR_ABNORMAL_CASE1 10 | |
111 #define SIM_ERR_ABNORMAL_CASE2 11 | |
112 #define SIM_ERR_BUFF_OVERFL 12 | |
113 | |
114 // begin of JYT modifications | |
115 #define SIM_ERR_HARDWARE_FAIL 13 | |
116 // end of JYT modifications | |
117 #define SIM_ERR_RETRY_FAILURE 14 | |
118 | |
119 #define SIM_SLEEP_NONE 0 // No SIM available | |
120 #define SIM_SLEEP_DESACT 1 // The Driver is NOT currently in sleep mode (clock is off) | |
121 #define SIM_SLEEP_ACT 2 // The Driver is currently in sleep mode (clock is on) | |
122 #define SIM_SLEEP_NOT_ALLOWED 3 // The Driver cannot stop the clock : | |
123 // The card don't want or the interface is not able | |
124 // to do it. | |
125 #define SIM_SLEEP_WAITING_TIME 500 //represent 2.3s of period before entering in sleep mode | |
126 | |
127 #define SIM_CLK_STOP_MASK 0x0D // Clock Stop mask defined by ETSI 11.11 | |
128 #define SIM_CLK_STOP_NOT_ALLWD 0x00 // see ETSI 11.11 : Clock Stop never allowed | |
129 #define SIM_CLK_STOP_ALLWD 0x01 // see ETSI 11.11 : No prefered level | |
130 #define SIM_CLK_STOP_HIGH 0x04 // see ETSI 11.11 : High level only | |
131 #define SIM_CLK_STOP_LOW 0x08 // see ETSI 11.11 : Low level only | |
132 | |
133 #if(ANLG_FAM == 1) | |
134 //OMEGA specific definitions | |
135 #define MODE5V_OMEGA 0x06 // used in SIM_SwitchVolt | |
136 #define MODE_INIT_OMEGA_3V 0x05 // used in SIM_StartVolt | |
137 #define MODE_INIT_OMEGA_5V 0x07 // unused !!!! | |
138 #define MODE3V_OMEGA 0x01 // unused !!!! | |
139 #define MODE_DIS_SIMLDOEN 0xDF // used in SIM_PowerOff | |
140 #define MODE_DIS_SIMEN 0xFD // used in SIM_PowerOff | |
141 #define MODE_ENA_SIMLDOEN 0x20 // used in SIM_ManualStart | |
142 #define MODE_ENA_SIMEN 0x02 // used in SIM_ManualStart | |
143 #elif(ANLG_FAM == 2) | |
144 //IOTA specific definitions | |
145 #define MODE1_8V_IOTA 0x00 | |
146 #define MODE_INIT_IOTA_3V 0x03 | |
147 #define MODE_INIT_IOTA_1_8V 0x02 | |
148 #define MODE3V_IOTA 0x01 | |
149 #define MODE_DIS_SIMLDOEN 0xFC // SIMSEL + Regulator RSIMEN | |
150 #define MODE_DIS_SIMEN 0xF7 | |
151 #define MODE_ENA_SIMLDOEN 0x03 // SIMSEL + Regulator RSIMEN | |
152 #define MODE_ENA_SIMEN 0x08 | |
153 #elif(ANLG_FAM == 3) | |
154 //SYREN specific definitions | |
155 #define MODE1_8V_SYREN 0x00 | |
156 #define MODE_INIT_SYREN_3V 0x03 | |
157 #define MODE_INIT_SYREN_1_8V 0x02 | |
158 #define MODE3V_SYREN 0x01 | |
159 #define MODE_DIS_SIMLDOEN 0x1FC // SIMSEL + Regulator RSIMEN | |
160 #define MODE_DIS_SIMEN 0x1F7 | |
161 #define MODE_ENA_SIMLDOEN 0x03 // SIMSEL + Regulator RSIMEN | |
162 #define MODE_ENA_SIMEN 0x08 | |
163 #endif | |
164 | |
165 // define type of interface if not defined | |
166 // 5V only ME SIM_TYPE = 0 | |
167 // 3V technology ME SIM_TYPE = 1 | |
168 // 3V only ME SIM_TYPE = 2 | |
169 // 1.8V technology ME SIM_TYPE = 3 // JYT, 29/01/02, from new specs IOTA | |
170 // 1.8V Only ME SIM_TYPE = 4 // JYT, 29/01/02, from new specs IOTA | |
171 | |
172 #define SIM_TYPE_5V 0 | |
173 #define SIM_TYPE_3_5V 1 | |
174 #define SIM_TYPE_3V 2 | |
175 #define SIM_TYPE_1_8_3V 3 | |
176 #define SIM_TYPE_1_8V 4 | |
177 | |
178 //default configuration | |
179 #ifndef SIM_TYPE | |
180 #if((ANLG_FAM == 2) || (ANLG_FAM == 3)) | |
181 // Until now (20/03/2003), it is impossible to test IOTA or SYREN with 1.8V Sim Card, | |
182 // so SIM drv is configured in 3V only with IOTA.and SYREN | |
183 // When 1.8V Sim Card will be delivered and tested on IOTA and SYREN, then Sim driver will pass | |
184 // to : #define SIM_TYPE SIM_TYPE_1_8_3V | |
185 #define SIM_TYPE SIM_TYPE_1_8_3V // MODIFY BY JENNIFER SIM_TYPE_3V | |
186 #else | |
187 #define SIM_TYPE SIM_TYPE_3_5V | |
188 #endif | |
189 #endif | |
190 | |
191 // begin of modifications of JYT | |
192 | |
193 #if((ANLG_FAM == 2) || (ANLG_FAM == 3)) | |
194 #define SIM_MASK_INFO_VOLT 0x70 | |
195 #else | |
196 #define SIM_MASK_INFO_VOLT 0x10 | |
197 #endif | |
198 | |
199 #define SIM_1_8V 0x30 | |
200 #define SIM_3V 0x10 | |
201 #define SIM_5V 0x00 | |
202 | |
203 // end of modifications of JYT | |
204 | |
205 // Max size of Answer to Reset (GSM11.11 5.7.1) | |
206 #define MAX_ATR_SIZE 33 | |
207 | |
208 // GSM Instruction Class (GSM 11.11 SIM spec) | |
209 #define GSM_CLASS 0xA0 | |
210 | |
211 // SIM Instruction Codes | |
212 #define SIM_SELECT 0xA4 | |
213 #define SIM_STATUS 0xF2 | |
214 #define SIM_READ_BINARY 0xB0 | |
215 #define SIM_UPDATE_BINARY 0xD6 | |
216 #define SIM_READ_RECORD 0xB2 | |
217 #define SIM_UPDATE_RECORD 0xDC | |
218 #define SIM_SEEK 0xA2 | |
219 #define SIM_INCREASE 0x32 | |
220 #define SIM_VERIFY_CHV 0x20 | |
221 #define SIM_CHANGE_CHV 0x24 | |
222 #define SIM_DISABLE_CHV 0x26 | |
223 #define SIM_ENABLE_CHV 0x28 | |
224 #define SIM_UNBLOCK_CHV 0x2C | |
225 #define SIM_INVALIDATE 0x04 | |
226 #define SIM_REHABILITATE 0x44 | |
227 #define SIM_RUN_GSM_ALGO 0x88 | |
228 #define SIM_GET_RESPONSE 0xC0 | |
229 #define SIM_TERMINAL_PROFILE 0x10 | |
230 #define SIM_FETCH 0x12 | |
231 #define SIM_TERMINAL_RESPONSE 0x14 | |
232 #define SIM_ENVELOPE 0xC2 | |
233 | |
234 | |
235 | |
236 // SIM file identifiers | |
237 #define MF 0x3F00 | |
238 #define EF_ICCID 0x2FE2 | |
239 #define DF_GSM 0x7F20 | |
240 #define DF_DCS1800 0x7F21 | |
241 #define EF_LP 0x6F05 | |
242 #define EF_IMSI 0x6F07 | |
243 #define EF_KC 0x6F20 | |
244 #define EF_PLMNSEL 0x6F30 | |
245 #define EF_HPLMN 0x6F31 | |
246 #define EF_ACMAX 0x6F37 | |
247 #define EF_SST 0x6F38 | |
248 #define EF_ACM 0x6F39 | |
249 #define EF_PUCT 0x6F41 | |
250 #define EF_CBMI 0x6F45 | |
251 #define EF_BCCH 0x6F74 | |
252 #define EF_ACC 0x6F78 | |
253 #define EF_FPLMN 0x6F7B | |
254 #define EF_LOCI 0x6F7E | |
255 #define EF_AD 0x6FAD | |
256 #define EF_PHASE 0x6FAE | |
257 #define DF_TELECOM 0x7F10 | |
258 #define EF_ADN 0x6F3A | |
259 #define EF_FDN 0x6F3B | |
260 #define EF_SMS 0x6F3C | |
261 #define EF_CCP 0x6F3D | |
262 #define EF_MSISDN 0x6F40 | |
263 #define EF_SMSP 0x6F42 | |
264 #define EF_SMSS 0x6F43 | |
265 #define EF_LND 0x6F44 | |
266 #define EF_EXT1 0x6F4A | |
267 #define EF_EXT2 0x6F4B | |
268 #define EF_ECC 0x6FB7 | |
269 | |
270 | |
271 #define MASK_INS 0xFE | |
272 #define MASK_CMD 0x11 | |
273 #define MASK_RST 0x10 | |
274 | |
275 | |
276 // Buffer sizes | |
277 #define RSIMBUFSIZE 270 | |
278 #define RSIZESW1SW2 2 | |
279 #define XSIMBUFSIZE 270 | |
280 | |
281 | |
282 | |
283 | |
284 // Structures | |
285 typedef struct | |
286 { | |
287 volatile unsigned short cmd; | |
288 volatile unsigned short stat; | |
289 volatile unsigned short conf1; | |
290 volatile unsigned short conf2; | |
291 volatile unsigned short it; | |
292 volatile unsigned short rx; | |
293 volatile unsigned short tx; | |
294 volatile unsigned short maskit; | |
295 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) | |
296 volatile unsigned short it_cd; | |
297 #endif | |
298 } SIM_CONTROLLER; | |
299 | |
300 | |
301 typedef struct | |
302 { | |
303 SYS_UWORD8 Inverse; | |
304 SYS_UWORD8 AtrSize; | |
305 SYS_UWORD8 AtrData[MAX_ATR_SIZE]; | |
306 } SIM_CARD; | |
307 | |
308 | |
309 typedef struct | |
310 { | |
311 SIM_CONTROLLER *c; | |
312 SYS_UWORD8 *xIn; // xmit input pointer | |
313 SYS_UWORD8 *xOut; // xmit output pointer | |
314 unsigned errorSIM; // code return in case of error detectd | |
315 unsigned short conf1; // image of the configuration register - avoids read/mod/write cycles | |
316 volatile unsigned short txParityErr; | |
317 unsigned short rxParityErr; // if 0 no parity error on receipt, 1 if... | |
318 SYS_UWORD8 Freq_Algo; //use to determine which sim clk freq to choose for running GSM algo | |
319 SYS_UWORD8 PTS_Try; //use to calculate how many PTS try were already done | |
320 SYS_UWORD8 FileC; //value of File Characteristic | |
321 SYS_UWORD16 etu9600; | |
322 SYS_UWORD16 etu400; | |
323 SYS_UWORD16 startclock; //744 clock cycle translated in ETU | |
324 SYS_UWORD16 stopclock; //1860 clock cycle translated in ETU | |
325 SYS_UWORD8 moderx; //inform that we are in receive mode | |
326 // 0 : mode of normal reception without procedure | |
327 // 1 : mode of wait for acknowledge during reception of char | |
328 // 2 : mode of reception of data by bloc | |
329 // 3 : mode of reception of data char by char (proc char) | |
330 // 4 : mode of reception of data char by char (data) | |
331 // 5 : mode of reception of procedure char SW1/SW2 | |
332 // 6 : mode of wait for acknowledge char after transmission of char | |
333 SYS_UWORD16 expected_data; //number of expected char in receive mode proc char | |
334 SYS_UWORD8 ack; //acknowledge char | |
335 SYS_UWORD8 null_received; //indicates if a NULL char was received | |
336 SYS_UWORD8 hw_mask; //mask used because of pole112 hw prb | |
337 | |
338 SYS_UWORD8 rbuf[RSIMBUFSIZE]; | |
339 SYS_UWORD8 rx_index; // receive index on rbuf buffer | |
340 | |
341 SYS_UWORD8 xbuf[XSIMBUFSIZE]; | |
342 SYS_UWORD8 rSW12[RSIZESW1SW2]; //buffer to store SW1 and SW2 | |
343 SYS_UWORD8 SWcount; //static counter | |
344 void (*InsertFunc)(SIM_CARD *); | |
345 void (*RemoveFunc)(void); | |
346 SYS_UWORD16 apdu_ans_length; | |
347 } | |
348 SIM_PORT; | |
349 | |
350 | |
351 | |
352 void SIM_IntHandler(void); | |
353 #if ((CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)) | |
354 void SIM_CD_IntHandler(void); | |
355 #endif | |
356 | |
357 | |
358 | |
359 | |
360 | |
361 /* | |
362 * Prototypes | |
363 */ | |
364 // obsolete function | |
365 void SIM_Init(void (Insert(SIM_CARD *cP)), void (Remove(void))); | |
366 | |
367 // initialization | |
368 void SIM_Initialize(void); | |
369 SYS_UWORD16 SIM_Register(void (Insert(SIM_CARD *cP)), void (Remove(void))); | |
370 SYS_UWORD16 SIM_Reset(SIM_CARD *cP); | |
371 SYS_UWORD16 SIM_Restart(SIM_CARD *cP); | |
372 | |
373 // file commands | |
374 SYS_UWORD16 SIM_Select(SYS_UWORD16 id, SYS_UWORD8 *dat, SYS_UWORD16 *size); | |
375 SYS_UWORD16 SIM_Status(SYS_UWORD8 *dat, SYS_UWORD16 *size); | |
376 SYS_UWORD16 SIM_ReadBinary(SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD16 len, SYS_UWORD16 *size); | |
377 SYS_UWORD16 SIM_UpdateBinary(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 offset, SYS_UWORD16 len, SYS_UWORD16 *size); | |
378 SYS_UWORD16 SIM_ReadRecord(SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD16 len, SYS_UWORD16 *size); | |
379 SYS_UWORD16 SIM_UpdateRecord(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD8 recNum, SYS_UWORD16 len, SYS_UWORD16 *size); | |
380 SYS_UWORD16 SIM_Seek(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD8 mode, SYS_UWORD16 len, SYS_UWORD16 *size); | |
381 SYS_UWORD16 SIM_Increase(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); | |
382 | |
383 // Authentication | |
384 SYS_UWORD16 SIM_VerifyCHV(SYS_UWORD8 *result, SYS_UWORD8 *chv, SYS_UWORD8 chvType, SYS_UWORD16 *size); | |
385 SYS_UWORD16 SIM_ChangeCHV(SYS_UWORD8 *result,SYS_UWORD8 *oldChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD16 *size); | |
386 SYS_UWORD16 SIM_DisableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); | |
387 SYS_UWORD16 SIM_EnableCHV(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 *size); | |
388 SYS_UWORD16 SIM_UnblockCHV(SYS_UWORD8 *result, SYS_UWORD8 *unblockChv, SYS_UWORD8 *newChv, SYS_UWORD8 chvType, SYS_UWORD16 *size); | |
389 | |
390 // managing | |
391 SYS_UWORD16 SIM_Invalidate(SYS_UWORD8 *rP, SYS_UWORD16 *size); | |
392 SYS_UWORD16 SIM_Rehabilitate(SYS_UWORD8 *rP, SYS_UWORD16 *size); | |
393 SYS_UWORD16 SIM_RunGSMAlgo(SYS_UWORD8 *result, SYS_UWORD8 *rand, SYS_UWORD16 *size); | |
394 SYS_UWORD16 SIM_GetResponse(SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *size); | |
395 | |
396 // STK | |
397 SYS_UWORD16 SIM_TerminalProfile(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); | |
398 SYS_UWORD16 SIM_Fetch(SYS_UWORD8 *result, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); | |
399 SYS_UWORD16 SIM_TerminalResponse(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); | |
400 SYS_UWORD16 SIM_Envelope(SYS_UWORD8 *result, SYS_UWORD8 *dat, SYS_UWORD16 len, SYS_UWORD16 *rcvSize); | |
401 | |
402 // power off | |
403 void SIM_PowerOff(void); | |
404 | |
405 // WIM | |
406 SYS_UWORD16 SIM_XchTPDU(SYS_UWORD8 *dat, SYS_UWORD16 trxLen, SYS_UWORD8 *result, | |
407 SYS_UWORD16 rcvLen, SYS_UWORD16 *rcvSize); | |
408 | |
409 void SIM_lock_cr17689(void); | |
410 | |
411 | |
412 | |
413 /* | |
414 * Internal Prototypes | |
415 */ | |
416 void SIM_WriteBuffer(SIM_PORT *p, SYS_UWORD16 offset, SYS_UWORD16 n); | |
417 SYS_UWORD16 SIM_Result(SIM_PORT *p, SYS_UWORD8 *rP, SYS_UWORD16 *lenP, SYS_UWORD8 offset); | |
418 SYS_UWORD16 SIM_Command(SIM_PORT *p, SYS_UWORD16 n, SYS_UWORD8 *rP, SYS_UWORD16 *lP); | |
419 SYS_UWORD16 SIM_Command_Base(SIM_PORT *p, SYS_UWORD16 n, SYS_UWORD8 *dP, SYS_UWORD16 *lP); | |
420 SYS_UWORD16 SIM_Dummy(void); | |
421 void SIM_InitLog(void); | |
422 | |
423 SYS_UWORD16 SIM_TxParityErrors(); | |
424 SYS_UWORD16 SIM_WaitReception(SIM_PORT *p); | |
425 void SIM_Interpret_FileCharacteristics(SIM_PORT *p); | |
426 SYS_UWORD16 SIM_PTSprocedure(SIM_CARD *cP, SIM_PORT *p); | |
427 void SIM_WARMReset (SIM_PORT *p); | |
428 void SIM_SleepMode_In(SYS_UWORD32 param); | |
429 void SIM_SleepMode_Out(SIM_PORT *p); | |
430 SYS_UWORD8 SIM_GetFileCharacteristics(SIM_PORT *p); | |
431 SYS_UWORD16 SIM_ATRdynamictreatement (SIM_PORT *p, SIM_CARD *cP); | |
432 SYS_UWORD16 SIM_Waitforchars (SIM_PORT *p, SYS_UWORD16 max_wait); | |
433 void SIM_Calcetu (SIM_PORT *p); | |
434 SYS_UWORD8 SIM_Translate_atr_char (SYS_UWORD8 input, SIM_CARD *cP); | |
435 | |
436 | |
437 SYS_UWORD8 SIM_StartVolt (SYS_UWORD8 ResetFlag); | |
438 SYS_UWORD8 SIM_SwitchVolt (SYS_UWORD8 ResetFlag); | |
439 | |
440 SYS_UWORD16 SIM_ManualStart (SIM_PORT *p); | |
441 SYS_UWORD8 SIM_Memcpy(SYS_UWORD8 *Buff_target, SYS_UWORD8 Buff_source[], SYS_UWORD16 len); | |
442 SYS_BOOL SIM_SleepStatus(void); | |
443 SYS_UWORD16 SIM_Reset_Restart_Internal(SIM_CARD *cP, SYS_UWORD8 ResetFlag); | |
444 | |
445 /* | |
446 * Global variables | |
447 */ | |
448 #ifdef SIM_C | |
449 #define SI_GLOBAL | |
450 #else | |
451 #define SI_GLOBAL extern | |
452 #endif | |
453 | |
454 | |
455 SI_GLOBAL SIM_PORT Sim[1]; | |
456 SI_GLOBAL NU_TIMER SIM_timer; | |
457 SI_GLOBAL STATUS status_os_sim; | |
458 SI_GLOBAL SYS_UWORD8 SIM_sleep_status; | |
459 |