equal
deleted
inserted
replaced
38 #include "ctsyprivatecrpkeys.h" |
38 #include "ctsyprivatecrpkeys.h" |
39 #include <featureuids.h> |
39 #include <featureuids.h> |
40 |
40 |
41 // ======== MEMBER FUNCTIONS ======== |
41 // ======== MEMBER FUNCTIONS ======== |
42 |
42 |
43 CMmCustomTsy::CMmCustomTsy() |
43 CMmCustomTsy::CMmCustomTsy(): |
|
44 iReqHandleType(ECustomTsyReqHandleUnknown) |
44 { |
45 { |
45 iMmPhoneTsy = NULL; |
46 iMmPhoneTsy = NULL; |
46 iMmCustomExtInterface = NULL; |
47 iMmCustomExtInterface = NULL; |
47 Mem::FillZ( iMmSubTsy, sizeof( iMmSubTsy ) ); |
48 Mem::FillZ( iMmSubTsy, sizeof( iMmSubTsy ) ); |
48 |
49 |
194 const TInt aIpc, |
195 const TInt aIpc, |
195 const TDataPackage& aPackage ) |
196 const TDataPackage& aPackage ) |
196 { |
197 { |
197 TInt ret = KErrNone; |
198 TInt ret = KErrNone; |
198 TInt trapError = KErrNone; |
199 TInt trapError = KErrNone; |
199 iReqHandleType = ECustomTsyReqHandleUnknown; |
200 |
|
201 // Ensure the ReqHandleType is unset. |
|
202 // This will detect cases where this method indirectly calls itself |
|
203 // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost). |
|
204 // Such cases are not supported because iReqHandleType is in the context of this class instance, |
|
205 // not this request, and we don't want the values set by the inner request and the outer request |
|
206 // interfering with each other. |
|
207 __ASSERT_DEBUG(iReqHandleType==ECustomTsyReqHandleUnknown, User::Invariant()); |
200 |
208 |
201 // before processing further the request, check if offline mode status |
209 // before processing further the request, check if offline mode status |
202 // is enabled and if the given request can be perfomed in that case. |
210 // is enabled and if the given request can be perfomed in that case. |
203 if ( ERfsStateInfoInactive == iMmPhoneTsy->GetRfStateInfo() && |
211 if ( ERfsStateInfoInactive == iMmPhoneTsy->GetRfStateInfo() && |
204 !IsRequestPossibleInOffline( aIpc ) ) |
212 !IsRequestPossibleInOffline( aIpc ) ) |
255 ret = CMmTsyBase::DoBaseExtFuncL( aTsyReqHandle, aIpc, aPackage ); |
263 ret = CMmTsyBase::DoBaseExtFuncL( aTsyReqHandle, aIpc, aPackage ); |
256 |
264 |
257 // if extension modules did not serve this request |
265 // if extension modules did not serve this request |
258 if ( KErrNotSupported == ret ) |
266 if ( KErrNotSupported == ret ) |
259 { |
267 { |
260 // reset last tsy request type |
268 // Ensure the ReqHandleType is unset. |
261 iReqHandleType = ECustomTsyReqHandleUnknown; |
269 // This will detect cases where this method indirectly calls itself |
262 |
270 // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost). |
|
271 // Such cases are not supported because iReqHandleType is in the context of this class instance, |
|
272 // not this request, and we don't want the values set by the inner request and the outer request |
|
273 // interfering with each other. |
|
274 __ASSERT_DEBUG(iReqHandleType==ECustomTsyReqHandleUnknown, User::Invariant()); |
|
275 |
263 switch ( aIpc ) |
276 switch ( aIpc ) |
264 { |
277 { |
265 // Perform IMS Authentication |
278 // Perform IMS Authentication |
266 case EMobilePhoneIMSAuthenticate: |
279 case EMobilePhoneIMSAuthenticate: |
267 ret = ImsAuthenticationL( aTsyReqHandle, |
280 ret = ImsAuthenticationL( aTsyReqHandle, |
543 SetTypeOfResponse ( iReqHandleType, aTsyReqHandle ); |
556 SetTypeOfResponse ( iReqHandleType, aTsyReqHandle ); |
544 #else |
557 #else |
545 iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, |
558 iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, |
546 aTsyReqHandle ); |
559 aTsyReqHandle ); |
547 #endif // REQHANDLE_TIMER |
560 #endif // REQHANDLE_TIMER |
|
561 // We've finished with this value now. Clear it so it doesn't leak |
|
562 // up to any other instances of this method down the call stack |
|
563 iReqHandleType = ECustomTsyReqHandleUnknown; |
548 } |
564 } |
549 } |
565 } |
550 } |
566 } |
551 |
567 |
552 return ret; |
568 return ret; |