diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmsecuritytsywithdispatcher.cpp --- a/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmsecuritytsywithdispatcher.cpp Mon May 03 13:37:20 2010 +0300 +++ b/telephonyserverplugins/common_tsy/commontsy/src/mmtsy/cmmsecuritytsywithdispatcher.cpp Thu May 06 15:10:38 2010 +0100 @@ -1,275 +1,275 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#ifdef USING_CTSY_DISPATCHER - -/** - * This file contains additional function definitions for the CMmSecurityTsy class - * in CTSY for use when the CTSY is used with the CTSY Dispatcher. - */ - -//INCLUDES -#include "cmmsecuritytsy.h" -#include "cmmphonetsy.h" -#include "cmmtsyreqhandlestore.h" -#include "cmmphoneextinterface.h" -#include "CMmCustomSecurityTsy.h" - -// --------------------------------------------------------------------------- -// CMmSecurityTsy::VerifySecurityCodeL -// This method sends a security code requiring verification to -// the phone. If code is required for lock setting, it sends it to the -// extension and orders re-execution of SetLockSetting function. -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -TInt CMmSecurityTsy::VerifySecurityCodeL( - const TTsyReqHandle aTsyReqHandle, - const TDataPackage& aPackage ) - { - - RMobilePhone::TMobilePhoneSecurityCode* type = - reinterpret_cast - ( aPackage.Ptr1() ); - RMobilePhone::TCodeAndUnblockCode* codes = - reinterpret_cast - ( aPackage.Ptr2() ); - - // Get request handle to check whether server is busy with previous - // request - TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> - GetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneVerifySecurityCode ); - - if ( 0 < reqHandle ) - { - //The request is already in processing because of previous request - //Complete request with status value informing the client about - //the situation. - iMmPhoneTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy ); - } - else - { - - TInt ret( KErrArgument ); - - //check that the code is available - if ( 0 != codes->iCode.Length() ) - { - if ( RMobilePhone::ESecurityCodePin1 == *type ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PIN VERIFY REQUESTED"); - iLastPinRequested = EPin1Requested; - } - if ( RMobilePhone::ESecurityCodePin2 == *type ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PIN2 VERIFY REQUESTED"); - iLastPinRequested = EPin2Requested; - } - //This is to prevent unnecessary PIN1 request after PUK code - //request. Corrected at the same time with error TKEN-5WFJ7Y - if ( ( ( RMobilePhone::ESecurityCodePuk1 == *type ) || - ( RMobilePhone::ESecurityCodePuk2 == *type ) ) && - ( 0 < codes->iUnblockCode.Length() ) ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PUK VERIFY REQUESTED"); - iPukCodeVerify = ETrue; - } - //This is to prevent unnecessary PIN1 request after phone password - //request (PYRA-5UBCLC) - if ( RMobilePhone::ESecurityCodePhonePassword == *type ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PHONE PASSWORD VERIFY REQUESTED"); - iPhonePasswordVerify = ETrue; - } - iMmPhoneTsy->iMmPhoneExtInterface->DeliverCode( *codes ); - - // CheckSecurityCode needs to set the lock as well, so pass the - // code for lock setting - if ( iMmPhoneTsy->iMmCustomTsy ) - { - iMmPhoneTsy->iMmCustomTsy->DeliverCodeL( *codes ); - } - - ret = iMmPhoneTsy->iMmPhoneExtInterface-> - VerifySecurityCodeL( aPackage ); - - if ( KErrNone == ret ) - { - iMmPhoneTsy->iReqHandleType = - CMmPhoneTsy::EMultimodePhoneVerifySecurityCode; - } - else - { - // Complete verify with error - iMmPhoneTsy->ReqCompleted( aTsyReqHandle, ret ); - - // If FDN request is on-going, complete is also with error - reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> - GetTsyReqHandle( - CMmPhoneTsy::EMultimodePhoneSetFdnSetting ); - if ( reqHandle != - CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) - { - iMmPhoneTsy->CompleteSetFdnSettingL( ret ); - } - reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> - GetTsyReqHandle( - CMmPhoneTsy::EMultimodePhoneSetLockSetting ); - - if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != - reqHandle && EActiveCodeToUpinAskUpin == - iActiveCodeToUpinState ) - { - //Verifying UPIN failed - CompleteSetLockSetting( ret, - RMobilePhone::EStatusLockUnknown, - RMobilePhone::ELockSetUnknown ); - } - } - } - else - { - iMmPhoneTsy->ReqCompleted( aTsyReqHandle, KErrArgument ); - } - - } // end check request handle - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CMmSecurityTsy::CompleteVerifySecurityCodeL -// This method completes an outstanding asynchronous -// VerifySecurityCode request -// (other items were commented in a header). -// --------------------------------------------------------------------------- -// -void CMmSecurityTsy::CompleteVerifySecurityCodeL( - TInt aErrorCode ) - { -TFLOGSTRING2("TSY: CMmSecurityTsy::CompleteVerifySecurityCode - Error:%d", aErrorCode); - - TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> - ResetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneVerifySecurityCode ); - - if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != reqHandle ) - { - // Complete the request - iMmPhoneTsy->ReqCompleted( reqHandle, aErrorCode ); - - // This needs to be done for PIN code verification when user has - // dual line SIM and user has changed the line. If PIN code - // verification fails, we need to request PIN code again. - - // NOTE! This MUST NOT happen in bootup when PIN code is verified - // and NOT when PIN code is changed to ON/OFF from settings. - - // DO NOT complete if SetLockSetting is called -> PIN ON/OFF change - // from general settings. - - // Not completed if PUK code verify or Phonepassword verify - TTsyReqHandle phoneSetLockSettingHandle = - iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle( - CMmPhoneTsy::EMultimodePhoneSetLockSetting ); - - // DO NOT complete if booting up - if ( ( iMmPhoneTsy->iBootState.iSecReady ) && - ( iLastPinRequested != EPinUnknown ) && - ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown == - phoneSetLockSettingHandle ) && - ( KErrNone != aErrorCode ) && - ( !iPukCodeVerify ) && - ( !iPhonePasswordVerify ) ) - { - // IF PIN1 REQUESTED LAST - if ( iLastPinRequested == EPin1Requested ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - PIN VERIFICATION NEEDED"); - CompleteNotifySecurityEventL( RMobilePhone::EPin1Required, - KErrNone ); - iLastPinRequested = EPinUnknown; - } - // IF PIN2 REQUESTED LAST - if (iLastPinRequested == EPin2Requested) - { -TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - PIN2"); - iLastPinRequested = EPinUnknown; - } - } - else if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != - phoneSetLockSettingHandle && EActiveCodeToUpinAskUpin == - iActiveCodeToUpinState ) - { -TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - iActiveCodeToUpinState = EActiveCodeToUpinAskPin"); - if ( KErrNone == aErrorCode ) - { - iActiveCodeToUpinState = EActiveCodeToUpinAskPin; - CompleteNotifySecurityEventL( - RMobilePhone::EPin1Required, KErrNone ); - } - else - { - iActiveCodeToUpinState = EActiveCodeToUpinIdle; - CompleteSetLockSetting( KErrAccessDenied, - RMobilePhone::EStatusLockUnknown, - RMobilePhone::ELockSetUnknown ); - } - } - //Set iPukCodeVerify to EFalse - iPukCodeVerify = EFalse; - - //Set iPhonePasswordVerify to EFalse - iPhonePasswordVerify = EFalse; - - // FDN HANDLING - reqHandle = iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle( - CMmPhoneTsy::EMultimodePhoneSetFdnSetting ); - - if ( reqHandle != CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) - { - if ( KErrNone == aErrorCode ) - { - aErrorCode = iMmPhoneTsy->iMmPhoneExtInterface-> - SetFdnSetting( iMmPhoneTsy->iRetFdnSetting ); - } - else - { - iMmPhoneTsy->CompleteSetFdnSettingL( aErrorCode ); - } - } - - if ( phoneSetLockSettingHandle != CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) - if ( KErrNone == aErrorCode ) - { - CMmDataPackage dataPackage; - //add into the package the stored lock and setting - dataPackage.PackData( &iLockSettingPhoneLock, &iLockSetting ); - aErrorCode = iMmPhoneTsy->iMmPhoneExtInterface-> - SetLockSettingL( &dataPackage ); - } - else - { - CompleteSetLockSetting( aErrorCode, RMobilePhone::EStatusLockUnknown, RMobilePhone::ELockSetUnknown ); - } - - // Reset just used code, empty for next round. - RMobilePhone::TCodeAndUnblockCode codes; - _LIT( KNullCharacter, "\0" ); - codes.iCode.Copy( KNullCharacter ); - iMmPhoneTsy->iMmPhoneExtInterface->DeliverCode( codes ); - } - } - -#endif //USING_CTSY_DISPATCHER +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifdef USING_CTSY_DISPATCHER + +/** + * This file contains additional function definitions for the CMmSecurityTsy class + * in CTSY for use when the CTSY is used with the CTSY Dispatcher. + */ + +//INCLUDES +#include "cmmsecuritytsy.h" +#include "cmmphonetsy.h" +#include "cmmtsyreqhandlestore.h" +#include "cmmphoneextinterface.h" +#include "CMmCustomSecurityTsy.h" + +// --------------------------------------------------------------------------- +// CMmSecurityTsy::VerifySecurityCodeL +// This method sends a security code requiring verification to +// the phone. If code is required for lock setting, it sends it to the +// extension and orders re-execution of SetLockSetting function. +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TInt CMmSecurityTsy::VerifySecurityCodeL( + const TTsyReqHandle aTsyReqHandle, + const TDataPackage& aPackage ) + { + + RMobilePhone::TMobilePhoneSecurityCode* type = + reinterpret_cast + ( aPackage.Ptr1() ); + RMobilePhone::TCodeAndUnblockCode* codes = + reinterpret_cast + ( aPackage.Ptr2() ); + + // Get request handle to check whether server is busy with previous + // request + TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> + GetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneVerifySecurityCode ); + + if ( 0 < reqHandle ) + { + //The request is already in processing because of previous request + //Complete request with status value informing the client about + //the situation. + iMmPhoneTsy->ReqCompleted( aTsyReqHandle, KErrServerBusy ); + } + else + { + + TInt ret( KErrArgument ); + + //check that the code is available + if ( 0 != codes->iCode.Length() ) + { + if ( RMobilePhone::ESecurityCodePin1 == *type ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PIN VERIFY REQUESTED"); + iLastPinRequested = EPin1Requested; + } + if ( RMobilePhone::ESecurityCodePin2 == *type ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PIN2 VERIFY REQUESTED"); + iLastPinRequested = EPin2Requested; + } + //This is to prevent unnecessary PIN1 request after PUK code + //request. Corrected at the same time with error TKEN-5WFJ7Y + if ( ( ( RMobilePhone::ESecurityCodePuk1 == *type ) || + ( RMobilePhone::ESecurityCodePuk2 == *type ) ) && + ( 0 < codes->iUnblockCode.Length() ) ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PUK VERIFY REQUESTED"); + iPukCodeVerify = ETrue; + } + //This is to prevent unnecessary PIN1 request after phone password + //request (PYRA-5UBCLC) + if ( RMobilePhone::ESecurityCodePhonePassword == *type ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::VerifySecurityCodeL - PHONE PASSWORD VERIFY REQUESTED"); + iPhonePasswordVerify = ETrue; + } + iMmPhoneTsy->iMmPhoneExtInterface->DeliverCode( *codes ); + + // CheckSecurityCode needs to set the lock as well, so pass the + // code for lock setting + if ( iMmPhoneTsy->iMmCustomTsy ) + { + iMmPhoneTsy->iMmCustomTsy->DeliverCodeL( *codes ); + } + + ret = iMmPhoneTsy->iMmPhoneExtInterface-> + VerifySecurityCodeL( aPackage ); + + if ( KErrNone == ret ) + { + iMmPhoneTsy->iReqHandleType = + CMmPhoneTsy::EMultimodePhoneVerifySecurityCode; + } + else + { + // Complete verify with error + iMmPhoneTsy->ReqCompleted( aTsyReqHandle, ret ); + + // If FDN request is on-going, complete is also with error + reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> + GetTsyReqHandle( + CMmPhoneTsy::EMultimodePhoneSetFdnSetting ); + if ( reqHandle != + CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) + { + iMmPhoneTsy->CompleteSetFdnSettingL( ret ); + } + reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> + GetTsyReqHandle( + CMmPhoneTsy::EMultimodePhoneSetLockSetting ); + + if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != + reqHandle && EActiveCodeToUpinAskUpin == + iActiveCodeToUpinState ) + { + //Verifying UPIN failed + CompleteSetLockSetting( ret, + RMobilePhone::EStatusLockUnknown, + RMobilePhone::ELockSetUnknown ); + } + } + } + else + { + iMmPhoneTsy->ReqCompleted( aTsyReqHandle, KErrArgument ); + } + + } // end check request handle + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CMmSecurityTsy::CompleteVerifySecurityCodeL +// This method completes an outstanding asynchronous +// VerifySecurityCode request +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CMmSecurityTsy::CompleteVerifySecurityCodeL( + TInt aErrorCode ) + { +TFLOGSTRING2("TSY: CMmSecurityTsy::CompleteVerifySecurityCode - Error:%d", aErrorCode); + + TTsyReqHandle reqHandle = iMmPhoneTsy->iTsyReqHandleStore-> + ResetTsyReqHandle( CMmPhoneTsy::EMultimodePhoneVerifySecurityCode ); + + if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != reqHandle ) + { + // Complete the request + iMmPhoneTsy->ReqCompleted( reqHandle, aErrorCode ); + + // This needs to be done for PIN code verification when user has + // dual line SIM and user has changed the line. If PIN code + // verification fails, we need to request PIN code again. + + // NOTE! This MUST NOT happen in bootup when PIN code is verified + // and NOT when PIN code is changed to ON/OFF from settings. + + // DO NOT complete if SetLockSetting is called -> PIN ON/OFF change + // from general settings. + + // Not completed if PUK code verify or Phonepassword verify + TTsyReqHandle phoneSetLockSettingHandle = + iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle( + CMmPhoneTsy::EMultimodePhoneSetLockSetting ); + + // DO NOT complete if booting up + if ( ( iMmPhoneTsy->iBootState.iSecReady ) && + ( iLastPinRequested != EPinUnknown ) && + ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown == + phoneSetLockSettingHandle ) && + ( KErrNone != aErrorCode ) && + ( !iPukCodeVerify ) && + ( !iPhonePasswordVerify ) ) + { + // IF PIN1 REQUESTED LAST + if ( iLastPinRequested == EPin1Requested ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - PIN VERIFICATION NEEDED"); + CompleteNotifySecurityEventL( RMobilePhone::EPin1Required, + KErrNone ); + iLastPinRequested = EPinUnknown; + } + // IF PIN2 REQUESTED LAST + if (iLastPinRequested == EPin2Requested) + { +TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - PIN2"); + iLastPinRequested = EPinUnknown; + } + } + else if ( CMmPhoneTsy::EMultimodePhoneReqHandleUnknown != + phoneSetLockSettingHandle && EActiveCodeToUpinAskUpin == + iActiveCodeToUpinState ) + { +TFLOGSTRING("TSY: CMmSecurityTsy::CompleteVerifySecurityCodeL - iActiveCodeToUpinState = EActiveCodeToUpinAskPin"); + if ( KErrNone == aErrorCode ) + { + iActiveCodeToUpinState = EActiveCodeToUpinAskPin; + CompleteNotifySecurityEventL( + RMobilePhone::EPin1Required, KErrNone ); + } + else + { + iActiveCodeToUpinState = EActiveCodeToUpinIdle; + CompleteSetLockSetting( KErrAccessDenied, + RMobilePhone::EStatusLockUnknown, + RMobilePhone::ELockSetUnknown ); + } + } + //Set iPukCodeVerify to EFalse + iPukCodeVerify = EFalse; + + //Set iPhonePasswordVerify to EFalse + iPhonePasswordVerify = EFalse; + + // FDN HANDLING + reqHandle = iMmPhoneTsy->iTsyReqHandleStore->GetTsyReqHandle( + CMmPhoneTsy::EMultimodePhoneSetFdnSetting ); + + if ( reqHandle != CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) + { + if ( KErrNone == aErrorCode ) + { + aErrorCode = iMmPhoneTsy->iMmPhoneExtInterface-> + SetFdnSetting( iMmPhoneTsy->iRetFdnSetting ); + } + else + { + iMmPhoneTsy->CompleteSetFdnSettingL( aErrorCode ); + } + } + + if ( phoneSetLockSettingHandle != CMmPhoneTsy::EMultimodePhoneReqHandleUnknown ) + if ( KErrNone == aErrorCode ) + { + CMmDataPackage dataPackage; + //add into the package the stored lock and setting + dataPackage.PackData( &iLockSettingPhoneLock, &iLockSetting ); + aErrorCode = iMmPhoneTsy->iMmPhoneExtInterface-> + SetLockSettingL( &dataPackage ); + } + else + { + CompleteSetLockSetting( aErrorCode, RMobilePhone::EStatusLockUnknown, RMobilePhone::ELockSetUnknown ); + } + + // Reset just used code, empty for next round. + RMobilePhone::TCodeAndUnblockCode codes; + _LIT( KNullCharacter, "\0" ); + codes.iCode.Copy( KNullCharacter ); + iMmPhoneTsy->iMmPhoneExtInterface->DeliverCode( codes ); + } + } + +#endif //USING_CTSY_DISPATCHER