telephonyserverplugins/ctsydispatchlayer/inc/csatdispatcher.h
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/inc/csatdispatcher.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,234 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalAll 
+*/
+
+#ifndef __CSATDISPATCHER_H_
+#define __CSATDISPATCHER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32def.h>
+#include <etelmm.h>
+#include <etelsat.h>
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+#include "requestqueueoneshot.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "mdispatchercallback.h"
+#include <ctsy/ltsy/mltsydispatchsatinterface.h>
+
+// FORWARD DECLARATIONS
+class CMmDataPackage;
+class MmMessageManagerCallback;
+class TDispatcherHolder;
+class MLtsyDispatchSatSmsDeliverReport;
+class MLtsyDispatchSatGetImageInstance;
+class MLtsyDispatchSatGetIconData;
+class MLtsyDispatchSatGetClut;
+class MLtsyDispatchSatGetDefaultBearerCapability;
+class MLtsyDispatchSatGetSmsPpDownloadSupported;
+class MLtsyDispatchSatGetSmsControlActivated;
+class MLtsyDispatchSatCellBroadcastEnvelope;
+class MLtsyDispatchSatGetAccessTechnology;
+class MLtsyDispatchSatTimingAdvance;
+class MLtsyDispatchSatSmControlResponseData;
+class MLtsyDispatchSatProvideLocationInfo;
+class MLtsyDispatchSatSetPollingInterval;
+class MLtsyDispatchSatSmsPpDownloadEnvelope;
+class MLtsyDispatchSatLocalInformationNmr;
+class MLtsyDispatchSatCallAndSmsControlEnvelope;
+class MLtsyDispatchSatRefreshAllowed;
+class MLtsyDispatchSatReady;
+class MLtsyDispatchSatPCmdNotification;
+class MLtsyDispatchSatUssdControlEnvelopeError;
+class MLtsyDispatchSatTimerExpirationEnvelope;
+class MLtsyDispatchSatTerminalRsp;
+class MLtsyDispatchSatMenuSelectionEnvelope;
+class MLtsyDispatchSatEventDownloadEnvelope;
+class MLtsyDispatchSatGetUssdControlSupported;
+
+class MStkTsyCallOrigin;
+
+
+
+// CLASS DECLARATION
+
+/**
+ * This class is responsible for packing and unpacking data belonging
+ * to Sat related requests to the Licensee LTSY.
+ */
+class CSatDispatcher : public CBase, public MDispatcherCallback
+	{
+public:
+
+	virtual ~CSatDispatcher();
+	
+	static CSatDispatcher* NewL(
+			MLtsyDispatchFactoryV1& aLtsyFactory,
+			MmMessageManagerCallback& aTsyMessageManagerCallback,
+			MmMessageManagerCallback& aSatMessageManagerCallback,
+			CRequestQueueOneShot& aRequestAsyncOneShot);
+	
+	static CSatDispatcher* NewLC(
+			MLtsyDispatchFactoryV1& aLtsyFactory,
+			MmMessageManagerCallback& aTsyMessageManagerCallback,
+			MmMessageManagerCallback& aSatMessageManagerCallback,
+			CRequestQueueOneShot& aRequestAsyncOneShot);
+	
+
+	// Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
+	
+	TInt DispatchSmsDeliverReportL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetImageInstanceL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetIconDataL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetClutL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetDefaultBearerCapabilityL();
+	TInt DispatchSmsPpDdlStatusL();
+	TInt DispatchGetSmsControlActivatedL();
+	TInt DispatchCellBroadcastL(const CMmDataPackage* aDataPackage);
+	TInt DispatchTimingAdvanceL();
+	TInt DispatchNotifySmControlRequestL(const CMmDataPackage* aDataPackage);
+	TInt DispatchProvideLocationInfoL();
+	TInt DispatchSetPollingIntervalL(const CMmDataPackage* aDataPackage);
+	TInt DispatchSmsPpDdlL(const CMmDataPackage* aDataPackage);
+	TInt DispatchAccessTechnologyL();
+	TInt DispatchLocalInformationNmrL();
+	TInt DispatchSendEnvelopeL(const CMmDataPackage* aDataPackage);
+	TInt DispatchServiceRequestL(const CMmDataPackage* aDataPackage);
+	TInt DispatchReadyL();
+	TInt DispatchPCmdNotificationL(const CMmDataPackage* aDataPackage);
+	TInt DispatchUssdControlEnvelopeErrorL();
+	TInt DispatchTimerExpiredL(const CMmDataPackage* aDataPackage);
+	TInt DispatchTerminalRspL(const CMmDataPackage* aDataPackage);
+	TInt DispatchMenuSelectionL(const CMmDataPackage* aDataPackage);
+	TInt DispatchEventDownloadL(const CMmDataPackage* aDataPackage);
+	TInt DispatchGetUssdControlSupportedL();
+	
+	
+	// Complete functions for receiving completions UP from the Licensee LTSY
+	// via the CCtsyDispatcherCallback object.
+	
+	void CallbackUssdControlSupported(TInt aError, TBool aUssdStatus);
+	void CallbackPcmd(TInt aError, const TDesC8& aData);
+	void CallbackNotifyProactiveSimSessionEnd(TInt aError, TUint8 aStatusWord1, TUint8 aStatusWord2);
+	void CallbackTimeZoneChange(TInt aError, TUint8 aTimeZone);
+	void CallbackAccessTechnologyChange(TInt aError, TUint8 aCurrentAccessTechnology);
+	void CallbackCallConnected(TInt aError, TUint8 aTransactionId, TBool aNearEnd);
+	void CallbackSsChange(TInt aError, DispatcherSat::TSsStatus aStatus);
+	void CallbackCallDisconnected(TInt aError, TUint8 aTransactionId, TBool aNearEnd, const TDesC8& aCause);
+	void CallbackMtCall(TInt aError, TUint8 aTransactionId, const TDesC8& aAddress, const TDesC8& aSubAddress);
+	void CallbackCallControlEnvelopeResponse(TInt aError, const TDesC8& aResponseTlv);
+	void CallbackCreateCallControlEnvelope(TInt aError, TUint8 aTag, const TDesC8& aBcc1, const TDesC8& aBcc2, const TDesC8& aAddress, TUint8 aTonNpi, TUint8 aDcs);
+	void CallbackCreateSmControlEnvelope(TInt aError, const TDesC8& aRpDestinationAddress, const TDesC8& aTpDestinationAddress);
+	void CallbackImsiChanged(TInt aError);
+	void CallbackLocationStatus(TInt aError, TUint8 aLcnStatus, const TDesC8& aCountryCode,
+			TUint16 aLcnAreaCode, TUint16 aCellId);
+	void CallbackRemoveEventList(TInt aError);
+	void CallbackCreateRefreshTerminalRsp(TInt aError, RSat::TPCmdResult aGeneralResult, const TDesC& aResultAdditionalInfo);
+	void CallbackSmControlEnvelopeResponse(TInt aError, const TDesC8& aResponseTlv);
+	void CallbackSatCreateSmsPpDownloadEnvelope(TInt aError, const TDesC8& aAddress, const TDesC8& aSmsTpdu);
+	void CallbackCreateSmsDeliverReport(TInt aError);
+	void CallbackCreateCellBroadcastEnvelope(TInt aError, const TDesC8& aCellBroadcastPage);
+	void CallbackGetImageInstance(TInt aError, const TDesC8& aImageInstanceData, const TDesC8& aImageInstanceBody);
+	void CallbackGetIconData(TInt aError, const TDesC8& aIconEfImgRecord);
+	void CallbackGetClut(TInt aError, const TDesC8& aClut);
+	void CallbackGetDefaultBearerCapability(TInt aError, const TDesC8& aCapability);
+	void CallbackGetSmsPpDownloadSupported(TInt aError, TBool aSupported);
+	void CallbackGetSmsControlActivated(TInt aError, TBool aSmsMoControlActivated);
+	void CallbackTimingAdvance(TInt aError, TUint8 aTimingAdvance, TUint8 aMeStatus);
+	void CallbackProvideLocationInfo(TInt aError, TUint16 aLocationAreaCode, TUint16 aCellId, 
+			const TDesC8& aOperatorCode);
+	void CallbackSetPolling(TInt aError, TUint8 aPollingInterval);
+	void CallbackLocalInformationNmr(TInt aError, const TDesC8& aNmr, const TDesC& aBcchList);
+	void CallbackRefreshAllowed(TInt aError);
+	void CallbackReady(TInt aError);
+	void CallbackGetAccessTechnology(TInt aError, TUint8 aAccessTechnology);
+	void CallbackUssdControlEnvelopeError(TInt aError);
+	void CallbackTerminalRsp(TInt aError);
+	
+	// From MDispatcherCallback
+	void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
+
+	// Other public functions
+	void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
+	
+	void SetSatCallOriginInterface(MStkTsyCallOrigin& aSatCallOrigin);
+	
+	TBool IsSimOriginatedCall(const RMobilePhone::TMobileAddress& aDialledParty);
+
+private:
+
+	CSatDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
+	   			  	 MmMessageManagerCallback& aMessageManagerCallback,
+	   			  	 MmMessageManagerCallback& aSatMessageManagerCallback,
+	   			  	 CRequestQueueOneShot& aRequestAsyncOneShot);		
+	
+	void ConstructL();
+	
+	void CompleteNotifyLocalInfo(TInt aError);
+	
+private:	// Not owned
+	MStkTsyCallOrigin* iStkTsyCallOrigin;
+
+private:	// Not owned
+	MLtsyDispatchFactoryV1& iLtsyFactoryV1;
+	MmMessageManagerCallback& iTsyMessageManagerCallback;
+	MmMessageManagerCallback& iMessageManagerCallback;
+	CRequestQueueOneShot& iRequestAsyncOneShot;
+	TDispatcherHolder* iDispatcherHolder;
+	
+	// Interfaces in the Licensee LTSY, not owned by this object
+	
+    MLtsyDispatchSatSmsDeliverReport* iLtsyDispatchSatSmsDeliverReport;
+    MLtsyDispatchSatGetImageInstance* iLtsyDispatchSatGetImageInstance;
+    MLtsyDispatchSatGetIconData* iLtsyDispatchSatGetIconData;
+    MLtsyDispatchSatGetClut* iLtsyDispatchSatGetClut;
+    MLtsyDispatchSatGetDefaultBearerCapability* iLtsyDispatchSatGetDefaultBearerCapability;
+    MLtsyDispatchSatGetSmsPpDownloadSupported* iLtsyDispatchSatGetSmsPpDownloadSupported;
+    MLtsyDispatchSatGetSmsControlActivated* iLtsyDispatchSatGetSmsControlActivated;
+    MLtsyDispatchSatCellBroadcastEnvelope* iLtsyDispatchSatCellBroadcast;
+    MLtsyDispatchSatTimingAdvance* iLtsyDispatchSatTimingAdvance;
+    MLtsyDispatchSatSmControlResponseData* iLtsyDispatchSatSmControlResponseData;
+    MLtsyDispatchSatProvideLocationInfo* iLtsyDispatchSatProvideLocationInfo;
+    MLtsyDispatchSatSetPollingInterval* iLtsyDispatchSatSetPollingInterval;
+    MLtsyDispatchSatSmsPpDownloadEnvelope* iLtsyDispatchSatSmsPpDownloadEnvelope;
+    MLtsyDispatchSatLocalInformationNmr* iLtsyDispatchSatLocalInformationNmr;
+    MLtsyDispatchSatCallAndSmsControlEnvelope* iLtsyDispatchSatSendEnvelope;
+    MLtsyDispatchSatRefreshAllowed* iLtsyDispatchSatRefreshAllowed;
+    MLtsyDispatchSatReady* iLtsyDispatchSatReady;
+    MLtsyDispatchSatPCmdNotification* iLtsyDispatchSatPCmdNotification;
+    MLtsyDispatchSatUssdControlEnvelopeError* iLtsyDispatchSatUssdControlEnvelopeError;
+    MLtsyDispatchSatTimerExpirationEnvelope* iLtsyDispatchSatTimerExpired;
+    MLtsyDispatchSatTerminalRsp* iLtsyDispatchSatTerminalRsp;
+    MLtsyDispatchSatGetAccessTechnology* iLtsyDispatchSatAccTech;
+    MLtsyDispatchSatMenuSelectionEnvelope* iLtsyDispatchSatMenuSelection;
+    MLtsyDispatchSatEventDownloadEnvelope* iLtsyDispatchSatEventDownload;
+    MLtsyDispatchSatGetUssdControlSupported* iLtsyDispatchSatGetUssdControlSupported;
+      
+    //record that a provide local info proactive command is currently operating and that
+    //a request has been sent to the LTSY for the particular info we need, and when it arrives
+    //we can complete the terminal response and proactive command.
+    TBool iLocalInfoOngoing;
+
+	}; // class CSatDispatcher
+
+#endif // __CSATDISPATCHER_H_
+