telephonyserverplugins/simatktsy/src/csatmessagerouterproxy.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
child 42 3adadc800673
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simatktsy/src/csatmessagerouterproxy.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,633 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Name        : CSatMessageRouterProxy.cpp
+// Part of     : Common SIM ATK TSY / commonsimatktsy
+// Routes between Tsy objects and Message Handler objects
+// Version     : 1.0
+// INCLUDE FILES
+//
+
+
+
+#include <satcs.h>
+// Tsy module files
+#include "CSatDataPackage.h"
+// Sat
+#include "CSatMessageRouterProxy.h"
+#include "CSatTsy.h"
+#include "CSatNotificationsTsy.h"
+#include "CSatCCTsy.h"	
+#include "CSatIconTsy.h"	
+#include "CSatNotifyDisplayText.h"
+#include "CSatNotifyGetInkey.h"
+#include "CSatNotifyGetInput.h"
+#include "CSatNotifyPlayTone.h"
+#include "CSatNotifySetUpMenu.h"
+#include "CSatNotifySelectItem.h"
+#include "CSatNotifySendSm.h"
+#include "CSatNotifySendUssd.h"
+#include "CSatNotifySendSs.h"
+#include "CSatNotifySetUpIdleModeText.h"
+#include "CSatNotifyLaunchBrowser.h"
+#include "CSatNotifySimSessionEnd.h"
+#include "CSatNotifyCallControlRequest.h"
+#include "CSatNotifySetUpCall.h"
+#include "CSatNotifySetUpEventList.h"
+#include "CSatNotifyTimerMgmt.h"
+#include "CSatNotifyLanguageNotification.h"
+#include "CSatNotifySendDtmf.h"
+#include "CSatNotifyPollingOff.h"
+#include "CSatNotifyPollInterval.h"
+#include "CSatNotifyLocalInfo.h"
+#include "CSatNotifyRefresh.h"
+#include "CSatNotifyMoSmControlRequest.h"
+#include "CSatEventDownloadTsy.h"
+#include "CSatDataDownloadTsy.h"
+// Utilities
+#include "tflogger.h"
+#include "msattsy_ipcdefs.h"
+#include "ctsydelegates.h"
+
+// 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 =======================================
+
+// -----------------------------------------------------------------------------
+// CSatDataDownloadTsy::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSatMessageRouterProxy* CSatMessageRouterProxy::NewL(CTsyDelegates& aTsyDelegates) 
+    { 
+    TFLOGSTRING( "CSAT: CSatMessageRouterProxy::NewL" );
+    
+    CSatMessageRouterProxy* satMessageRouterProxy = 
+        new ( ELeave ) CSatMessageRouterProxy(aTsyDelegates);
+    CleanupStack::PushL( satMessageRouterProxy );
+    satMessageRouterProxy->ConstructL();
+    CleanupStack::Pop();
+
+	TFLOGSTRING("CSAT: CSatMessageRouterProxy::NewL, end of method");
+    return satMessageRouterProxy;
+    }
+
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::~CSatMessageRouterProxy
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CSatMessageRouterProxy::~CSatMessageRouterProxy
+        (
+        void
+        )
+    {
+    TFLOGSTRING( "CSAT: CSatMessageRouterProxy::~CSatMessageRouterProxy" );
+    }
+
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::CSatMessageRouterProxy
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+CSatMessageRouterProxy::CSatMessageRouterProxy(CTsyDelegates& aTsyDelegates)
+: iTsyDelegates(aTsyDelegates)
+    {
+    // None
+    }
+
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::ConstructL
+// Symbian 2nd phase constructor. Initialises internal attributes.
+// -----------------------------------------------------------------------------
+//
+void CSatMessageRouterProxy::ConstructL
+        (    
+        void
+        )
+    {
+    TFLOGSTRING( "CSAT: CSatMessageRouterProxy::ConstructL, noes nothing" );
+    }
+    
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::RouteRequest
+// Dummy implementation
+// -----------------------------------------------------------------------------
+//
+MMmMessHandlerBase* CSatMessageRouterProxy::RouteRequest
+		( 
+		TInt /*aIpc*/ 
+		)
+	{
+	// Dummy implementation
+	TFLOGSTRING( "CSAT: CSatMessageRouterProxy::RouteRequest: DUMMY" );
+	return NULL;
+	}
+	
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::RouteCompletion
+// Completes a request or notification via the specific Tsy object, based on
+// IPC number and data package
+// -----------------------------------------------------------------------------
+//
+void CSatMessageRouterProxy::RouteCompletion
+        (
+        TInt aIpc,
+        CSatDataPackage* aDataPackage,
+        TInt aResult 
+        )        
+    {
+    TInt trapError( KErrNone );
+    TRAP( trapError, RouteCompletionL( aIpc, aDataPackage, aResult ) );
+    
+    if ( KErrNone != trapError )
+		{
+		TFLOGSTRING2("CSatMessageRouterProxy::RouteCompletion, trapError=%d", 
+			trapError);
+		}
+    }
+	
+	
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::GetObjectForCompletion
+// Returns the pointer to the Tsy object needed for completion, based 
+// on the IPC number and the data package
+// -----------------------------------------------------------------------------
+//
+CBase* CSatMessageRouterProxy::GetObjectForCompletion
+        (
+        const TInt aIpc,
+        CSatDataPackage* /*aDataPackage*/
+        )
+    {
+    TFLOGSTRING("CSAT: CMmMessageRouterBase::GetObjectForCompletion");
+    CBase* satObject = NULL;
+
+	CMmMessageManagerBase::TTsyObjects tsyObject = 
+        GetTsyObjectFromIpc( aIpc );
+    // Get the object
+	satObject = iTsyDelegates.GetTsyObject(tsyObject);
+	return satObject;
+    }
+
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::GetTsyObjectFromIpc
+// Returns the type of Tsy object needed for completion, based 
+// on the IPC number
+// -----------------------------------------------------------------------------
+//
+ CMmMessageManagerBase::TTsyObjects CSatMessageRouterProxy::GetTsyObjectFromIpc
+        (
+        const TInt aIpc
+        ) const
+
+    {
+    TFLOGSTRING( "CSAT: CSatMessageRouterProxy::GetTsyObjectFromIpc" );
+    // A default value must be given as a initialization, however, nothing will
+    // be done if the IPC does not mach as well in RouteCompletion
+    CMmMessageManagerBase::TTsyObjects retObject = 
+        CMmMessageManagerBase::ESatTsyObjType;
+
+	switch ( aIpc )
+        {
+        // General
+        case ESatTerminalRsp:
+        case ESatMenuSelection:
+        case ESatSendMessageNoLogging:
+            {
+            retObject = CMmMessageManagerBase::ESatTsyObjType; 
+            break;
+            }
+        // Icon
+        case ESatTsyGetIconData:                             
+        case ESatTsyGetImageInstance:
+        case ESatTsyGetClut:
+            {
+            retObject = CMmMessageManagerBase::ESatIconTsyObjType; 
+            break;
+            }
+        // Notifications
+        case ESatTsyPCmd:
+        case ESatTsySetPolling:
+        case ESatTsySetProactiveCommandOnGoingStatus:
+            {
+            retObject = CMmMessageManagerBase::ESatNotificationsTsyObjType; 
+            break;
+            }
+        case ESatNotifyProactiveSimSessionEnd:
+        	{
+        	retObject = CMmMessageManagerBase::ESatNotifySimSessionEndObjType;
+        	break;
+        	}
+        case ESatTsyRefresh:
+        case ESatTsyCompleteRefresh:
+        case ESatTsyImsiChanged:
+            {
+            retObject = CMmMessageManagerBase::ESatNotifyRefreshObjType;
+            break;
+            }
+        case ESatTsyNotifyLocalInfo:
+        case ESatTsyProvideLocalInfo:
+        case ESatTsyLocalInformationNmr:
+        case ESatTsyAccTech:
+        case ESatTsyTimingAdvance:
+        case ESatTsyTimeZone:
+        case ESatTsyGetIMEI:
+        case ESatNotifyLocalInfoPCmd:
+            {
+            retObject = CMmMessageManagerBase::ESatNotifyLocalInfoObjType; 
+            break;
+            }
+        case ESatNotifySetUpEventListPCmd:
+            {
+            retObject = CMmMessageManagerBase::ESatNotifySetUpEventListObjType; 
+            break;
+            }
+        case ESatNotifyMoSmControlRequest:
+        case ESatTsyMoSmControlEnvelope:
+        case ESatTsyMoSmsControlActivation:
+        	{
+        	retObject = 
+        		CMmMessageManagerBase::ESatNotifyMoSmControlRequestObjType;
+        	break;	 
+        	}
+        case ESatTsySsStatus:
+        	{
+        	retObject = CMmMessageManagerBase::ESatNotifyLaunchBrowserObjType;
+        	break;
+        	}
+        case ESatNotifyCallControlRequest:
+            {
+            retObject = 
+                CMmMessageManagerBase::ESatNotifyCallControlRequestObjType;
+            break;
+            } 
+        // Event Download
+        case ESatTsyCallDisconnected:
+        case ESatTsyLocationStatus:
+        case ESatTsyCallConnected:
+        case ESatTsyMTCall:
+        case ESatTsyAccessTechnologyChange:
+        case ESatEventDownload:
+        case ESatTsyRemoveEventList:
+            {
+            retObject = CMmMessageManagerBase::ESatEventDownloadTsyObjType;  
+            break;
+            }
+		// Call Control
+		case ESatTsyGetBearerCapability:
+        case ESatTsyCheckAtkDataForAlphaId:
+        case ESatTsyCallEvent:
+        case ESatTsySSEvent:
+        case ESatTsyUSSDEvent:
+        case ESatTsyCreateEnvelope:
+        case ESatTsyUssdStatus:
+            {
+            retObject = CMmMessageManagerBase::ESatCCTsyObjType;
+            break;
+            }           
+        case ESatTsyCellBroadcast:
+        case ESatTsySmsPpDdl:
+        case ESatTsyReadCbmids:
+        case ESatTsySmsPpDdlStatus:
+        case ESatTsySmsDeliverReport:
+            {
+            retObject = CMmMessageManagerBase::ESatDataDownloadTsyObjType; 
+            break;
+            }
+        default:
+            break;
+        }
+  
+    return retObject;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::Complete 
+// Complete with a data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CSatMessageRouterProxy::Complete( 
+    TInt aIpc, 
+    CMmDataPackage* aData, 
+    TInt aResult )
+	{
+TFLOGSTRING3("TSY: CMmMessageRouterProxy::Complete. IPC = %d, result: %d", aIpc, aResult);
+	RouteCompletion( aIpc, static_cast<CSatDataPackage*>(aData), aResult ); 
+	}
+	
+// ---------------------------------------------------------------------------
+// CMmMessageRouterProxy::Complete 
+// Complete without a data package
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CSatMessageRouterProxy::Complete( TInt aIpc, TInt aResult )
+	{    
+    CSatDataPackage emptyDataPackage;
+	Complete( aIpc, &emptyDataPackage, aResult );
+	}
+
+// -----------------------------------------------------------------------------
+// CSatMessageRouterProxy::RouteCompletion
+// Completes a request or notification via the specific Tsy object, based on 
+// IPC number and data package
+// -----------------------------------------------------------------------------
+//
+void CSatMessageRouterProxy::RouteCompletionL
+        ( 
+        TInt aIpc,
+        CSatDataPackage* aDataPackage,
+        TInt aResult
+        )
+    {
+	TFLOGSTRING3("CSAT: CSatMessageRouterProxy::RouteCompletion ipc=%d, \
+        error: %d", aIpc, aResult);
+    CBase* object = GetObjectForCompletion( aIpc, aDataPackage );
+
+    if ( NULL != object )
+        { 
+		switch ( aIpc )
+			{
+			case ESatTsyPCmd:
+				{
+				reinterpret_cast<CSatNotificationsTsy*>( object )->
+                	CompletePCmdL( aDataPackage, aResult );
+                break;
+                }
+           case ESatNotifyProactiveSimSessionEnd:
+                {
+                reinterpret_cast<CSatNotifySimSessionEnd*>( object )->
+                    CompleteNotifyL( aDataPackage, aResult );
+                break;
+                }
+			case ESatTsyProvideLocalInfo:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateLocalInfo( aDataPackage, aResult ); 
+                break;
+                }			
+			case ESatTsyLocalInformationNmr:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateNetInfo( aDataPackage, aResult ); 
+                break;
+                }			
+			case ESatTsyAccTech:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateAccTech( aDataPackage, aResult ); 
+                break;
+                }			
+			case ESatTsyTimeZone:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateTimeZone( aDataPackage, aResult ); 
+                break;
+                }
+			case ESatTsyGetIMEI:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateIMEI( aDataPackage, aResult ); 
+                break;
+                }
+			case ESatTsyTimingAdvance:
+				{
+				reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteUpdateTimingAdvAndMEStatus( aDataPackage, aResult ); 
+				break;
+				}
+            case ESatTsyNotifyLocalInfo:
+                {
+                reinterpret_cast<CSatNotifyLocalInfo*>( object )->
+                    CompleteTerminalRespDataL( aDataPackage, aResult ); 
+                break;
+                }
+            case ESatTsySetPolling:
+                {
+                reinterpret_cast<CSatNotificationsTsy*>( object )->
+                    SetPollingResultL( aDataPackage, aResult );
+                 break;
+                }
+			case ESatTsyCreateEnvelope:
+			    {
+				reinterpret_cast<CSatCCTsy*>( object )->CreateEnvelopeL( 
+				    aDataPackage );
+				break;
+				}
+			case ESatTsyMoSmControlEnvelope:
+				{
+				reinterpret_cast<CSatNotifyMoSmControlRequest*>( object )->
+                    CreateMoSmsCtrlEnvelopeL( aDataPackage, aResult) ;
+                break;
+				}
+			case ESatTsyGetBearerCapability:
+				{
+				reinterpret_cast<CSatCCTsy*>( object )->
+                    CompleteBearerCapability( aDataPackage, aResult );
+				break;
+				}
+			case ESatTsyCheckAtkDataForAlphaId:
+				{
+				reinterpret_cast<CSatCCTsy*>( object )->CheckIfAlphaIdPresent( 
+				    aDataPackage );
+				break;
+				}
+			case ESatTsyCallEvent:
+			case ESatTsySSEvent:
+			case ESatTsyUSSDEvent:
+				{
+				reinterpret_cast<CSatCCTsy*>( object )->CompleteCCEventL( 
+				    aIpc, aDataPackage );
+				break;
+				}
+			case ESatNotifyCallControlRequest:
+				{
+				reinterpret_cast<CSatNotifyCallControlRequest*>( object )->
+                    CompleteNotifyL( aDataPackage, aResult );
+				break;
+				}
+			case ESatNotifyMoSmControlRequest:
+				{
+				reinterpret_cast<CSatNotifyMoSmControlRequest*>( object )->
+                    CompleteNotifyL( aDataPackage, aResult) ;
+                break;
+				}
+			case ESatTsyMoSmsControlActivation:
+				{
+				reinterpret_cast<CSatNotifyMoSmControlRequest*>( object )->
+                    SetActivationStatus( aDataPackage ) ;
+                break;
+				}
+            case ESatTsyCallConnected:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    CompleteCallConnectedL( aDataPackage );
+				break;
+				}
+            case ESatTsyCallDisconnected:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    CompleteCallDisconnectedL( aDataPackage );
+				break;
+				}
+            case ESatTsyLocationStatus:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    CompleteLocationStatusL( aDataPackage );
+				break;
+				}
+          	case ESatTsyAccessTechnologyChange:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    CompleteAccessTechnologyChangeL( aDataPackage );
+				break;
+				}
+			case ESatTsyMTCall:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    CompleteMTCallL( aDataPackage );
+				break;
+				}
+			case ESatTsyRemoveEventList:
+				{
+				reinterpret_cast<CSatEventDownloadTsy*>( object )->
+                    SetUpEventList( 0 );
+				break;
+				}
+            case ESatTsyCellBroadcast:
+				{
+				reinterpret_cast<CSatDataDownloadTsy*>( object )->
+                    CompleteCellBroadcastDdlL( aDataPackage );
+				break;
+				}
+            case ESatTsySmsPpDdl:
+				{
+				reinterpret_cast<CSatDataDownloadTsy*>( object )->
+                    CompleteSmsPpDdlL( aDataPackage );
+				break;
+				}
+            case ESatTsyReadCbmids:
+				{
+				reinterpret_cast<CSatDataDownloadTsy*>( object )->
+                    CompleteReadCbmidsL( );
+				break;
+				}
+			case ESatTsySmsPpDdlStatus:
+			    {
+				reinterpret_cast<CSatDataDownloadTsy*>( object )->
+				    SetSmsPpDdlStatus( aDataPackage ) ;
+                break;	
+				}
+			case ESatTsySmsDeliverReport:
+			    {
+			    reinterpret_cast<CSatDataDownloadTsy*>( object )->
+				    CreateSmsDeliverReportL( aResult ) ;
+                break;
+			    }
+            case ESatTsyGetIconData:
+				{
+				reinterpret_cast<CSatIconTsy*>( object )->
+                    CompleteGetIcon( aDataPackage, aResult );
+				break;
+				}
+			case ESatTsyGetImageInstance:
+				{
+				reinterpret_cast<CSatIconTsy*>( object )->
+                    CompleteGetImageInstance( aDataPackage, aResult );
+				break;
+				}
+        	case ESatTsyGetClut:
+        		{
+				reinterpret_cast<CSatIconTsy*>( object )->
+                    CompleteGetClut( aDataPackage, aResult );
+				break;
+				}
+            case ESatTsyRefresh:
+                {
+                reinterpret_cast<CSatNotifyRefresh*>( object )->
+                    CompleteTerminalRespDataL( aDataPackage, aResult);
+                break;
+                }
+			case ESatTsyCompleteRefresh:
+				{
+                reinterpret_cast<CSatNotifyRefresh*>( object )->
+                    CompleteRequest( aDataPackage, aResult);
+                break;    				
+				}
+			case ESatTsyImsiChanged:
+				{
+				 reinterpret_cast<CSatNotifyRefresh*>( object )->
+                    CompleteImsiChange();
+                break;	
+				}
+            case ESatTsySetProactiveCommandOnGoingStatus:
+                {
+                reinterpret_cast<CSatNotificationsTsy*>( object )->
+                    SetProactiveCommandOnGoingStatus( aDataPackage, aResult );
+                break;
+                }
+			case ESatTsySsStatus:
+				{
+				 reinterpret_cast<CSatNotifyLaunchBrowser*>( object )->
+                    SetSsStatus( aDataPackage ) ;
+                break;	
+				}	
+			case ESatTsyUssdStatus:
+			    {
+				 reinterpret_cast<CSatCCTsy*>( object )->SetUssdStatus( 
+				    aDataPackage ) ;
+                break;	
+				}
+            default:
+                break;
+            }
+        }
+	else
+		{
+		TFLOGSTRING("CSatMessageRouterProxy::RouteCompletion, IPC NOT HANDLED.!!!");
+		}
+    }
+
+// ================= OTHER EXPORTED FUNCTIONS ===============================
+
+    //None
+
+
+//  End of File 
+