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