FreeCalypso > hg > fc-selenite
annotate src/g23m-gsm/sim/uicc_fkt.c @ 10:a8f9cc376e98
components: pruned import from Magnetite
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 15 Jul 2018 21:19:43 +0000 | 
| parents | d393cd9bb723 | 
| children | 
| rev | line source | 
|---|---|
| 1 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | Project : GSM-F&D (8411) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | Modul : SIM_FKT | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | All rights reserved. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | This file is confidential and a trade secret of Texas | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | Instruments Berlin, AG | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | The receipt of or possession of this file does not convey | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | any rights to reproduce or disclose its contents or to | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | manufacture, use, or sell anything it may describe, in | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | whole, or in part, without the specific written consent of | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 | Texas Instruments Berlin, AG. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | Purpose : This modul defines the wrapping functions for the | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | SIM application. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 +----------------------------------------------------------------------------- | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 #ifndef SIM_FKT_C | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 #define SIM_FKT_C | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 #define ENTITY_SIM | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 /*==== INCLUDES ===================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 #include <string.h> | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 #include "typedefs.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 #include "pconst.cdg" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 #include "message.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 #include "ccdapi.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 #include "vsi.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 #include "custom.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 #include "gsm.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 #include "cnf_sim.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 #include "mon_sim.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 #include "prim.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 #include "pei.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 #include "tok.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 #include "sim.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 #include "sim_em.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 #include "8010_136_SIMDRV_SAP_inline.h" | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 /*==== EXPORT =====================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 /*==== PRIVAT =====================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 /*==== VARIABLES ==================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 GLOBAL USHORT stk_l_cmd = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 /*==== FUNCTIONS ===================================================*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 /* Implements Measure# 13 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 +---------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 | STATE : code ROUTINE : FKT_ChangeCHV_n_UnblockCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 +---------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 PURPOSE : Wrapping function for the SIM driver call SIM_ChangeCHV and | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 SIM_UnblockCHV | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 LOCAL USHORT FKT_ChangeCHV_n_UnblockCHV ( UBYTE * oldPin_UnblkCHV, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 UBYTE * newPin_CHV, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 UBYTE pinId_chvType, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 UBYTE inst_code) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 U8 i; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 U8 data[2*MAX_PIN_LEN]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 TRACE_FUNCTION ("FKT_ChangeCHV_n_UnblockCHV()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 cmd_header.ins = inst_code; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 cmd_header.p2 = pinId_chvType; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 for (i=0;i<2*MAX_PIN_LEN;i++) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 if (i < MAX_PIN_LEN) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 data[i] = oldPin_UnblkCHV[i]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 data[i] = newPin_CHV[i-MAX_PIN_LEN]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 data_info.data = (U8 *)data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 data_info.c_data = sizeof(data); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 sw1sw2 = simdrv_xch_apdu(reader_id, cmd_header, data_info, &result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 /* Implements Measure# 16 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 +------------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 | STATE : code ROUTINE : FKT_Invalidate_n_Rehabilitate | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 +------------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 PURPOSE : Wrapping function for the SIM driver call SIM_Invalidate and | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 SIM_Rehabilitate. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 LOCAL USHORT FKT_Invalidate_n_Rehabilitate ( UBYTE inst_code) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 TRACE_FUNCTION ("FKT_Invalidate_n_Rehabilitate()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 cmd_header.ins = inst_code; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 data_info.data = NULL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 data_info.c_data = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 sw1sw2 = simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 if (sw1sw2 EQ 0x9810) /* already invalidated */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 return SIM_NO_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 /* Implements Measure# 17 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 +----------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 | STATE : code ROUTINE : FKT_DisableCHV_n_EnableCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 +----------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 PURPOSE : Wrapping function for the SIM driver call SIM_DisableCHV and | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 SIM_EnableCHV | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 LOCAL USHORT FKT_DisableCHV_n_EnableCHV (UBYTE * pin, UBYTE inst_code) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 TRACE_FUNCTION ("FKT_DisableCHV_n_EnableCHV()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 cmd_header.ins = inst_code; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 cmd_header.p2 = 1; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 data_info.data = (U8 *)pin; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 data_info.c_data = MAX_PIN_LEN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 sw1sw2 = simdrv_xch_apdu(reader_id, cmd_header, data_info, &result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 | STATE : code ROUTINE : FKT_check_pin_count | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 PURPOSE : PIN/PUK count is checked for secret code initialisation. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 count is set to zero, if not initialised, otherwise the | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 initialisation flag (most significant bit) is reset. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 GLOBAL UBYTE FKT_check_pin_count (UBYTE count) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 if ((count & 0x80) EQ 0) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 return 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 return count & 0x0F; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 | STATE : code ROUTINE : FKT_convert_error | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 PURPOSE : Converts sw1 and sw2 to an unique error code for the | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 SIM application. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 * PIN/PUK is wrong, remaining attempts | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 static const USHORT sim_inv_chv_A [6] = | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 /* last requested PIN no error code */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 /* none */ SIM_CAUSE_OTHER_ERROR, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 /* PIN 1 */ SIM_CAUSE_PIN1_EXPECT, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 /* PIN 2 */ SIM_CAUSE_PIN2_EXPECT, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 /* PUK 1 */ SIM_CAUSE_PUK1_EXPECT, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 /* PUK 2 */ SIM_CAUSE_PUK2_EXPECT, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 /* NEVER */ SIM_CAUSE_ACCESS_PROHIBIT | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 * PIN/PUK is wrong, no remaining attempts | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 static const USHORT sim_inv_chv_B [6] = | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 /* last requested PIN no error code */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 /* none */ SIM_CAUSE_OTHER_ERROR, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 /* PIN 1 */ SIM_CAUSE_PIN1_BLOCKED, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 /* PIN 2 */ SIM_CAUSE_PIN2_BLOCKED, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 /* PUK 1 */ SIM_CAUSE_PUK1_BLOCKED, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 /* PUK 2 */ SIM_CAUSE_PUK2_BLOCKED, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 /* NEVER */ SIM_CAUSE_OTHER_ERROR | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 GLOBAL USHORT FKT_convert_error (USHORT sw1sw2, USHORT size) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 TRACE_FUNCTION ("FKT_convert_error()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 sim_data.sw1 = (UBYTE)(sw1sw2 >> 8); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 sim_data.sw2 = (UBYTE)sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 TRACE_EVENT_P1 ("Data returned from SIM, Size =%X", size); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 TRACE_EVENT_P2 ("SW1=%02X SW2=%02X", sim_data.sw1, sim_data.sw2); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 switch (sim_data.sw1) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 case 0x00: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 * SIM driver error | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 if (SIM_IS_FLAG_CLEARED(SIM_INSERT)) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 return SIM_CAUSE_CARD_REMOVED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 if (sim_data.sw2 EQ 14) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 SIM_SET_FLAG(DRV_FAILED_RETRY); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 return SIM_CAUSE_DRV_TEMPFAIL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 return CAUSE_MAKE(DEFBY_CONDAT, ORIGSIDE_MS, SIM_ORIGINATING_ENTITY, sim_data.sw2); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 #if defined SIM_TOOLKIT | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 case 0x9E: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 * use SW2 as length indicator for | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 * the following get response | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 if (sim_data.sim_phase >= 3) /* Phase 2+ or higher */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 if (sim_data.stk_profile[0] & SAT_TP1_9E_XX) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 sim_data.sim_data_len = (sim_data.sw2 EQ 0)? 0x100: (USHORT)sim_data.sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 return SIM_CAUSE_DNL_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 return SIM_CAUSE_SAT_BUSY; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 return SIM_CAUSE_OTHER_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 case 0x93: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 if (sim_data.sim_phase >= 3) /* Phase 2+ or higher */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 return SIM_CAUSE_SAT_BUSY; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 return SIM_CAUSE_OTHER_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 case 0x91: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 if (sim_data.sim_phase >= 3) /* Phase 2+ or higher */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 sim_data.proactive_sim_data_len = (sim_data.sw2 EQ 0)? 0x100: (SHORT)sim_data.sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 return SIM_NO_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 return SIM_CAUSE_OTHER_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 case 0x92: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 if (sim_data.sw2 > 0xF) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 #ifdef REL99 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 if (sim_data.sw2 EQ SW2_MEMORY_PROBLEM) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 return SIM_CAUSE_MEM_PROBLEM; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 #endif /* end of ifdef REL99 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 return SIM_CAUSE_OTHER_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 /* no break (otherwise the command was successful)*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 case 0x90: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 if( (size>0) AND (size <= 0x100) ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 sim_data.sim_data_len = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 TRACE_EVENT_P1 ("sim_data.sim_data_len updated size =%X ", size); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 return SIM_NO_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 case 0x9F: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 * use SW2 as length indicator for | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 * the following get response | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 sim_data.sim_data_len = (sim_data.sw2 EQ 0)? 0x100: (USHORT)sim_data.sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 return SIM_NO_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 case 0x94: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 switch (sim_data.sw2) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 case 0: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 return SIM_CAUSE_NO_SELECT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 case 2: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 return SIM_CAUSE_ADDR_WRONG; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 case 4: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 return SIM_CAUSE_UNKN_FILE_ID; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 case 8: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 return SIM_CAUSE_CMD_INCONSIST; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 default: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 case 0x98: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 TRACE_EVENT_P1 ("LRP = %d", (int)sim_data.last_requested_pin_no); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 switch (sim_data.sw2) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 case 2: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 return SIM_CAUSE_CHV_NOTSET; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 case 8: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 return SIM_CAUSE_CHV_VALIDATED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 case 0x10: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 return SIM_CAUSE_EF_INVALID; /* contradiction cases */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 case 4: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 //TISH, patch for OMAPS00115342&OMAPS00123717 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 //start | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 #if 0 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 /* Check whether PIN1 is entered/Verified */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 if (SIM_IS_FLAG_SET(PIN1_VERIFIED)) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 return SIM_CAUSE_ACCESS_PROHIBIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 //end | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 return sim_inv_chv_A [sim_data.last_requested_pin_no]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 case 0x40: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 return sim_inv_chv_B [sim_data.last_requested_pin_no]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 case 0x50: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 return SIM_CAUSE_MAX_INCREASE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 default: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 401 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 402 return SIM_CAUSE_OTHER_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 403 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 404 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 405 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 406 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 407 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 408 | STATE : code ROUTINE : FKT_ChangeCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 409 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 410 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 411 PURPOSE : Wrapping function for the SIM driver call SIM_ChangeCHV. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 412 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 413 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 414 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 415 GLOBAL USHORT FKT_ChangeCHV (UBYTE * old_pin, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 416 UBYTE * new_pin, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 417 UBYTE pin_id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 418 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 419 /* Implements Measure# 13 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 420 return (FKT_ChangeCHV_n_UnblockCHV (old_pin, new_pin, pin_id, SIMDRV_INS_CHANGE_CHV)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 421 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 422 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 423 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 424 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 425 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 426 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 427 | STATE : code ROUTINE : FKT_DisableCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 428 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 429 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 430 PURPOSE : Wrapping function for the SIM driver call SIM_DisableCHV. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 431 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 432 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 433 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 434 GLOBAL USHORT FKT_DisableCHV (UBYTE * pin) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 435 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 436 /* Implements Measure# 17 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 437 return (FKT_DisableCHV_n_EnableCHV (pin, SIMDRV_INS_DISABLE_CHV)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 438 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 439 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 440 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 441 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 442 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 443 | STATE : code ROUTINE : FKT_EnableCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 444 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 445 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 446 PURPOSE : Wrapping function for the SIM driver call SIM_EnableCHV. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 447 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 448 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 449 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 450 GLOBAL USHORT FKT_EnableCHV (UBYTE * pin) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 451 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 452 /* Implements Measure# 17 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 453 return (FKT_DisableCHV_n_EnableCHV (pin, SIMDRV_INS_ENABLE_CHV)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 454 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 455 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 456 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 457 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 458 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 459 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 460 | STATE : code ROUTINE : FKT_Increase | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 461 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 462 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 463 PURPOSE : Wrapping function for the SIM driver call SIM_Increase. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 464 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 465 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 466 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 467 GLOBAL USHORT FKT_Increase (UBYTE * data) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 468 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 469 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 470 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 471 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 472 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 473 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 474 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 475 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 476 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 477 TRACE_FUNCTION ("FKT_Increase()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 478 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 479 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 480 cmd_header.ins = SIMDRV_INS_INCREASE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 481 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 482 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 483 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 484 data_info.data = (U8 *)data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 485 data_info.c_data = 3; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 486 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 487 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 488 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 489 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 490 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 491 sw1sw2 = simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 492 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 493 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 494 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 495 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 496 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 497 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 498 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 499 | STATE : code ROUTINE : FKT_Invalidate | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 500 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 501 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 502 PURPOSE : Wrapping function for the SIM driver call SIM_Invalidate. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 503 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 504 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 505 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 506 GLOBAL USHORT FKT_Invalidate (void) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 507 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 508 /* Implements Measure# 16 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 509 return (FKT_Invalidate_n_Rehabilitate(SIMDRV_INS_INVALIDATE)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 510 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 511 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 512 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 513 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 514 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 515 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 516 | STATE : code ROUTINE : FKT_ReadBinary | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 517 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 518 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 519 PURPOSE : Wrapping function for the SIM driver call SIM_ReadBinary. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 520 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 521 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 522 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 523 GLOBAL USHORT FKT_ReadBinary (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 524 USHORT offset, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 525 USHORT length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 526 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 527 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 528 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 529 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 530 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 531 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 532 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 533 U8 offset_high; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 534 U8 offset_low; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 535 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 536 TRACE_FUNCTION ("FKT_ReadBinary()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 537 offset_high = (U8)((offset &0x7F00)>>8); /* to make the 8th bit 0 as per 102.221 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 538 offset_low = (U8)(offset & 0x00FF); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 539 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 540 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 541 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 542 cmd_header.ins = SIMDRV_INS_READ_BINARY; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 543 cmd_header.p1 =offset_high ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 544 cmd_header.p2 =offset_low ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 545 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 546 data_info.data = NULL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 547 data_info.c_data = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 548 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 549 result_info.result = (U8 *)data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 550 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 551 result_info.len = (USHORT)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 552 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 553 sw1sw2= simdrv_xch_apdu (reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 554 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 555 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 556 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 557 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 558 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 559 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 560 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 561 | STATE : code ROUTINE : FKT_ReadRecord | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 562 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 563 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 564 PURPOSE : Wrapping function for the SIM driver call SIM_ReadRecord. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 565 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 566 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 567 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 568 GLOBAL USHORT FKT_ReadRecord (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 569 UBYTE mode, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 570 USHORT record, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 571 USHORT length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 572 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 573 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 574 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 575 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 576 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 577 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 578 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 579 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 580 #if !defined NTRACE | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 581 /* Implements Measure#32: Row 37 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 582 TRACE_EVENT_P1("FKT_ReadRecord(): Nr. %hu", record); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 583 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 584 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 585 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 586 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 587 cmd_header.ins = SIMDRV_INS_READ_RECORD; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 588 cmd_header.p1 = (U8)record; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 589 cmd_header.p2 = (U8)mode; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 590 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 591 data_info.data = NULL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 592 data_info.c_data = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 593 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 594 result_info.result = (U8 *)data ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 595 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 596 result_info.len =(USHORT)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 597 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 598 sw1sw2= simdrv_xch_apdu (reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 599 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 600 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 601 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 602 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 603 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 604 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 605 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 606 | STATE : code ROUTINE : FKT_Rehabilitate | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 607 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 608 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 609 PURPOSE : Wrapping function for the SIM driver call SIM_Rehabilitate. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 610 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 611 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 612 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 613 GLOBAL USHORT FKT_Rehabilitate (void) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 614 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 615 /* Implements Measure# 16 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 616 return (FKT_Invalidate_n_Rehabilitate(SIMDRV_INS_REHABILITATE)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 617 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 618 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 619 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 620 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 621 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 622 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 623 | STATE : code ROUTINE : FKT_Status | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 624 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 625 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 626 PURPOSE : Wrapping function for the SIM driver call SIM_Status. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 627 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 628 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 629 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 630 GLOBAL USHORT FKT_Status (UBYTE * pin_cnt, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 631 UBYTE * pin2_cnt, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 632 UBYTE * puk_cnt, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 633 UBYTE * puk2_cnt) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 634 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 635 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 636 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 637 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 638 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 639 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 640 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 641 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 642 USHORT cause; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 643 USHORT fileid; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 644 union | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 645 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 646 T_DIR_STATUS status; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 647 UBYTE response [40]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 648 } dir; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 649 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 650 TRACE_FUNCTION ("FKT_Status()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 651 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 652 memset (dir.response, 0, sizeof(dir.response)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 653 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 654 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 655 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 656 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 657 cmd_header.ins = SIMDRV_INS_STATUS; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 658 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 659 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 660 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 661 data_info.data = NULL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 662 data_info.c_data = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 663 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 664 result_info.result = (U8 *)dir.response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 665 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 666 result_info.len = sim_data.dir_status_len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 667 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 668 sw1sw2 = simdrv_xch_apdu(reader_id, cmd_header, data_info, &result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 669 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 670 cause = FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 671 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 672 *pin_cnt = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 673 *puk_cnt = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 674 *pin2_cnt = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 675 *puk2_cnt = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 676 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 677 if (cause EQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 678 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 679 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 680 * Check file id on active call: if different from last directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 681 * indicate failure during SIM Presence Detection (27.20). | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 682 * A selection of a non-existent DF (possible with SIM_ACCESS_REQ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 683 * leads to the loss of the current DF: this confuses the SIM | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 684 * Presence Detection, therefore the validity of the actual DF | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 685 * stored in 'sim_data.act_directory' must be considered. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 686 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 687 fileid = (dir.status.fileid[0] << 8) | dir.status.fileid[1]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 688 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 689 if (SIM_IS_FLAG_SET (CALL_ACTIVE) AND /* call active */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 690 sim_data.act_directory NEQ NOT_PRESENT_16BIT /* actual DF known? */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 691 AND fileid NEQ sim_data.act_directory) /* compare DF */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 692 return SIM_CAUSE_CARD_REMOVED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 693 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 694 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 695 if (SIM_TI_DRV_X_BYTES > 0) /* discard SW1, SW2 from response! */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 696 memset (&dir.response[sim_data.dir_status_len], 0, SIM_TI_DRV_X_BYTES); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 697 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 698 * Directory status is available | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 699 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 700 *pin_cnt = FKT_check_pin_count (dir.status.pinstatus); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 701 *puk_cnt = FKT_check_pin_count (dir.status.unbstatus); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 702 *pin2_cnt = FKT_check_pin_count (dir.status.pin2status); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 703 *puk2_cnt = FKT_check_pin_count (dir.status.unb2status); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 704 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 705 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 706 return cause; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 707 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 708 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 709 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 710 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 711 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 712 | STATE : code ROUTINE : FKT_RunGSMAlgo | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 713 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 714 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 715 PURPOSE : Wrapping function for the SIM driver call SIM_RunGSMAlgo. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 716 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 717 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 718 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 719 GLOBAL USHORT FKT_RunGSMAlgo (UBYTE * rand, UBYTE * data, USHORT len) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 720 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 721 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 722 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 723 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 724 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 725 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 726 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 727 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 728 TRACE_FUNCTION ("FKT_RunGSMAlgo()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 729 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 730 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 731 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 732 cmd_header.ins = SIMDRV_INS_AUTHENTICATE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 733 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 734 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 735 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 736 data_info.data = (U8*)rand; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 737 data_info.c_data = MAX_RAND; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 738 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 739 result_info.result = data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 740 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 741 result_info.len = len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 742 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 743 sw1sw2= simdrv_xch_apdu (reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 744 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 745 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 746 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 747 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 748 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 749 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 750 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 751 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 752 | STATE : code ROUTINE : FKT_Select | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 753 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 754 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 755 PURPOSE : Wrapping function for the SIM driver call SIM_Select. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 756 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 757 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 758 LOCAL USHORT fkt_select_one (USHORT id, UBYTE * data, USHORT len) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 759 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 760 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 761 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 762 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 763 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 764 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 765 U8 field[2]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 766 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 767 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 768 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 769 TRACE_EVENT_P1 ("fkt_select_one() : File id =%X ", id); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 770 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 771 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 772 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 773 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 774 cmd_header.ins = SIMDRV_INS_SELECT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 775 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 776 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 777 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 778 field[0] =(U8) (id>>8); /* high byte */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 779 field[1] =(U8) id; /* low byte */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 780 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 781 data_info.data = field; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 782 data_info.c_data = sizeof(field); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 783 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 784 result_info.result = data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 785 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 786 result_info.len = len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 787 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 788 TRACE_EVENT_P1 ("Expected result size from SIM =%X ", result_info.len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 789 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 790 sw1sw2 = simdrv_xch_apdu(reader_id, cmd_header, data_info, &result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 791 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 792 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 793 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 794 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 795 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 796 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 797 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 798 | STATE : code ROUTINE : sim_select_df | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 799 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 800 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 801 PURPOSE : Function to select the directory given the path. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 802 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 803 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 804 LOCAL USHORT sim_select_df(U16 dir_level,UBYTE *data,USHORT len) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 805 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 806 USHORT result = SIM_NO_ERROR; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 807 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 808 result = fkt_select_one (dir_level, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 809 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 810 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 811 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 812 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 813 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 814 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 815 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 816 sim_data.act_directory = dir_level; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 817 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 818 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 819 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 820 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 821 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 822 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 823 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 824 | STATE : code ROUTINE : FKT_Select | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 825 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 826 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 827 PURPOSE : Wrapping function for the SIM driver call SIM_Select. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 828 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 829 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 830 GLOBAL USHORT FKT_Select (USHORT id, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 831 BOOL path_info_present, T_path_info * path_info_ptr, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 832 UBYTE * data, USHORT len) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 833 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 834 USHORT result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 835 USHORT directory = (SIM_IS_FLAG_SET (GSM_DATAFIELD))? | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 836 SIM_DF_GSM: SIM_DF_1800; /* default parent directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 837 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 838 #if !defined NTRACE | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 839 /* Implements Measure#32: Row 39 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 840 TRACE_EVENT_P1("FKT_Select(): id = %04X", id); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 841 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 842 switch (id & 0xFF00) /* selecting DF deselects EF */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 843 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 844 case 0x3F00: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 845 case 0x7F00: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 846 case 0x5F00: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 847 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 848 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 849 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 850 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 851 if( path_info_present NEQ FALSE ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 852 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 853 if((sim_data.act_directory & 0xFF00) NEQ 0x5F00 AND | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 854 sim_data.act_directory NEQ NOT_PRESENT_16BIT) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 855 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 856 /* Currently selected df is MF or a first level directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 857 if(sim_data.act_directory NEQ path_info_ptr->df_level1) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 858 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 859 result = sim_select_df(path_info_ptr->df_level1,data,len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 860 if(result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 861 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 862 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 863 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 864 /* Currently selected df is a second level directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 865 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 866 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 867 result = sim_select_df(SIM_MF,data,len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 868 if(result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 869 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 870 result = sim_select_df(path_info_ptr->df_level1,data,len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 871 if(result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 872 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 873 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 874 if(path_info_ptr->v_df_level2) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 875 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 876 result = sim_select_df(path_info_ptr->df_level2,data,len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 877 if(result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 878 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 879 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 880 result = fkt_select_one (id, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 881 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 882 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 883 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 884 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 885 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 886 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 887 sim_data.act_field = id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 888 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 889 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 890 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 891 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 892 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 893 switch (id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 894 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 895 case SIM_MF: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 896 result = fkt_select_one (SIM_MF, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 897 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 898 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 899 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 900 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 901 sim_data.dir_status_len = sim_data.sim_data_len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 902 sim_data.act_directory = id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 903 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 904 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 905 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 906 default: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 907 /* All the standard defined EFs would be handled before coming to this | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 908 * point. Complete path information should be given for non-standard 2nd level EFs | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 909 * and they also would be handled before coming to this point. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 910 * This statement will be hit for non-standard files | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 911 * without path information. Hence returning error */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 912 return SIM_CAUSE_UNKN_FILE_ID; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 913 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 914 /* continue here in case of any first level directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 915 case SIM_DF_GSM: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 916 case SIM_DF_1800: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 917 case SIM_DF_TELECOM: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 918 case SIM_DF_VI: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 919 if (sim_data.act_directory EQ id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 920 return SIM_NO_ERROR; /* already selected */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 921 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 922 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 923 /* If current directory has not been selected or it is a | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 924 2nd level and under another 1st level DF */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 925 if (((sim_data.act_directory & 0xFF00) EQ 0x5F00 AND | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 926 ! SIM_IS_DF_LEVEL2_UNDER_DF_LEVEL1(sim_data.act_directory,id)) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 927 OR sim_data.act_directory EQ NOT_PRESENT_16BIT) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 928 { /* MF has to be selected first */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 929 result = sim_select_df(SIM_MF,data,len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 930 if(result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 931 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 932 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 933 result = fkt_select_one (id, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 934 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 935 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 936 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 937 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 938 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 939 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 940 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 941 sim_data.dir_status_len = sim_data.sim_data_len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 942 sim_data.act_directory = id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 943 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 944 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 945 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 946 case SIM_DF_GRAPHICS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 947 directory = SIM_DF_TELECOM; /* parent directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 948 /* no break */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 949 /*lint -fallthrough*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 950 case SIM_DF_SOLSA: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 951 case SIM_DF_MEXE: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 952 if (sim_data.act_directory EQ id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 953 return SIM_NO_ERROR; /* already selected */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 954 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 955 if (sim_data.act_directory NEQ directory) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 956 { /* not the parent directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 957 /* If current directory is MF or first level OR if the 2nd level | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 958 directory is under another 1st level df, select the parent directory */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 959 if((sim_data.act_directory & 0xFF00) NEQ 0x5F00 || | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 960 (!SIM_IS_DF_LEVEL2_UNDER_DF_LEVEL1(sim_data.act_directory,directory)) ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 961 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 962 result = FKT_Select (directory, FALSE, NULL, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 963 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 964 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 965 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 966 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 967 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 968 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 969 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 970 result = fkt_select_one (id, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 971 if (result NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 972 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 973 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 974 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 975 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 976 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 977 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 978 sim_data.dir_status_len = sim_data.sim_data_len; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 979 sim_data.act_directory = id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 980 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 981 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 982 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 983 case SIM_ICCID: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 984 case SIM_ELP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 985 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 986 * Access to Root Directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 987 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 988 directory = SIM_MF; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 989 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 990 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 991 case SIM_ADN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 992 case SIM_FDN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 993 case SIM_SMS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 994 case SIM_CCP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 995 case SIM_MSISDN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 996 case SIM_SMSP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 997 case SIM_SMSS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 998 case SIM_LND: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 999 case SIM_SMSR: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1000 case SIM_SDN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1001 case SIM_EXT1: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1002 case SIM_EXT2: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1003 case SIM_EXT3: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1004 case SIM_BDN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1005 case SIM_EXT4: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1006 /* VO temp PATCH: Needed for reading CPHS info num from old SIMs */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1007 case SIM_CPHS_INFN2: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1008 /* VO temp PATCH end */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1009 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1010 * Access to Telecom Directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1011 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1012 directory = SIM_DF_TELECOM; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1013 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1014 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1015 case SIM_LP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1016 case SIM_IMSI: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1017 case SIM_KC: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1018 case SIM_PLMNSEL: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1019 case SIM_HPLMN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1020 case SIM_ACMMAX: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1021 case SIM_SST: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1022 case SIM_ACM: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1023 case SIM_GID1: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1024 case SIM_GID2: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1025 case SIM_PUCT: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1026 case SIM_CBMI: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1027 case SIM_SPN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1028 case SIM_CBMID: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1029 case SIM_BCCH: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1030 case SIM_ACC: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1031 case SIM_FPLMN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1032 case SIM_LOCI: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1033 case SIM_AD: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1034 case SIM_PHASE: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1035 case SIM_VGCS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1036 case SIM_VGCSS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1037 case SIM_VBS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1038 case SIM_VBSS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1039 case SIM_EMLPP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1040 case SIM_AAEM: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1041 case SIM_ECC: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1042 case SIM_CBMIR: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1043 case SIM_DCK: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1044 case SIM_CNL: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1045 case SIM_NIA: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1046 case SIM_KCGPRS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1047 case SIM_LOCGPRS: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1048 case SIM_SUME: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1049 case SIM_CPHS_VMW: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1050 case SIM_CPHS_SST: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1051 case SIM_CPHS_CFF: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1052 case SIM_CPHS_ONSTR: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1053 case SIM_CPHS_CSP: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1054 case SIM_CPHS_CINF: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1055 case SIM_CPHS_MBXN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1056 case SIM_CPHS_ONSHF: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1057 case SIM_CPHS_INFN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1058 #ifdef REL99 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1059 case SIM_UCPS_ACTEC: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1060 case SIM_OCPS_ACTEC: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1061 case SIM_HPLMN_ACT: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1062 case SIM_CPBCCH: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1063 case SIM_INV_SCAN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1064 case SIM_RPLMN_ACT: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1065 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1066 case SIM_PNN: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1067 case SIM_OPL: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1068 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1069 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1070 * Access to GSM | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1071 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1072 directory = (SIM_IS_FLAG_SET (GSM_DATAFIELD))? | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1073 SIM_DF_GSM: SIM_DF_1800; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1074 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1075 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1076 case SIM_MEXE_ST: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1077 case SIM_ORPK: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1078 case SIM_ARPK: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1079 case SIM_TPRPK: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1080 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1081 * Access to MExE Directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1082 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1083 directory = SIM_DF_MEXE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1084 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1085 case SIM_IMG: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1086 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1087 * Access to Icon Directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1088 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1089 directory = SIM_DF_GRAPHICS; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1090 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1091 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1092 case SIM_SAI: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1093 case SIM_SLL: | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1094 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1095 * Access to SoLSA Directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1096 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1097 directory = SIM_DF_SOLSA; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1098 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1099 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1100 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1101 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1102 if (sim_data.act_directory NEQ directory) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1103 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1104 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1105 * select directory | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1106 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1107 result = FKT_Select (directory, FALSE, NULL, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1108 if (result NEQ SIM_NO_ERROR) /* directory selection fails */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1109 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1110 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1111 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1112 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1113 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1114 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1115 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1116 if (sim_data.act_field NEQ id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1117 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1118 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1119 * secondly select elementary field | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1120 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1121 result = fkt_select_one (id, data, len); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1122 if (result NEQ SIM_NO_ERROR) /* EF selection fails */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1123 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1124 sim_data.act_field = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1125 #ifdef __INVALID /* more sophisticated SELECT error handling */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1126 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1127 sw1 = (UBYTE)(SIM_Status_Extended ((UBYTE *)response, 6, &size) >> 8); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1128 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1129 if (sw1 NEQ 0x90 AND sw1 NEQ 0x91) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1130 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1131 * SIM Status request failed | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1132 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1133 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1134 else if (((response[4] << 8) | response[5]) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1135 NEQ sim_data.act_directory) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1136 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1137 * SIM Presence Detection indicates invalid SIM | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1138 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1139 sim_data.act_directory = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1140 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1141 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1142 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1143 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1144 sim_data.act_directory = directory; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1145 sim_data.act_field = id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1146 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1147 return result; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1148 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1149 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1150 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1151 * field is already selected | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1152 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1153 return SIM_NO_ERR_FILE_ALREADY_SELECTED; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1154 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1155 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1156 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1157 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1158 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1159 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1160 | STATE : code ROUTINE : FKT_UnblockCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1161 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1162 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1163 PURPOSE : Wrapping function for the SIM driver call SIM_UnblockCHV. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1164 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1165 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1166 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1167 GLOBAL USHORT FKT_UnblockCHV (UBYTE * unblockCHV, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1168 UBYTE * new_CHV, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1169 UBYTE chvType) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1170 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1171 /* Implements Measure# 13 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1172 return (FKT_ChangeCHV_n_UnblockCHV (unblockCHV, new_CHV, chvType, SIMDRV_INS_UNBLOCK_CHV)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1173 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1174 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1175 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1176 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1177 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1178 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1179 | STATE : code ROUTINE : FKT_UpdateBinary | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1180 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1181 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1182 PURPOSE : Wrapping function for the SIM driver call SIM_UpdateBinary. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1183 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1184 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1185 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1186 GLOBAL USHORT FKT_UpdateBinary (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1187 USHORT length, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1188 USHORT offset) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1189 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1190 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1191 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1192 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1193 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1194 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1195 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1196 U8 offset_high; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1197 U8 offset_low; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1198 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1199 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1200 TRACE_FUNCTION ("FKT_UpdateBinary()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1201 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1202 offset_high = (U8)((offset &0x7F00)>>8);/*to make the 8th bit 0 as per 102.221*/ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1203 offset_low = (U8)(offset & 0x00FF); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1204 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1205 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1206 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1207 cmd_header.ins = SIMDRV_INS_UPDATE_BINARY; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1208 cmd_header.p1 = offset_high; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1209 cmd_header.p2 = offset_low; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1210 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1211 data_info.data = (U8 *)data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1212 data_info.c_data = (U8)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1213 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1214 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1215 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1216 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1217 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1218 sw1sw2= simdrv_xch_apdu (reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1219 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1220 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1221 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1222 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1223 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1224 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1225 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1226 | STATE : code ROUTINE : FKT_UpdateRecord | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1227 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1228 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1229 PURPOSE : Wrapping function for the SIM driver call SIM_UpdateRecord. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1230 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1231 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1232 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1233 GLOBAL USHORT FKT_UpdateRecord (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1234 USHORT length, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1235 UBYTE mode, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1236 USHORT record) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1237 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1238 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1239 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1240 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1241 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1242 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1243 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1244 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1245 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1246 #if !defined NTRACE | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1247 /* Implements Measure#32: Row 40 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1248 TRACE_EVENT_P1("FKT_UpdateRecord(): Nr. %hu", record); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1249 #endif | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1250 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1251 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1252 cmd_header.ins = SIMDRV_INS_UPDATE_RECORD; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1253 cmd_header.p1 = (U8)record; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1254 cmd_header.p2 = (U8)mode; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1255 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1256 data_info.data = (U8*)data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1257 data_info.c_data = (U8)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1258 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1259 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1260 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1261 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1262 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1263 sw1sw2= simdrv_xch_apdu (reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1264 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1265 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1266 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1267 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1268 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1269 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1270 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1271 | PROJECT : GSM-PS (6302) MODULE : SIM_FKT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1272 | STATE : code ROUTINE : FKT_VerifyCHV | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1273 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1274 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1275 PURPOSE : Wrapping function for the SIM driver call SIM_VerifyCHV. | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1276 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1277 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1278 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1279 GLOBAL USHORT FKT_VerifyCHV (UBYTE * pin, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1280 UBYTE pin_id) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1281 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1282 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1283 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1284 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1285 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1286 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1287 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1288 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1289 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1290 TRACE_FUNCTION ("FKT_VerifyCHV()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1291 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1292 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1293 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1294 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1295 cmd_header.ins = SIMDRV_INS_VERIFY_CHV; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1296 cmd_header.p1 = 0x00; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1297 cmd_header.p2 = pin_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1298 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1299 data_info.data = (U8 *)pin; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1300 data_info.c_data = MAX_PIN_LEN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1301 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1302 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1303 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1304 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1305 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1306 sw1sw2 = simdrv_xch_apdu(reader_id, cmd_header, data_info, &result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1307 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1308 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1309 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1310 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1311 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1312 +********************************************************************+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1313 | Moved from sim_stk.c - for CQ 34109 under feature flag SIM_TOOLKIT | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1314 +********************************************************************+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1315 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1316 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1317 #ifdef SIM_TOOLKIT | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1318 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1319 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1320 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1321 | PROJECT : GSM-PS (8419) MODULE : SIM_STK | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1322 | STATE : code ROUTINE : FKT_TerminalResponse | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1323 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1324 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1325 PURPOSE : Wrapping function for the SIM driver call SIM_TerminalResponse | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1326 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1327 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1328 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1329 static const UBYTE timer_env[] = { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1330 STK_TIMER_EXPIRATION_TAG, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1331 STK_DEVICE_IDENTITY_LEN+STK_TIMER_ID_LEN+STK_TIMER_VALUE_LEN+6, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1332 STK_DEVICE_IDENTITY_TAG|STK_COMPREHENSION_REQUIRED, STK_DEVICE_IDENTITY_LEN, 0x82, 0x81, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1333 STK_TIMER_ID_TAG|STK_COMPREHENSION_REQUIRED, STK_TIMER_ID_LEN, 0, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1334 STK_TIMER_VALUE_TAG|STK_COMPREHENSION_REQUIRED, STK_TIMER_VALUE_LEN, 0, 0, 0 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1335 }; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1336 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1337 UBYTE pending_timers[9] = {0,0,0,0,0,0,0,0,0}; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1338 UBYTE next_pos_to_fill = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1339 UBYTE next_pos_to_send = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1340 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1341 GLOBAL USHORT FKT_TerminalResponse (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1342 USHORT length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1343 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1344 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1345 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1346 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1347 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1348 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1349 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1350 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1351 UBYTE env[sizeof(timer_env)]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1352 USHORT index; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1353 UBYTE dummy[4]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1354 USHORT error; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1355 USHORT i; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1356 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1357 TRACE_FUNCTION ("FKT_TerminalResponse()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1358 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1359 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1360 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE ; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1361 cmd_header.ins = SIMDRV_INS_TERMINAL_RESPONSE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1362 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1363 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1364 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1365 data_info.data = data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1366 data_info.c_data = (U8)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1367 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1368 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1369 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1370 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1371 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1372 sw1sw2 = simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1373 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1374 sim_data.term_resp_sent = TRUE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1375 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1376 SIM_EM_TERMINAL_RESPONSE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1377 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1378 * if SIM response is OK, try resending pending timer expiry envelopes (send updated envelopes) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1379 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1380 if( 0x9000 == sw1sw2 ) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1381 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1382 for(i=0;i<8;i++) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1383 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1384 if (next_pos_to_fill != next_pos_to_send) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1385 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1386 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1387 * some timer expiry envelopes are pending | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1388 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1389 index = pending_timers[next_pos_to_send]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1390 memcpy (env, timer_env, sizeof(timer_env)); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1391 env[8] = (UBYTE)(index + 1); /* Timer number range is 1..8 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1392 env[11] = sim_data.timer[index].hour; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1393 env[12] = sim_data.timer[index].minute; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1394 env[13] = sim_data.timer[index].second; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1395 error = FKT_Envelope (dummy, env, sizeof(timer_env),0); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1396 if(8 == next_pos_to_send) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1397 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1398 next_pos_to_send = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1399 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1400 else | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1401 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1402 next_pos_to_send++; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1403 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1404 if (error NEQ SIM_NO_ERROR) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1405 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1406 break; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1407 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1408 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1409 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1410 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1411 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1412 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1413 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1414 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1415 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1416 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1417 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1418 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1419 | PROJECT : GSM-PS (8419) MODULE : SIM_STK | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1420 | STATE : code ROUTINE : FKT_Envelope | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1421 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1422 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1423 PURPOSE : Wrapping function for the SIM driver call SIM_Envelope | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1424 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1425 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1426 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1427 GLOBAL USHORT FKT_Envelope (UBYTE * data_out, UBYTE * data_in, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1428 USHORT in_length, USHORT out_length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1429 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1430 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1431 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1432 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1433 USHORT error; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1434 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1435 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1436 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1437 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1438 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1439 TRACE_FUNCTION ("FKT_Envelope()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1440 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1441 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1442 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1443 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1444 cmd_header.ins = SIMDRV_INS_ENVELOPE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1445 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1446 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1447 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1448 data_info.data = data_in; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1449 data_info.c_data = (U8)in_length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1450 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1451 result_info.result = data_out; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1452 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1453 result_info.len = out_length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1454 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1455 sw1sw2 = simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1456 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1457 SIM_EM_ENVELOPE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1458 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1459 sim_data.sim_data_len = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1460 TRACE_EVENT("sim_data.sim_data_len initialised as 0"); /* for debug only - to be removed */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1461 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1462 error = FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1463 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1464 stk_l_cmd = sim_data.sim_data_len << 3; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1465 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1466 return error; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1467 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1468 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1469 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1470 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1471 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1472 | PROJECT : GSM-PS (8419) MODULE : SIM_STK | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1473 | STATE : code ROUTINE : FKT_TerminalProfile | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1474 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1475 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1476 PURPOSE : Wrapping function for the SIM driver call SIM_TerminalProfile | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1477 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1478 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1479 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1480 GLOBAL USHORT FKT_TerminalProfile (UBYTE * data, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1481 USHORT length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1482 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1483 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1484 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1485 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1486 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1487 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1488 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1489 UBYTE response[SIMDRV_MAX_RESULT]; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1490 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1491 TRACE_FUNCTION ("FKT_TerminalProfile()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1492 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1493 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1494 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1495 cmd_header.ins = SIMDRV_INS_TERMINAL_PROFILE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1496 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1497 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1498 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1499 data_info.data = data; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1500 data_info.c_data = (U8)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1501 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1502 result_info.result = response; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1503 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1504 result_info.len = NOT_PRESENT_16BIT; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1505 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1506 sw1sw2= simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1507 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1508 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1509 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1510 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1511 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1512 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1513 /* | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1514 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1515 | PROJECT : GSM-PS (8419) MODULE : SIM_STK | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1516 | STATE : code ROUTINE : FKT_Fetch | | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1517 +--------------------------------------------------------------------+ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1518 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1519 PURPOSE : Wrapping function for the SIM driver call SIM_Fetch | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1520 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1521 */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1522 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1523 GLOBAL USHORT FKT_Fetch (UBYTE * cmd, | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1524 USHORT length) | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1525 { | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1526 USHORT size = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1527 USHORT sw1sw2; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1528 U8 reader_id; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1529 T_SIMDRV_cmd_header cmd_header; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1530 T_SIMDRV_data_info data_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1531 T_SIMDRV_result_info result_info; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1532 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1533 TRACE_FUNCTION ("FKT_Fetch()"); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1534 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1535 reader_id = SIMDRV_VAL_READER_ID__RANGE_MIN; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1536 cmd_header.cla = SIMDRV_GSM_CLASS_BYTE; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1537 cmd_header.ins = SIMDRV_INS_FETCH; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1538 cmd_header.p1 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1539 cmd_header.p2 = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1540 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1541 data_info.data = NULL; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1542 data_info.c_data = 0; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1543 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1544 result_info.result = cmd; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1545 result_info.c_result = size; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1546 result_info.len = (USHORT)length; | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1547 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1548 sw1sw2 = simdrv_xch_apdu(reader_id,cmd_header,data_info,&result_info); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1549 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1550 return FKT_convert_error (sw1sw2,result_info.c_result); | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1551 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1552 } | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1553 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1554 #endif /* SIM_TOOLKIT */ | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1555 | 
| 
d393cd9bb723
src/g23m-*: initial import from Magnetite
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1556 #endif | 
