diff -r 000000000000 -r 63b37f68c1ce adaptationlayer/tsy/nokiatsy_dll/src/cmmmessagerouter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmmessagerouter.cpp Fri Nov 06 17:28:23 2009 +0000 @@ -0,0 +1,816 @@ +/* +* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + + +// INCLUDE FILES +#include "mmmmesshandlerbase.h" +#include "cmmmessagerouter.h" +#include "cmmphonetsender.h" +#include "cmmphonetreceiver.h" +#include "cmmcallmesshandler.h" +#include "cmmconferencecallmesshandler.h" +#include "cmmdtmfmesshandler.h" +#include "cmmnetmesshandler.h" +#include "cmmnetoperatornamehandler.h" +#include "cmmphonemesshandler.h" +#include "cmmsupplservmesshandler.h" +#include "cmmphonebookstoremesshandler.h" +#include "cmmpacketservicemesshandler.h" +#include "cmmpacketcontextmesshandler.h" +#include "cmmpacketqosmesshandler.h" +#include "cmmussdmesshandler.h" +#include "cmmbroadmesshandler.h" +#include "cmmcustommesshandler.h" +#include "cmmsmsmesshandler.h" +#include "cmmsecuritymesshandler.h" +#include "cmmuiccmesshandler.h" +#include "nokiatsy_internal_variation.h" +#include "nokiatsy_release.h" // for print release information to TSY logs +#include "tsylogger.h" + +#include +#include // for packet data IPCs +#include // for SIM ATK call control +#include +#include +#include + +#include "osttracedefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cmmmessageroutertraces.h" +#endif + +// EXTERNAL DATA STRUCTURES + //None + +// EXTERNAL FUNCTION PROTOTYPES + //None + +// CONSTANTS + //None + +// MACROS + //None + +// LOCAL CONSTANTS AND MACROS + //None + +// MODULE DATA STRUCTURES + //None + +// LOCAL FUNCTION PROTOTYPES + //None + +// ==================== LOCAL FUNCTIONS ===================================== + //None + +// ================= MEMBER FUNCTIONS ======================================= + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::NewL +// Creates new CMmMessageRouter object and returns it. +// ----------------------------------------------------------------------------- +// +EXPORT_C CMmMessageRouter* CMmMessageRouter::NewL + ( + #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32) + CMmMessageManager* aMessageManager + #else + MmMessageManagerCallback* aMessageManager + #endif // NCP_COMMON_S60_VERSION_SUPPORT + ) + { +TFLOGSTRING("TSY: CMmMessageRouter::NewL"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_NEWL, "CMmMessageRouter::NewL" ); + + CMmMessageRouter* messageRouter = NULL; + + messageRouter = new ( ELeave ) CMmMessageRouter(); + CleanupStack::PushL( messageRouter ); + messageRouter->ConstructL( aMessageManager ); + CleanupStack::Pop( messageRouter ); + + return messageRouter; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::~CMmMessageRouter +// Destructor, deletes all allocated resources. +// ----------------------------------------------------------------------------- +// +CMmMessageRouter::~CMmMessageRouter() + { +TFLOGSTRING("TSY: CMmMessageRouter::~CMmMessageRouter"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_CMMMESSAGEROUTER, "CMmMessageRouter::~CMmMessageRouter" ); + + delete iMmPhoneMessHandler; + delete iMmCallMessHandler; + delete iMmConferenceCallMessHandler; + delete iMmDtmfMessHandler; + delete iMmNetMessHandler; + delete iMmSecurityMessHandler; + delete iMmPhoneBookStoreMessHandler; + delete iMmPacketContextMessHandler; + delete iMmPacketQoSMessHandler; + delete iMmPacketServiceMessHandler; + delete iMmSmsMessHandler; + delete iMmSupplServMessHandler; + delete iMmUssdMessHandler; + delete iMmCustomMessHandler; + delete iMmBroadMessHandler; + delete iMmUiccMessHandler; + + //delete Phonet components + delete iPhoNetSender; + delete iPhoNetReceiver; + + iPhoNet.Close(); + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::CMmMessageRouter +// Constructor +// ----------------------------------------------------------------------------- +// +CMmMessageRouter::CMmMessageRouter() + { +OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_CMMMESSAGEROUTER, "CMmMessageRouter::CMmMessageRouter" ); + // none + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::ConstructL +// Creates and initialises class attributes +// ----------------------------------------------------------------------------- +// +#if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32) +void CMmMessageRouter::ConstructL + ( + CMmMessageManager* aMessageManager + ) +#else +void CMmMessageRouter::ConstructL + ( + MmMessageManagerCallback* aMessageManager + ) +#endif // NCP_COMMON_S60_VERSION_SUPPORT + { + //PRINT VERSION STRING TO LOG +TFLOGSTRING(NOKIATSY_RELEASE_STR); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_CONSTRUCTL, NOKIATSY_RELEASE_STR ); + + //INIT PHONET + /**************************************************************/ + + // Creation of PhoNet objects. + +TFLOGSTRING("TSY: CMmMessageRouter::ConstructL -- initializing ISC API"); +OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL, initializing ISC API" ); + + // Only for server information, which is defined with one byte. + TBuf8<1> resource; + // resource.Append( PN_ATK ); + TRequestStatus status( KRequestPending ); + // open returns void + iPhoNet.Open( EIscNokiaMmTsy, status, EOwnerThread, &resource ); + User::WaitForRequest( status ); + +TFLOGSTRING2("TSY: CMmMessageRouter::ConstructL - status: %d", status.Int() ); +OstTrace1( TRACE_NORMAL, DUP2_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL;status=%d", status.Int()); + + User::LeaveIfError( status.Int() ); + + iMessageManager = aMessageManager; + + iPhoNetSender = CMmPhoNetSender::NewL( &iPhoNet ); + iPhoNetReceiver = CMmPhoNetReceiver::NewL( &iPhoNet ); + //start receiving + iPhoNetReceiver->ReceiveL(); + + +TFLOGSTRING("TSY: CMmMessageRouter::ConstructL -- initializing done"); +OstTrace0( TRACE_NORMAL, DUP3_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL, initializing done" ); + + //END INIT PHONET + /**************************************************************/ + + iMmUiccMessHandler = CMmUiccMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmDtmfMessHandler = CMmDtmfMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmCallMessHandler = CMmCallMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + iMmDtmfMessHandler, + this ); + + iMmConferenceCallMessHandler = CMmConferenceCallMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmNetMessHandler = CMmNetMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this, + iMmUiccMessHandler ); + + iMmSupplServMessHandler = CMmSupplServMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this, + iMmUiccMessHandler ); + + iMmSecurityMessHandler = CMmSecurityMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + iMmNetMessHandler, + iMmCallMessHandler, + this, + iMmUiccMessHandler ); + + iMmPhoneMessHandler = CMmPhoneMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this, + iMmSupplServMessHandler, + iMmUiccMessHandler ); + + iMmSmsMessHandler = CMmSmsMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this, + iMmUiccMessHandler ); + + iMmBroadMessHandler = CMmBroadMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmUssdMessHandler = CMmUssdMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmCustomMessHandler = CMmCustomMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + iMmNetMessHandler, + iMmSecurityMessHandler, + this, + iMmUiccMessHandler ); + + iMmPhoneBookStoreMessHandler = CMmPhoneBookStoreMessHandler::NewL( + this, + iMmUiccMessHandler); + + iMmPacketServiceMessHandler = CMmPacketServiceMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + this ); + + iMmPacketQoSMessHandler = CMmPacketQoSMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + iMmPacketServiceMessHandler->PacketContextList(), + this ); + + iMmPacketContextMessHandler = CMmPacketContextMessHandler::NewL( + iPhoNetSender, + iPhoNetReceiver, + iMmPacketServiceMessHandler->PacketContextList(), + iMmPacketQoSMessHandler, + this ); + } + +// --------------------------------------------------------------------------- +// CMmMessageRouter::Complete +// Complete without a data package +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CMmMessageRouter::Complete( + TInt aIpc, + TInt aResult ) + { +TFLOGSTRING3("NTSY: CMmMessageRouter::Complete. without data package. IPC = %d, result: %d", aIpc, aResult); +OstTraceExt2( TRACE_NORMAL, CMMMESSAGEROUTER_COMPLETE, "CMmMessageRouter::Complete;aIpc=%d;aResult=%d", aIpc, aResult ); + CMmDataPackage emptyDataPackage; + Complete( aIpc, &emptyDataPackage, aResult ); + return; + } + +// --------------------------------------------------------------------------- +// CMmMessageRouter::Complete +// Complete with a data package +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CMmMessageRouter::Complete( + TInt aIpc, + CMmDataPackage* data, + TInt aResult ) + { +TFLOGSTRING3("NTSY: CMmMessageRouter::Complete. IPC = %d, result: %d", aIpc, aResult); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_COMPLETE, "CMmMessageRouter::Complete;aIpc=%d;aResult=%d", aIpc, aResult ); + + // Read Operator Name String (ONS Name) when SIM is ready. + // Read Operator PLMN List (OPL) rules when SIM is ready. + // SIM SMS cache: Start cacheing when SIM is ready. + if ( EMmTsyBootNotifySimStatusReadyIPC == aIpc && KErrNone == aResult ) + { + // Start ONS and OPL reading. + iMmNetMessHandler->InitializeOnsAndOplReading(); + // Start SMS cacheing. + iMmSmsMessHandler->InitializeSmsCache(); + } + + // complete request to upper layers + #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32) + RouteCompletion( aIpc, data, aResult ); + #else + iMessageManager->Complete( aIpc, data, aResult ); + #endif // NCP_COMMON_S60_VERSION_SUPPORT + + return; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::RouteRequest +// Returns pointer to the message handler for this request, based on IPC number +// ----------------------------------------------------------------------------- +// +MMmMessHandlerBase* CMmMessageRouter::RouteRequest + ( + const TInt aIpc // IPC number + ) + { +TFLOGSTRING2("TSY: CMmMessageRouter::RouteRequest. IPC:%d",aIpc); +OstTrace1( TRACE_NORMAL, CMMMESSAGEROUTER_ROUTEREQUEST, "CMmMessageRouter::RouteRequest;aIpc=%d", aIpc ); + + MMmMessHandlerBase* messHandler = NULL; + + switch( aIpc ) + { + case EMobileCallDialEmergencyCall: + case EEtelCallAnswer: + case EEtelCallDial: + case EEtelCallHangUp: + case EMobileCallHold: + case EMobileCallResume: + case EMobileCallSwap: + case EMobileCallGoOneToOne: + case EMobileCallTransfer: + case EMobileCallDeflect: + case EMobileCallDialISV: + case EMobileCallAnswerISV: + case EMobileCallActivateUUS: + case EMobileCallDialNoFdnCheck: + //CSD features + case EEtelCallLoanDataPort: + case EEtelCallRecoverDataPort: + { + messHandler = iMmCallMessHandler; + break; + } + case EMobilePhoneSetNetworkSelectionSetting: + case EMobilePhoneSelectNetwork: + case EMobilePhoneGetDetectedNetworksV2Phase1: + case EMobilePhoneSelectNetworkCancel: + case EMobilePhoneGetDetectedNetworksCancel: + case EMobilePhoneGetNetworkRegistrationStatus: + case EMobilePhoneGetHomeNetwork: + case EMobilePhoneGetNetworkSecurityLevel: + case EMobilePhoneGetCipheringIndicatorStatus: + case EMobilePhoneAuthorizationInfoPhase1: + { + messHandler = iMmNetMessHandler; + break; + } + // DTMF functionality + case EMobilePhoneStartDTMFTone: + case EMobilePhoneStopDTMFTone: + case EMobilePhoneSendDTMFTones: + case EMobilePhoneSendDTMFTonesCancel: + case EMobilePhoneContinueDTMFStringSending: + { + messHandler = iMmDtmfMessHandler; + break; + } + // Conference call functionality + case EMobileConferenceCallCreateConference: + case EMobileConferenceCallAddCall: + case EMobileConferenceCallSwap: + case EMobileConferenceCallHangUp: + { + messHandler = iMmConferenceCallMessHandler; + break; + } + case EMmTsyPhoneBookStoreReadIPC: + case EMmTsyPhoneBookStoreWriteIPC: + case EMmTsyPhoneBookStoreGetInfoIPC: + case EMmTsyPhoneBookStoreDeleteIPC: + case EMmTsyPhoneBookStoreDeleteAllIPC: + case EMmTsyPhoneBookStoreCacheIPC: + case EMmTsyPhoneBookStoreInitIPC: + case EMmTsyPhoneBookStoreCacheCancelIPC: + case EMobilePhoneGetMailboxNumbers: + { + messHandler = iMmPhoneBookStoreMessHandler; + break; + } + case EPacketAttach: + case EPacketDetach: + case EPacketGetNtwkRegStatus: + case EPacketSetAttachMode: + case EPacketRejectActivationRequest: + case EPacketGetAttachMode: + case EPacketSetPrefBearer: + case EPacketSetDefaultContextParams: + case EPacketNotifyContextAdded: + case EPacketNotifyDynamicCapsChange: + case EPacketNotifyStatusChange: + case ECustomSetAlwaysOnMode: + case EPacketInitProxiesIPC: + case EPacketNotifyTransferCapsIPC: + { + messHandler = iMmPacketServiceMessHandler; + break; + } + case EPacketContextInitialiseContext: + case EPacketContextSetConfig: + case EPacketContextActivate: + case EPacketContextDelete: + case EPacketContextGetDataVolumeTransferred: + case EPacketContextDeactivate: + case EPacketContextAddPacketFilter: + case EPacketContextModifyActiveContext: + case EPacketAddMediaAuthorization: + case ECustomSetDriveModeIPC: + { + messHandler = iMmPacketContextMessHandler; + break; + } + case EPacketQoSSetProfileParams: + case EPacketQoSNotifyProfileChanged: + case EPacketQoSNotifyProfileChangedCancel: + { + messHandler = iMmPacketQoSMessHandler; + break; + } + case EMobileUssdMessagingSendMessage: + case EMobileUssdMessagingSendRelease: + case EMobileUssdMessagingSendMessageNoFdnCheck: + { + messHandler = iMmUssdMessHandler; + break; + } + // Supplementary Services functionality + case EMobilePhoneGetCallForwardingStatusPhase1: + case EMobilePhoneSetCallForwardingStatus: + case EMobilePhoneGetBarringStatusPhase1: + case EMobilePhoneSetCallBarringStatus: + case EMobilePhoneSetSSPassword: + case EMobilePhoneGetWaitingStatusPhase1: + case EMobilePhoneSetCallWaitingStatus: + case EMobilePhoneNotifyCallWaitingStatusChange: + case EMobilePhoneGetIdentityServiceStatus: + case EMobilePhoneSendNetworkServiceRequest: + case EMobilePhoneSendNetworkServiceRequestNoFdnCheck: + case EMmTsyGetCallForwardingNumberIPC: + case EMobilePhoneGetIccMessageWaitingIndicators: + case EMobilePhoneSetIccMessageWaitingIndicators: + case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange: + case ECustomGetIccCallForwardingStatusIPC: + case ECustomNotifyIccCallForwardingStatusChangeIPC: + // Temporary until SAT: ETEL Multimode API + // usage for SAT has been implemented + case ESatNotifyCallControlRequest: + { + messHandler = iMmSupplServMessHandler; + break; + } + // Custom API functionality + case ECustomCancelUssdSessionIPC: + case ECustomClearCallBlackListIPC: + case ECustomCheckEmergencyNumberIPC: + case ECustomGetLifeTimeIPC: + case ECustomTerminateCallIPC: + case ECustomGetAlsBlockedIPC: + case ECustomSetAlsBlockedIPC: + case ECustomCheckAlsPpSupportIPC: + case ECustomCheckTwoDigitDialSupportIPC: + case ECustomGetCipheringInfoIPC: + case ECustomNetWakeupIPC: + case ECustomGetOperatorNameIPC: + case ECustomResetNetServerIPC: + case ECustomGetNetworkProviderNameIPC: + case ECustomReadSimFileIPC: + + // GetProgrammableOperatorLogo is not supported, see Change + // Request TSW ActionDB MS04052536038 + // case ECustomGetProgrammableOperatorLogoIPC: + + // martpiir 26-May-2004: The cases handled in + // Custom Sub-messagehandlers are currently routed to Custom + // GSM message handler, which in turn routes them to the + // appropriate Sub-messagehandler. This extra-routing has to be + // removed later!!! + case ECustomSimLockActivateIPC: + case ECustomSimLockDeActivateIPC: + case ECustomSendAPDUReqIPC: + case ECustomSimWarmResetIPC: + case ECustomGetATRIPC: + case ECustomGetSimCardReaderStatusIPC: + case ECustomSendAPDUReqV2IPC: + case ECustomNotifySimCardStatusIPC: + case ECustomPowerSimOnIPC: + case ECustomPowerSimOffIPC: + case ECustomStartSimCbTopicBrowsingIPC: + case ECustomDeleteSimCbTopicIPC: + case EReadViagHomeZoneParamsIPC: + case EReadViagHomeZoneCacheIPC: + case EWriteViagHomeZoneCacheIPC: + //WCDMA HZ: + case EWriteViagHomeZoneUHZIUESettingsIPC: + case ECustomGetSystemNetworkModesIPC: + case ECustomSetSystemNetworkModeIPC: + case ECustomGetCurrentSystemNetworkModesIPC: + case EMobilePhoneIMSAuthenticate: + case ECustomGetSimAuthenticationDataIPC: + case ECustomGetCellInfoIPC: + case ECustomWriteHSxPAStatusIPC: + case ECustomReadHSxPAStatusIPC: + +// not suppoted for S60 ver 3.2 +#if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 ) + case ECustomSetBandSelectionIPC: + case ECustomGetBandSelectionIPC: +#endif // NCP_COMMON_S60_VERSION_SUPPORT + + case ECustomGetServiceTableSupportbyApplicationIPC: + case EMmTsyUpdateLifeTimeIPC: + { + messHandler = iMmCustomMessHandler; + break; + } + + case EMobileBroadcastMessagingReceiveMessage: + case EMobileBroadcastMessagingReceiveMessageCancel: + case EMobileBroadcastMessagingSetFilterSetting: + case EMobileBroadcastMessagingSetLanguageFilter: + case EMobileBroadcastMessagingStoreIdList: + { + messHandler = iMmBroadMessHandler; + break; + } + //SMS functionality + case EMmTsyActivateSmsRouting: + case EMmTsyDeactivateSmsRouting: + case EMobileSmsMessagingGetMessageStoreInfo: + case EMobileSmsMessagingReceiveMessage: + case EMobileSmsMessagingSendMessage: + case EMobileSmsMessagingResumeSmsReception: + case EMobileSmsMessagingGetSmspListPhase1: + case EMobileSmsMessagingStoreSmspList: + case EMobileSmsMessagingAckSmsStored: + case EMobileSmsMessagingNackSmsStored: + case EMobilePhoneStoreGetInfo: + case EMobilePhoneStoreDelete: + case EMobilePhoneStoreDeleteAll: + case EMobilePhoneStoreRead: + case EMobilePhoneStoreReadAllPhase1: + case EMobilePhoneStoreWrite: + case EMmTsySmsSendSatMessage: + case ECustomSetSimMessageStatusReadIPC: + case EMobileSmsMessagingSetMoSmsBearer: + case EMobileSmsMessagingSendMessageNoFdnCheck: + { + messHandler = iMmSmsMessHandler; + break; + } + //Security and SIM + case EMobilePhoneGetLockInfo: + case EMobilePhoneChangeSecurityCode: + case EMobilePhoneAbortSecurityCode: + case EMobilePhoneVerifySecurityCode: + case EMobilePhoneSetLockSetting: + case EMmTsySecurityGetSimActivePinStateIPC: + case EMmTsyBootNotifySimStatusReadyIPC: + case EMobilePhoneNotifySecurityEvent: + case EMmTsySimGetICCType: + case EMobilePhoneGetCurrentActiveUSimApplication: + case EMobilePhoneSetFdnSetting: + case EMobilePhoneGetFdnStatus: + case EMmTsyBootGetRFStatusIPC: + case EMobilePhoneGetSecurityCodeInfo: + { + messHandler = iMmSecurityMessHandler; + break; + } + // Miscellaneous Phone features + // case EMobilePhoneGetBatteryInfo: Get battery info is handled completely in Commontsy + case EMobilePhoneGetPhoneStoreInfo: + case EMobilePhoneGetPhoneId: + case EMobilePhoneGetSubscriberId: + case EMobilePhoneGetALSLine: + case EMobilePhoneSetALSLine: + case EMobilePhoneGetCustomerServiceProfile: + case EMobilePhoneGetServiceTable: + case EMmTsyPhoneGetPin1DisableSupportedIPC: + case EMobilePhoneGetServiceProviderName: + case EMmTsySimRefreshRegisterIPC: + case EMmTsySimRefreshDoneIPC: + case EMobilePhoneGetAPNControlListServiceStatus: + case EMobilePhoneSetAPNControlListServiceStatus: + case EMobilePhoneDeleteAPNName: + case EMobilePhoneAppendAPNName: + case EMobilePhoneEnumerateAPNEntries: + case EMobilePhoneGetAPNname: + { + messHandler = iMmPhoneMessHandler; + break; + } + default: + { +TFLOGSTRING("TSY: CMmMessageRouter::RouteRequest. Switch aIpc case Default"); +OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_ROUTEREQUEST, "CMmMessageRouter::RouteRequest, Switch aIpc case Default" ); + messHandler = NULL; + } + } + + return messHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::ExtFuncL +// Find out the correct message handler and call its ExtFuncL +// ----------------------------------------------------------------------------- +// +TInt CMmMessageRouter::ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage ) + { +TFLOGSTRING2("TSY: CMmMessageRouter::ExtFuncL. IPC = %d", aIpc); +OstTrace1( TRACE_NORMAL, CMMMESSAGEROUTER_EXTFUNCL, "CMmMessageRouter::ExtFuncL;aIpc=%d", aIpc ); + + TInt ret ( KErrNone ); + + // Check if the IPC is supported + MMmMessHandlerBase* messageHandler = RouteRequest( aIpc ); + if ( NULL == messageHandler ) + { + ret = KErrNotSupported; + } + else + { + // Call to DOS layer + ret = messageHandler->ExtFuncL( aIpc, aDataPackage ); + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetPhoNetSender +// Returns pointer to Phonet sender +// ----------------------------------------------------------------------------- +// +EXPORT_C CMmPhoNetSender* CMmMessageRouter::GetPhoNetSender() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetPhoNetSender"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONETSENDER, "CMmMessageRouter::GetPhoNetSender" ); + return iPhoNetSender; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetPhoNetReceiver +// Returns pointer to Phonet receiver +// ----------------------------------------------------------------------------- +// +EXPORT_C CMmPhoNetReceiver* CMmMessageRouter::GetPhoNetReceiver() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetPhoNetReceiver"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONETRECEIVER, "CMmMessageRouter::GetPhoNetReceiver" ); + return iPhoNetReceiver; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetCallMessHandler +// Returns pointer to Call message handler +// ----------------------------------------------------------------------------- +// +CMmCallMessHandler* CMmMessageRouter::GetCallMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetCallMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETCALLMESSHANDLER, "CMmMessageRouter::GetCallMessHandler" ); + return iMmCallMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetPhoneMessHandler +// Returns pointer to Phone message handler +// ----------------------------------------------------------------------------- +// +CMmPhoneMessHandler* CMmMessageRouter::GetPhoneMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetPhoneMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONEMESSHANDLER, "CMmMessageRouter::GetPhoneMessHandler" ); + return iMmPhoneMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetPacketServiceMessHandler +// Returns pointer to Packet service message handler +// ----------------------------------------------------------------------------- +// +CMmPacketServiceMessHandler* CMmMessageRouter::GetPacketServiceMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetPacketServiceMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPACKETSERVICEMESSHANDLER, "CMmMessageRouter::GetPacketServiceMessHandler" ); + return iMmPacketServiceMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetCustomMessHandler +// Returns pointer to Custom message handler +// ----------------------------------------------------------------------------- +// +CMmCustomMessHandler* CMmMessageRouter::GetCustomMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetCustomMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETCUSTOMMESSHANDLER, "CMmMessageRouter::GetCustomMessHandler" ); + return iMmCustomMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetSmsMessHandler +// Returns pointer to SMS message handler +// ----------------------------------------------------------------------------- +// +CMmSmsMessHandler* CMmMessageRouter::GetSmsMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetSmsMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETSMSMESSHANDLER, "CMmMessageRouter::GetSmsMessHandler" ); + return iMmSmsMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetSupplServHandler +// Returns pointer to SS message handler +// ----------------------------------------------------------------------------- +// +CMmSupplServMessHandler* CMmMessageRouter::GetSupplServHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetSupplServHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETSUPPLSERVHANDLER, "CMmMessageRouter::GetSupplServHandler" ); + return iMmSupplServMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::PhoneBookStoreMessHandler +// Returns pointer to Phonebookstore message handler +// ----------------------------------------------------------------------------- +// +CMmPhoneBookStoreMessHandler* CMmMessageRouter::PhoneBookStoreMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::PhoneBookStoreMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_PHONEBOOKSTOREMESSHANDLER, "CMmMessageRouter::PhoneBookStoreMessHandler" ); + return iMmPhoneBookStoreMessHandler; + } + +// ----------------------------------------------------------------------------- +// CMmMessageRouter::GetNetMessHandler +// Returns pointer to NET message handler +// ----------------------------------------------------------------------------- +// +CMmNetMessHandler* CMmMessageRouter::GetNetMessHandler() + { +TFLOGSTRING("TSY: CMmMessageRouter::GetNetMessHandler"); +OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETNETMESSHANDLER, "CMmMessageRouter::GetNetMessHandler" ); + return iMmNetMessHandler; + } + +// ==================== OTHER EXPORTED FUNCTIONS =============================== + //None + +// End of File