|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the License "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: ?Description |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 #ifndef _CMMUICCMESSHANDLER_ |
|
21 #define _CMMUICCMESSHANDLER_ |
|
22 |
|
23 // INCLUDES |
|
24 #include "muiccoperationbase.h" |
|
25 #include "mmmmesshandlerbase.h" |
|
26 #include "cmmphonetreceiver.h" |
|
27 |
|
28 #include <etelmm.h> // Symbian Etel related types |
|
29 #include <e32def.h> |
|
30 #include <e32base.h> |
|
31 #include <tisi.h> |
|
32 #include <uiccisi.h> |
|
33 |
|
34 // CONSTANTS |
|
35 const TUint8 KFilePathLength( 16 ); |
|
36 const TUint8 KFileDataLength( 200 ); |
|
37 const TUint16 KApduDataLength( 270 ); |
|
38 |
|
39 // UICC master file |
|
40 const TUint16 KMasterFileId( 0x3F00 ); |
|
41 |
|
42 // ADFusim |
|
43 const TUint16 KAdfUsimFileId( 0x7FFF ); |
|
44 |
|
45 // Operator specific dedicated files |
|
46 // Orange operator specific dedicated file |
|
47 const TUint16 KOrangeDedicatedFile( 0x7F40 ); |
|
48 // Operator specific dedicated file |
|
49 const TUint16 KO2DedicatedFile( 0x7F43 ); |
|
50 |
|
51 // UICC elementary files |
|
52 const TUint16 KElemFileAdministrativeData ( 0x6FAD ); |
|
53 const TUint16 KElemFileOperatorName ( 0x6F14 ); |
|
54 const TUint16 KElemFileShortMessages ( 0x6F3C ); |
|
55 const TUint16 KElemFileCellBroadcastMessId ( 0x6F45 ); |
|
56 const TUint16 KElemFileDyn2FlagsOrange ( 0x6F92 ); |
|
57 const TUint16 KElemFileHomeZone ( 0x6F60 ); |
|
58 const TUint16 KElemFileHomeZoneCache1 ( 0x6F61 ); |
|
59 const TUint16 KElemFileHomeZoneCache2 ( 0x6F62 ); |
|
60 const TUint16 KElemFileHomeZoneCache3 ( 0x6F63 ); |
|
61 const TUint16 KElemFileHomeZoneCache4 ( 0x6F64 ); |
|
62 const TUint16 KElemFileUhziueSettings ( 0x6F87 ); |
|
63 const TUint16 KElemFileEhplmn ( 0x6FD9 ); |
|
64 const TUint16 KElemFileImsi ( 0x6F07 ); |
|
65 const TUint16 KElemFileCustomerServiceProfile ( 0x6F15 ); |
|
66 const TUint16 KElemFileServiceProviderName ( 0x6F46 ); |
|
67 const TUint16 KElemFileServiceProviderDisplayInfo ( 0x6FCD ); |
|
68 const TUint16 KElemFileDynFlagsOrange ( 0x6F9F ); |
|
69 const TUint16 KElemFileCallFwdFlagsCphs ( 0x6F13 ); |
|
70 const TUint16 KElemFileCallFwdIndicationStatus ( 0x6FCB ); |
|
71 const TUint16 KElemFileVoiceMsgWaitingFlagsCphs ( 0x6F11 ); |
|
72 const TUint16 KElemFileMessageWaitingIndStatus ( 0x6FCA ); |
|
73 const TUint16 KElemSimServiceTable ( 0x6F38 ); |
|
74 const TUint16 KElemGba ( 0x6FD6 ); |
|
75 const TUint16 KElemEst ( 0x6F56 ); |
|
76 const TUint16 KElemCphsInformation ( 0x6F16 ); |
|
77 |
|
78 const TUint8 KEfSstSize (0xFF); |
|
79 const TUint8 KEfUstSize (0xFF); |
|
80 const TUint8 KEfCphsInfoSize (0xFF); |
|
81 |
|
82 // Unique transaction IDs for all UICC operations |
|
83 enum TUiccTrId |
|
84 { |
|
85 ETrIdNotDefined = 0, |
|
86 ETrIdWriteCallFwdFlagsCphs, |
|
87 ETrIdWriteCallFwdFlagsRel4, |
|
88 ETrIdReadCallFwdFlagsCphs, |
|
89 ETrIdWriteVoiceMsgFlags, |
|
90 ETrIdReadVoiceMsgFlags, // 5 |
|
91 ETrIdReadCipheringIndicatorStatus, |
|
92 ETrIdGetUiccServerStatus, |
|
93 ETrIdGetUiccApplication, |
|
94 ETrIdActivateUiccApplication, |
|
95 ETrIdStartupCompleted, // 10 |
|
96 ETrIdReadImsi, |
|
97 ETrIdPbOpInit, |
|
98 ETrIdReadCsDataEhplmn, |
|
99 ETrIdReadCsDataHplmn, |
|
100 ETrIdReadServiceProviderName, // 15 |
|
101 ETrIdReadServiceProviderDisplayInfo, |
|
102 ETrIdReadCallFwdFlagsRel4, |
|
103 ETrIdReadCsp, |
|
104 ETrIdReadField, |
|
105 ETrIdReadMailboxIdentifier, // 20 |
|
106 ETrIdReadCbMsgIds, |
|
107 ETrIdUpdateCbMsgIdsPhase1, |
|
108 ETrIdUpdateCbMsgIdsPhase2, |
|
109 ETrIdReadCipheringIndicatorStatusCustom, |
|
110 ETrIdNotifyCipheringIndicatorStatusCustom, // 25 |
|
111 ETrIdReadOperatorNameCustom, |
|
112 ETrIdReadViagHomeZoneParamsCustom, |
|
113 ETrIdReadViagHomeZoneCacheCustom, |
|
114 ETrIdWriteViagHomeZoneCacheCustom, |
|
115 ETrIdWriteViagHomeZoneUhziueSettingsCustom, // 30 |
|
116 ETrIdReadVoiceMsgFlagsRel4, |
|
117 ETrIdReadVoiceMsgFlagsCphs, |
|
118 ETrIdWriteVoiceMsgFlagsRel4, |
|
119 ETrIdWriteVoiceMsgFlagsCphs, |
|
120 ETrIdReadDynamicFlags, // 35 |
|
121 ETrIdWriteDynamicFlags, |
|
122 ETrIdReadDynamic2Flags, |
|
123 ETrIdWriteDynamic2Flags, |
|
124 ETrIdSimPowerOff, |
|
125 ETrIdSimWarmReset, //40 |
|
126 ETrIdSimGetATR, |
|
127 ETrIdSimPowerOn, |
|
128 ETrIdSendAPDUv2, |
|
129 ETrIdCardReaderStatus, |
|
130 ETrIdEEapAkaAuthenticate, // 45 |
|
131 ETrIdEEapAuthenticate, |
|
132 ETrIdSendAPDU, |
|
133 ETrIdEEapSimAuthenticate, |
|
134 ETrIdEGbaBootstrap, |
|
135 ETrIdSstCache, // 50 |
|
136 ETrIdEGbaBootstrapRead, |
|
137 ETrIdEGbaBootstrapUpdate, |
|
138 ETrIdEGbaNafDerivation, |
|
139 ETrIdEMbmsMskUpdate, |
|
140 ETrIdEMbmsMtkGeneration, // 55 |
|
141 ETrIdEMbmsMskDeletion, |
|
142 ETrIdRunGsmAlgorithmSim, |
|
143 ETrIdRunGsmAlgorithmAka, |
|
144 ETrIdRunGsmAlgorithmIms, |
|
145 ETrIdActivateIsimApplication, // 60 |
|
146 ETrIdEEapAkaAuthenticateIms, |
|
147 ETrIdReadSMS, |
|
148 ETrIdWriteSMS, |
|
149 ETrIdReadSMSRecordCount, |
|
150 ETrIdReadSMSForComplete, // 65 |
|
151 ETrIdPbInit, |
|
152 ETrIdPbInitFDN, |
|
153 ETrIdPbRead, |
|
154 ETrIdPbReadADN, |
|
155 ETrIdPbUpdate, // 70 |
|
156 ETrIdPbDelete, |
|
157 ETrIdSetFdnStateReadEst, |
|
158 ETrIdSetFdnStateWriteEst, |
|
159 ETrIdSetFdnIcc, |
|
160 ETrIdSetFdnStateReadFileInfo, // 75 |
|
161 ETrIdGetFdnStateReadEst, |
|
162 ETrIdGetFdnStateReadFileInfo, |
|
163 ETrIdCphsCache, |
|
164 ENumOfUiccTrIds |
|
165 }; |
|
166 |
|
167 // Common parameters needed in UICC_APPL_READ_TRANSPARENT, |
|
168 // UICC_APPL_UPDATE_TRANSPARENT, UICC_APPL_READ_LINEAR_FIXED, |
|
169 // UICC_APPL_UPDATE_LINEAR_FIXED, UICC_APPL_FILE_INFO and |
|
170 // UICC_APPL_APDU_SEND |
|
171 class TUiccParamsBase |
|
172 { |
|
173 public: |
|
174 // Constructor |
|
175 TUiccParamsBase(); |
|
176 |
|
177 // Data |
|
178 MUiccOperationBase* messHandlerPtr; // Pointer to message handler |
|
179 TUiccTrId trId; // Unique transaction ID for every UICC operation |
|
180 TUint16 fileId; // ID of elementary file |
|
181 TUint8 fileIdSfi; // Filled only in case SFI is present |
|
182 TUint8 serviceType; // UICC service type |
|
183 TBuf8<KFilePathLength> filePath; // Elementary file path, (DF ) + EF |
|
184 // If same as fileId, no need to fill |
|
185 } ; |
|
186 |
|
187 // Parameters needed in UICC_APPL_FILE_INFO |
|
188 class TUiccApplFileInfo: public TUiccParamsBase |
|
189 { |
|
190 public: |
|
191 // Constructor |
|
192 TUiccApplFileInfo(); |
|
193 }; |
|
194 |
|
195 // Parameters needed in UICC_APPL_READ_TRANSPARENT |
|
196 class TUiccReadTransparent: public TUiccParamsBase |
|
197 { |
|
198 public: |
|
199 // Constructor |
|
200 TUiccReadTransparent(); |
|
201 |
|
202 // Data |
|
203 TUint16 dataOffset; // Offset of elementary file data |
|
204 TUint16 dataAmount; // Used only in reading, bytes to be read |
|
205 }; |
|
206 |
|
207 // Parameters needed in UICC_APPL_UPDATE_TRANSPARENT |
|
208 class TUiccWriteTransparent: public TUiccReadTransparent |
|
209 { |
|
210 public: |
|
211 // Constructor |
|
212 TUiccWriteTransparent(); |
|
213 |
|
214 // Data |
|
215 TBuf8<KFileDataLength> fileData; // Data to be updated |
|
216 }; |
|
217 |
|
218 // Parameters needed in UICC_APPL_READ_LINEAR_FIXED |
|
219 class TUiccReadLinearFixed: public TUiccReadTransparent |
|
220 { |
|
221 public: |
|
222 // Constructor |
|
223 TUiccReadLinearFixed(); |
|
224 |
|
225 // Data |
|
226 TUint8 record; // Record number |
|
227 } ; |
|
228 |
|
229 // Parameters needed in UICC_APPL_UPDATE_LINEAR_FIXED |
|
230 class TUiccWriteLinearFixed: public TUiccReadLinearFixed |
|
231 { |
|
232 public: |
|
233 // Constructor |
|
234 TUiccWriteLinearFixed(); |
|
235 // Data |
|
236 TBuf8<KFileDataLength> fileData; // Data to be updated |
|
237 } ; |
|
238 |
|
239 // Parameters needed in UICC_APPL_APDU_SEND |
|
240 class TUiccSendApdu: public TUiccParamsBase |
|
241 { |
|
242 public: |
|
243 // Constructor |
|
244 TUiccSendApdu(); |
|
245 // Data |
|
246 TBuf8<KApduDataLength> apdu; // ADPU going to be send |
|
247 } ; |
|
248 |
|
249 // Parameters needed in UICC_APDU_REQ |
|
250 class TUiccParamsApduReq: public TUiccParamsBase |
|
251 { |
|
252 public: |
|
253 // Constructor |
|
254 TUiccParamsApduReq(); |
|
255 |
|
256 // Data |
|
257 TUint8 action; // UICC_SB_APDU_ACTIONS / Action |
|
258 // Data |
|
259 TBuf8<KApduDataLength> apduData; // APDU data |
|
260 } ; |
|
261 |
|
262 // FORWARD DECLARATIONS |
|
263 class CMmPhoNetSender; |
|
264 class CMmPhoNetReceiver; |
|
265 class CMmMessageRouter; |
|
266 |
|
267 // CLASS DECLARATION |
|
268 |
|
269 /** |
|
270 * Class used for sending and receiving UICC messages |
|
271 */ |
|
272 class CMmUiccMessHandler : |
|
273 public CBase, |
|
274 public MMmMessageReceiver, |
|
275 public MUiccOperationBase |
|
276 { |
|
277 public: // Constructors and destructor |
|
278 |
|
279 /** |
|
280 * Two-phased constructor. |
|
281 */ |
|
282 static CMmUiccMessHandler* NewL( |
|
283 CMmPhoNetSender* aPhoNetSender, |
|
284 CMmPhoNetReceiver* aPhoNetReceiver, |
|
285 CMmMessageRouter* aMessageRouter ); |
|
286 |
|
287 /** |
|
288 * Destructor. |
|
289 */ |
|
290 virtual ~CMmUiccMessHandler(); |
|
291 |
|
292 public: // New functions |
|
293 |
|
294 /** |
|
295 * Receives ISI messages from phonet |
|
296 * @param aIsiMsg Received ISI message |
|
297 * @return void |
|
298 */ |
|
299 void ReceiveMessageL( const TIsiReceiveC& aIsiMsg ); |
|
300 |
|
301 /** |
|
302 * Create and send UICC_APPL_CMD_REQ message |
|
303 * @param aParams Parameters needed in message |
|
304 * @param aApplType Application type |
|
305 * @return KErrNone or error code |
|
306 */ |
|
307 TInt CreateUiccApplCmdReq( |
|
308 const TUiccParamsBase& aParams, |
|
309 const TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM ); |
|
310 |
|
311 /** |
|
312 * Create and send UICC_APPLICATION_REQ message |
|
313 * @param aParams Parameters needed in message |
|
314 * @param aServiceType Service type |
|
315 * @param aApplType Application type |
|
316 * @return KErrNone or error code |
|
317 */ |
|
318 TInt CreateUiccApplicationReq( |
|
319 const TUiccParamsBase& aParams, |
|
320 TUint8 aServiceType, |
|
321 TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM ); |
|
322 |
|
323 /** |
|
324 * Provide UICC application ID |
|
325 * @return TUint8 |
|
326 */ |
|
327 TUint8 GetApplicationId() const; |
|
328 |
|
329 /** |
|
330 * Provide UICC application type |
|
331 * @return TUint8 |
|
332 */ |
|
333 TUint8 GetApplicationType() const; |
|
334 |
|
335 /** |
|
336 * Provide UICC card type |
|
337 * @return TUint8 |
|
338 */ |
|
339 TUint8 GetCardType() const; |
|
340 |
|
341 /** |
|
342 * Provide UICC application file id |
|
343 * @return const TDesC8& |
|
344 */ |
|
345 const TDesC8& GetApplicationFileId() const; |
|
346 |
|
347 /** |
|
348 * Provide UICC application AID |
|
349 * @return const TDesC8& |
|
350 */ |
|
351 const RMobilePhone::TAID& GetAid() const; |
|
352 |
|
353 /** |
|
354 * Create and send UICC_CONNECTOR_REQ message |
|
355 * @param aParams Parameters needed in message |
|
356 * @return KErrNone or error code |
|
357 */ |
|
358 TInt CreateUiccConnectorReq( const TUiccParamsBase& aParams ); |
|
359 |
|
360 /** |
|
361 * Create and send UICC_APDU_REQ message |
|
362 * @param aParams Parameters needed in message |
|
363 * @return KErrNone or error code |
|
364 */ |
|
365 TInt CreateUiccApduReq( const TUiccParamsApduReq& aParams ); |
|
366 |
|
367 /** |
|
368 * Create and send UICC_CARD_REQ |
|
369 * @param aParams Parameters needed in message |
|
370 * @return KErrNone or error code |
|
371 */ |
|
372 TInt CreateUiccCardReq( const TUiccParamsBase& aParams ); |
|
373 |
|
374 /** |
|
375 * Caches SIM service table (EFust or EFsst depending |
|
376 * on card type in use) |
|
377 * @return none |
|
378 */ |
|
379 void InitializeSimServiceTableCache(); |
|
380 |
|
381 /** |
|
382 * Gets service status from service table |
|
383 * (from EFust or EFsst depending on card type) |
|
384 * on card type in use) |
|
385 * @return ETrue if service supported, otherwise EFalse |
|
386 */ |
|
387 TBool GetServiceStatus( TUint8 aServiceNo ); |
|
388 |
|
389 /** |
|
390 * Gets ISIM application status |
|
391 * @return TInt status of ISIM application |
|
392 */ |
|
393 TUint8 GetIsimApplicationStatus() const; |
|
394 |
|
395 /** |
|
396 * Handle UICC response messages |
|
397 * @param aTraId Transaction ID |
|
398 * @param aStatus status of the UICC response |
|
399 * @param aFileData Descriptor for file data |
|
400 * @return KErrNone or error code |
|
401 */ |
|
402 TInt ProcessUiccMsg( |
|
403 TInt aTraId, |
|
404 TInt aStatus, |
|
405 const TDesC8& aFileData ); |
|
406 |
|
407 /** |
|
408 * Checks is ISim application found during boot |
|
409 * @return TBool ETrue if ISIM application found, otherwise EFalse |
|
410 */ |
|
411 TBool IsIsimApplicationFound() const; |
|
412 |
|
413 /** |
|
414 * Get PIN1 key reference |
|
415 * @return PIN1 key reference |
|
416 */ |
|
417 TUint8 GetPin1KeyReference(); |
|
418 |
|
419 /** |
|
420 * Get PIN2 key reference |
|
421 * @return PIN2 key reference |
|
422 */ |
|
423 TUint8 GetPin2KeyReference(); |
|
424 |
|
425 /** |
|
426 * Get active PIN |
|
427 * @return Active PIN |
|
428 */ |
|
429 RMobilePhone::TMobilePhoneSecurityCode GetActivePin(); |
|
430 |
|
431 /** |
|
432 * Change active PIN |
|
433 * @return void |
|
434 */ |
|
435 void ChangeActivePin(); |
|
436 |
|
437 /** |
|
438 * Caches CPHS Information from elementary file in |
|
439 * case if ICC card |
|
440 * @return none |
|
441 */ |
|
442 void InitializeCphsInformationCache(); |
|
443 |
|
444 /** |
|
445 * Gets status of the CPHS information in case of ICC card |
|
446 * (CPHS information is read form elementary file CPHS Information. |
|
447 * file identifies is 0x6F16 ) |
|
448 * @return ETrue if service supported, otherwise EFalse |
|
449 */ |
|
450 TBool GetCphsInformationStatus( TUint8 aServiceNo ); |
|
451 |
|
452 public: // Functions from base classes |
|
453 |
|
454 protected: // New functions |
|
455 |
|
456 protected: // Functions from base classes |
|
457 |
|
458 private: |
|
459 |
|
460 void SendTerminalProfile(); |
|
461 |
|
462 /** |
|
463 * C++ default constructor. |
|
464 */ |
|
465 CMmUiccMessHandler(); |
|
466 |
|
467 /** |
|
468 * By default Symbian 2nd phase constructor is private. |
|
469 */ |
|
470 void ConstructL( |
|
471 CMmPhoNetSender* aPhoNetSender, |
|
472 CMmPhoNetReceiver* aPhoNetReceiver ); |
|
473 |
|
474 /** |
|
475 * Create and append UICC_SB_APPL_PATH |
|
476 * @param aParams Parameters needed for subblock |
|
477 * @param aIsiMsg ISI message |
|
478 * @param aMsgOffset Offset where subblock is appended |
|
479 * @param aSizeOfSubblock Subblock size to be returned |
|
480 * @return void |
|
481 */ |
|
482 void CreateUiccSbApplPath( |
|
483 const TUiccParamsBase& aParams, |
|
484 TIsiSend& aIsiMsg, |
|
485 TUint8 aMsgOffset, |
|
486 TUint8& aSizeOfSubblock ); |
|
487 |
|
488 /** |
|
489 * Create and append UICC_SB_CLIENT |
|
490 * @param aIsiMsg ISI message |
|
491 * @param aMsgOffset Offset where subblock is appended |
|
492 * @param aApplType type of the application |
|
493 * @return void |
|
494 */ |
|
495 void CreateUiccSbClient( |
|
496 TIsiSend& aIsiMsg, |
|
497 TUint8 aMsgOffset, |
|
498 const TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM ); |
|
499 |
|
500 /** |
|
501 * Create and append UICC_SB_TRANSPARENT |
|
502 * @param aParams Parameters needed for subblock |
|
503 * @param aIsiMsg ISI message |
|
504 * @param aMsgOffset Offset where subblock is appended |
|
505 * @return void |
|
506 */ |
|
507 void CreateUiccSbTransparent( |
|
508 const TUiccReadTransparent& aParams, |
|
509 TIsiSend& aIsiMsg, |
|
510 TUint8 aMsgOffset ); |
|
511 |
|
512 /** |
|
513 * Create and append UICC_SB_LINEAR_FIXED |
|
514 * @param aParams Parameters needed for subblock |
|
515 * @param aIsiMsg ISI message |
|
516 * @param aMsgOffset Offset where subblock is appended |
|
517 * @return void |
|
518 */ |
|
519 void CreateUiccSbLinearFixed( |
|
520 const TUiccReadLinearFixed& aParams, |
|
521 TIsiSend& aIsiMsg, |
|
522 TUint8 aMsgOffset ); |
|
523 |
|
524 /** |
|
525 * Create and append UICC_SB_FILE_DATA |
|
526 * @param aIsiMsg ISI message |
|
527 * @param aMsgOffset Offset where subblock is appended |
|
528 * @param aUpdateData Data to be updated |
|
529 * @return void |
|
530 */ |
|
531 void CreateUiccSbFileData( |
|
532 TIsiSend& aIsiMsg, |
|
533 TUint8 aMsgOffset, |
|
534 const TDesC8& aUpdateData ); |
|
535 |
|
536 /** |
|
537 * Create and append UICC_SB_APPLICATION |
|
538 * @param aIsiMsg ISI message |
|
539 * @param aMsgOffset Offset where subblock is appended |
|
540 * @return void |
|
541 */ |
|
542 void CreateUiccSbApplication( |
|
543 TIsiSend& aIsiMsg, |
|
544 TUint8 aMsgOffset, |
|
545 TUint8 aApplType = UICC_APPL_TYPE_UICC_USIM ); |
|
546 |
|
547 /** |
|
548 * Get file data |
|
549 * @param aIsiMsg Received ISI message |
|
550 * @return File data |
|
551 */ |
|
552 const TPtrC8 GetFileData( const TIsiReceiveC& aIsiMsg ); |
|
553 |
|
554 /** |
|
555 * Get file FCI |
|
556 * @param aIsiMsg Received ISI message |
|
557 * @return FCI data |
|
558 */ |
|
559 const TPtrC8 GetFileFCI( const TIsiReceiveC& aIsiMsg ); |
|
560 |
|
561 /** |
|
562 * Create and append UICC_SB_APDU_ACTIONS |
|
563 * @param aIsiMsg ISI message |
|
564 * @return void |
|
565 */ |
|
566 void CreateUiccSbApduActions( |
|
567 TIsiSend& aIsiMsg, |
|
568 TUint8 aAction); |
|
569 |
|
570 /** |
|
571 * Handle UICC_RESP ISI message |
|
572 * @param aIsiMsg ISI message |
|
573 * @return Server status |
|
574 */ |
|
575 TUint8 HandleUiccResp( const TIsiReceiveC& aIsiMsg ); |
|
576 |
|
577 /** |
|
578 * Handle UICC_APPLICATION_RESP ISI message |
|
579 * @param aIsiMsg ISI message |
|
580 * @return KErrNone or error code |
|
581 */ |
|
582 TInt HandleUiccApplicationResp( const TIsiReceiveC& aIsiMsg ); |
|
583 |
|
584 /** |
|
585 * Get apdu data |
|
586 * @param aIsiMsg Received ISI message |
|
587 * @return APDU data |
|
588 */ |
|
589 const TPtrC8 GetApduData( const TIsiReceiveC& aIsiMsg ); |
|
590 |
|
591 /** |
|
592 * Create and append UICC_SB_APDU |
|
593 * @param aIsiMsg ISI message |
|
594 * @param aMsgOffset Offset where subblock is appended |
|
595 * @param aAPDUData Data to be updated |
|
596 * @return void |
|
597 */ |
|
598 void CreateUiccSbApdu( |
|
599 TIsiSend& aIsiMsg, |
|
600 TUint8 aMsgOffset, |
|
601 const TDesC8& aAPDUData ); |
|
602 |
|
603 /** |
|
604 * Handles response to the service table reading |
|
605 * @param aStatus status of the UICC response |
|
606 * @param aFileData service table data |
|
607 * @return void |
|
608 */ |
|
609 void SimServiceTableCacheResp( |
|
610 TInt aStatus, |
|
611 const TDesC8& aFileData ); |
|
612 |
|
613 /** |
|
614 * Stores PIN key references |
|
615 * @param aFileData File data |
|
616 * @return none |
|
617 */ |
|
618 void StorePinKeyReferences( const TDesC8& aFileData ); |
|
619 |
|
620 /** |
|
621 * Handles response to the CPHS information reading |
|
622 * @param aStatus status of the UICC response |
|
623 * @param aFileData CPHS information data |
|
624 * @return void |
|
625 */ |
|
626 void CphsInformationCacheResp( |
|
627 TInt aStatus, |
|
628 const TDesC8& aFileData ); |
|
629 |
|
630 |
|
631 private: // Data |
|
632 |
|
633 CMmPhoNetSender* iPhoNetSender; |
|
634 |
|
635 // Pointer to the Message router |
|
636 CMmMessageRouter* iMessageRouter; |
|
637 |
|
638 // Array for message handler pointers |
|
639 TFixedArray<MUiccOperationBase*, ENumOfUiccTrIds> iMessHandlerPrtList; |
|
640 |
|
641 TUint8 iCardType; |
|
642 TUint8 iApplicationType; |
|
643 TUint8 iApplicationId; |
|
644 TUint8 iApplicationStatus; |
|
645 TUint8 iUiccServerStatus; |
|
646 TUint8 iUiccClientId; |
|
647 TUint8 iIsimApplicationId; |
|
648 TUint8 iIsimApplicationStatus; |
|
649 TUint8 iUiccIsimClientId; |
|
650 TUint8 iPin1Id; |
|
651 TUint8 iPin2Id; |
|
652 TBool iIsimApplicationFound; |
|
653 // Application file ID, two bytes |
|
654 TBuf8<2> iApplFileId; |
|
655 // Flag for keeping tranactionid in list, so that future indications |
|
656 // can be relayed to interested party. |
|
657 TBool iDoNotRemoveTransactionID; |
|
658 // SIM Service Table, used to cache EFsst |
|
659 TBuf8<KEfSstSize> iSSTFile; |
|
660 // USIM Service Table, used to cache EFust |
|
661 TBuf8<KEfUstSize> iUSTFile; |
|
662 // CPHS Information Table, used to cache CPHS information |
|
663 TBuf8<KEfCphsInfoSize> iCPHSInformation; |
|
664 // Store AID of active application |
|
665 RMobilePhone::TAID iAid; |
|
666 // Store active PIN |
|
667 RMobilePhone::TMobilePhoneSecurityCode iActivePin; |
|
668 |
|
669 }; |
|
670 |
|
671 #endif // _CMMUICCMESSHANDLER_ |
|
672 |
|
673 // End of File |