--- a/telephonyserverplugins/ctsydispatchlayer/inc/ccallcontroldispatcher.h Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/ctsydispatchlayer/inc/ccallcontroldispatcher.h Thu May 06 15:10:38 2010 +0100
@@ -1,300 +1,300 @@
-// 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 __CCALLCONTROLDISPATCHER_H_
-#define __CCALLCONTROLDISPATCHER_H_
-
-// INCLUDES
-#include <e32std.h>
-#include <e32base.h>
-#include <e32def.h>
-#include <etelmm.h>
-#include <ctsy/rmmcustomapi.h>
-
-#include <ctsy/ltsy/mltsydispatchfactory.h>
-
-
-#include "requestqueueoneshot.h"
-#include <ctsy/ltsy/ltsylogger.h>
-#include "mdispatchercallback.h"
-
-// CONSTANTS
-const TInt KInvalidCallId = -1;
-
-// FORWARD DECLARATIONS
-class CMmDataPackage;
-class MmMessageManagerCallback;
-class TDispatcherHolder;
-
-class MLtsyDispatchCallControlAnswer;
-class MLtsyDispatchCallControlHold;
-class MLtsyDispatchCallControlDialEmergency;
-class MLtsyDispatchCallControlStopDtmfTone;
-class MLtsyDispatchCallControlSetActiveAlsLine;
-class MLtsyDispatchCallControlSendDtmfTonesCancel;
-class MLtsyDispatchCallControlHangUp;
-class MLtsyDispatchCallControlResume;
-class MLtsyDispatchCallControlSetDynamicHscsdParams;
-class MLtsyDispatchCallControlDialVoice;
-class MLtsyDispatchCallControlTransfer;
-class MLtsyDispatchCallControlSendDtmfTones;
-class MLtsyDispatchCallControlGetIdentityServiceStatus;
-class MLtsyDispatchCallControlSwap;
-class MLtsyDispatchCallControlLoanDataPort;
-class MLtsyDispatchCallControlRecoverDataPort;
-class MLtsyDispatchCallControlStartDtmfTone;
-class MLtsyDispatchCallControlGetActiveAlsLine;
-class MLtsyDispatchCallControlDialData;
-class MLtsyDispatchCallControlQueryIsEmergencyNumber;
-class MLtsyDispatchCallControlGetAlsPpSupport;
-class MLtsyDispatchCallControlGetAlsBlockedStatus;
-class MLtsyDispatchCallControlSetAlsBlocked;
-class MLtsyDispatchCallControlGetLifeTime;
-class MLtsyDispatchCallControlTerminateErrorCall;
-class MLtsyDispatchCallControlTerminateAllCalls;
-class MLtsyDispatchCallControlGetCallForwardingIndicator;
-class MLtsyDispatchCallControlUpdateLifeTimer;
-
-// CLASS DECLARATION
-
-/**
- * This class is responsible for packing and unpacking data belonging
- * to CallControl related requests to the Licensee LTSY.
- */
-class CCallControlDispatcher : public CBase, public MDispatcherCallback
- {
-public:
-
- virtual ~CCallControlDispatcher();
-
- static CCallControlDispatcher* NewL(
- MLtsyDispatchFactoryV1& aLtsyFactory,
- MmMessageManagerCallback& aMessageManagerCallback,
- CRequestQueueOneShot& aRequestAsyncOneShot);
-
- static CCallControlDispatcher* NewLC(
- MLtsyDispatchFactoryV1& aLtsyFactory,
- MmMessageManagerCallback& aMessageManagerCallback,
- CRequestQueueOneShot& aRequestAsyncOneShot);
-
- // Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
-
- TInt DispatchAnswerL(const CMmDataPackage* aDataPackage);
- TInt DispatchAnswerIsvL(const CMmDataPackage* aDataPackage);
- TInt DispatchHoldL(const CMmDataPackage* aDataPackage);
- TInt DispatchDialEmergencyL(const CMmDataPackage* aDataPackage);
- TInt DispatchDialNoFdnCheckL(const CMmDataPackage* aDataPackage);
- TInt DispatchStopDtmfToneL(const CMmDataPackage* aDataPackage);
- TInt DispatchDialIsvL(const CMmDataPackage* aDataPackage);
- TInt DispatchSetActiveAlsLineL(const CMmDataPackage* aDataPackage);
- TInt DispatchSendDtmfTonesCancelL(const CMmDataPackage* aDataPackage);
- TInt DispatchHangUpL(const CMmDataPackage* aDataPackage);
- TInt DispatchResumeL(const CMmDataPackage* aDataPackage);
- TInt DispatchSetDynamicHscsdParamsL(const CMmDataPackage* aDataPackage);
- TInt DispatchDialL(const CMmDataPackage* aDataPackage);
- TInt DispatchTransferL(const CMmDataPackage* aDataPackage);
- TInt DispatchSendDtmfTonesL(const CMmDataPackage* aDataPackage);
- TInt DispatchGetIdentityServiceStatusL(const CMmDataPackage* aDataPackage);
- TInt DispatchSwapL(const CMmDataPackage* aDataPackage);
- TInt DispatchContinueDtmfStringSendingL(const CMmDataPackage* aDataPackage);
- TInt DispatchLoanDataPortL(const CMmDataPackage* aDataPackage);
- TInt DispatchRecoverDataPortL(const CMmDataPackage* aDataPackage);
- TInt DispatchStartDtmfToneL(const CMmDataPackage* aDataPackage);
- TInt DispatchGetActiveAlsLineL();
- TInt DispatchQueryIsEmergencyNumberL(const CMmDataPackage* aDataPackage);
- TInt DispatchGetAlsPpSupportL();
- TInt DispatchGetAlsBlockedStatusL();
- TInt DispatchSetAlsBlockedL(const CMmDataPackage* aDataPackage);
- TInt DispatchGetLifeTimeL();
- TInt DispatchTerminateCallL(const CMmDataPackage* aDataPackage);
- TInt DispatchGetCallForwardingIndicatorL();
- TInt DispatchUpdateLifeTimeL(const CMmDataPackage* aDataPackage);
-
- // Complete functions for receiving completions UP from the Licensee LTSY
- // via the CCtsyDispatcherCallback object.
-
- void CallbackNotifyCallStatusChange(TInt aError, TInt aCallId, RMobileCall::TMobileCallStatus aMobileCallStatus);
- void CallbackReceiveUui(TInt aError, TInt aCallId, const TDesC& aCallUui);
- void CallbackNotifyDataCallCapsChange(TInt aError, TInt aCallId, const RMobileCall::TMobileCallDataCapsV1& aMobileCallDataCaps);
- void CallbackNotifyIncomingCall(TInt aError, const RMobileCall::TMobileCallInfoV1& aCallInfo);
- void CallbackNotifyHscsdInfoChange(TInt aError, TInt aCallId, const RMobileCall::TMobileCallHscsdInfoV8& aCallParams, const RMobileCall::TMobileCallDataCapsV1& aCallCaps);
- void CallbackNotifyCallEvent(TInt aError, TInt aCallId, RMobileCall::TMobileCallEvent aCallEvent);
- void CallbackNotifyCallInfoChange(TInt aError, const RMobileCall::TMobileCallInfoV1& aMobileCallInfo);
- void CallbackRemoteAlertingToneChange(TInt aError, RMmCustomAPI::TRemoteAlertingToneStatus aRemoteAlertingTone);
- void CallbackAnswer(TInt aError, TInt aCallId);
- void CallbackHold(TInt aError, TInt aCallId);
- void CallbackDialEmergency(TInt aError, TInt aCallId);
- void CallbackStopDtmfTone(TInt aError);
- void CallbackSetActiveAlsLine(TInt aError);
- void CallbackSendDtmfTonesCancel(TInt aError);
- void CallbackHangUp(TInt aError, TInt aCallId);
- void CallbackResume(TInt aError, TInt aCallId);
- void CallbackSetDynamicHscsdParams(TInt aError, TInt aCallId);
- void CallbackDialVoice(TInt aError, TInt aCallId);
- void CallbackTransfer(TInt aError);
- void CallbackSendDtmfTones(TInt aError);
- void CallbackGetIdentityServiceStatus(TInt aError, RMobilePhone::TMobilePhoneIdServiceStatus aIdentityServiceStatus);
- void CallbackSwap(TInt aError);
- void CallbackStartDtmfTone(TInt aError);
- void CallbackGetActiveAlsLine(TInt aError, RMobilePhone::TMobilePhoneALSLine aAlsLine);
- void CallbackDialData(TInt aError, TInt aCallId);
- void CallbackQueryIsEmergencyNumber(CRequestQueueOneShot::TIpcDataPackage* aDataPackage);
- void CallbackNotifyIccCallForwardingStatusChange(TInt aError, const RMobilePhone::TMobileAddress& aCallForwardingNo,
- RMobilePhone::TCFUIndicatorStatusFlags aCallForwardingStatusFlags,
- RMmCustomAPI::TMultipleSubscriberProfileID aMultipleSubscriberProfileId);
- void CallbackGetAlsPpSupport(TInt aError, RMmCustomAPI::TAlsSupport aAlsStatus);
- void CallbackGetAlsBlockedStatus(TInt aError, RMmCustomAPI::TGetAlsBlockStatus aAlsSupport);
- void CallbackSetAlsBlocked(TInt aError);
- void CallbackGetLifeTime(TInt aError);
- void CallbackGetLifeTime(TInt aError, TUint32 aHours, TUint8 aMinutes);
- void CallbackGetLifeTime(TInt aError, const TDateTime &aManufacturingDate);
- void CallbackGetLifeTime(TInt aError, const TDateTime &aManufacturingDate, TUint32 aHours, TUint8 aMinutes);
- void CallbackTerminateErrorCall(TInt aError);
- void CallbackTerminateAllCalls(TInt aError);
- void CallbackGetCallForwardingIndicator(TInt aError, RMobilePhone::TMobileTON aTypeOfNumber,
- RMobilePhone::TMobileNPI aMobilePlan,
- const TDesC &aNumber,
- RMobilePhone::TCFUIndicatorStatusFlags aCFUIndicatorStatusFlags,
- RMobilePhone::TMultipleSubscriberProfileID aMultipleSubscriberProfileId);
- void CallbackUpdateLifeTimer(TInt aError);
-
- // From MDispatcherCallback
- void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
-
- // Other public functions
- void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
-
-private:
-
- CCallControlDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
- MmMessageManagerCallback& aMessageManagerCallback,
- CRequestQueueOneShot& aRequestAsyncOneShot);
-
- void ConstructL();
-
- // Helper functions
- TInt DoDispatchDialL(const CMmDataPackage* aDataPackage, TBool aIsIsvCall, TBool aPerformFdnCheck);
- TInt DoDispatchAnswerL(const CMmDataPackage* aDataPackage, TBool aIsIsvRequest);
- void DoCallbackDial(TInt aError, TInt aCallId, RMobilePhone::TMobileService aMode);
- TInt DoSendDtmfTonesL(TInt aCallId, const TDesC& aTones);
-
-private: // Not owned
-
- MLtsyDispatchFactoryV1& iLtsyFactoryV1;
- MmMessageManagerCallback& iMessageManagerCallback;
- CRequestQueueOneShot& iRequestAsyncOneShot;
- TDispatcherHolder* iDispatcherHolder;
-
- // Interfaces in the Licensee LTSY, not owned by this object
-
- MLtsyDispatchCallControlAnswer* iLtsyDispatchCallControlAnswer;
- MLtsyDispatchCallControlHold* iLtsyDispatchCallControlHold;
- MLtsyDispatchCallControlDialEmergency* iLtsyDispatchCallControlDialEmergency;
- MLtsyDispatchCallControlStopDtmfTone* iLtsyDispatchCallControlStopDtmfTone;
- MLtsyDispatchCallControlSetActiveAlsLine* iLtsyDispatchCallControlSetActiveAlsLine;
- MLtsyDispatchCallControlSendDtmfTonesCancel* iLtsyDispatchCallControlSendDtmfTonesCancel;
- MLtsyDispatchCallControlHangUp* iLtsyDispatchCallControlHangUp;
- MLtsyDispatchCallControlResume* iLtsyDispatchCallControlResume;
- MLtsyDispatchCallControlSetDynamicHscsdParams* iLtsyDispatchCallControlSetDynamicHscsdParams;
- MLtsyDispatchCallControlDialVoice* iLtsyDispatchCallControlDialVoice;
- MLtsyDispatchCallControlTransfer* iLtsyDispatchCallControlTransfer;
- MLtsyDispatchCallControlSendDtmfTones* iLtsyDispatchCallControlSendDtmfTones;
- MLtsyDispatchCallControlGetIdentityServiceStatus* iLtsyDispatchCallControlGetIdentityServiceStatus;
- MLtsyDispatchCallControlSwap* iLtsyDispatchCallControlSwap;
- MLtsyDispatchCallControlSwap* iLtsyDispatchCallControlSingleSwap;
- MLtsyDispatchCallControlLoanDataPort* iLtsyDispatchCallControlLoanDataPort;
- MLtsyDispatchCallControlRecoverDataPort* iLtsyDispatchCallControlRecoverDataPort;
- MLtsyDispatchCallControlStartDtmfTone* iLtsyDispatchCallControlStartDtmfTone;
- MLtsyDispatchCallControlGetActiveAlsLine* iLtsyDispatchCallControlGetActiveAlsLine;
- MLtsyDispatchCallControlDialData* iLtsyDispatchCallControlDialData;
- MLtsyDispatchCallControlQueryIsEmergencyNumber* iLtsyDispatchCallControlQueryIsEmergencyNumber;
- MLtsyDispatchCallControlGetAlsPpSupport* iLtsyDispatchCallControlGetAlsPpSupport;
- MLtsyDispatchCallControlGetAlsBlockedStatus* iLtsyDispatchCallControlGetAlsBlockedStatus;
- MLtsyDispatchCallControlSetAlsBlocked* iLtsyDispatchCallControlSetAlsBlocked;
- MLtsyDispatchCallControlGetLifeTime* iLtsyDispatchCallControlGetLifeTime;
- MLtsyDispatchCallControlTerminateErrorCall* iLtsyDispatchCallControlTerminateErrorCall;
- MLtsyDispatchCallControlTerminateAllCalls* iLtsyDispatchCallControlTerminateAllCalls;
- MLtsyDispatchCallControlGetCallForwardingIndicator* iLtsyDispatchCallControlGetCallForwardingIndicator;
- MLtsyDispatchCallControlUpdateLifeTimer* iLtsyDispatchCallControlUpdateLifeTimer;
-
- // Other data items
-
- /**
- * Cache of phone number passed to dispatcher in a
- * ECustomCheckEmergencyNumberIPC request.
- */
- RMmCustomAPI::TMobileTelNumber iQueryEmergencyNumber;
-
- /**
- * Buffer containing remains of DTMF string to be sent.
- * This is used for handling 'w' (wait) characters passed into
- * RMobilePhone::SendDTMFTones
- */
- TBuf<KMaxInfoName> iDtmfString; // Created by this object but ownership passes to CTSY
-
- /**
- * The call ID of the call iDtmfString was sending tones to.
- * Used if client decides to continue sending the string.
- */
- TInt iCallIdForDtmf;
-
- /**
- * ETrue if a stop character has been found in the DTMF string,
- * therefore client needs to be notified of stop on completion of
- * send.
- */
- TBool iFoundDtmfStop;
-
- /**
- * Caches the mode used to dial a voice call. This is needed for when the
- * auxiliary line is used to dial a call. On the callback from the dial,
- * the CTSY needs the call mode to locate the call object to set the Call ID.
- */
- RMobilePhone::TMobileService iModeUsedForVoiceCallDial;
-
- /**
- * Caches whether an FDN check was performed, to allow the correct IPC to be
- * completed.
- */
- TBool iFdnCheckPerformed;
-
- /**
- * These are the two Call IDs of the calls on which a swap operation
- * has been requested. It allows the dispatcher to return a Call ID to the CTSY
- * on completion of a swap (if the swap failed) so that the CTSY can locate the
- * call object to complete the swap back to the client.
- *
- * These Call IDs should only have a value != -1 when there is a pending swap
- * operation.
- */
- TInt iSwapCallId;
- TInt iSecondSwapCallId;
-
- /**
- * These are the two Call IDs of the calls on which a transfer operation
- * has been requested. It is needed for the same reason as iSwapCallId
- * and iSecondSwapCallId above.
- */
- TInt iTransferHeldCallId;
- TInt iTransferSecondCallId;
- }; // class CCallControlDispatcher
-
-#endif // __CCALLCONTROLDISPATCHER_H_
-
+// 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 __CCALLCONTROLDISPATCHER_H_
+#define __CCALLCONTROLDISPATCHER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32def.h>
+#include <etelmm.h>
+#include <ctsy/rmmcustomapi.h>
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+
+#include "requestqueueoneshot.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "mdispatchercallback.h"
+
+// CONSTANTS
+const TInt KInvalidCallId = -1;
+
+// FORWARD DECLARATIONS
+class CMmDataPackage;
+class MmMessageManagerCallback;
+class TDispatcherHolder;
+
+class MLtsyDispatchCallControlAnswer;
+class MLtsyDispatchCallControlHold;
+class MLtsyDispatchCallControlDialEmergency;
+class MLtsyDispatchCallControlStopDtmfTone;
+class MLtsyDispatchCallControlSetActiveAlsLine;
+class MLtsyDispatchCallControlSendDtmfTonesCancel;
+class MLtsyDispatchCallControlHangUp;
+class MLtsyDispatchCallControlResume;
+class MLtsyDispatchCallControlSetDynamicHscsdParams;
+class MLtsyDispatchCallControlDialVoice;
+class MLtsyDispatchCallControlTransfer;
+class MLtsyDispatchCallControlSendDtmfTones;
+class MLtsyDispatchCallControlGetIdentityServiceStatus;
+class MLtsyDispatchCallControlSwap;
+class MLtsyDispatchCallControlLoanDataPort;
+class MLtsyDispatchCallControlRecoverDataPort;
+class MLtsyDispatchCallControlStartDtmfTone;
+class MLtsyDispatchCallControlGetActiveAlsLine;
+class MLtsyDispatchCallControlDialData;
+class MLtsyDispatchCallControlQueryIsEmergencyNumber;
+class MLtsyDispatchCallControlGetAlsPpSupport;
+class MLtsyDispatchCallControlGetAlsBlockedStatus;
+class MLtsyDispatchCallControlSetAlsBlocked;
+class MLtsyDispatchCallControlGetLifeTime;
+class MLtsyDispatchCallControlTerminateErrorCall;
+class MLtsyDispatchCallControlTerminateAllCalls;
+class MLtsyDispatchCallControlGetCallForwardingIndicator;
+class MLtsyDispatchCallControlUpdateLifeTimer;
+
+// CLASS DECLARATION
+
+/**
+ * This class is responsible for packing and unpacking data belonging
+ * to CallControl related requests to the Licensee LTSY.
+ */
+class CCallControlDispatcher : public CBase, public MDispatcherCallback
+ {
+public:
+
+ virtual ~CCallControlDispatcher();
+
+ static CCallControlDispatcher* NewL(
+ MLtsyDispatchFactoryV1& aLtsyFactory,
+ MmMessageManagerCallback& aMessageManagerCallback,
+ CRequestQueueOneShot& aRequestAsyncOneShot);
+
+ static CCallControlDispatcher* NewLC(
+ MLtsyDispatchFactoryV1& aLtsyFactory,
+ MmMessageManagerCallback& aMessageManagerCallback,
+ CRequestQueueOneShot& aRequestAsyncOneShot);
+
+ // Dispatcher functions for dispatching requests DOWN to the Licensee LTSY
+
+ TInt DispatchAnswerL(const CMmDataPackage* aDataPackage);
+ TInt DispatchAnswerIsvL(const CMmDataPackage* aDataPackage);
+ TInt DispatchHoldL(const CMmDataPackage* aDataPackage);
+ TInt DispatchDialEmergencyL(const CMmDataPackage* aDataPackage);
+ TInt DispatchDialNoFdnCheckL(const CMmDataPackage* aDataPackage);
+ TInt DispatchStopDtmfToneL(const CMmDataPackage* aDataPackage);
+ TInt DispatchDialIsvL(const CMmDataPackage* aDataPackage);
+ TInt DispatchSetActiveAlsLineL(const CMmDataPackage* aDataPackage);
+ TInt DispatchSendDtmfTonesCancelL(const CMmDataPackage* aDataPackage);
+ TInt DispatchHangUpL(const CMmDataPackage* aDataPackage);
+ TInt DispatchResumeL(const CMmDataPackage* aDataPackage);
+ TInt DispatchSetDynamicHscsdParamsL(const CMmDataPackage* aDataPackage);
+ TInt DispatchDialL(const CMmDataPackage* aDataPackage);
+ TInt DispatchTransferL(const CMmDataPackage* aDataPackage);
+ TInt DispatchSendDtmfTonesL(const CMmDataPackage* aDataPackage);
+ TInt DispatchGetIdentityServiceStatusL(const CMmDataPackage* aDataPackage);
+ TInt DispatchSwapL(const CMmDataPackage* aDataPackage);
+ TInt DispatchContinueDtmfStringSendingL(const CMmDataPackage* aDataPackage);
+ TInt DispatchLoanDataPortL(const CMmDataPackage* aDataPackage);
+ TInt DispatchRecoverDataPortL(const CMmDataPackage* aDataPackage);
+ TInt DispatchStartDtmfToneL(const CMmDataPackage* aDataPackage);
+ TInt DispatchGetActiveAlsLineL();
+ TInt DispatchQueryIsEmergencyNumberL(const CMmDataPackage* aDataPackage);
+ TInt DispatchGetAlsPpSupportL();
+ TInt DispatchGetAlsBlockedStatusL();
+ TInt DispatchSetAlsBlockedL(const CMmDataPackage* aDataPackage);
+ TInt DispatchGetLifeTimeL();
+ TInt DispatchTerminateCallL(const CMmDataPackage* aDataPackage);
+ TInt DispatchGetCallForwardingIndicatorL();
+ TInt DispatchUpdateLifeTimeL(const CMmDataPackage* aDataPackage);
+
+ // Complete functions for receiving completions UP from the Licensee LTSY
+ // via the CCtsyDispatcherCallback object.
+
+ void CallbackNotifyCallStatusChange(TInt aError, TInt aCallId, RMobileCall::TMobileCallStatus aMobileCallStatus);
+ void CallbackReceiveUui(TInt aError, TInt aCallId, const TDesC& aCallUui);
+ void CallbackNotifyDataCallCapsChange(TInt aError, TInt aCallId, const RMobileCall::TMobileCallDataCapsV1& aMobileCallDataCaps);
+ void CallbackNotifyIncomingCall(TInt aError, const RMobileCall::TMobileCallInfoV1& aCallInfo);
+ void CallbackNotifyHscsdInfoChange(TInt aError, TInt aCallId, const RMobileCall::TMobileCallHscsdInfoV8& aCallParams, const RMobileCall::TMobileCallDataCapsV1& aCallCaps);
+ void CallbackNotifyCallEvent(TInt aError, TInt aCallId, RMobileCall::TMobileCallEvent aCallEvent);
+ void CallbackNotifyCallInfoChange(TInt aError, const RMobileCall::TMobileCallInfoV1& aMobileCallInfo);
+ void CallbackRemoteAlertingToneChange(TInt aError, RMmCustomAPI::TRemoteAlertingToneStatus aRemoteAlertingTone);
+ void CallbackAnswer(TInt aError, TInt aCallId);
+ void CallbackHold(TInt aError, TInt aCallId);
+ void CallbackDialEmergency(TInt aError, TInt aCallId);
+ void CallbackStopDtmfTone(TInt aError);
+ void CallbackSetActiveAlsLine(TInt aError);
+ void CallbackSendDtmfTonesCancel(TInt aError);
+ void CallbackHangUp(TInt aError, TInt aCallId);
+ void CallbackResume(TInt aError, TInt aCallId);
+ void CallbackSetDynamicHscsdParams(TInt aError, TInt aCallId);
+ void CallbackDialVoice(TInt aError, TInt aCallId);
+ void CallbackTransfer(TInt aError);
+ void CallbackSendDtmfTones(TInt aError);
+ void CallbackGetIdentityServiceStatus(TInt aError, RMobilePhone::TMobilePhoneIdServiceStatus aIdentityServiceStatus);
+ void CallbackSwap(TInt aError);
+ void CallbackStartDtmfTone(TInt aError);
+ void CallbackGetActiveAlsLine(TInt aError, RMobilePhone::TMobilePhoneALSLine aAlsLine);
+ void CallbackDialData(TInt aError, TInt aCallId);
+ void CallbackQueryIsEmergencyNumber(CRequestQueueOneShot::TIpcDataPackage* aDataPackage);
+ void CallbackNotifyIccCallForwardingStatusChange(TInt aError, const RMobilePhone::TMobileAddress& aCallForwardingNo,
+ RMobilePhone::TCFUIndicatorStatusFlags aCallForwardingStatusFlags,
+ RMmCustomAPI::TMultipleSubscriberProfileID aMultipleSubscriberProfileId);
+ void CallbackGetAlsPpSupport(TInt aError, RMmCustomAPI::TAlsSupport aAlsStatus);
+ void CallbackGetAlsBlockedStatus(TInt aError, RMmCustomAPI::TGetAlsBlockStatus aAlsSupport);
+ void CallbackSetAlsBlocked(TInt aError);
+ void CallbackGetLifeTime(TInt aError);
+ void CallbackGetLifeTime(TInt aError, TUint32 aHours, TUint8 aMinutes);
+ void CallbackGetLifeTime(TInt aError, const TDateTime &aManufacturingDate);
+ void CallbackGetLifeTime(TInt aError, const TDateTime &aManufacturingDate, TUint32 aHours, TUint8 aMinutes);
+ void CallbackTerminateErrorCall(TInt aError);
+ void CallbackTerminateAllCalls(TInt aError);
+ void CallbackGetCallForwardingIndicator(TInt aError, RMobilePhone::TMobileTON aTypeOfNumber,
+ RMobilePhone::TMobileNPI aMobilePlan,
+ const TDesC &aNumber,
+ RMobilePhone::TCFUIndicatorStatusFlags aCFUIndicatorStatusFlags,
+ RMobilePhone::TMultipleSubscriberProfileID aMultipleSubscriberProfileId);
+ void CallbackUpdateLifeTimer(TInt aError);
+
+ // From MDispatcherCallback
+ void CallbackSync(CRequestQueueOneShot::TIpcDataPackage& aIpcDataPackage);
+
+ // Other public functions
+ void SetDispatcherHolder(TDispatcherHolder& aDispatcherHolder);
+
+private:
+
+ CCallControlDispatcher(MLtsyDispatchFactoryV1& aLtsyFactory,
+ MmMessageManagerCallback& aMessageManagerCallback,
+ CRequestQueueOneShot& aRequestAsyncOneShot);
+
+ void ConstructL();
+
+ // Helper functions
+ TInt DoDispatchDialL(const CMmDataPackage* aDataPackage, TBool aIsIsvCall, TBool aPerformFdnCheck);
+ TInt DoDispatchAnswerL(const CMmDataPackage* aDataPackage, TBool aIsIsvRequest);
+ void DoCallbackDial(TInt aError, TInt aCallId, RMobilePhone::TMobileService aMode);
+ TInt DoSendDtmfTonesL(TInt aCallId, const TDesC& aTones);
+
+private: // Not owned
+
+ MLtsyDispatchFactoryV1& iLtsyFactoryV1;
+ MmMessageManagerCallback& iMessageManagerCallback;
+ CRequestQueueOneShot& iRequestAsyncOneShot;
+ TDispatcherHolder* iDispatcherHolder;
+
+ // Interfaces in the Licensee LTSY, not owned by this object
+
+ MLtsyDispatchCallControlAnswer* iLtsyDispatchCallControlAnswer;
+ MLtsyDispatchCallControlHold* iLtsyDispatchCallControlHold;
+ MLtsyDispatchCallControlDialEmergency* iLtsyDispatchCallControlDialEmergency;
+ MLtsyDispatchCallControlStopDtmfTone* iLtsyDispatchCallControlStopDtmfTone;
+ MLtsyDispatchCallControlSetActiveAlsLine* iLtsyDispatchCallControlSetActiveAlsLine;
+ MLtsyDispatchCallControlSendDtmfTonesCancel* iLtsyDispatchCallControlSendDtmfTonesCancel;
+ MLtsyDispatchCallControlHangUp* iLtsyDispatchCallControlHangUp;
+ MLtsyDispatchCallControlResume* iLtsyDispatchCallControlResume;
+ MLtsyDispatchCallControlSetDynamicHscsdParams* iLtsyDispatchCallControlSetDynamicHscsdParams;
+ MLtsyDispatchCallControlDialVoice* iLtsyDispatchCallControlDialVoice;
+ MLtsyDispatchCallControlTransfer* iLtsyDispatchCallControlTransfer;
+ MLtsyDispatchCallControlSendDtmfTones* iLtsyDispatchCallControlSendDtmfTones;
+ MLtsyDispatchCallControlGetIdentityServiceStatus* iLtsyDispatchCallControlGetIdentityServiceStatus;
+ MLtsyDispatchCallControlSwap* iLtsyDispatchCallControlSwap;
+ MLtsyDispatchCallControlSwap* iLtsyDispatchCallControlSingleSwap;
+ MLtsyDispatchCallControlLoanDataPort* iLtsyDispatchCallControlLoanDataPort;
+ MLtsyDispatchCallControlRecoverDataPort* iLtsyDispatchCallControlRecoverDataPort;
+ MLtsyDispatchCallControlStartDtmfTone* iLtsyDispatchCallControlStartDtmfTone;
+ MLtsyDispatchCallControlGetActiveAlsLine* iLtsyDispatchCallControlGetActiveAlsLine;
+ MLtsyDispatchCallControlDialData* iLtsyDispatchCallControlDialData;
+ MLtsyDispatchCallControlQueryIsEmergencyNumber* iLtsyDispatchCallControlQueryIsEmergencyNumber;
+ MLtsyDispatchCallControlGetAlsPpSupport* iLtsyDispatchCallControlGetAlsPpSupport;
+ MLtsyDispatchCallControlGetAlsBlockedStatus* iLtsyDispatchCallControlGetAlsBlockedStatus;
+ MLtsyDispatchCallControlSetAlsBlocked* iLtsyDispatchCallControlSetAlsBlocked;
+ MLtsyDispatchCallControlGetLifeTime* iLtsyDispatchCallControlGetLifeTime;
+ MLtsyDispatchCallControlTerminateErrorCall* iLtsyDispatchCallControlTerminateErrorCall;
+ MLtsyDispatchCallControlTerminateAllCalls* iLtsyDispatchCallControlTerminateAllCalls;
+ MLtsyDispatchCallControlGetCallForwardingIndicator* iLtsyDispatchCallControlGetCallForwardingIndicator;
+ MLtsyDispatchCallControlUpdateLifeTimer* iLtsyDispatchCallControlUpdateLifeTimer;
+
+ // Other data items
+
+ /**
+ * Cache of phone number passed to dispatcher in a
+ * ECustomCheckEmergencyNumberIPC request.
+ */
+ RMmCustomAPI::TMobileTelNumber iQueryEmergencyNumber;
+
+ /**
+ * Buffer containing remains of DTMF string to be sent.
+ * This is used for handling 'w' (wait) characters passed into
+ * RMobilePhone::SendDTMFTones
+ */
+ TBuf<KMaxInfoName> iDtmfString; // Created by this object but ownership passes to CTSY
+
+ /**
+ * The call ID of the call iDtmfString was sending tones to.
+ * Used if client decides to continue sending the string.
+ */
+ TInt iCallIdForDtmf;
+
+ /**
+ * ETrue if a stop character has been found in the DTMF string,
+ * therefore client needs to be notified of stop on completion of
+ * send.
+ */
+ TBool iFoundDtmfStop;
+
+ /**
+ * Caches the mode used to dial a voice call. This is needed for when the
+ * auxiliary line is used to dial a call. On the callback from the dial,
+ * the CTSY needs the call mode to locate the call object to set the Call ID.
+ */
+ RMobilePhone::TMobileService iModeUsedForVoiceCallDial;
+
+ /**
+ * Caches whether an FDN check was performed, to allow the correct IPC to be
+ * completed.
+ */
+ TBool iFdnCheckPerformed;
+
+ /**
+ * These are the two Call IDs of the calls on which a swap operation
+ * has been requested. It allows the dispatcher to return a Call ID to the CTSY
+ * on completion of a swap (if the swap failed) so that the CTSY can locate the
+ * call object to complete the swap back to the client.
+ *
+ * These Call IDs should only have a value != -1 when there is a pending swap
+ * operation.
+ */
+ TInt iSwapCallId;
+ TInt iSecondSwapCallId;
+
+ /**
+ * These are the two Call IDs of the calls on which a transfer operation
+ * has been requested. It is needed for the same reason as iSwapCallId
+ * and iSecondSwapCallId above.
+ */
+ TInt iTransferHeldCallId;
+ TInt iTransferSecondCallId;
+ }; // class CCallControlDispatcher
+
+#endif // __CCALLCONTROLDISPATCHER_H_
+