FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/g23m-aci/aci/psa_simf.c @ 775:eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 12 Oct 2014 01:45:14 +0000 |
parents | |
children | 47a9c4eadf7f |
comparison
equal
deleted
inserted
replaced
774:40a721fd9854 | 775:eedbf248bac0 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : GSM-PS (6147) | |
4 | Modul : PSA_SIMF | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : This module defines the functions for the protocol | |
18 | stack adapter for the subscriber identity module. | |
19 +----------------------------------------------------------------------------- | |
20 */ | |
21 | |
22 #ifndef PSA_SIMF_C | |
23 #define PSA_SIMF_C | |
24 #endif | |
25 | |
26 #include "aci_all.h" | |
27 | |
28 #undef TRACING | |
29 | |
30 /*==== INCLUDES ===================================================*/ | |
31 #include "aci_cmh.h" | |
32 #include "ati_cmd.h" | |
33 #include "aci_cmd.h" | |
34 #include "aci.h" | |
35 #include "psa.h" | |
36 #include "psa_sim.h" | |
37 #include "psa_util.h" | |
38 | |
39 #ifdef UART | |
40 #include "dti.h" | |
41 #include "dti_conn_mng.h" | |
42 #endif | |
43 | |
44 #ifdef SIM_TOOLKIT | |
45 #include "psa_cc.h" | |
46 #include "psa_sat.h" | |
47 #include "aci_fd.h" /* necessary for cmh.h */ | |
48 #include "cmh.h" /* necessary for cmh_sat.h */ | |
49 #include "cmh_sat.h" | |
50 #include "cmh_sim.h" | |
51 #endif /* SIM_TOOLKIT */ | |
52 | |
53 /*==== CONSTANTS ==================================================*/ | |
54 | |
55 #ifdef TRACING | |
56 #define ITM_WDT (14) /* item width in chars */ | |
57 #define HDR_WDT (10) /* header width in chars */ | |
58 #endif /* TRACING */ | |
59 | |
60 /*==== TYPES ======================================================*/ | |
61 | |
62 /*==== EXPORT =====================================================*/ | |
63 | |
64 /*==== VARIABLES ==================================================*/ | |
65 | |
66 /*==== FUNCTIONS ==================================================*/ | |
67 | |
68 /* | |
69 +-------------------------------------------------------------------+ | |
70 | PROJECT : GSM-PS (6147) MODULE : SAT | | |
71 | ROUTINE : psaSIM_ChkSIMSrvSup | | |
72 +-------------------------------------------------------------------+ | |
73 | |
74 PURPOSE : Check if the SIM service is supported or not. | |
75 | |
76 */ | |
77 | |
78 GLOBAL BOOL psaSIM_ChkSIMSrvSup( UBYTE srvNr ) | |
79 { | |
80 srvNr--; | |
81 | |
82 if( srvNr/4 >= SRV_TAB_LEN ) return ( FALSE ); | |
83 | |
84 if( ((simShrdPrm.srvTab[srvNr/4] >> ((srvNr%4)*2))&0x03) EQ | |
85 SRV_ALLOC_ACTIV ) | |
86 | |
87 return( TRUE ); | |
88 | |
89 return( FALSE ); | |
90 } | |
91 | |
92 /* | |
93 +-------------------------------------------------------------------+ | |
94 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
95 | ROUTINE : psaSIM_atbNewEntry | | |
96 +-------------------------------------------------------------------+ | |
97 | |
98 PURPOSE : returns the access table index for an entry that is | |
99 free to use. -1 indicates that the access table is full. | |
100 */ | |
101 | |
102 GLOBAL SHORT psaSIM_atbNewEntry ( void ) | |
103 { | |
104 SHORT atbIdx; /* holds access table index */ | |
105 | |
106 for( atbIdx = 0; atbIdx < ACC_MAX; atbIdx++ ) | |
107 { | |
108 if( simShrdPrm.atb[atbIdx].ntryUsdFlg EQ FALSE ) | |
109 { | |
110 psaSIM_InitAtbNtry( atbIdx ); | |
111 | |
112 #if defined _SIMULATION_ | |
113 TRACE_EVENT_P1("SIM table ID = %d", atbIdx); | |
114 #endif | |
115 return( atbIdx ); | |
116 } | |
117 } | |
118 | |
119 TRACE_ERROR("[psaSIM_atbNewEntry]: did not find a new SIM table entry"); | |
120 return( -1 ); | |
121 } | |
122 | |
123 /* | |
124 +-------------------------------------------------------------------+ | |
125 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
126 | ROUTINE : psaSIM_CloseAtb | | |
127 +-------------------------------------------------------------------+ | |
128 | |
129 PURPOSE : close all ATB entries with the provided SIM error code. | |
130 | |
131 */ | |
132 | |
133 GLOBAL void psaSIM_CloseAtb ( USHORT error ) | |
134 { | |
135 int atbIdx; /* holds access table index */ | |
136 | |
137 for( atbIdx = 0; atbIdx < ACC_MAX; atbIdx++ ) | |
138 { | |
139 if( simShrdPrm.atb[atbIdx].ntryUsdFlg ) | |
140 { | |
141 simShrdPrm.atb[atbIdx].errCode = error; | |
142 | |
143 if( simShrdPrm.atb[atbIdx].rplyCB ) | |
144 simShrdPrm.atb[atbIdx].rplyCB( (SHORT)atbIdx ); | |
145 | |
146 simShrdPrm.atb[atbIdx].ntryUsdFlg = FALSE; | |
147 } | |
148 } | |
149 } | |
150 /* | |
151 +-------------------------------------------------------------------+ | |
152 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
153 | ROUTINE : psaSIM_InitAtbNtry | | |
154 +-------------------------------------------------------------------+ | |
155 | |
156 PURPOSE : initialize the indexed access table entry. | |
157 | |
158 */ | |
159 | |
160 GLOBAL void psaSIM_InitAtbNtry ( SHORT idx ) | |
161 { | |
162 | |
163 /* | |
164 *------------------------------------------------------------------- | |
165 * initialize access table entry | |
166 *------------------------------------------------------------------- | |
167 */ | |
168 simShrdPrm.atb[idx].ntryUsdFlg = FALSE; | |
169 simShrdPrm.atb[idx].accType = NO_VLD_ACT; | |
170 simShrdPrm.atb[idx].v_path_info = FALSE; | |
171 simShrdPrm.atb[idx].reqDataFld = 0; | |
172 simShrdPrm.atb[idx].dataOff = 0; | |
173 simShrdPrm.atb[idx].recNr = 0; | |
174 simShrdPrm.atb[idx].check_dataLen = FALSE; /* in case of read record operation, | |
175 datalen passed to SIM in the rquest will always be 0xFF. However when a buffer | |
176 has been passed, the size of data received from SIM to be copied in it has to | |
177 be checked...*/ | |
178 simShrdPrm.atb[idx].dataLen = 0; | |
179 simShrdPrm.atb[idx].exchData = NULL; | |
180 simShrdPrm.atb[idx].recMax = 0; | |
181 simShrdPrm.atb[idx].errCode = SIM_NO_ERROR; | |
182 simShrdPrm.atb[idx].rplyCB = NULL; | |
183 } | |
184 | |
185 | |
186 /* | |
187 +-------------------------------------------------------------------+ | |
188 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
189 | ROUTINE : psaSIM_cnvrtIMSI2ASCII | | |
190 +-------------------------------------------------------------------+ | |
191 | |
192 PURPOSE : converts the IMSI into ASCII representation and returns | |
193 pointer to IMSI ASCII string. | |
194 */ | |
195 | |
196 GLOBAL CHAR* psaSIM_cnvrtIMSI2ASCII ( CHAR * imsiBuf ) | |
197 { | |
198 psaSIM_decodeIMSI ( simShrdPrm.imsi.field, | |
199 simShrdPrm.imsi.c_field, | |
200 imsiBuf); | |
201 return( imsiBuf ); | |
202 } | |
203 | |
204 | |
205 /* | |
206 PURPOSE : convert imsi (packed bcd to ASCIIZ; ->11.11) | |
207 */ | |
208 GLOBAL void psaSIM_decodeIMSI (UBYTE* imsi_field, | |
209 UBYTE imsi_c_field, | |
210 CHAR* imsi_asciiz) | |
211 { | |
212 UBYTE imsi_len; | |
213 UBYTE i; | |
214 UBYTE digit; | |
215 | |
216 TRACE_FUNCTION ("aci_slock_sim_decodeIMSI()"); | |
217 | |
218 /* | |
219 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | | |
220 +---+---+---+---+---+---+---+---+ | |
221 imsi_c_field = | Length indicator | | |
222 imsi_field[0] = | IMSI digit 1 | p | 0 | 0 | 1 | | |
223 imsi_field[1] = | IMSI digit 3 | IMSI digit 2 | | |
224 | |
225 | |
226 imsi_c_field = length indicator: | |
227 The length indicator refers to the number of significant bytes, | |
228 not including this length byte, required for the IMSI. | |
229 p = parity | |
230 0: Even number of IMSI digits | |
231 1: Odd number of IMSI digits | |
232 | |
233 If the number of IMSI digits is even then bits 5 to 8 of the last octet | |
234 shall be filled with an end mark coded as 1111b | |
235 */ | |
236 | |
237 /* | |
238 * Check length | |
239 */ | |
240 if ((imsi_c_field EQ 0) OR (imsi_c_field > (MAX_IMSI-1))) /* maybe 0xFF on some testcards */ | |
241 { | |
242 TRACE_EVENT_P1("[WRN] imsi_c_field = %d is not valid", imsi_c_field); | |
243 imsi_asciiz[0] = '\0'; /* return empty string in case of error */ | |
244 return; | |
245 } | |
246 | |
247 /* | |
248 * calculate number of digits | |
249 */ | |
250 imsi_len = (imsi_c_field)*2-1; /* -1 goes off for parity nibble */ | |
251 | |
252 /* | |
253 * if even number of digits then last upper nibble is an end mark '1111' | |
254 */ | |
255 if ((imsi_field[0] & 0x08) EQ 0) | |
256 { | |
257 imsi_len--; | |
258 } | |
259 | |
260 /* | |
261 * extract all digits | |
262 */ | |
263 for (i=0; i<imsi_len; i++) | |
264 { | |
265 if ((i & 1) EQ 0) | |
266 { | |
267 /* process IMSI digit 1,3,5,... at i=0,2,4,...*/ | |
268 digit = (imsi_field[(i+1)/2] & 0xf0) >> 4; /* +1 is to skip parity nibble */ | |
269 } | |
270 else | |
271 { | |
272 /* process IMSI digit 2,4,6,... at i=1,3,5,...*/ | |
273 digit = (imsi_field[(i+1)/2] & 0x0f); | |
274 } | |
275 | |
276 if (digit > 9) /* 3.03/2.3 IMSI shall consist of numerical characters (0 through 9) only.*/ | |
277 { | |
278 TRACE_EVENT("[WRN] invalid BCD digit found in IMSI, aborting"); | |
279 imsi_asciiz[0] = '\0'; /* return empty string in case of error */ | |
280 return; | |
281 } | |
282 else | |
283 { | |
284 imsi_asciiz[i] = '0' + digit; | |
285 } | |
286 } | |
287 imsi_asciiz[i] = '\0'; | |
288 return; | |
289 } | |
290 | |
291 /* | |
292 PURPOSE : convert imsi (ASCIIZ to packed bcd; ->11.11) | |
293 */ | |
294 GLOBAL void psaSIM_encodeIMSI (CHAR* imsi_asciiz, | |
295 UBYTE* imsi_c_field, | |
296 UBYTE* imsi_field) | |
297 { | |
298 UBYTE i; | |
299 UBYTE digit; | |
300 UBYTE imsi_len; | |
301 | |
302 TRACE_FUNCTION ("aci_slock_sim_encodeIMSI()"); | |
303 imsi_len = strlen(imsi_asciiz); | |
304 if (imsi_len > 15) /* 3.03/2.3 The overall number of digits in IMSI shall not exceed 15 digits. */ | |
305 { | |
306 TRACE_EVENT_P1("[WRN] imsi_len shall not exceed 15 digits, but is %d, truncating!", imsi_len); | |
307 imsi_len = 15; | |
308 } | |
309 | |
310 /* Calculate the Length indicator */ | |
311 *imsi_c_field = (imsi_len+1+1)/2; /* +1 for parity nibble and +1 to round up */ | |
312 imsi_field[0] = (imsi_len%2 ? 0x09:0x01); /* fill parity and some default bits */ | |
313 for (i=0; i<MAX_IMSI_LEN; i++) /* fill the whole EF field, pad remaining with 0xf */ | |
314 { | |
315 if (i<imsi_len) | |
316 { | |
317 digit = imsi_asciiz[i]; | |
318 if (digit >= '0' OR digit <= '9') | |
319 { | |
320 digit-= '0'; | |
321 } | |
322 else | |
323 { | |
324 TRACE_EVENT_P1("[WRN] invalid digit in IMSI \"%d\", skipping!", digit); | |
325 digit = 0x0f; | |
326 } | |
327 } | |
328 else | |
329 { | |
330 digit = 0x0f; /* 11.11/10.3.2 If a network operator chooses an IMSI of less than 15 digits, | |
331 unused nibbles shall be set to 'F'. */ | |
332 } | |
333 | |
334 if ((i & 1) EQ 0) | |
335 { | |
336 /* process IMSI digit 1,3,5,... at i=0,2,4,...*/ | |
337 imsi_field[(i+1)/2] |= digit << 4; /* first +1 is to skop parity nibble */ | |
338 } | |
339 else | |
340 { | |
341 /* process IMSI digit 2,4,6,... at i=1,3,5,...*/ | |
342 imsi_field[(i+1)/2] = digit; | |
343 } | |
344 } | |
345 } | |
346 | |
347 | |
348 | |
349 | |
350 /* | |
351 +-------------------------------------------------------------------+ | |
352 | PROJECT : GSM-PS (6147) MODULE : PSA_SIM | | |
353 | ROUTINE : psaSIM_Init | | |
354 +-------------------------------------------------------------------+ | |
355 | |
356 PURPOSE : initialize the protocol stack adapter for SIM. | |
357 | |
358 */ | |
359 | |
360 /* MACRO: initializer for set parameter */ | |
361 #define INIT_SIM_SET_PARM( dest, def )\ | |
362 for( LpCnt = 0; LpCnt < OWN_SRC_MAX; LpCnt++ )\ | |
363 simShrdPrm.setPrm[LpCnt].dest = def | |
364 | |
365 GLOBAL void psaSIM_Init (T_ACI_INIT_TYPE init_type) | |
366 { | |
367 UBYTE LpCnt; /* holds loop counter for macro */ | |
368 UBYTE atbIdx; /* holds index to access table */ | |
369 | |
370 #ifdef SIM_TOOLKIT | |
371 T_ACI_CMD_SRC cmd_src; /* for setting up SIMEF mode */ | |
372 UBYTE idx; /* holds profile index */ | |
373 #endif | |
374 | |
375 /* | |
376 *------------------------------------------------------------------- | |
377 * initialize access table | |
378 *------------------------------------------------------------------- | |
379 */ | |
380 for( atbIdx = 0; atbIdx < ACC_MAX; atbIdx++ ) | |
381 { | |
382 psaSIM_InitAtbNtry( atbIdx ); | |
383 } | |
384 | |
385 /* | |
386 *------------------------------------------------------------------- | |
387 * set default parms | |
388 *------------------------------------------------------------------- | |
389 */ | |
390 memset( simShrdPrm.setPrm, 0, sizeof(T_SIM_SET_PRM)); | |
391 memset( simShrdPrm.imsi.field, 0, MAX_IMSI); | |
392 simShrdPrm.rslt = SIM_NO_ERROR; | |
393 simShrdPrm.pn1Cnt = 0; | |
394 simShrdPrm.pn2Cnt = 0; | |
395 simShrdPrm.pk1Cnt = 0; | |
396 simShrdPrm.pk2Cnt = 0; | |
397 simShrdPrm.PINStat = NO_VLD_PS; | |
398 simShrdPrm.pn1Stat = NO_VLD_PS; | |
399 simShrdPrm.pn2Stat = NO_VLD_PS; | |
400 simShrdPrm.PINQuery = 0; | |
401 simShrdPrm.crdPhs = 0xFF; | |
402 simShrdPrm.SIMStat = NO_VLD_SS; | |
403 simShrdPrm.PEDStat = NO_VLD_PEDS; | |
404 simShrdPrm.imsi.c_field = 0; | |
405 simShrdPrm.PLMN_Mode_Bit = NOT_PRESENT_8BIT; | |
406 simShrdPrm.crdFun = SIM_NO_OPERATION; | |
407 simShrdPrm.ciSIMEnabled = TRUE; | |
408 simShrdPrm.imei_blocked = FALSE; | |
409 simShrdPrm.opl_list.opl_status = FALSE; | |
410 simShrdPrm.pnn_list.pnn_status = FALSE; | |
411 memset( simShrdPrm.srvTab, 0, SRV_TAB_LEN ); | |
412 #ifdef FF_SAT_E | |
413 simShrdPrm.sat_class_e_dti_id = DTI_DTI_ID_NOTPRESENT; | |
414 #endif /*FF_SAT_E*/ | |
415 #ifdef TI_PS_FF_AT_P_CMD_ATR | |
416 simShrdPrm.atr.len = 0; | |
417 #endif /* TI_PS_FF_AT_P_CMD_ATR */ | |
418 #ifdef FF_DUAL_SIM | |
419 simShrdPrm.SIM_Powered_on = 0; | |
420 simShrdPrm.SIM_Selection = FALSE; | |
421 #endif /*FF_DUAL_SIM*/ | |
422 INIT_SIM_SET_PARM( actProc, SIM_INITIALISATION ); | |
423 INIT_SIM_SET_PARM( PINType, 0 ); | |
424 | |
425 for( LpCnt = 0; LpCnt < OWN_SRC_MAX; LpCnt++ ) | |
426 { | |
427 memset( simShrdPrm.setPrm[LpCnt].curPIN, NOT_PRESENT_CHAR, PIN_LEN ); | |
428 memset( simShrdPrm.setPrm[LpCnt].newPIN, NOT_PRESENT_CHAR, PIN_LEN ); | |
429 memset( simShrdPrm.setPrm[LpCnt].unblkKey, NOT_PRESENT_CHAR, PUK_LEN ); | |
430 | |
431 #ifdef TI_PS_FF_AT_P_CMD_CUST | |
432 simShrdPrm.setPrm[LpCnt].cust_mode = (UBYTE)CUST_NORMAL_BEHAVIOUR; | |
433 #endif /* TI_PS_FF_AT_P_CMD_CUST */ | |
434 simShrdPrm.setPrm[LpCnt].sat_cc_mode = SATCC_CONTROL_BY_SIM_ACTIVE; | |
435 } | |
436 | |
437 #ifdef TI_PS_FF_AT_P_CMD_CUST | |
438 simShrdPrm.overall_cust_mode = (UBYTE)CUST_NORMAL_BEHAVIOUR; | |
439 #endif /* TI_PS_FF_AT_P_CMD_CUST */ | |
440 simShrdPrm.pb_stat = PB_STAT_Blocked; | |
441 | |
442 #ifdef SIM_TOOLKIT | |
443 | |
444 for (cmd_src=CMD_SRC_LCL;cmd_src<CMD_SRC_MAX;cmd_src++) | |
445 { | |
446 simShrdPrm.SIMEFMode[cmd_src]=SIMEF_MODE_OFF; | |
447 } | |
448 for( idx = 0; idx < MAX_STK_PRF; idx++ ) | |
449 { | |
450 INIT_SIM_SET_PARM( STKprof[idx], satDefPrfl[idx] ); | |
451 } | |
452 | |
453 if (init_type EQ ACI_INIT_TYPE_ALL) | |
454 { | |
455 if (!psaSAT_FURegister (cmhSIM_AD_Update)) | |
456 { | |
457 TRACE_EVENT ("FAILED to register the handler cmhSIM_AD_Update() for FU"); | |
458 } | |
459 if (!psaSAT_FURegister (cmhSIM_OpUpdate)) | |
460 { | |
461 TRACE_EVENT ("FAILED to register the handler cmhSIM_OpUpdate() for FU"); | |
462 } | |
463 if (!psaSAT_FURegister (cmhSIM_CSP_Update)) | |
464 { | |
465 TRACE_EVENT ("FAILED to register the handler cmhSIM_CSP_Update() for FU"); | |
466 } | |
467 if (!psaSAT_FURegister (cmhSIM_ONS_Update)) | |
468 { | |
469 TRACE_EVENT ("FAILED to register the handler cmhSIM_ONS_Update() for FU"); | |
470 } | |
471 } | |
472 else | |
473 { | |
474 cmhSAT_CBMDestroyList(); | |
475 } | |
476 #endif | |
477 | |
478 } | |
479 | |
480 /* | |
481 +-------------------------------------------------------------------+ | |
482 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
483 | ROUTINE : psaSIM_shrPrmDump | | |
484 +-------------------------------------------------------------------+ | |
485 | |
486 PURPOSE : this function dumps the shared parameter to the debug | |
487 output. | |
488 */ | |
489 | |
490 #ifdef TRACING | |
491 GLOBAL void psaSIM_shrPrmDump ( void ) | |
492 { | |
493 char lnBuf [80]; /* holds buffer for output line */ | |
494 char pinBuf [PIN_LEN+1]; /* holds buffer for pin */ | |
495 SHORT chrNr; /* holds number of processed chars */ | |
496 | |
497 /* --- PIN type -------------------------------------------------*/ | |
498 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " PIN type" ); | |
499 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
500 simShrdPrm.setPrm[0].PINType ); | |
501 TRACE_EVENT( lnBuf ); | |
502 | |
503 /* --- current PIN ----------------------------------------------*/ | |
504 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " curr. PIN" ); | |
505 sprintf( pinBuf, "%*.*s", PIN_LEN, PIN_LEN, simShrdPrm.setPrm[0].curPIN ); | |
506 chrNr += sprintf( lnBuf+chrNr, "%*.*s", ITM_WDT, ITM_WDT, pinBuf ); | |
507 TRACE_EVENT( lnBuf ); | |
508 | |
509 /* --- new PIN --------------------------------------------------*/ | |
510 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " new PIN" ); | |
511 sprintf( pinBuf, "%*.*s", PIN_LEN, PIN_LEN, simShrdPrm.setPrm[0].newPIN ); | |
512 chrNr += sprintf( lnBuf+chrNr, "%*.*s", ITM_WDT, ITM_WDT, pinBuf ); | |
513 TRACE_EVENT( lnBuf ); | |
514 | |
515 /* --- unblock key ----------------------------------------------*/ | |
516 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "unblck.key" ); | |
517 sprintf( pinBuf, "%*.*s", PIN_LEN, PIN_LEN, simShrdPrm.setPrm[0].unblkKey ); | |
518 chrNr += sprintf( lnBuf+chrNr, "%*.*s", ITM_WDT, ITM_WDT, pinBuf ); | |
519 TRACE_EVENT( lnBuf ); | |
520 | |
521 /* --- PIN status -----------------------------------------------*/ | |
522 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "PIN status" ); | |
523 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
524 simShrdPrm.PINStat ); | |
525 TRACE_EVENT( lnBuf ); | |
526 | |
527 /* --- result ---------------------------------------------------*/ | |
528 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " result" ); | |
529 chrNr += sprintf( lnBuf+chrNr, "%*X", ITM_WDT, | |
530 simShrdPrm.rslt ); | |
531 TRACE_EVENT( lnBuf ); | |
532 | |
533 /* --- PIN 1 count ----------------------------------------------*/ | |
534 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " PIN 1 cnt" ); | |
535 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
536 simShrdPrm.pn1Cnt ); | |
537 TRACE_EVENT( lnBuf ); | |
538 | |
539 /* --- PIN 2 count ----------------------------------------------*/ | |
540 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " PIN 2 cnt" ); | |
541 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
542 simShrdPrm.pn2Cnt ); | |
543 TRACE_EVENT( lnBuf ); | |
544 | |
545 /* --- PUK 1 count ----------------------------------------------*/ | |
546 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " PUK 1 cnt" ); | |
547 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
548 simShrdPrm.pk1Cnt ); | |
549 TRACE_EVENT( lnBuf ); | |
550 | |
551 /* --- PUK 2 count ----------------------------------------------*/ | |
552 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " PUK 2 cnt" ); | |
553 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
554 simShrdPrm.pk2Cnt ); | |
555 TRACE_EVENT( lnBuf ); | |
556 | |
557 /* --- card phase -----------------------------------------------*/ | |
558 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "card phase" ); | |
559 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
560 simShrdPrm.crdPhs ); | |
561 TRACE_EVENT( lnBuf ); | |
562 | |
563 /* --- SIM status -----------------------------------------------*/ | |
564 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "SIM status" ); | |
565 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
566 simShrdPrm.SIMStat ); | |
567 TRACE_EVENT( lnBuf ); | |
568 | |
569 /* --- card functionality ---------------------------------------*/ | |
570 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "card funct" ); | |
571 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
572 simShrdPrm.crdFun ); | |
573 TRACE_EVENT( lnBuf ); | |
574 } | |
575 #endif /* of #ifdef TRACING */ | |
576 | |
577 #ifdef SIM_PERS_OTA | |
578 /* | |
579 +----------------------------------------------------------+ | |
580 | PROJECT : GSM-PS (6147) MODULE : PSA_SIMF | | |
581 | ROUTINE : aci_slock_ota_init | | |
582 +----------------------------------------------------------+ | |
583 | |
584 PURPOSE : this function registers the ccmhSIM_Register_Read_DCKduring init | |
585 and also reads the contents of EF_DCK at the init | |
586 */ | |
587 | |
588 /* | |
589 +------------------------------------------------------------------------------ | |
590 | Function : aci_slock_ota_init | |
591 +------------------------------------------------------------------------------ | |
592 | Description : this function registers the ccmhSIM_Register_Read_DCKduring init | |
593 | and also reads the contents of EF_DCK at the init | |
594 | | |
595 | Parameters : None | |
596 | | |
597 | Return : None | |
598 | | |
599 +------------------------------------------------------------------------------ | |
600 */ | |
601 | |
602 GLOBAL void aci_slock_ota_init() | |
603 { | |
604 TRACE_FUNCTION("aci_slock_ota_init()"); | |
605 psaSAT_FURegister(cmhSIM_Register_Read_DCK); | |
606 } | |
607 #endif | |
608 /*==== EOF ========================================================*/ |