1 /* |
|
2 * Copyright (c) 2009-2010 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 "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: CSconImsiReader implementation |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include "sconimsireader.h" |
|
20 #include "debug.h" |
|
21 |
|
22 TInt CSconImsiReader::GetImsiL( TDes& aImsi ) |
|
23 { |
|
24 TRACE_FUNC_ENTRY; |
|
25 CTelephony::TRegistrationStatus temp; |
|
26 CSconImsiReader* self = new (ELeave) CSconImsiReader(aImsi, temp); |
|
27 CleanupStack::PushL(self); |
|
28 self->ConstructL(); |
|
29 |
|
30 self->RequestImsi(); |
|
31 |
|
32 TInt err = self->iStatus.Int(); |
|
33 CleanupStack::PopAndDestroy(self); |
|
34 TRACE_FUNC_RET(err); |
|
35 return err; |
|
36 } |
|
37 |
|
38 TInt CSconImsiReader::GetNetworkStatusL( CTelephony::TRegistrationStatus& aRegistrationStatus ) |
|
39 { |
|
40 TRACE_FUNC_ENTRY; |
|
41 TBuf<CTelephony::KIMSISize> temp; |
|
42 CSconImsiReader* self = new (ELeave) CSconImsiReader(temp, aRegistrationStatus); |
|
43 CleanupStack::PushL(self); |
|
44 self->ConstructL(); |
|
45 |
|
46 self->RequestNetworkStatus(); |
|
47 |
|
48 TInt err = self->iStatus.Int(); |
|
49 CleanupStack::PopAndDestroy(self); |
|
50 TRACE_FUNC_RET(err); |
|
51 return err; |
|
52 } |
|
53 |
|
54 void CSconImsiReader::ConstructL() |
|
55 { |
|
56 TRACE_FUNC_ENTRY; |
|
57 iTelephony = CTelephony::NewL(); |
|
58 CActiveScheduler::Add(this); |
|
59 TRACE_FUNC_EXIT; |
|
60 } |
|
61 |
|
62 void CSconImsiReader::RequestImsi() |
|
63 { |
|
64 iImsiReaderStatus = ERequestingImsi; |
|
65 iTelephony->GetSubscriberId(iStatus,iSubscriberIdV1Pckg); |
|
66 SetActive(); |
|
67 CActiveScheduler::Start(); |
|
68 } |
|
69 |
|
70 void CSconImsiReader::RequestNetworkStatus() |
|
71 { |
|
72 iImsiReaderStatus = ERequestingNetworkStatus; |
|
73 iTelephony->GetNetworkRegistrationStatus(iStatus, iNetworkRegistrationV1Pckg); |
|
74 SetActive(); |
|
75 CActiveScheduler::Start(); |
|
76 } |
|
77 |
|
78 CSconImsiReader::~CSconImsiReader() |
|
79 { |
|
80 TRACE_FUNC_ENTRY; |
|
81 delete iTelephony; |
|
82 TRACE_FUNC_EXIT; |
|
83 } |
|
84 |
|
85 CSconImsiReader::CSconImsiReader(TDes& aImsi, CTelephony::TRegistrationStatus& aRegistrationStatus): CActive(EPriorityStandard), |
|
86 iImsi(aImsi), iNetworkStatus(aRegistrationStatus), iSubscriberIdV1Pckg(iSubscriberIdV1), iNetworkRegistrationV1Pckg(iNetworkRegistrationV1) |
|
87 { |
|
88 } |
|
89 |
|
90 void CSconImsiReader::RunL() |
|
91 { |
|
92 TRACE_FUNC_ENTRY; |
|
93 LOGGER_WRITE_1("iStatus: %d", iStatus.Int() ); |
|
94 if ( iStatus == KErrNone ) |
|
95 { |
|
96 if ( iImsiReaderStatus == ERequestingImsi ) |
|
97 { |
|
98 iImsi = iSubscriberIdV1.iSubscriberId; |
|
99 LOGGER_WRITE_1("iImsi: %S", &iImsi); |
|
100 } |
|
101 else if ( iImsiReaderStatus == ERequestingNetworkStatus ) |
|
102 { |
|
103 iNetworkStatus = iNetworkRegistrationV1.iRegStatus; |
|
104 LOGGER_WRITE_1( "iNetworkStatus: %d", (TInt)iNetworkStatus); |
|
105 } |
|
106 } |
|
107 CActiveScheduler::Stop(); |
|
108 TRACE_FUNC_EXIT; |
|
109 } |
|
110 |
|
111 void CSconImsiReader::DoCancel() |
|
112 { |
|
113 TRACE_FUNC_ENTRY; |
|
114 if ( iImsiReaderStatus == ERequestingImsi ) |
|
115 { |
|
116 iTelephony->CancelAsync( CTelephony::EGetSubscriberIdCancel ); |
|
117 } |
|
118 else if ( iImsiReaderStatus == ERequestingNetworkStatus ) |
|
119 { |
|
120 iTelephony->CancelAsync( CTelephony::EGetNetworkRegistrationStatusCancel ); |
|
121 } |
|
122 TRACE_FUNC_EXIT; |
|
123 } |
|