adaptationlayer/tsy/nokiatsy_dll/src/cmmmessagerouter.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
equal deleted inserted replaced
-1:000000000000 0:63b37f68c1ce
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 //  INCLUDE FILES
       
    21 #include "mmmmesshandlerbase.h"
       
    22 #include "cmmmessagerouter.h"
       
    23 #include "cmmphonetsender.h"
       
    24 #include "cmmphonetreceiver.h"
       
    25 #include "cmmcallmesshandler.h"
       
    26 #include "cmmconferencecallmesshandler.h"
       
    27 #include "cmmdtmfmesshandler.h"
       
    28 #include "cmmnetmesshandler.h"
       
    29 #include "cmmnetoperatornamehandler.h"
       
    30 #include "cmmphonemesshandler.h"
       
    31 #include "cmmsupplservmesshandler.h"
       
    32 #include "cmmphonebookstoremesshandler.h"
       
    33 #include "cmmpacketservicemesshandler.h"
       
    34 #include "cmmpacketcontextmesshandler.h"
       
    35 #include "cmmpacketqosmesshandler.h"
       
    36 #include "cmmussdmesshandler.h"
       
    37 #include "cmmbroadmesshandler.h"
       
    38 #include "cmmcustommesshandler.h"
       
    39 #include "cmmsmsmesshandler.h"
       
    40 #include "cmmsecuritymesshandler.h"
       
    41 #include "cmmuiccmesshandler.h"
       
    42 #include "nokiatsy_internal_variation.h"
       
    43 #include "nokiatsy_release.h" // for print release information to TSY logs
       
    44 #include "tsylogger.h"
       
    45 
       
    46 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
       
    47 #include <pcktcs.h> // for packet data IPCs
       
    48 #include <satcs.h> // for SIM ATK call control
       
    49 #include <pn_const.h>
       
    50 #include <pipe_sharedisi.h>
       
    51 #include <ctsy/rmmcustomapi.h>
       
    52 
       
    53 #include "osttracedefinitions.h"
       
    54 #ifdef OST_TRACE_COMPILER_IN_USE
       
    55 #include "cmmmessageroutertraces.h"
       
    56 #endif
       
    57 
       
    58 // EXTERNAL DATA STRUCTURES
       
    59     //None
       
    60 
       
    61 // EXTERNAL FUNCTION PROTOTYPES
       
    62     //None
       
    63 
       
    64 // CONSTANTS
       
    65     //None
       
    66 
       
    67 // MACROS
       
    68     //None
       
    69 
       
    70 // LOCAL CONSTANTS AND MACROS
       
    71     //None
       
    72 
       
    73 // MODULE DATA STRUCTURES
       
    74     //None
       
    75 
       
    76 // LOCAL FUNCTION PROTOTYPES
       
    77     //None
       
    78 
       
    79 // ==================== LOCAL FUNCTIONS =====================================
       
    80     //None
       
    81 
       
    82 // ================= MEMBER FUNCTIONS =======================================
       
    83 
       
    84 // -----------------------------------------------------------------------------
       
    85 // CMmMessageRouter::NewL
       
    86 // Creates new CMmMessageRouter object and returns it.
       
    87 // -----------------------------------------------------------------------------
       
    88 //
       
    89 EXPORT_C CMmMessageRouter* CMmMessageRouter::NewL
       
    90         (
       
    91         #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
       
    92         CMmMessageManager* aMessageManager
       
    93         #else
       
    94         MmMessageManagerCallback* aMessageManager
       
    95         #endif // NCP_COMMON_S60_VERSION_SUPPORT
       
    96         )
       
    97     {
       
    98 TFLOGSTRING("TSY: CMmMessageRouter::NewL");
       
    99 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_NEWL, "CMmMessageRouter::NewL" );
       
   100 
       
   101     CMmMessageRouter* messageRouter = NULL;
       
   102 
       
   103     messageRouter = new ( ELeave ) CMmMessageRouter();
       
   104     CleanupStack::PushL( messageRouter );
       
   105     messageRouter->ConstructL( aMessageManager );
       
   106     CleanupStack::Pop( messageRouter );
       
   107 
       
   108     return messageRouter;
       
   109     }
       
   110 
       
   111 // -----------------------------------------------------------------------------
       
   112 // CMmMessageRouter::~CMmMessageRouter
       
   113 // Destructor, deletes all allocated resources.
       
   114 // -----------------------------------------------------------------------------
       
   115 //
       
   116 CMmMessageRouter::~CMmMessageRouter()
       
   117     {
       
   118 TFLOGSTRING("TSY: CMmMessageRouter::~CMmMessageRouter");
       
   119 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_CMMMESSAGEROUTER, "CMmMessageRouter::~CMmMessageRouter" );
       
   120 
       
   121     delete iMmPhoneMessHandler;
       
   122     delete iMmCallMessHandler;
       
   123     delete iMmConferenceCallMessHandler;
       
   124     delete iMmDtmfMessHandler;
       
   125     delete iMmNetMessHandler;
       
   126     delete iMmSecurityMessHandler;
       
   127     delete iMmPhoneBookStoreMessHandler;
       
   128     delete iMmPacketContextMessHandler;
       
   129     delete iMmPacketQoSMessHandler;
       
   130     delete iMmPacketServiceMessHandler;
       
   131     delete iMmSmsMessHandler;
       
   132     delete iMmSupplServMessHandler;
       
   133     delete iMmUssdMessHandler;
       
   134     delete iMmCustomMessHandler;
       
   135     delete iMmBroadMessHandler;
       
   136     delete iMmUiccMessHandler;
       
   137 
       
   138     //delete Phonet components
       
   139     delete iPhoNetSender;
       
   140     delete iPhoNetReceiver;
       
   141 
       
   142     iPhoNet.Close();
       
   143     }
       
   144 
       
   145 // -----------------------------------------------------------------------------
       
   146 // CMmMessageRouter::CMmMessageRouter
       
   147 // Constructor
       
   148 // -----------------------------------------------------------------------------
       
   149 //
       
   150 CMmMessageRouter::CMmMessageRouter()
       
   151     {
       
   152 OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_CMMMESSAGEROUTER, "CMmMessageRouter::CMmMessageRouter" );
       
   153     // none
       
   154     }
       
   155 
       
   156 // -----------------------------------------------------------------------------
       
   157 // CMmMessageRouter::ConstructL
       
   158 // Creates and initialises class attributes
       
   159 // -----------------------------------------------------------------------------
       
   160 //
       
   161 #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
       
   162 void CMmMessageRouter::ConstructL
       
   163         (
       
   164         CMmMessageManager* aMessageManager
       
   165         )
       
   166 #else
       
   167 void CMmMessageRouter::ConstructL
       
   168         (
       
   169         MmMessageManagerCallback* aMessageManager
       
   170         )
       
   171 #endif // NCP_COMMON_S60_VERSION_SUPPORT
       
   172     {
       
   173     //PRINT VERSION STRING TO LOG
       
   174 TFLOGSTRING(NOKIATSY_RELEASE_STR);
       
   175 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_CONSTRUCTL, NOKIATSY_RELEASE_STR );
       
   176 
       
   177     //INIT PHONET
       
   178     /**************************************************************/
       
   179 
       
   180     // Creation of PhoNet objects.
       
   181 
       
   182 TFLOGSTRING("TSY: CMmMessageRouter::ConstructL -- initializing ISC API");
       
   183 OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL, initializing ISC API" );
       
   184 
       
   185     // Only for server information, which is defined with one byte.
       
   186     TBuf8<1> resource;
       
   187     // resource.Append( PN_ATK );
       
   188     TRequestStatus status( KRequestPending );
       
   189     // open returns void
       
   190     iPhoNet.Open( EIscNokiaMmTsy, status, EOwnerThread, &resource );
       
   191     User::WaitForRequest( status );
       
   192 
       
   193 TFLOGSTRING2("TSY: CMmMessageRouter::ConstructL - status: %d",  status.Int() );
       
   194 OstTrace1( TRACE_NORMAL, DUP2_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL;status=%d", status.Int());
       
   195 
       
   196     User::LeaveIfError( status.Int() );
       
   197 
       
   198     iMessageManager = aMessageManager;
       
   199 
       
   200     iPhoNetSender = CMmPhoNetSender::NewL( &iPhoNet );
       
   201     iPhoNetReceiver = CMmPhoNetReceiver::NewL( &iPhoNet );
       
   202     //start receiving
       
   203     iPhoNetReceiver->ReceiveL();
       
   204 
       
   205 
       
   206 TFLOGSTRING("TSY: CMmMessageRouter::ConstructL -- initializing done");
       
   207 OstTrace0( TRACE_NORMAL, DUP3_CMMMESSAGEROUTER_CONSTRUCTL, "CMmMessageRouter::ConstructL, initializing done" );
       
   208 
       
   209     //END INIT PHONET
       
   210     /**************************************************************/
       
   211 
       
   212     iMmUiccMessHandler = CMmUiccMessHandler::NewL(
       
   213         iPhoNetSender,
       
   214         iPhoNetReceiver, 
       
   215         this );
       
   216 
       
   217     iMmDtmfMessHandler = CMmDtmfMessHandler::NewL(
       
   218         iPhoNetSender,
       
   219         iPhoNetReceiver,
       
   220         this );
       
   221 
       
   222     iMmCallMessHandler = CMmCallMessHandler::NewL(
       
   223         iPhoNetSender,
       
   224         iPhoNetReceiver,
       
   225         iMmDtmfMessHandler,
       
   226         this );
       
   227 
       
   228     iMmConferenceCallMessHandler = CMmConferenceCallMessHandler::NewL(
       
   229         iPhoNetSender,
       
   230         iPhoNetReceiver,
       
   231         this );
       
   232 
       
   233     iMmNetMessHandler = CMmNetMessHandler::NewL(
       
   234         iPhoNetSender,
       
   235         iPhoNetReceiver,
       
   236         this,
       
   237         iMmUiccMessHandler );
       
   238 
       
   239     iMmSupplServMessHandler = CMmSupplServMessHandler::NewL(
       
   240         iPhoNetSender,
       
   241         iPhoNetReceiver,
       
   242         this,
       
   243         iMmUiccMessHandler );
       
   244 
       
   245     iMmSecurityMessHandler = CMmSecurityMessHandler::NewL(
       
   246         iPhoNetSender,
       
   247         iPhoNetReceiver,
       
   248         iMmNetMessHandler,
       
   249         iMmCallMessHandler,
       
   250         this,
       
   251         iMmUiccMessHandler );
       
   252 
       
   253     iMmPhoneMessHandler = CMmPhoneMessHandler::NewL(
       
   254         iPhoNetSender,
       
   255         iPhoNetReceiver,
       
   256         this,
       
   257         iMmSupplServMessHandler,
       
   258         iMmUiccMessHandler );
       
   259 
       
   260     iMmSmsMessHandler = CMmSmsMessHandler::NewL(
       
   261         iPhoNetSender,
       
   262         iPhoNetReceiver,
       
   263         this,
       
   264         iMmUiccMessHandler );
       
   265 
       
   266     iMmBroadMessHandler = CMmBroadMessHandler::NewL(
       
   267         iPhoNetSender,
       
   268         iPhoNetReceiver,
       
   269         this );
       
   270 
       
   271     iMmUssdMessHandler = CMmUssdMessHandler::NewL(
       
   272         iPhoNetSender,
       
   273         iPhoNetReceiver,
       
   274         this );
       
   275 
       
   276     iMmCustomMessHandler = CMmCustomMessHandler::NewL(
       
   277         iPhoNetSender,
       
   278         iPhoNetReceiver,
       
   279         iMmNetMessHandler,
       
   280         iMmSecurityMessHandler,
       
   281         this,
       
   282         iMmUiccMessHandler );
       
   283     
       
   284     iMmPhoneBookStoreMessHandler = CMmPhoneBookStoreMessHandler::NewL(
       
   285         this,
       
   286         iMmUiccMessHandler);
       
   287 
       
   288     iMmPacketServiceMessHandler = CMmPacketServiceMessHandler::NewL(
       
   289         iPhoNetSender,
       
   290         iPhoNetReceiver,
       
   291         this );
       
   292 
       
   293     iMmPacketQoSMessHandler = CMmPacketQoSMessHandler::NewL(
       
   294         iPhoNetSender,
       
   295         iPhoNetReceiver,
       
   296         iMmPacketServiceMessHandler->PacketContextList(),
       
   297         this );
       
   298 
       
   299     iMmPacketContextMessHandler = CMmPacketContextMessHandler::NewL(
       
   300         iPhoNetSender,
       
   301         iPhoNetReceiver,
       
   302         iMmPacketServiceMessHandler->PacketContextList(),
       
   303         iMmPacketQoSMessHandler,
       
   304         this );
       
   305     }
       
   306 
       
   307 // ---------------------------------------------------------------------------
       
   308 // CMmMessageRouter::Complete
       
   309 // Complete without a data package
       
   310 // (other items were commented in a header).
       
   311 // ---------------------------------------------------------------------------
       
   312 //
       
   313 void CMmMessageRouter::Complete(
       
   314     TInt aIpc,
       
   315     TInt aResult )
       
   316     {
       
   317 TFLOGSTRING3("NTSY: CMmMessageRouter::Complete. without data package. IPC = %d, result: %d", aIpc, aResult);
       
   318 OstTraceExt2( TRACE_NORMAL, CMMMESSAGEROUTER_COMPLETE, "CMmMessageRouter::Complete;aIpc=%d;aResult=%d", aIpc, aResult );
       
   319     CMmDataPackage emptyDataPackage;
       
   320     Complete( aIpc, &emptyDataPackage, aResult );
       
   321     return;
       
   322     }
       
   323 
       
   324 // ---------------------------------------------------------------------------
       
   325 // CMmMessageRouter::Complete
       
   326 // Complete with a data package
       
   327 // (other items were commented in a header).
       
   328 // ---------------------------------------------------------------------------
       
   329 //
       
   330 void CMmMessageRouter::Complete(
       
   331     TInt aIpc,
       
   332     CMmDataPackage* data,
       
   333     TInt aResult )
       
   334     {
       
   335 TFLOGSTRING3("NTSY: CMmMessageRouter::Complete. IPC = %d, result: %d", aIpc, aResult);
       
   336 OstTraceExt2( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_COMPLETE, "CMmMessageRouter::Complete;aIpc=%d;aResult=%d", aIpc, aResult );
       
   337 
       
   338     // Read Operator Name String (ONS Name) when SIM is ready.
       
   339     // Read Operator PLMN List (OPL) rules when SIM is ready.
       
   340     // SIM SMS cache: Start cacheing when SIM is ready.
       
   341     if ( EMmTsyBootNotifySimStatusReadyIPC == aIpc && KErrNone == aResult )
       
   342         {
       
   343         // Start ONS and OPL reading.
       
   344         iMmNetMessHandler->InitializeOnsAndOplReading();
       
   345         // Start SMS cacheing.
       
   346         iMmSmsMessHandler->InitializeSmsCache();
       
   347         }
       
   348 
       
   349     // complete request to upper layers
       
   350     #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
       
   351     RouteCompletion( aIpc, data, aResult );
       
   352     #else
       
   353     iMessageManager->Complete( aIpc, data, aResult );
       
   354     #endif // NCP_COMMON_S60_VERSION_SUPPORT
       
   355 
       
   356     return;
       
   357     }
       
   358 
       
   359 // -----------------------------------------------------------------------------
       
   360 // CMmMessageRouter::RouteRequest
       
   361 // Returns pointer to the message handler for this request, based on IPC number
       
   362 // -----------------------------------------------------------------------------
       
   363 //
       
   364 MMmMessHandlerBase* CMmMessageRouter::RouteRequest
       
   365         (
       
   366         const TInt aIpc // IPC number
       
   367         )
       
   368     {
       
   369 TFLOGSTRING2("TSY: CMmMessageRouter::RouteRequest. IPC:%d",aIpc);
       
   370 OstTrace1( TRACE_NORMAL, CMMMESSAGEROUTER_ROUTEREQUEST, "CMmMessageRouter::RouteRequest;aIpc=%d", aIpc );
       
   371 
       
   372     MMmMessHandlerBase* messHandler = NULL;
       
   373 
       
   374         switch( aIpc )
       
   375             {
       
   376             case EMobileCallDialEmergencyCall:
       
   377             case EEtelCallAnswer:
       
   378             case EEtelCallDial:
       
   379             case EEtelCallHangUp:
       
   380             case EMobileCallHold:
       
   381             case EMobileCallResume:
       
   382             case EMobileCallSwap:
       
   383             case EMobileCallGoOneToOne:
       
   384             case EMobileCallTransfer:
       
   385             case EMobileCallDeflect:
       
   386             case EMobileCallDialISV:
       
   387             case EMobileCallAnswerISV:
       
   388             case EMobileCallActivateUUS:
       
   389             case EMobileCallDialNoFdnCheck:
       
   390             //CSD features
       
   391             case EEtelCallLoanDataPort:
       
   392             case EEtelCallRecoverDataPort:
       
   393                 {
       
   394                 messHandler = iMmCallMessHandler;
       
   395                 break;
       
   396                 }
       
   397             case EMobilePhoneSetNetworkSelectionSetting:
       
   398             case EMobilePhoneSelectNetwork:
       
   399             case EMobilePhoneGetDetectedNetworksV2Phase1:
       
   400             case EMobilePhoneSelectNetworkCancel:
       
   401             case EMobilePhoneGetDetectedNetworksCancel:
       
   402             case EMobilePhoneGetNetworkRegistrationStatus:
       
   403             case EMobilePhoneGetHomeNetwork:
       
   404             case EMobilePhoneGetNetworkSecurityLevel:
       
   405             case EMobilePhoneGetCipheringIndicatorStatus:
       
   406             case EMobilePhoneAuthorizationInfoPhase1:
       
   407                 {
       
   408                 messHandler = iMmNetMessHandler;
       
   409                 break;
       
   410                 }
       
   411             // DTMF functionality
       
   412             case EMobilePhoneStartDTMFTone:
       
   413             case EMobilePhoneStopDTMFTone:
       
   414             case EMobilePhoneSendDTMFTones:
       
   415             case EMobilePhoneSendDTMFTonesCancel:
       
   416             case EMobilePhoneContinueDTMFStringSending:
       
   417                 {
       
   418                 messHandler = iMmDtmfMessHandler;
       
   419                 break;
       
   420                 }
       
   421             // Conference call functionality
       
   422             case EMobileConferenceCallCreateConference:
       
   423             case EMobileConferenceCallAddCall:
       
   424             case EMobileConferenceCallSwap:
       
   425             case EMobileConferenceCallHangUp:
       
   426                 {
       
   427                 messHandler = iMmConferenceCallMessHandler;
       
   428                 break;
       
   429                 }
       
   430             case EMmTsyPhoneBookStoreReadIPC:
       
   431             case EMmTsyPhoneBookStoreWriteIPC:
       
   432             case EMmTsyPhoneBookStoreGetInfoIPC:
       
   433             case EMmTsyPhoneBookStoreDeleteIPC:
       
   434             case EMmTsyPhoneBookStoreDeleteAllIPC:
       
   435             case EMmTsyPhoneBookStoreCacheIPC:
       
   436             case EMmTsyPhoneBookStoreInitIPC:
       
   437             case EMmTsyPhoneBookStoreCacheCancelIPC:
       
   438             case EMobilePhoneGetMailboxNumbers:
       
   439                 {
       
   440                 messHandler = iMmPhoneBookStoreMessHandler;
       
   441                 break;
       
   442                 }
       
   443             case EPacketAttach:
       
   444             case EPacketDetach:
       
   445             case EPacketGetNtwkRegStatus:
       
   446             case EPacketSetAttachMode:
       
   447             case EPacketRejectActivationRequest:
       
   448             case EPacketGetAttachMode:
       
   449             case EPacketSetPrefBearer:
       
   450             case EPacketSetDefaultContextParams:
       
   451             case EPacketNotifyContextAdded:
       
   452             case EPacketNotifyDynamicCapsChange:
       
   453             case EPacketNotifyStatusChange:
       
   454             case ECustomSetAlwaysOnMode:
       
   455             case EPacketInitProxiesIPC:
       
   456             case EPacketNotifyTransferCapsIPC:
       
   457                 {
       
   458                 messHandler = iMmPacketServiceMessHandler;
       
   459                 break;
       
   460                 }
       
   461             case EPacketContextInitialiseContext:
       
   462             case EPacketContextSetConfig:
       
   463             case EPacketContextActivate:
       
   464             case EPacketContextDelete:
       
   465             case EPacketContextGetDataVolumeTransferred:
       
   466             case EPacketContextDeactivate:
       
   467             case EPacketContextAddPacketFilter:
       
   468             case EPacketContextModifyActiveContext:
       
   469             case EPacketAddMediaAuthorization:
       
   470             case ECustomSetDriveModeIPC:
       
   471                 {
       
   472                 messHandler = iMmPacketContextMessHandler;
       
   473                 break;
       
   474                 }
       
   475             case EPacketQoSSetProfileParams:
       
   476             case EPacketQoSNotifyProfileChanged:
       
   477             case EPacketQoSNotifyProfileChangedCancel:
       
   478                 {
       
   479                 messHandler = iMmPacketQoSMessHandler;
       
   480                 break;
       
   481                 }
       
   482             case EMobileUssdMessagingSendMessage:
       
   483             case EMobileUssdMessagingSendRelease:
       
   484             case EMobileUssdMessagingSendMessageNoFdnCheck:
       
   485                 {
       
   486                 messHandler = iMmUssdMessHandler;
       
   487                 break;
       
   488                 }
       
   489             // Supplementary Services functionality
       
   490             case EMobilePhoneGetCallForwardingStatusPhase1:
       
   491             case EMobilePhoneSetCallForwardingStatus:
       
   492             case EMobilePhoneGetBarringStatusPhase1:
       
   493             case EMobilePhoneSetCallBarringStatus:
       
   494             case EMobilePhoneSetSSPassword:
       
   495             case EMobilePhoneGetWaitingStatusPhase1:
       
   496             case EMobilePhoneSetCallWaitingStatus:
       
   497             case EMobilePhoneNotifyCallWaitingStatusChange:
       
   498             case EMobilePhoneGetIdentityServiceStatus:
       
   499             case EMobilePhoneSendNetworkServiceRequest:
       
   500             case EMobilePhoneSendNetworkServiceRequestNoFdnCheck:
       
   501             case EMmTsyGetCallForwardingNumberIPC:
       
   502             case EMobilePhoneGetIccMessageWaitingIndicators:
       
   503             case EMobilePhoneSetIccMessageWaitingIndicators:
       
   504             case EMobilePhoneNotifyIccMessageWaitingIndicatorsChange:
       
   505             case ECustomGetIccCallForwardingStatusIPC:
       
   506             case ECustomNotifyIccCallForwardingStatusChangeIPC:
       
   507             // Temporary until SAT: ETEL Multimode API
       
   508             // usage for SAT has been implemented
       
   509             case ESatNotifyCallControlRequest:
       
   510                 {
       
   511                 messHandler = iMmSupplServMessHandler;
       
   512                 break;
       
   513                 }
       
   514             // Custom API functionality
       
   515             case ECustomCancelUssdSessionIPC:
       
   516             case ECustomClearCallBlackListIPC:
       
   517             case ECustomCheckEmergencyNumberIPC:
       
   518             case ECustomGetLifeTimeIPC:
       
   519             case ECustomTerminateCallIPC:
       
   520             case ECustomGetAlsBlockedIPC:
       
   521             case ECustomSetAlsBlockedIPC:
       
   522             case ECustomCheckAlsPpSupportIPC:
       
   523             case ECustomCheckTwoDigitDialSupportIPC:
       
   524             case ECustomGetCipheringInfoIPC:
       
   525             case ECustomNetWakeupIPC:
       
   526             case ECustomGetOperatorNameIPC:
       
   527             case ECustomResetNetServerIPC:
       
   528             case ECustomGetNetworkProviderNameIPC:
       
   529             case ECustomReadSimFileIPC:
       
   530 
       
   531             // GetProgrammableOperatorLogo is not supported, see Change
       
   532             // Request TSW ActionDB MS04052536038
       
   533             // case ECustomGetProgrammableOperatorLogoIPC:
       
   534 
       
   535             // martpiir 26-May-2004: The cases handled in
       
   536             // Custom Sub-messagehandlers are currently routed to Custom
       
   537             // GSM message handler, which in turn routes them to the
       
   538             // appropriate Sub-messagehandler. This extra-routing has to be
       
   539             // removed later!!!
       
   540             case ECustomSimLockActivateIPC:
       
   541             case ECustomSimLockDeActivateIPC:
       
   542             case ECustomSendAPDUReqIPC:
       
   543             case ECustomSimWarmResetIPC:
       
   544             case ECustomGetATRIPC:
       
   545             case ECustomGetSimCardReaderStatusIPC:
       
   546             case ECustomSendAPDUReqV2IPC:
       
   547             case ECustomNotifySimCardStatusIPC:
       
   548             case ECustomPowerSimOnIPC:
       
   549             case ECustomPowerSimOffIPC:
       
   550             case ECustomStartSimCbTopicBrowsingIPC:
       
   551             case ECustomDeleteSimCbTopicIPC:
       
   552             case EReadViagHomeZoneParamsIPC:
       
   553             case EReadViagHomeZoneCacheIPC:
       
   554             case EWriteViagHomeZoneCacheIPC:
       
   555             //WCDMA HZ:
       
   556             case EWriteViagHomeZoneUHZIUESettingsIPC:
       
   557             case ECustomGetSystemNetworkModesIPC:
       
   558             case ECustomSetSystemNetworkModeIPC:
       
   559             case ECustomGetCurrentSystemNetworkModesIPC:
       
   560             case EMobilePhoneIMSAuthenticate:
       
   561             case ECustomGetSimAuthenticationDataIPC:
       
   562             case ECustomGetCellInfoIPC:
       
   563             case ECustomWriteHSxPAStatusIPC:
       
   564             case ECustomReadHSxPAStatusIPC:
       
   565 
       
   566 // not suppoted for S60 ver 3.2
       
   567 #if ( NCP_COMMON_S60_VERSION_SUPPORT != S60_VERSION_32 )
       
   568             case ECustomSetBandSelectionIPC:
       
   569             case ECustomGetBandSelectionIPC:
       
   570 #endif // NCP_COMMON_S60_VERSION_SUPPORT
       
   571 
       
   572             case ECustomGetServiceTableSupportbyApplicationIPC:
       
   573             case EMmTsyUpdateLifeTimeIPC:
       
   574                 {
       
   575                 messHandler = iMmCustomMessHandler;
       
   576                 break;
       
   577                 }
       
   578 
       
   579             case EMobileBroadcastMessagingReceiveMessage:
       
   580             case EMobileBroadcastMessagingReceiveMessageCancel:
       
   581             case EMobileBroadcastMessagingSetFilterSetting:
       
   582             case EMobileBroadcastMessagingSetLanguageFilter:
       
   583             case EMobileBroadcastMessagingStoreIdList:
       
   584                 {
       
   585                 messHandler = iMmBroadMessHandler;
       
   586                 break;
       
   587                 }
       
   588             //SMS functionality
       
   589             case EMmTsyActivateSmsRouting:
       
   590             case EMmTsyDeactivateSmsRouting:
       
   591             case EMobileSmsMessagingGetMessageStoreInfo:
       
   592             case EMobileSmsMessagingReceiveMessage:
       
   593             case EMobileSmsMessagingSendMessage:
       
   594             case EMobileSmsMessagingResumeSmsReception:
       
   595             case EMobileSmsMessagingGetSmspListPhase1:
       
   596             case EMobileSmsMessagingStoreSmspList:
       
   597             case EMobileSmsMessagingAckSmsStored:
       
   598             case EMobileSmsMessagingNackSmsStored:
       
   599             case EMobilePhoneStoreGetInfo:
       
   600             case EMobilePhoneStoreDelete:
       
   601             case EMobilePhoneStoreDeleteAll:
       
   602             case EMobilePhoneStoreRead:
       
   603             case EMobilePhoneStoreReadAllPhase1:
       
   604             case EMobilePhoneStoreWrite:
       
   605             case EMmTsySmsSendSatMessage:
       
   606             case ECustomSetSimMessageStatusReadIPC:
       
   607             case EMobileSmsMessagingSetMoSmsBearer:
       
   608             case EMobileSmsMessagingSendMessageNoFdnCheck:
       
   609                 {
       
   610                 messHandler = iMmSmsMessHandler;
       
   611                 break;
       
   612                 }
       
   613             //Security and SIM
       
   614             case EMobilePhoneGetLockInfo:
       
   615             case EMobilePhoneChangeSecurityCode:
       
   616             case EMobilePhoneAbortSecurityCode:
       
   617             case EMobilePhoneVerifySecurityCode:
       
   618             case EMobilePhoneSetLockSetting:
       
   619             case EMmTsySecurityGetSimActivePinStateIPC:
       
   620             case EMmTsyBootNotifySimStatusReadyIPC:
       
   621             case EMobilePhoneNotifySecurityEvent:
       
   622             case EMmTsySimGetICCType:
       
   623             case EMobilePhoneGetCurrentActiveUSimApplication:
       
   624             case EMobilePhoneSetFdnSetting:
       
   625             case EMobilePhoneGetFdnStatus:
       
   626             case EMmTsyBootGetRFStatusIPC:
       
   627             case EMobilePhoneGetSecurityCodeInfo:
       
   628                 {
       
   629                 messHandler = iMmSecurityMessHandler;
       
   630                 break;
       
   631                 }
       
   632             // Miscellaneous Phone features
       
   633             // case EMobilePhoneGetBatteryInfo: Get battery info is handled completely in Commontsy
       
   634             case EMobilePhoneGetPhoneStoreInfo:
       
   635             case EMobilePhoneGetPhoneId:
       
   636             case EMobilePhoneGetSubscriberId:
       
   637             case EMobilePhoneGetALSLine:
       
   638             case EMobilePhoneSetALSLine:
       
   639             case EMobilePhoneGetCustomerServiceProfile:
       
   640             case EMobilePhoneGetServiceTable:
       
   641             case EMmTsyPhoneGetPin1DisableSupportedIPC:
       
   642             case EMobilePhoneGetServiceProviderName:
       
   643             case EMmTsySimRefreshRegisterIPC:
       
   644             case EMmTsySimRefreshDoneIPC:
       
   645             case EMobilePhoneGetAPNControlListServiceStatus:
       
   646             case EMobilePhoneSetAPNControlListServiceStatus:
       
   647             case EMobilePhoneDeleteAPNName:
       
   648             case EMobilePhoneAppendAPNName:
       
   649             case EMobilePhoneEnumerateAPNEntries:
       
   650             case EMobilePhoneGetAPNname:
       
   651                 {
       
   652                 messHandler = iMmPhoneMessHandler;
       
   653                 break;
       
   654                 }
       
   655             default:
       
   656                 {
       
   657 TFLOGSTRING("TSY: CMmMessageRouter::RouteRequest. Switch aIpc case Default");
       
   658 OstTrace0( TRACE_NORMAL, DUP1_CMMMESSAGEROUTER_ROUTEREQUEST, "CMmMessageRouter::RouteRequest, Switch aIpc case Default" );
       
   659                 messHandler = NULL;
       
   660                 }
       
   661             }
       
   662 
       
   663     return messHandler;
       
   664     }
       
   665 
       
   666 // -----------------------------------------------------------------------------
       
   667 // CMmMessageRouter::ExtFuncL
       
   668 // Find out the correct message handler and call its ExtFuncL
       
   669 // -----------------------------------------------------------------------------
       
   670 //
       
   671 TInt CMmMessageRouter::ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage )
       
   672     {
       
   673 TFLOGSTRING2("TSY: CMmMessageRouter::ExtFuncL. IPC = %d", aIpc);
       
   674 OstTrace1( TRACE_NORMAL, CMMMESSAGEROUTER_EXTFUNCL, "CMmMessageRouter::ExtFuncL;aIpc=%d", aIpc );
       
   675 
       
   676     TInt ret ( KErrNone );
       
   677 
       
   678     // Check if the IPC is supported
       
   679     MMmMessHandlerBase* messageHandler = RouteRequest( aIpc );
       
   680     if ( NULL == messageHandler )
       
   681         {
       
   682         ret = KErrNotSupported;
       
   683         }
       
   684     else
       
   685         {
       
   686         // Call to DOS layer
       
   687         ret = messageHandler->ExtFuncL( aIpc, aDataPackage );
       
   688         }
       
   689 
       
   690     return ret;
       
   691     }
       
   692 
       
   693 // -----------------------------------------------------------------------------
       
   694 // CMmMessageRouter::GetPhoNetSender
       
   695 // Returns pointer to Phonet sender
       
   696 // -----------------------------------------------------------------------------
       
   697 //
       
   698 EXPORT_C CMmPhoNetSender* CMmMessageRouter::GetPhoNetSender()
       
   699     {
       
   700 TFLOGSTRING("TSY: CMmMessageRouter::GetPhoNetSender");
       
   701 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONETSENDER, "CMmMessageRouter::GetPhoNetSender" );
       
   702     return iPhoNetSender;
       
   703     }
       
   704 
       
   705 // -----------------------------------------------------------------------------
       
   706 // CMmMessageRouter::GetPhoNetReceiver
       
   707 // Returns pointer to Phonet receiver
       
   708 // -----------------------------------------------------------------------------
       
   709 //
       
   710 EXPORT_C CMmPhoNetReceiver* CMmMessageRouter::GetPhoNetReceiver()
       
   711     {
       
   712 TFLOGSTRING("TSY: CMmMessageRouter::GetPhoNetReceiver");
       
   713 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONETRECEIVER, "CMmMessageRouter::GetPhoNetReceiver" );
       
   714     return iPhoNetReceiver;
       
   715     }
       
   716 
       
   717 // -----------------------------------------------------------------------------
       
   718 // CMmMessageRouter::GetCallMessHandler
       
   719 // Returns pointer to Call message handler
       
   720 // -----------------------------------------------------------------------------
       
   721 //
       
   722 CMmCallMessHandler* CMmMessageRouter::GetCallMessHandler()
       
   723     {
       
   724 TFLOGSTRING("TSY: CMmMessageRouter::GetCallMessHandler");
       
   725 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETCALLMESSHANDLER, "CMmMessageRouter::GetCallMessHandler" );
       
   726     return iMmCallMessHandler;
       
   727     }
       
   728 
       
   729 // -----------------------------------------------------------------------------
       
   730 // CMmMessageRouter::GetPhoneMessHandler
       
   731 // Returns pointer to Phone message handler
       
   732 // -----------------------------------------------------------------------------
       
   733 //
       
   734 CMmPhoneMessHandler* CMmMessageRouter::GetPhoneMessHandler()
       
   735     {
       
   736 TFLOGSTRING("TSY: CMmMessageRouter::GetPhoneMessHandler");
       
   737 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPHONEMESSHANDLER, "CMmMessageRouter::GetPhoneMessHandler" );
       
   738     return iMmPhoneMessHandler;
       
   739     }
       
   740 
       
   741 // -----------------------------------------------------------------------------
       
   742 // CMmMessageRouter::GetPacketServiceMessHandler
       
   743 // Returns pointer to Packet service message handler
       
   744 // -----------------------------------------------------------------------------
       
   745 //
       
   746 CMmPacketServiceMessHandler* CMmMessageRouter::GetPacketServiceMessHandler()
       
   747     {
       
   748 TFLOGSTRING("TSY: CMmMessageRouter::GetPacketServiceMessHandler");
       
   749 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETPACKETSERVICEMESSHANDLER, "CMmMessageRouter::GetPacketServiceMessHandler" );
       
   750     return iMmPacketServiceMessHandler;
       
   751     }
       
   752 
       
   753 // -----------------------------------------------------------------------------
       
   754 // CMmMessageRouter::GetCustomMessHandler
       
   755 // Returns pointer to Custom message handler
       
   756 // -----------------------------------------------------------------------------
       
   757 //
       
   758 CMmCustomMessHandler* CMmMessageRouter::GetCustomMessHandler()
       
   759     {
       
   760 TFLOGSTRING("TSY: CMmMessageRouter::GetCustomMessHandler");
       
   761 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETCUSTOMMESSHANDLER, "CMmMessageRouter::GetCustomMessHandler" );
       
   762     return iMmCustomMessHandler;
       
   763     }
       
   764 
       
   765 // -----------------------------------------------------------------------------
       
   766 // CMmMessageRouter::GetSmsMessHandler
       
   767 // Returns pointer to SMS message handler
       
   768 // -----------------------------------------------------------------------------
       
   769 //
       
   770 CMmSmsMessHandler* CMmMessageRouter::GetSmsMessHandler()
       
   771     {
       
   772 TFLOGSTRING("TSY: CMmMessageRouter::GetSmsMessHandler");
       
   773 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETSMSMESSHANDLER, "CMmMessageRouter::GetSmsMessHandler" );
       
   774     return iMmSmsMessHandler;
       
   775     }
       
   776 
       
   777 // -----------------------------------------------------------------------------
       
   778 // CMmMessageRouter::GetSupplServHandler
       
   779 // Returns pointer to SS message handler
       
   780 // -----------------------------------------------------------------------------
       
   781 //
       
   782 CMmSupplServMessHandler* CMmMessageRouter::GetSupplServHandler()
       
   783     {
       
   784 TFLOGSTRING("TSY: CMmMessageRouter::GetSupplServHandler");
       
   785 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETSUPPLSERVHANDLER, "CMmMessageRouter::GetSupplServHandler" );
       
   786     return iMmSupplServMessHandler;
       
   787     }
       
   788 
       
   789 // -----------------------------------------------------------------------------
       
   790 // CMmMessageRouter::PhoneBookStoreMessHandler
       
   791 // Returns pointer to Phonebookstore message handler
       
   792 // -----------------------------------------------------------------------------
       
   793 //
       
   794 CMmPhoneBookStoreMessHandler* CMmMessageRouter::PhoneBookStoreMessHandler()
       
   795     {
       
   796 TFLOGSTRING("TSY: CMmMessageRouter::PhoneBookStoreMessHandler");
       
   797 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_PHONEBOOKSTOREMESSHANDLER, "CMmMessageRouter::PhoneBookStoreMessHandler" );
       
   798     return iMmPhoneBookStoreMessHandler;
       
   799     }
       
   800 
       
   801 // -----------------------------------------------------------------------------
       
   802 // CMmMessageRouter::GetNetMessHandler
       
   803 // Returns pointer to NET message handler
       
   804 // -----------------------------------------------------------------------------
       
   805 //
       
   806 CMmNetMessHandler* CMmMessageRouter::GetNetMessHandler()
       
   807     {
       
   808 TFLOGSTRING("TSY: CMmMessageRouter::GetNetMessHandler");
       
   809 OstTrace0( TRACE_NORMAL, CMMMESSAGEROUTER_GETNETMESSHANDLER, "CMmMessageRouter::GetNetMessHandler" );
       
   810     return iMmNetMessHandler;
       
   811     }
       
   812 
       
   813 // ==================== OTHER EXPORTED FUNCTIONS ===============================
       
   814     //None
       
   815 
       
   816 //  End of File