# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282202894 -10800 # Node ID 594d5976637393bb1b0cdae456ef90775ef27a11 # Parent c58fd5f0c2408043bcf496d0cd5cfa84791e9504 Revision: 201031 Kit: 201033 diff -r c58fd5f0c240 -r 594d59766373 cbs/cbsui/UiInc/CCbsUiAddFromIndexDialog.h --- a/cbs/cbsui/UiInc/CCbsUiAddFromIndexDialog.h Thu Jul 15 19:16:18 2010 +0300 +++ b/cbs/cbsui/UiInc/CCbsUiAddFromIndexDialog.h Thu Aug 19 10:28:14 2010 +0300 @@ -23,7 +23,7 @@ #define __CCBSADDFROMINDEXDIALOG_H // INCLUDES -#include +#include #include #include "CbsUiConstants.h" diff -r c58fd5f0c240 -r 594d59766373 cellular/PsetNotesUi/Src/PsuiQueryDialog.cpp --- a/cellular/PsetNotesUi/Src/PsuiQueryDialog.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/cellular/PsetNotesUi/Src/PsuiQueryDialog.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -53,11 +53,18 @@ TKeyResponse CPsuiQueryDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) { - if ( ( aKeyEvent.iScanCode == EStdKeyNo || aKeyEvent.iCode == EKeyNo ) && - aType == EEventKeyUp ) + const TBool noKeyReleased = + ( aKeyEvent.iScanCode == EStdKeyNo || aKeyEvent.iCode == EKeyNo ) && + aType == EEventKeyUp; + const TBool escPressed = aKeyEvent.iCode == EKeyEscape; + + // AknDialogShutter sends esc keys so dismiss dialog + if ( noKeyReleased || escPressed ) { // End -key was pressed, so exit this query dialog - TryExitL( EKeyNo ); + TryExitL( EKeyNo ); + RDebug::Printf("PSETNOTESUI: exiting dialog"); + return EKeyWasConsumed; } return EKeyWasNotConsumed; diff -r c58fd5f0c240 -r 594d59766373 cellular/SSSettings/inc/CSSSettingsRefreshHandler.h --- a/cellular/SSSettings/inc/CSSSettingsRefreshHandler.h Thu Jul 15 19:16:18 2010 +0300 +++ b/cellular/SSSettings/inc/CSSSettingsRefreshHandler.h Thu Aug 19 10:28:14 2010 +0300 @@ -27,8 +27,8 @@ #include #include #include -#include -#include +#include +#include #include #include "CSSSettingsActiveObject.h" diff -r c58fd5f0c240 -r 594d59766373 cellular/SSSettings/src/CSSSettingsRefreshHandler.cpp --- a/cellular/SSSettings/src/CSSSettingsRefreshHandler.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/cellular/SSSettings/src/CSSSettingsRefreshHandler.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -19,7 +19,7 @@ // INCLUDE FILES #include -#include +#include #include // BT SAP Central Repository key. #include diff -r c58fd5f0c240 -r 594d59766373 cellular/telephonysettings/src/PsetNetwork.cpp --- a/cellular/telephonysettings/src/PsetNetwork.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/cellular/telephonysettings/src/PsetNetwork.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -340,6 +340,12 @@ { iTempNetInfo.iAccess = ENetNetworkGSM; } + + /** Implementation of forbidden operator icon begins */ + // Set network status for displaying forbidden operator icon + iTempNetInfo.iStatus = static_cast( nwNames.iStatus ); + /** Implementation of forbidden operator icon ends */ + array->AppendL( iTempNetInfo ); i++; } diff -r c58fd5f0c240 -r 594d59766373 convergedcallengine/csplugin/src/cspcall.cpp --- a/convergedcallengine/csplugin/src/cspcall.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/convergedcallengine/csplugin/src/cspcall.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -216,6 +216,8 @@ case RMobileCall::EStatusDialling: CSPLOGSTRING(CSPINT, "CSPCall callstate Dialling"); { + // Start streams also for MO video call to prevent audio routing problems + // with other applications. if ( iAudioHandler && ( iParams->CallType() == CCPCall::ECallTypeCSVoice || iParams->CallType() == CCPCall::ECallTypeVideo ) ) @@ -283,6 +285,17 @@ // Agreement with TSY is that the // COLP number is available in connected state. NotifyRemotePartyNumberChanged(); + + // Stop streams for MO video call so that Video Telephony can + // receive RemCon commands instead of Phone. + if ( iMobileOriginated + && iAudioHandler + && iAudioStatus == ECSPCallAudioStatusActive + && iParams->CallType() == CCPCall::ECallTypeVideo ) + { + iAudioStatus = ECSPCallAudioStatusInactive; + iAudioHandler->Stop(); + } break; } // Indicates that call is disconnecting. (Same as RCall::HangingUp) diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/EnPolicy/Src/SosEnPolicy/CSosEnPolicySatRefresh.cpp --- a/phoneclientserver/EnPolicy/Src/SosEnPolicy/CSosEnPolicySatRefresh.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/phoneclientserver/EnPolicy/Src/SosEnPolicy/CSosEnPolicySatRefresh.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -23,8 +23,8 @@ #include "CSOSEmergencyNumberPolicyHandler.h" #include "CSosEnPolicySatRefresh.h" -#include -#include +#include +#include #include // Property values diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Group/PhoneServer.mmp --- a/phoneclientserver/phoneserver/Group/PhoneServer.mmp Thu Jul 15 19:16:18 2010 +0300 +++ b/phoneclientserver/phoneserver/Group/PhoneServer.mmp Thu Aug 19 10:28:14 2010 +0300 @@ -135,5 +135,6 @@ LIBRARY centralrepository.lib LIBRARY imageconversion.lib LIBRARY bitmaptransforms.lib +LIBRARY ecom.lib // End of File diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Group/bld.inf --- a/phoneclientserver/phoneserver/Group/bld.inf Thu Jul 15 19:16:18 2010 +0300 +++ b/phoneclientserver/phoneserver/Group/bld.inf Thu Aug 19 10:28:14 2010 +0300 @@ -21,7 +21,9 @@ DEFAULT PRJ_EXPORTS - +..\inc\ussd\ussdinterfaceconstants.hrh MW_LAYER_PLATFORM_EXPORT_PATH(ussdinterfaceconstants.hrh) +..\inc\ussd\CUssdExtensionInterface.h MW_LAYER_PLATFORM_EXPORT_PATH(CUssdExtensionInterface.h) +..\inc\ussd\CUssdExtensionInterface.inl MW_LAYER_PLATFORM_EXPORT_PATH(CUssdExtensionInterface.inl) backup_registration.xml z:/private/10000850/backup_registration.xml diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Inc/Ussd/CPhSrvUssdManager.h --- a/phoneclientserver/phoneserver/Inc/Ussd/CPhSrvUssdManager.h Thu Jul 15 19:16:18 2010 +0300 +++ b/phoneclientserver/phoneserver/Inc/Ussd/CPhSrvUssdManager.h Thu Aug 19 10:28:14 2010 +0300 @@ -38,6 +38,8 @@ class CAknGlobalMsgQuery; class CPhSrvUssdSessionCancelWaiter; class CPhSrvUssdNotifyNWRelease; +// RM-RIM 417-66528 +class CUssdExtensionInterface; // CLASS DECLARATION @@ -214,6 +216,18 @@ const TDes8& aMsgData, const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes); + + // RM-RIM 417-66528 + /** Third stage handler for received messages meant for extension + */ + void PorcessReceivedMessageInExtesnionL(const TDes8& aMsgData, + const RMobileUssdMessaging::TMobileUssdAttributesV1& + aMsgAttributes); + /** Third stage handler for received messages + */ + void ProcessReceivedMessageL(const TDes8& aMsgData, + const RMobileUssdMessaging::TMobileUssdAttributesV1& + aMsgAttributes); // Restart the reply timer void RestartReplyTimerL(); @@ -223,6 +237,11 @@ // Set timer and activate it if there are notifications available void SetActiveIfPendingNotificationsExist(); + // RM-RIM 417-66528 + // Create and Initialize the global message query + void CreateGlobalMessageQueryL( + const RMobileUssdMessaging::TMobileUssdAttributesV1& + aMsgAttributes); // Launch the global message query (used from RunL) void LaunchGlobalMessageQueryL(); @@ -418,6 +437,10 @@ // An asynchronous callback for sending MO ACK messages CAsyncCallBack* iMoAckCallback; + + // RM-RIM 417-66528 + // Pointer to the UssdExtension + CUssdExtensionInterface* iUssdExtnInterface; }; #endif // CPHSRVUSSDMANAGER_H diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.h Thu Aug 19 10:28:14 2010 +0300 @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2002-2005 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: Extends the ussd functionality. + * + */ +#ifndef __CUSSDEXTENSIONINTERFACE_H__ +#define __CUSSDEXTENSIONINTERFACE_H__ + +// INCLUDES + +#include +#include +#include +// FORWARD DECLARATIONS + +// CONSTANTS +const TUid KUssdExtensionInterfaceUid = + { + KUssdExtensionInterfaceUidValue + }; + +// CLASS DECLARATION + +/** + * Base class for Ussd Extension Plugin. + * + * This API allows customizing the USSD sending feature of the S60 Telephony + * applications at runtime. + * + * The API defines two roles: + * 1) Validates the USSD string while sending. if it is unauthorized + * in the context shall terminate the request. + * 2) Validates the USSD string while receiving, the extension will get the first chance to consume the reply if needed + * + * + * Note: + * The customizer needs only one plug-in implementation for a variant, and so supports only rom-only plug-in. + */ +class CUssdExtensionInterface : public CBase + { +public: + // Constructors and destructor + /** + * NewL + * Wraps ECom object instantitation. Will return the + * default interface implementation, which matches to + * given aOperationName. + */ + static CUssdExtensionInterface* NewL(); + + /** + * NewL + * Wraps ECom object instantitation. Will search for + * interface implementation, which matches to given + * aOperationName. + * @param aOperationName name of requested implementation. + * Implementations advertise their "name" as specified + * in their resource file field + * IMPLEMENTATION_INFO::default_data. + */ + static CUssdExtensionInterface* NewL(const TDesC8& aMatch); + +public: + // API to be implemented by ECOM plug-in + + /** + * Validate/Authenticate the Ussd string Before Sending from + * the USSD Send handler + * When Ussd Extention plugin return true, then ussd manager will continue sending of the ussd + * Otherwise the transaction will be terminated with KErrAccessDenined + * + * @param aMessageData + * @param aMessageAttributes . + */ + virtual TBool + ValidateUssdMsgSending( + const TDesC8& aMessageData, + const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttribute) = 0; + /** + * Validate/Authenticate the Ussd response received by the + * USSD receive handler + * + * @param aMessageData + * @return true implies that the ussd response is valid for the extension. + * otherwise pass it to the observer. . + */ + virtual TBool ValidateUssdResponse(const TDesC8& aMessage) = 0; + /** + * if ValidateUssdResponse returns true, then the extension plugin is waiting for the response + * so invoke the interface to deligate to the plugin. + * Example: + * ... + * TBool isValidForExtension = iUssdExtnInterface->ValidateUssdResponse(aMsgData); + * TInt errfromextension = KErrNone; + * if (isValidForExtension) + * { + * TRAPD(err, iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension)); + * ... + * + * @param aMessageData + * @return error code + * @leave On typical leave level problems. + */ + virtual void + ProcessReceivedUssdL(const TDesC& aMessageData, TInt aError) = 0; + + /** + * Notify the any network error to the extension, so that it can handle the internal states if required + * @param aError + */ + virtual void NotifyNWError(TInt aError)=0; + +public: + /** + * ~CUssdExtensionInterface + * + * Cleans up resources, specifically notify ECOM server that this + * instance is being deleted. + */ + virtual ~CUssdExtensionInterface(); + +private: + TUid iDtor_ID_Key; // Identification on cleanup + }; +#include "CUssdExtensionInterface.inl" +#endif // __CUSSDEXTENSIONINTERFACE_H__ diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.inl Thu Aug 19 10:28:14 2010 +0300 @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2002-2005 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: Interface's (abstract base class's) static factory method implementation. +* +*/ + +#include +#include + +// --------------------------------------------------------------------------- +// CUssdExtensionInterface::NewL +// Interface's (abstract base class's) static factory method implementation. +// Asks ECOM plugin framework to instantiate appropriate concret plugin +// implementation. +// --------------------------------------------------------------------------- +// +inline CUssdExtensionInterface* CUssdExtensionInterface::NewL() + { + TEComResolverParams resolutionParameters; + resolutionParameters.SetGenericMatch(ETrue); + TAny* interface = REComSession::CreateImplementationL ( + KUssdExtensionInterfaceUid, _FOFF (CUssdExtensionInterface, iDtor_ID_Key), resolutionParameters, KRomOnlyResolverUid); + + return reinterpret_cast (interface); + } + +// --------------------------------------------------------------------------- +// CUssdExtensionInterface::NewL +// Interface's (abstract base class's) static factory method implementation. +// Asks ECOM plugin framework to instantiate appropriate concret plugin +// implementation. +// --------------------------------------------------------------------------- +// +inline CUssdExtensionInterface* CUssdExtensionInterface::NewL(const TDesC8& aOperationName) + { + TEComResolverParams resolverParams; + resolverParams.SetDataType (aOperationName); + resolverParams.SetWildcardMatch (ETrue); + + TAny* interface = REComSession::CreateImplementationL (KUssdExtensionInterfaceUid, + _FOFF (CUssdExtensionInterface, iDtor_ID_Key), resolverParams, KRomOnlyResolverUid); + + return reinterpret_cast (interface); + } + +// --------------------------------------------------------------------------- +// CUssdExtensionInterface::~CUssdExtensionInterface +// Interface's (abstract base class's) destructor +// --------------------------------------------------------------------------- +// +inline CUssdExtensionInterface::~CUssdExtensionInterface() + { + REComSession::DestroyedImplementation (iDtor_ID_Key); + } + + diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Inc/Ussd/ussdinterfaceconstants.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneserver/Inc/Ussd/ussdinterfaceconstants.hrh Thu Aug 19 10:28:14 2010 +0300 @@ -0,0 +1,24 @@ +/* +* Copyright (c) 2002-2005 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: common definitions of the ussd extension. +* +*/ +#ifndef T_USSDINTERFACECONSTANTS_HRH +#define T_USSDINTERFACECONSTANTS_HRH + + +const TInt KUssdExtensionInterfaceUidValue = 0x200315D0; + + +#endif // T_USSDINTERFACECONSTANTS_HRH diff -r c58fd5f0c240 -r 594d59766373 phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp --- a/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/phoneclientserver/phoneserver/Src/Ussd/CPhSrvUssdManager.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -56,6 +56,8 @@ #include #include +//RM-RIM 417-66528 +#include // CONSTANTS const TInt KPhSrvDefaultValue = 0x00000000; @@ -436,6 +438,10 @@ delete iMoAckCallback; + // RM-RIM 417-66528 + delete iUssdExtnInterface; + iUssdExtnInterface = NULL; + _DPRINT( 4, "PhSrv.~CPhSrvUssdManager.end" ); // debug print } @@ -492,6 +498,10 @@ _DDPRINT( 4, "PhSrv.ConstructL.iSatCanceled ", iSatCanceled ); _DDPRINT( 4, "PhSrv.ConstructL.iShowDone ", iShowDone ); iNotifyArray = new( ELeave ) CDesCArrayFlat( KPhrUssdNotifyArraySize ); + + // RM-RIM 417-66528 + TRAP_IGNORE(iUssdExtnInterface = CUssdExtensionInterface::NewL()); + _DPRINT( 4, "PhSrv.ConstructL.iUssdExtnInterface Created"); _DPRINT( 4, "PhSrv.ConstructL.End" ); // debug print } @@ -550,6 +560,16 @@ _DPRINT( 4, "PhSrv.SendUssdL.Start ######" ); // debug print _DPRINT_FLAGS(); + //417-66528 + if (iUssdExtnInterface) + { + if(!iUssdExtnInterface->ValidateUssdMsgSending(aMsgData,aMsgAttribute)) + { + // invalid attempt to send USSD message. Show the note + User::Leave( KErrAccessDenied ); + } + } + if ( iObserver && iNetworkReleased ) { // Network has been released but the previous send request is still alive. @@ -810,6 +830,14 @@ { iReceivedMessage = iDecodedMessage; } + // 4. Invoke UssdExtensionPlugin + // 417-66528 + TBool isResponseValidated = EFalse; + if (iUssdExtnInterface) + { + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.InvokeExtension" ); + isResponseValidated = iUssdExtnInterface->ValidateUssdResponse(aMsgData); + } // 5. Show note. // debug print _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Note" ); @@ -824,109 +852,155 @@ return; } } - + //6. Check if the response is valid for the extension + //RM-RIM 417-66528 + if (iUssdExtnInterface && isResponseValidated) + PorcessReceivedMessageInExtesnionL(aMsgData, aMsgAttributes); + else + ProcessReceivedMessageL(aMsgData, aMsgAttributes); + + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Editor" ); + if (aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTRequest + && UssdAppTaskExistsL()) + { + iEmptyEditor = ETrue; + } _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.End" ); + } +// ----------------------------------------------------------------------------- +// CPhSrvUssdManager::ProcessReceivedMessageL +// +// +// +// ----------------------------------------------------------------------------- +// +void CPhSrvUssdManager::ProcessReceivedMessageL(const TDes8& /*aMsgData*/, + const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes) + { // empty string is handled as ok message - if ( !iDecodedMessage.Length() ) + if (!iDecodedMessage.Length()) { TurnLightsOn(); //Ensure lights on - // debug print - _DPRINT( 4, - "PhSrv.UssdHandleReceivedEventL.EmptyString" ); - - ShowDoneNoteL(); // debug print _DPRINT( 4, - "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" ); + "PhSrv.UssdHandleReceivedEventL.EmptyString" ); + ShowDoneNoteL(); + // debug print + _DPRINT( 4, + "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" ); } else { - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.String" ); - iNotifyMessage = ( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTNotify ); - _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.String" ); + iNotifyMessage = (aMsgAttributes.iType + == RMobileUssdMessaging::EUssdMTNotify); + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); _DDPRINT( 4, "PhSrv.UssdNOHREventL.iNotifyMessage: ", iNotifyMessage ); - iMsgTypeReply = ( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTReply ); + iMsgTypeReply = (aMsgAttributes.iType + == RMobileUssdMessaging::EUssdMTReply); _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iMsgTypeReply: ", iMsgTypeReply ); - - if ( iNotifyMessage ) + + if (iNotifyMessage) { // need to send an MO ack - iAcksToBeSent ++; - } - - if ( iNotifyMessage || iMsgTypeReply ) - { - //This is for reply message in notifyarray - iNotifyMessage = ETrue; - _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); - - //Notify added to array - iNotifyArray->AppendL( iReceivedMessage ); - - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.AppendL" ); // debug print - UpdateNotifyMessage(); - - if ( !iSendRelease && NotifyCount() <= 1 ) - { - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" ); // debug print - Cancel(); - } - } - else - { - // New message deletes old message, i.e. Cancel existing query. - Cancel(); - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" ); // debug print - } - - if ( !iGlobalMsgQuery ) - { - iGlobalMsgQuery = CAknGlobalMsgQuery::NewL(); + iAcksToBeSent++; } - // Delay after message query so that application execution order will - // be correct. - iGlobalMsgQuery->SetExitDelay( KPhSrvUssdNoteExitPeriod ); + if (iNotifyMessage || iMsgTypeReply) + { + //This is for reply message in notifyarray + iNotifyMessage = ETrue; + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); + + //Notify added to array + iNotifyArray->AppendL(iReceivedMessage); + + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.AppendL" ); // debug print + UpdateNotifyMessage(); - TInt softkeys = R_AVKON_SOFTKEYS_USSD_ANSWER_EXIT__ANSWER; - if( !( aMsgAttributes.iFlags & RMobileUssdMessaging::KUssdMessageType ) - || aMsgAttributes.iType != RMobileUssdMessaging::EUssdMTRequest ) + if (!iSendRelease && NotifyCount() <= 1) + { + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" ); // debug print + Cancel(); + } + } + else { - softkeys = R_AVKON_SOFTKEYS_EXIT; + // New message deletes old message, i.e. Cancel existing query. + Cancel(); + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" ); // debug print } + CreateGlobalMessageQueryL(aMsgAttributes); + AsyncProcessMoAcks(); + } + _DPRINT( 4, "PhSrv.ProcesdReceivedMessageL.End" ); + } - // Set timer that lauches Global MessageQuery after time interval. - iSoftkeys = softkeys; - +// ----------------------------------------------------------------------------- +// CPhSrvUssdManager::PorcessReceivedMessageInExtesnionL +// +// +// +// ----------------------------------------------------------------------------- +// +void CPhSrvUssdManager::PorcessReceivedMessageInExtesnionL( + const TDes8& /*aMsgData*/, + const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes) + { + TInt errfromextension = KErrNone; + // empty string is handled as ok message + if (!iDecodedMessage.Length()) + { // debug print _DPRINT( 4, - "PhSrv.UssdHandleReceivedEventL.String.Middle" ); + "PhSrv.UssdHandleReceivedEventL.EmptyString" ); + //RM-RIM 417-66528 + TRAP_IGNORE(iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension)); + // debug print + _DPRINT( 4, + "PhSrv.UssdHandleReceivedEventL.EmptyString.OK" ); + } + else + { + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.String" ); + iNotifyMessage = (aMsgAttributes.iType + == RMobileUssdMessaging::EUssdMTNotify); + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); + _DDPRINT( 4, "PhSrv.UssdNOHREventL.iNotifyMessage: ", iNotifyMessage ); + iMsgTypeReply = (aMsgAttributes.iType + == RMobileUssdMessaging::EUssdMTReply); + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iMsgTypeReply: ", iMsgTypeReply ); - // Play the USSD tone if needed. Logically should be in RunL, but here - // to give better balancing with voice and visible message. - if ( IsTelephonyFeatureSupported( KTelSrvLVFlagUssdTone ) ) + if (iNotifyMessage) { - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.PlayTone" ); - PlayUssdTone(); + // need to send an MO ack + iAcksToBeSent++; } - // Launch the new message query - if ( !IsActive() ) + if (iNotifyMessage || iMsgTypeReply) { - iLaunchGMQ = ETrue; - iTimer.After( iStatus , KPhSrvUssdMessageQueryInterval ); - SetActive(); + //This is for reply message in notifyarray + iNotifyMessage = ETrue; + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.iNotifyMessage: ", iNotifyMessage ); + if (!iSendRelease && NotifyCount() <= 1) + { + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.!SendRelease.Cancel" ); // debug print + Cancel(); + } } - AsyncProcessMoAcks(); + else + { + // New message deletes old message, i.e. Cancel existing query. + Cancel(); + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.NewAnswerable" ); // debug print + } + TInt errfromextension = KErrNone; + ProcessMoAcksL(); + iLaunchGMQ = EFalse; + TRAP_IGNORE(iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension)); + _DDPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Extn.ProcessReceivedUssdL.ErrCode", errfromextension); } - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.Editor" ); - if( aMsgAttributes.iType == RMobileUssdMessaging::EUssdMTRequest && UssdAppTaskExistsL() ) - { - iEmptyEditor = ETrue; - } - _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.End" ); } - // ----------------------------------------------------------------------------- // CPhSrvUssdManager::RestartReplyTimerL // @@ -996,7 +1070,12 @@ // if we are sending ack, it can be canceled. iUssdSendHandler->Cancel(); } - + //417-66528 + //Notify Extension on NWRelease + if(iUssdExtnInterface) + { + iUssdExtnInterface->NotifyNWError(aError); + } iSatCanceled = EFalse; _DPRINT( 4, "PhSrv.UssdNetworkObserverHandleNotifyNWReleaseL.iSatCanceled.EFalse" ); iShowDone = EFalse; @@ -1341,7 +1420,52 @@ _DPRINT( 4, "PhSrv.RunL.End" ); // debug print } } +// RM-RIM 417-66528 +// ----------------------------------------------------------------------------- +// CPhSrvUssdManager::CreateGlobalMessageQueryL +// ----------------------------------------------------------------------------- +// +void CPhSrvUssdManager::CreateGlobalMessageQueryL( + const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttributes) + { + if (!iGlobalMsgQuery) + { + iGlobalMsgQuery = CAknGlobalMsgQuery::NewL(); + } + // Delay after message query so that application execution order will + // be correct. + iGlobalMsgQuery->SetExitDelay(KPhSrvUssdNoteExitPeriod); + + TInt softkeys = R_AVKON_SOFTKEYS_USSD_ANSWER_EXIT__ANSWER; + if (!(aMsgAttributes.iFlags & RMobileUssdMessaging::KUssdMessageType) + || aMsgAttributes.iType != RMobileUssdMessaging::EUssdMTRequest) + { + softkeys = R_AVKON_SOFTKEYS_EXIT; + } + + // Set timer that lauches Global MessageQuery after time interval. + iSoftkeys = softkeys; + + // debug print + _DPRINT( 4, + "PhSrv.UssdHandleReceivedEventL.String.Middle" ); + + // Play the USSD tone if needed. Logically should be in RunL, but here + // to give better balancing with voice and visible message. + if (IsTelephonyFeatureSupported(KTelSrvLVFlagUssdTone)) + { + _DPRINT( 4, "PhSrv.UssdHandleReceivedEventL.PlayTone" ); + PlayUssdTone(); + } + // Launch the new message query + if (!IsActive()) + { + iLaunchGMQ = ETrue; + iTimer.After(iStatus, KPhSrvUssdMessageQueryInterval); + SetActive(); + } + } // ----------------------------------------------------------------------------- // CPhSrvUssdManager::LaunchGlobalMessageQueryL // ----------------------------------------------------------------------------- diff -r c58fd5f0c240 -r 594d59766373 phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallArray.cpp --- a/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallArray.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallArray.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -16,7 +16,7 @@ */ #include -#include "phonehandlercallarray.h" +#include "PhoneHandlerCallArray.h" // --------------------------------------------------------------------------- // CPhoneHandlerCallArray::NewL. diff -r c58fd5f0c240 -r 594d59766373 phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat --- a/phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat Thu Jul 15 19:16:18 2010 +0300 +++ b/phonesrv_plat/call_information_api/tsrc/run_auto_tests.bat Thu Aug 19 10:28:14 2010 +0300 @@ -148,7 +148,7 @@ call sbs --config winscw_udeb.test --keepgoing clean call sbs --config winscw_udeb.test --keepgoing reallyclean if [%INSTRUMENT%] EQU [TRUE] ( -call ctcwrap -2comp -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%" +call ctcwrap -n %PATH_TO_COVERAGE_DATA%\%1 -i d -C "EXCLUDE=*" -C "NO_EXCLUDE=%TESTED_SRC%" "%SBS_CALL%" ) else ( call %SBS_CALL% ) @@ -188,7 +188,7 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::: :CALCULATECOVERAGE echo Calculating coverage -ctcpost %PATH_TO_COVERAGE_DATA%\*.sym | ctcmerge -i - -o profile.txt +ctcpost -p - %PATH_TO_COVERAGE_DATA%\*.sym | ctcmerge -i - -o profile.txt call ctc2html -t 70 -i profile.txt -o \coverage_result -nsb goto end diff -r c58fd5f0c240 -r 594d59766373 phonesrv_plat/converged_call_engine_api/inc/ccce.h --- a/phonesrv_plat/converged_call_engine_api/inc/ccce.h Thu Jul 15 19:16:18 2010 +0300 +++ b/phonesrv_plat/converged_call_engine_api/inc/ccce.h Thu Aug 19 10:28:14 2010 +0300 @@ -58,7 +58,7 @@ #ifndef RMMCUSTOMAPI_H /** defenition for OG, most likely will be deprecated later on */ ///_LIT(KTerminateAllCalls,"ALL_CALLS"); -#include // Add reference there, cs classes need that too +#include // Add reference there, cs classes need that too #endif /** diff -r c58fd5f0c240 -r 594d59766373 phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h --- a/phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h Thu Jul 15 19:16:18 2010 +0300 +++ b/phonesrv_plat/voice_mailbox_number_api/inc/vmnumber.h Thu Aug 19 10:28:14 2010 +0300 @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include #include // CPhCltEmergencyCall diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Commands/RefreshRequiredCmd/inc/CRefreshRequiredHandler.h --- a/satengine/SatServer/Commands/RefreshRequiredCmd/inc/CRefreshRequiredHandler.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Commands/RefreshRequiredCmd/inc/CRefreshRequiredHandler.h Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -102,29 +102,6 @@ private: /** - * The indicated AID may be of four states. - * We treat it as the Active AID case if the indicated AID is NULL. - */ - enum TAidState - { - EAidInvalid, - EAidActive, - EAidNotActive, - EAidNull - }; - /** - * The header of AID from etelsat is A0 in hex equaled to 160 in decemal. - * The second, third and fourth byte of AID is 0. - */ - enum TAidBytes - { - EAid0, - EAidA0 = 160 - }; - - private: - - /** * C++ default constructor. */ CRefreshRequiredHandler(); @@ -178,19 +155,6 @@ */ void RefreshAllowed( const TDesC8& aRsp ); - /** - * Get the indicated AID state according to - * the current application's AID. - * @return TAidstate indicating the state of the indicated AID. - */ - TAidState AidState() const; - - /** - * Check whether the current application's AID is valid. - * @return TBool indicating whether the indicated AID is valid. - * @param aAid RefreshRequired AID data from etelsat. - */ - TBool IsValidAid( const RSat::TAid& aAid ) const; private: // Data // Refresh command data. @@ -222,7 +186,7 @@ // Response of refresh query. TBool iAllowRefresh; - + }; #endif // CREFRESHREQUIREDHANDLER_H diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Commands/RefreshRequiredCmd/src/CRefreshRequiredHandler.cpp --- a/satengine/SatServer/Commands/RefreshRequiredCmd/src/CRefreshRequiredHandler.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Commands/RefreshRequiredCmd/src/CRefreshRequiredHandler.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -30,12 +30,8 @@ #include "MSatUiSession.h" #include "SatSOpcodes.h" #include "MSatRefreshSubSession.h" -#include "msatmultimodeapi.h" #include "SatLog.h" -// CONSTANTS -const TInt KAidMinSize( 12 ); - // ============================ MEMBER FUNCTIONS =============================== @@ -367,38 +363,6 @@ iRefreshRequiredRsp.iAdditionalInfo[0] = RSat::KMeBusyOnCall; commandAllowed = EFalse; } - //Check the AidState. - else - { - const TAidState aidState = AidState(); - LOG2( NORMAL, "REFRESHREQ: AID state: %i", aidState ) - switch ( aidState ) - { - case EAidNotActive: - { - iRefreshRequiredRsp.iGeneralResult = - RSat::KRefreshUSIMNotActive; - iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo; - commandAllowed = EFalse; - break; - } - - case EAidInvalid: - { - iRefreshRequiredRsp.iGeneralResult = - RSat::KCmdDataNotUnderstood; - iRefreshRequiredRsp.iInfoType = RSat::KNoAdditionalInfo; - commandAllowed = EFalse; - break; - } - - default: - { - LOG( NORMAL, "REFRESHREQ: Refresh allowed" ) - break; - } - } - } // When refresh is not allowed, send terminal response to sim. if ( !commandAllowed ) @@ -761,87 +725,5 @@ LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::RefreshAllowed exiting" ) } - -// ----------------------------------------------------------------------------- -// CRefreshHandler::CheckIndicatedAid -// Check the state of the indicated Aid. -// ----------------------------------------------------------------------------- -// -CRefreshRequiredHandler::TAidState -CRefreshRequiredHandler::AidState() const - { - LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AidState calling" ) - - TAidState aidState( EAidNotActive ); - if ( !iRefreshRequiredData.iAid.Length() ) - { - aidState = EAidNull; - LOG( SIMPLE, "REFRESHREQ: Indicated AID Null" ) - } - else if ( !IsValidAid( iRefreshRequiredData.iAid ) ) - { - aidState = EAidInvalid; - LOG( SIMPLE, "REFRESHREQ: Indicated AID Invalid" ) - } - else - { - RSat::TAid aid; - MSatAsyncToSync* wrapper = iUtils->CreateAsyncToSyncHelper(); - if ( wrapper ) - { - iUtils->MultiModeApi().GetCurrentActiveUSimApplication( - wrapper->RequestStatus() , aid ); - // wait until GetCurrentActiveUSimApplication return aid - TInt err = wrapper->SetActiveAndWait(); - LOG2( NORMAL, "REFRESHREQ: CRefreshHandler::TAidState err %d",err ) - wrapper->Release(); - - if ( KErrNone == err ) - { - #ifdef ENABLE_SAT_LOGGING - for ( TInt i=0; i < aid.Length(); i++ ) - { - LOG2( DETAILED, "REFRESHREQ: AID from TSY: %x", aid[i] ) - } - #endif - if ( aid == iRefreshRequiredData.iAid ) - { - aidState = EAidActive; - } - } - else if ( KErrNotSupported == err ) - { - aidState = EAidActive; - } - } - LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::AidState exit" ) - } - return aidState; - } - -// ----------------------------------------------------------------------------- -// Check whether the given AID is valid. -// According to TS 110 220 -// ----------------------------------------------------------------------------- -TBool CRefreshRequiredHandler::IsValidAid( const RSat::TAid& aAid ) const - { - LOG( SIMPLE, "REFRESHREQ: CRefreshRequiredHandler::\ - IsValidAid calling-exiting" ) - TInt result ( EFalse ); - // Check the length of AID, it should be between 12 to 16 bytes - // ETSI: A0,00,00,00,09; - // 3GPP: A0,00,00,00,87 - // the fifth byte is not sure in other situations. - //compare the first to fourth byte - if ( KAidMinSize <= aAid.Length() && RSat::KAidMaxSize >= aAid.Length() ) - { - if ( EAidA0 == aAid[0]&& EAid0 == aAid[1] && - EAid0 == aAid[2]&& EAid0 == aAid[3] ) - { - result = ETrue; - } - } - return result; - } // End of File diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Commands/SendUSSDCmd/group/SendUssdCmd.mmp --- a/satengine/SatServer/Commands/SendUSSDCmd/group/SendUssdCmd.mmp Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Commands/SendUSSDCmd/group/SendUssdCmd.mmp Thu Aug 19 10:28:14 2010 +0300 @@ -48,6 +48,7 @@ LIBRARY SatEngine.lib LIBRARY phoneclient.lib // Ussd sender LIBRARY aknnotify.lib +LIBRARY centralrepository.lib // CRepository #ifdef ENABLE_SAT_LOGGING LIBRARY flogger.lib diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Commands/SendUSSDCmd/inc/CSendUssdHandler.h --- a/satengine/SatServer/Commands/SendUSSDCmd/inc/CSendUssdHandler.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Commands/SendUSSDCmd/inc/CSendUssdHandler.h Thu Aug 19 10:28:14 2010 +0300 @@ -289,6 +289,10 @@ */ TBool iIconCommand; + /** + * Indicates whether the result of sending USSD is displayed + */ + TBool iIsSatDisplayUssdResult; }; #endif // CSENDUSSDHANDLER_H diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Commands/SendUSSDCmd/src/CSendUssdHandler.cpp --- a/satengine/SatServer/Commands/SendUSSDCmd/src/CSendUssdHandler.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Commands/SendUSSDCmd/src/CSendUssdHandler.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include "MSatSystemState.h" #include "MSatApi.h" @@ -566,10 +568,40 @@ iNotificationRsp(), iNotificationRspPckg( iNotificationRsp ), // To be removed when icons are allowed in this command - iIconCommand( EFalse ) + iIconCommand( EFalse ), + iIsSatDisplayUssdResult( EFalse ) { LOG( SIMPLE, - "SENDUSSD: CSendUssdHandler::CSendUssdHandler calling - exiting" ) + "SENDUSSD: CSendUssdHandler::CSendUssdHandler calling" ) + CRepository* repository = NULL; + + TRAPD( result, repository = CRepository::NewL( KCRUidSatServer ); ); + LOG2( NORMAL, "SENDUSSD: CSendUssdHandler::CSendUssdHandler \ + open CRepository result: %d", result ) + + if ( repository && ( KErrNone == result ) ) + { + result = repository->Get( KSatDisplayUssdResult, + iIsSatDisplayUssdResult ); + LOG2( NORMAL, + "SENDUSSD: CSendUssdHandler::CSendUssdHandler \ + get CRepository key iIsSatDisplayUssdResult: %d", + iIsSatDisplayUssdResult ) + + if ( KErrNone != result ) + { + LOG2( NORMAL, + "SENDUSSD: CSendUssdHandler::CSendUssdHandler \ + get CRepository key error result: %d", + result ) + } + } + + delete repository; + repository = NULL; + + LOG( SIMPLE, + "SENDUSSD: CSendUssdHandler::CSendUssdHandler exiting" ) } @@ -597,12 +629,15 @@ iSendUssdRsp.iUssdString.iUssdString.Copy( receiveMessage ); - if ( RSat::EAlphaIdProvided != iSendUssdData.iAlphaId.iStatus ) + if ( ( RSat::EAlphaIdProvided != iSendUssdData.iAlphaId.iStatus ) + && iIsSatDisplayUssdResult ) { // if no Alpha ID provided, show the text note. - LOG( SIMPLE, "SENDUSSD: CSendUssdHandler::SendUssdString Show Note" ) + LOG( SIMPLE, "SENDUSSD: CSendUssdHandler::SendUssdString \ + Show USSD result Note" ) TRAP_IGNORE( - ShowUssdResponseNoteL( iSendUssdRsp.iUssdString.iUssdString ) ); + ShowUssdResponseNoteL( + iSendUssdRsp.iUssdString.iUssdString ) ); } HandleSendUssdResult( error ); diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Engine/inc/CSatApnHandler.h --- a/satengine/SatServer/Engine/inc/CSatApnHandler.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Engine/inc/CSatApnHandler.h Thu Aug 19 10:28:14 2010 +0300 @@ -25,6 +25,8 @@ #include "MSatApnHandler.h" class MSatUtils; +class RCmConnectionMethod; +class RCmManager; /** * Handles the Access point operations with CMManager. Searches, inserts and @@ -123,6 +125,15 @@ */ HBufC* FormatAPN( const RSat::TAccessName& aReqApn ) const; + /** + * Get default connection method. + * + * @param aCmManager Input Connection method manager. + * @param aDefCm Output reference to RCmConnectionMethod. + * @return None + */ + void GetDefConnMethodL( RCmManager& aCmManager, + RCmConnectionMethod& aDefCm ); private: // Data // Reference to command container diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Engine/inc/csatmultimodeapi.h --- a/satengine/SatServer/Engine/inc/csatmultimodeapi.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Engine/inc/csatmultimodeapi.h Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -143,13 +143,6 @@ void DialCancel(); /** - * Access RMobilePhone::GetCurrentActiveUSimApplication - */ - void GetCurrentActiveUSimApplication( TRequestStatus& aReqStatus, - RMobilePhone::TAID& aAID ); - - - /** * Check if there is an incoming call * @return ETrue if there is an incoming call */ diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Engine/src/CSatApnHandler.cpp --- a/satengine/SatServer/Engine/src/CSatApnHandler.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Engine/src/CSatApnHandler.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -397,59 +397,33 @@ { LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL calling" ); TUint32 defaultIap( 0 ); - TInt pdpType; - TBool isFound( EFalse ); + TInt pdpType( 0 ); - // create a network destination - RCmDestination des; - RCmConnectionMethod cm; - - // Create CMManager Session + // create CMManager Session RCmManager cmManager; cmManager.OpenL(); CleanupClosePushL( cmManager ); - // Get the Connection Method list from the open CMManager session - RArray array = RArray( KSatCMGranularity ); - CleanupClosePushL( array ); - - // list all available destinations' id - cmManager.AllDestinationsL( array ); - for( TInt i = 0; ( i < array.Count() ) && !isFound; ++i ) - { - des = cmManager.DestinationL( array[i] ); - CleanupClosePushL( des ); + // create a network connection method + RCmConnectionMethod cm; + CleanupClosePushL( cm ); + // get a default connection method + GetDefConnMethodL( cmManager, cm ); - if ( CMManager::ESnapPurposeInternet == - des.MetadataL( CMManager::ESnapMetadataPurpose ) ) - { - LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \ - the fixed destination is identified as 'Internet'" ); - for( TInt j = 0; ( j < des.ConnectionMethodCount() ) && - !isFound; ++j ) - { - cm = des.ConnectionMethodL( j ); - CleanupClosePushL( cm ); - pdpType = cm.GetIntAttributeL( - CMManager::EPacketDataPDPType ); - LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \ - current protocol type is %d", pdpType ) - if ( pdpType == aPdpType ) - { - defaultIap = cm.GetIntAttributeL( CMManager::ECmIapId ); - isFound = ETrue; - LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \ - default iap had been found %d", defaultIap ) - } - CleanupStack::PopAndDestroy( &cm ); - } - } - CleanupStack::PopAndDestroy( &des ); + // get pdp type + pdpType = cm.GetIntAttributeL( CMManager::EPacketDataPDPType ); + if ( pdpType == aPdpType ) + { + // get a default iap id + defaultIap = cm.GetIntAttributeL( CMManager::ECmIapId ); + LOG2( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL \ + default iap had been found defaultIap = %d", defaultIap ) } - CleanupStack::PopAndDestroy( &array ); + + CleanupStack::PopAndDestroy( &cm ); CleanupStack::PopAndDestroy( &cmManager ); - if ( !isFound ) + if ( !defaultIap ) { LOG( SIMPLE, "SATENGINE: CSatApnHandler: default AP not found" ); User::Leave( KErrNotFound ); @@ -458,4 +432,48 @@ LOG( SIMPLE, "SATENGINE: CSatApnHandler::FindDefaultApL exit" ) return defaultIap; } + +// -------------------------------------------------------------------------- +// CSatApnHandler::GetDefConnMethodL +// -------------------------------------------------------------------------- +void CSatApnHandler::GetDefConnMethodL( RCmManager& aCmManager, + RCmConnectionMethod& aDefCm ) + { + LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetDefConnMethodL calling" ) + + // Go through the default connection methods to find + // the one valid method + TCmDefConnValue defConn; + aCmManager.ReadDefConnL( defConn ); + + LOG3( SIMPLE, "SATENGINE: CSatApnHandler::\ + GetDefConnMethodL DefConn type=%d, id=%d", + defConn.iType, defConn.iId ) + + // Default setting is a connection method + if ( ECmDefConnConnectionMethod == defConn.iType ) + { + LOG( SIMPLE, "SATENGINE: CSatApnHandler::\ + GetDefConnMethodL ECmDefConnConnectionMethod" ) + // get a default connection method + aDefCm = aCmManager.ConnectionMethodL( defConn.iId ); + } + // Default setting is a destination method + else if ( ECmDefConnDestination == defConn.iType ) + { + RCmDestination defDes; + CleanupClosePushL( defDes ); + + LOG( SIMPLE, "SATENGINE: CSatApnHandler::\ + GetDefConnMethodL ECmDefConnDestination" ) + // get a default destination + defDes = aCmManager.DestinationL( defConn.iId ); + // get the first default connection method from destination + aDefCm = defDes.ConnectionMethodL( 0 ); + + CleanupStack::PopAndDestroy( &defDes ); + } + + LOG( SIMPLE, "SATENGINE: CSatApnHandler::GetDefConnMethodL exit" ) + } // End of File diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/Engine/src/csatmultimodeapi.cpp --- a/satengine/SatServer/Engine/src/csatmultimodeapi.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/Engine/src/csatmultimodeapi.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2010 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" @@ -290,21 +290,6 @@ } // ----------------------------------------------------------------------------- -// CSatMultiModeApi::GetCurrentActiveUSimApplication -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CSatMultiModeApi::GetCurrentActiveUSimApplication( - TRequestStatus& aReqStatus, RMobilePhone::TAID& aAID ) - { - LOG( SIMPLE, "SATENGINE: CSatMultiModeApi::\ - GetCurrentActiveUSimApplication calling" ) - iPhone.GetCurrentActiveUSimApplication( aReqStatus,aAID ); - LOG( SIMPLE, "SATENGINE: CSatMultiModeApi::\ - GetCurrentActiveUSimApplication exiting" ) - } - -// ----------------------------------------------------------------------------- // CSatMultiModeApi::IsCallIncoming // (other items were commented in a header). // ----------------------------------------------------------------------------- diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/conf/sat.confml Binary file satengine/SatServer/conf/sat.confml has changed diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/conf/sat_102078E1.crml Binary file satengine/SatServer/conf/sat_102078E1.crml has changed diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/inc/SATPrivateCRKeys.h --- a/satengine/SatServer/inc/SATPrivateCRKeys.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/inc/SATPrivateCRKeys.h Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -60,6 +60,14 @@ * Default value: N/A */ const TUint32 KSatHomeZoneIconVisible( 0x00000032 ); + +// Defines whether USSD sending result is shown if no alpha id +/** +* Support is disabled if value is 0 +* +* Default value: N/A +*/ +const TUint32 KSatDisplayUssdResult( 0x00000064 ); #endif // SATPRIVATECRKEYS_H // End of File diff -r c58fd5f0c240 -r 594d59766373 satengine/SatServer/inc/msatmultimodeapi.h --- a/satengine/SatServer/inc/msatmultimodeapi.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satengine/SatServer/inc/msatmultimodeapi.h Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2010 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" @@ -126,12 +126,6 @@ * Access RMobileCall::DialCancel */ virtual void DialCancel() = 0; - /** - * Access RMobilePhone::GetCurrentActiveUSimApplication - * for the paramter information please see the etelmm.h - */ - virtual void GetCurrentActiveUSimApplication( TRequestStatus& aReqStatus, - RMobilePhone::TAID& aAID ) = 0; /** * Check if there is an incoming call diff -r c58fd5f0c240 -r 594d59766373 satui/satapp/SATUIInc/CSatUiViewAppUi.h --- a/satui/satapp/SATUIInc/CSatUiViewAppUi.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satui/satapp/SATUIInc/CSatUiViewAppUi.h Thu Aug 19 10:28:14 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -623,6 +623,13 @@ */ void StopPlayToneL(); + /** + * Check if foreground control is alive when HandleForegroundEventL is + * called. + * @return ETrue if the foreground control is alive. + */ + TBool CSatUiViewAppUi::ForegroundAlive() const; + private: //Data // Own: use timer repeat diff -r c58fd5f0c240 -r 594d59766373 satui/satapp/SATUISrc/CSatUiViewAppUi.cpp --- a/satui/satapp/SATUISrc/CSatUiViewAppUi.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satui/satapp/SATUISrc/CSatUiViewAppUi.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -1268,7 +1268,7 @@ { TFLOGSTRING( "CSatUiViewAppUi::HandleForegroundEventL \ need to display a dialog" ) - if ( iForegroundControl ) + if ( iForegroundControl && ForegroundAlive() ) { iForegroundControl->SetFocus( ETrue, EDrawNow ); } @@ -3530,5 +3530,34 @@ } TFLOGSTRING( "CSatUiViewAppUi::StopPlayToneL exiting" ) } + +// ----------------------------------------------------------------------------- +// CSatUiViewAppUi::ForegroundAlive +// Check if foreground control is alive when HandleForegroundEventL is called. +// ----------------------------------------------------------------------------- +// +TBool CSatUiViewAppUi::ForegroundAlive() const + { + TFLOGSTRING( "CSatUiViewAppUi::ForegroundAlive called" ) + + // Only if value of iForegroundControl equals to one of the following 8 + // pointers, the alive value will be set to true. This will check if + // the foreground control is alive. + TBool alive = + iForegroundControl == static_cast( iWaitNote ) + || iForegroundControl == static_cast( + iDisplayTextIconDialog ) + || iForegroundControl == static_cast( + iDisplayTextDialog ) + || iForegroundControl == static_cast( iGetInputDialog ) + || iForegroundControl == static_cast( iPermanentNote ) + || iForegroundControl == static_cast( iNoteDialog ) + || iForegroundControl == static_cast( iBipWaitNote ) + || iForegroundControl == static_cast( iQueryDialog ); + + TFLOGSTRING2( "CSatUiViewAppUi::ForegroundAlive exiting alive=%d", alive ) + + return alive; + } // End of File diff -r c58fd5f0c240 -r 594d59766373 satui/satplugin/aisatplugininc/caisatengine.h --- a/satui/satplugin/aisatplugininc/caisatengine.h Thu Jul 15 19:16:18 2010 +0300 +++ b/satui/satplugin/aisatplugininc/caisatengine.h Thu Aug 19 10:28:14 2010 +0300 @@ -23,7 +23,7 @@ #include #include -#include // For idle mode text and icon +#include // For idle mode text and icon #include // For idle mode text and icon #include diff -r c58fd5f0c240 -r 594d59766373 satui/satplugin/aisatpluginsrc/caisatnotifier.cpp --- a/satui/satplugin/aisatpluginsrc/caisatnotifier.cpp Thu Jul 15 19:16:18 2010 +0300 +++ b/satui/satplugin/aisatpluginsrc/caisatnotifier.cpp Thu Aug 19 10:28:14 2010 +0300 @@ -20,7 +20,7 @@ // INCLUDE FILES #include #include -#include +#include #include #include "caisatnotifier.h"