comparison src/aci2/aci/psa_sim.h @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-PS (6147)
4 | Modul : PSA
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : Definitions for the protocol stack adapter
18 | Subscriber Identity Module ( SIM )
19 +-----------------------------------------------------------------------------
20 */
21
22 #ifndef PSA_SIM_H
23 #define PSA_SIM_H
24
25 /*==== CONSTANTS ==================================================*/
26 #define PIN_LEN (8) /* PIN length in bytes */
27 #define MIN_PIN_LEN (4) /* Marcus: Issue 1589: 28/01/2003: Minimum PIN length in bytes */
28 #define PUK_LEN (8) /* PUK length in bytes */
29 #define ICC_LEN (10) /* chip card identifier length in bytes */
30 #define SRV_TAB_LEN MAX_SRV_TBL /* service table length in bytes */
31 #define CBM_ID_LEN (10) /* CBM id length in bytes */
32 #define DPER_KEY_LEN (16) /* de-pers. key length in bytes */
33 #define ACC_MAX (8) /* maximum number of simultanious
34 SIM access */
35 #define SRV_ALLOC_ACTIV (0x03) /* SIM service allocated and activated */
36
37 #define NO_ENTRY (-1) /* not a valid entry */
38
39 /* Masking for SIM service table: */
40 #define NO_ALLOCATED 0
41 #define ALLOCATED_AND_DEACTIVATED 2
42 #define ALLOCATED_AND_ACTIVATED 3
43
44 /* CPHS_CSP PLMN mode bit*/
45 #define CPHS_CSP_PLMN_MODE_BIT_OFF 0x00
46 #define CPHS_CSP_PLMN_MODE_BIT_ON 0X01
47
48 #define UBYTES_PER_PLMN 3
49
50 typedef enum
51 {
52 SRV_CHV1_Disable = 1, /* #1 CHV1 disable function */
53 SRV_ADN, /* #2 Abbreviated Dialling Numbers (ADN) */
54 SRV_FDN, /* #3 Fixed Dialling Numbers (FDN) */
55 SRV_SMS_Storage, /* #4 Short Message Storage (SMS) */
56 SRV_AOC, /* #5 Advice of Charge (AoC) */
57 SRV_CCP, /* #6 Capability Configuration Parameters (CCP) */
58 SRV_PLMN_Select, /* #7 PLMN selector */
59 SRV_RFU1, /* #8 RFU */
60 SRV_MSISDN, /* #9 MSISDN */
61 SRV_EXT1, /* #10 Extension1 */
62 SRV_EXT2, /* #11 Extension2 */
63 SRV_SMS_Parms, /* #12 SMS Parameters */
64 SRV_LDN, /* #13 Last Number Dialled (LND) */
65 SRV_CBM_Ident, /* #14 Cell Broadcast Message Identifier */
66 SRV_GrpLvl1, /* #15 Group Identifier Level 1 */
67 SRV_GrpLvl2, /* #16 Group Identifier Level 2 */
68 SRV_SrvProvName, /* #17 Service Provider Name */
69 SRV_SDN, /* #18 Service Dialling Numbers (SDN) */
70 SRV_EXT3, /* #19 Extension3 */
71 SRV_RFU2, /* #20 RFU */
72 SRV_VCGS, /* #21 VGCS Group Identifier List (EFVGCS and EFVGCSS) */
73 SRV_VBS, /* #22 VBS Group Identifier List (EFVBS and EFVBSS) */
74 SRV_EMLPP, /* #23 enhanced Multi Level Precedence and Pre emption Service */
75 SRV_AutoEMLPP, /* #24 Automatic Answer for eMLPP */
76 SRV_DtaDownlCB, /* #25 Data download via SMS CB */
77 SRV_DtaDownlPP, /* #26 Data download via SMS PP */
78 SRV_MnuSel, /* #27 Menu selection */
79 SRV_CalCntrl, /* #28 Call control */
80 SRV_ProActSIM, /* #29 Proactive SIM */
81 SRV_CBMIdRnge, /* #30 Cell Broadcast Message Identifier Ranges */
82 SRV_BDN, /* #31 Barred Dialling Numbers (BDN) */
83 SRV_EXT4, /* #32 Extension4 */
84 SRV_DePersCK, /* #33 De personalization Control Keys */
85 SRV_CoOpNwL, /* #34 Co operative Network List */
86 SRV_SMS_StatRep, /* #35 Short Message Status Reports */
87 SRV_NwIndAlMS, /* #36 Network's indication of alerting in the MS */
88 SRV_MOSMCtrlSIM, /* #37 Mobile Originated Short Message control by SIM */
89 SRV_GPRS, /* #38 GPRS */
90 SRV_RFU3, /* #39 Image (IMG) */
91 SRV_RFU4, /* #40 SoLSA (Support of Local Service Area) */
92 SRV_USSDsupportInCC, /* #41 USSD string data object supported in Call Control */
93 SRV_No_42, /* #42 RUN AT COMMAND command */
94 SRV_No_43, /* #43 User controlled PLMN Selector with Access Technology */
95 SRV_No_44, /* #44 Operator controlled PLMN Selector with Access Technology */
96 SRV_No_45, /* #45 HPLMN Selector with Access Technology */
97 SRV_No_46, /* #46 CPBCCH Information */
98 SRV_No_47, /* #47 Investigation Scan */
99 SRV_No_48, /* #48 Extended Capability Configuration Parameters */
100 SRV_No_49, /* #49 MExE */
101 SRV_No_50, /* #50 RPLMN last used Access Technology */
102 SRV_PNN, /* #51 PLMN Network Name */
103 SRV_OPL, /* #52 Operator PLMN List */
104 SRV_No_53, /* #53 Mailbox Dialling Numbers */
105 SRV_No_54, /* #54 Message Waiting Indication Status */
106 SRV_No_55, /* #55 Call Forwarding Indication Status */
107 SRV_No_56, /* #56 Service Provider Display Information */
108 SRV_No_57, /* #57 Multimedia Messaging Service (MMS) */
109 SRV_No_58, /* #58 Extension 8 */
110 SRV_No_59 /* #59 MMS User Connectivity Parameters */
111 } T_SIM_SRV;
112
113 typedef enum /* SIM status */
114 {
115 NO_VLD_SS = 0, /* not a valid SIM status */
116 SS_OK, /* SIM is OK */
117 SS_INV, /* SIM is invalid */
118 SS_BLKD, /* SIM is blocked */
119 SS_URCHB /* SIM is unreachable */
120 } T_SIM_SIMST;
121
122 typedef enum /* PIN status */
123 {
124 NO_VLD_PS = 0, /* not a valid PIN status */
125 PS_RDY, /* ready, no PIN is requested */
126 PS_PIN1, /* PIN 1 is requested */
127 PS_PIN2, /* PIN 2 is requested */
128 PS_PUK1, /* PUK 1 is requested */
129 PS_PUK2 /* PUK 2 is requested */
130
131 } T_SIM_PINST;
132
133 typedef enum /* PIN1 enable/disable status */
134 {
135 NO_VLD_PEDS = 0, /* not a valid PED status */
136 PEDS_ENA, /* PIN 1 enabled */
137 PEDS_DIS /* PIN 1 disabled */
138
139 } T_SIM_PEDST;
140
141 typedef enum /* SIM access type */
142 {
143 NO_VLD_ACT = 0, /* not a valid access type */
144 ACT_RD_DAT, /* read a datafield */
145 ACT_WR_DAT, /* write a datafield */
146 ACT_RD_REC, /* read a record */
147 ACT_WR_REC, /* write a record */
148 ACT_INC_DAT /* increment a datafield */
149
150 } T_SIM_ACTP;
151
152 /*==== TYPES ======================================================*/
153 typedef struct SIMSetPrm
154 {
155 UBYTE actProc; /* activation procedure */
156 UBYTE STKprof[MAX_STK_PRF]; /* SIM toolkit profile */
157 UBYTE PINType; /* type of PIN */
158 CHAR curPIN[PIN_LEN]; /* current PIN */
159 CHAR newPIN[PIN_LEN]; /* new PIN */
160 CHAR unblkKey[PUK_LEN]; /* unblocking key */
161 /*
162 ** This flag is the customisation flag, introuduced for the Cust1 MMI. It is defaulted to 0, and is
163 ** changed by the AT%CUST=n command. If the %CUST command is not received, the ACI and
164 ** other afffected entities will continue to behave as normal
165 */
166 UBYTE cust_mode;
167 /*
168 ** This flag is the STK Call or Short Message Control flag, introuduced for the Cust1 MMI.
169 ** It is defaulted to 1, and is changed by the AT%SATCC=n command. If the %SATCC command is not received,
170 ** the ACI entity will continue to behave as normal. If CC or SM Control By SIM is disabled it will be re-enabled
171 ** automatically, on receipt of a Terminal Response from the MMI.
172 */
173 UBYTE sat_cc_mode;
174 #ifdef FF_DUAL_SIM
175 UBYTE SIM_Selected; /* stores the currently selected SIM number*/
176 #endif /*FF_DUAL_SIM*/
177 } T_SIM_SET_PRM;
178
179 typedef struct SIMAccPrm
180 {
181 UBYTE ntryUsdFlg; /* flags entry usage */
182 UBYTE accType; /* type of access */
183 USHORT reqDataFld; /* requested datafield identifier */
184 USHORT dataOff; /* datafield offset */
185 UBYTE recNr; /* record number */
186 BOOL check_dataLen; /* has size of data to be checked against size of exch buffer ? */
187 UBYTE dataLen; /* data length */
188 UBYTE * exchData; /* points to exchange data buffer */
189 UBYTE recMax; /* maximum records */
190 USHORT errCode; /* error code */
191 void (*rplyCB)(SHORT aId); /* points to reply call-back */
192 } T_SIM_ACC_PRM;
193
194 typedef struct SIMTrnsAccPrm
195 {
196 UBYTE cmd; /* access command */
197 USHORT reqDataFld; /* requested datafield identifier */
198 UBYTE p1; /* parameter 1 */
199 UBYTE p2; /* parameter 2 */
200 UBYTE p3; /* parameter 3 */
201 USHORT dataLen; /* data length in bytes */
202 UBYTE * transData; /* points to data buffer */
203 } T_SIM_TRNS_ACC_PRM;
204
205 typedef struct
206 {
207 UBYTE sw1; /* SIM result code 1 */
208 UBYTE sw2; /* SIM result code 2 */
209 USHORT rspLen; /* length of response data */
210 UBYTE * rsp; /* ponter to response data */
211 } T_SIM_TRNS_RSP_PRM;
212
213 #ifdef FF_SAT_E
214 typedef struct
215 {
216 UBYTE dtiConn; /* dti connection qualifier */
217 UBYTE dtiUnit; /* dti connection unit */
218 UBYTE chnId; /* move to sat_bip_chn channel id */
219 UBYTE bipConn; /* bip connection qualifier */
220 UBYTE genRes; /* general result */
221 UBYTE addRes; /* additional result */
222 } T_SIM_SAT_CHN;
223
224 #endif /* FF_SAT_E */
225
226 #ifdef FF_SAT_E
227 typedef struct
228 {
229 T_SIM_SAT_CHN sat_chn_prm;
230 void (*dti_cb)(UBYTE dtiConn, UBYTE chnId); /* holds callback for DTI estb */
231 void (*bip_cb)(UBYTE bipConn, UBYTE chnId);/* holds callback for BIP estb */
232 } T_SIM_DTI_CH_PRM;
233
234 #endif /* F_SAT_E */
235
236
237 typedef struct
238 {
239 UBYTE plmn[UBYTES_PER_PLMN]; /* Packed PLMN as stored on the SIM */
240 UBYTE pnn_rec_num;
241 USHORT lac1;
242 USHORT lac2;
243 } T_opl;
244
245 typedef struct
246 {
247 UBYTE num_rcd; /* Number of records in EFopl */
248 UBYTE opl_status; /* Status of OPL records retrieval */
249 T_opl opl_rcd[OPL_MAX_RECORDS];
250 } T_opl_field;//EONS
251
252 /*
253 * Compare this with the similiar struct T_pnn_name in psa_mm.h
254 */
255 typedef struct
256 {
257 UBYTE v_plmn; /* valid flag */
258 UBYTE long_len; /* length of operator long name */
259 UBYTE long_ext_dcs; /* octet 3 of IEI */
260 UBYTE long_name [MAX_LONG_OPER_LEN-1];/* long name for operator, no '\0' */
261 UBYTE shrt_len; /* length of operator short name */
262 UBYTE shrt_ext_dcs; /* octet 3 of IEI */
263 UBYTE shrt_name [MAX_SHRT_OPER_LEN-1];/* short name for operator, no '\0' */
264 } T_pnn;
265
266 typedef struct
267 {
268 UBYTE num_rcd;
269 UBYTE pnn_status;
270 T_pnn pnn_rcd[PNN_MAX_RECORDS];
271 } T_pnn_field;
272
273 typedef struct
274 {
275 UBYTE len; /* length of atr */
276 UBYTE data[MAX_SIM_ATR]; /* atr data */
277 } T_SIM_ATR;
278
279 typedef struct SIMShrdParm
280 {
281 UBYTE owner; /* identifies the used set */
282 SHORT aId; /* access identifier */
283 T_SIM_SET_PRM setPrm[OWN_MAX]; /* possible sets */
284 T_SIM_ACC_PRM atb[ACC_MAX]; /* table of access parameter */
285 #ifdef FF_DUAL_SIM
286 UBYTE SIM_Powered_on; /* stores the currently powered SIM number*/
287 UBYTE SIM_Selection; /* flag to indicate if SIM selection is taking place*/
288 #endif /*FF_DUAL_SIM*/
289 UBYTE PINStat; /* status of PIN requirement */
290 UBYTE pn1Cnt; /* PIN 1 counter */
291 UBYTE pn2Cnt; /* PIN 2 counter */
292 UBYTE pk1Cnt; /* PUK 1 counter */
293 UBYTE pk2Cnt; /* PUK 2 counter */
294 UBYTE pn1Stat; /* PIN 1 status */
295 UBYTE pn2Stat; /* PIN 2 status */
296 UBYTE PINQuery; /* CPIN? when CFUN=0 */
297 UBYTE crdPhs; /* phase of card */
298 UBYTE SIMStat; /* status of SIM card */
299 UBYTE PEDStat; /* PIN1 enable/disable status */
300 UBYTE crdFun; /* SIM card functionality */
301 UBYTE srvTab[SRV_TAB_LEN]; /* SIM service table */
302 T_imsi_field imsi; /* IMSI */
303 UBYTE PLMN_Mode_Bit; /* PLMN mode bit in EF_CSP */
304 UBYTE mnc_len; /* length of MNC in IMSI (2 or 3 digits)*/
305 USHORT rslt; /* result of SIM operation */
306 UBYTE synCs; /* SIM synchronisation cause */
307 BOOL ciSIMEnabled; /* current ciphering indicator state */
308 int fuRef; /* Reference for File Update */
309 BOOL imei_blocked;
310 #ifdef FF_SAT_E
311 T_SIM_DTI_CH_PRM *sim_dti_chPrm; /* points to sim dti channel parameters */
312 #endif /* FF_SAT_E */
313 T_opl_field opl_list; /* Operator PLMN list (for EONS) */
314 T_pnn_field pnn_list; /* Operator PNN list (for EONS) */
315 UBYTE sat_class_e_dti_id; /* DTI ID for SAT class E */
316 T_SIM_ATR atr; /* Answer to Reset */
317 UBYTE overall_cust_mode; /* Overall Cust Mode, this is set when the SIM is initially activated,
318 it is incumbent on the system that once set, every ACI channel
319 will use the same customisation mode */
320 T_ACI_SIMEF_MODE SIMEFMode[CMD_SRC_MAX]; /* SIMEF mode for each command source */
321 T_ACI_CLASS classFDN; /* FDN classtype during SIM_ACTIVATE_REQ / SIM_ACTIVATE_CNF */
322 T_ACI_PB_STAT pb_stat; /* SIM phonebook status */
323 } T_SIM_SHRD_PRM;
324
325
326
327 typedef enum
328 {
329 ACI_INIT_TYPE_ALL = 0, /* init all parameters */
330 ACI_INIT_TYPE_SOFT_OFF /* init only parameters for soft power off */
331 } T_ACI_INIT_TYPE;
332
333
334 /*==== PROTOTYPES =================================================*/
335
336 EXTERN BOOL psaSIM_hasCustModeBeenSet(void);
337
338 EXTERN SHORT psaSIM_VerifyPIN ( void );
339 EXTERN SHORT psaSIM_ChangePIN ( void );
340 EXTERN SHORT psaSIM_DisablePIN ( void );
341 EXTERN SHORT psaSIM_EnablePIN ( void );
342 EXTERN SHORT psaSIM_UnblockCard ( void );
343 EXTERN void psaSIM_SyncSIM ( void );
344 EXTERN SHORT psaSIM_AccessSIMData ( void );
345 #ifdef FF_DUAL_SIM
346 EXTERN SHORT psaSIM_SelectSIM ( void );
347 #endif /*FF_DUAL_SIM*/
348 EXTERN SHORT psaSIM_ActivateSIM ( void );
349 EXTERN void psaSIM_Init ( T_ACI_INIT_TYPE init_type );
350 EXTERN void psaSIM_InitAtbNtry ( SHORT idx );
351 EXTERN void psaSIM_CloseAtb ( USHORT error );
352 EXTERN SHORT psaSIM_atbNewEntry ( void );
353 EXTERN SHORT psaSIM_atbFindDatFld ( USHORT datFld2Find,
354 UBYTE accType2Find,
355 UBYTE recNr2Find );
356 EXTERN CHAR* psaSIM_cnvrtIMSI2ASCII ( CHAR * imsiBuf );
357 EXTERN void psaSIM_decodeIMSI (UBYTE* imsi_field, UBYTE imsi_c_field, CHAR* imsi_asciiz);
358 EXTERN void psaSIM_encodeIMSI (CHAR* imsi_asciiz, UBYTE* imsi_c_field, UBYTE* imsi_field);
359 #ifdef SIM_PERS_OTA
360 EXTERN void aci_slock_ota_init();
361 #endif
362
363
364 #ifdef TRACING
365 EXTERN void psaSIM_shrPrmDump ( void );
366 #endif /* TRACING */
367
368 EXTERN BOOL psaSIM_ChkSIMSrvSup ( UBYTE srvNr );
369
370 EXTERN SHORT psaSIM_TrnsSIMAccess ( T_SIM_TRNS_ACC_PRM * prm );
371
372 #ifdef FF_SAT_E
373 EXTERN void psaSIM_SATBIPChn ( T_SIM_SAT_CHN chnInf,
374 void (*cb)(UBYTE bipConn, UBYTE chnId));
375 EXTERN void psaSIM_SATChn ( T_SIM_SAT_CHN chnInf,
376 void (*cb)(UBYTE dtiConn, UBYTE chnId));
377 EXTERN void psaSIM_EvDatAvail ( BOOL evStat );
378 EXTERN void psaSIM_Bip_Req ( void );
379 EXTERN void psaSIM_Bip_Config_Req ( );
380 EXTERN void psaSIM_Dti_Req ( ULONG link_id );
381 #endif /* #ifdef FF_SAT_E */
382
383 /*==== EXPORT =====================================================*/
384
385 #ifdef PSA_SIMF_C
386
387 GLOBAL T_SIM_SHRD_PRM simShrdPrm;
388
389 #else
390
391 EXTERN T_SIM_SHRD_PRM simShrdPrm;
392
393 #endif /* PSA_SIMF_C */
394
395
396
397 #endif /* PSA_SIM_H */
398
399 /*==== EOF =======================================================*/