--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmgsmwcdma/cmmcallgsmwcdmaext.h Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,589 @@
+/*
+* 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:
+*
+*/
+
+
+
+#ifndef CMMCALLGSMWCDMAEXT_H
+#define CMMCALLGSMWCDMAEXT_H
+
+// INCLUDES
+#include <featmgr/featurecontrol.h>
+#include "cmmcallextinterface.h"
+#include "CMmPrivateUtility.h"
+
+#include "ctsysystemstatepluginhandler.h"
+
+// FORWARD DECLARATIONS
+class CMmCallTsy;
+class CMmMessageManagerBase;
+
+// CLASS DECLARATION
+
+/**
+* CMmCallGsmWcdmaExt contains mode-dependent phone functionality for GSM
+* Calls. Extension request handles are stored in MM Call objects.
+*/
+NONSHARABLE_CLASS( CMmCallGsmWcdmaExt ) : public CMmCallExtInterface, public MCtsySsmPluginCallback
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ *
+ *
+ * @param aMmCallTsy Pointer to the created object
+ * @param aMmCallMessHandler Pointer to call message handler
+ * @param aMode Call mode
+ * @param aMessageManager Pointer to the Message Manager
+ * @return Pointer to the created object
+ */
+ static CMmCallGsmWcdmaExt* NewL( CMmCallTsy* aMmCallTsy,
+ RMobilePhone::TMobileService aMode,
+ CMmMessageManagerBase* aMessageManager );
+
+
+ /**
+ * Destructor.
+ *
+ *
+ */
+ ~CMmCallGsmWcdmaExt();
+
+ /**
+ * This method sets RF state
+ *
+ *
+ * @param aRfState New RF state
+ * @param aSsmPluginCallback pointer to callback interface
+ */
+ void SetRfState( TRfStateInfo aRfState, MCtsySsmPluginCallback* aSsmPluginCallback, TCtsySsmCallbackData& aCallbackData );
+
+
+ /**
+ * From CMmCallExtInterface Dials a voice call
+ *
+ *
+ * @param aAlsLineInfo ALS line information
+ * @param aCallParams Call parameters
+ * @param aTelNumber Phone number to be called
+ * @param aExtensionId
+ * @return KErrNone or error code
+ */
+ TInt DialL( RMobilePhone::TMobileService aAlsLineInfo,
+ const TDesC8* aCallParams,
+ const TDesC* aTelNumber,
+ TInt aExtensionId );
+
+ /**
+ * From CMmCallExtInterface Answer incoming call
+ *
+ *
+ * @param aCallId Call ID of the call to be answered
+ * @param aExtensionId
+ * @return KErrNone or error code
+ */
+ TInt AnswerIncomingCallL( TInt aCallId, TInt aExtensionId );
+
+ /**
+ * From CMmCallExtInterface Get GSM specific call parameters
+ *
+ *
+ * @param aParams Pointer to parameters package
+ */
+ void GetCallParams( TDes8* aParams );
+
+ /**
+ * From CMmCallExtInterface This method is used to hold an active call
+ *
+ * @param aCallId Call Id of the operation's target call
+ * @return KErrNone or error code
+ */
+ TInt HoldL( TInt aCallId );
+
+ /**
+ * From CMmCallExtInterface This method is used to resume a held call
+ *
+ *
+ * @param aCallId Call Id of the operation's target call
+ * @return KErrNone or error code
+ */
+ TInt ResumeL( TInt aCallId );
+
+ /**
+ * From CMmCallExtInterface This method is used to swap between active
+ * and held calls
+ *
+ *
+ * @param aCallId Call Id of the operation's target call
+ * @return KErrNone or error code
+ */
+ TInt SwapL( TInt aCallId );
+
+ /**
+ * From CMmCallExtInterface This method requests a private communication
+ * to the remote party of one call within a conference call.
+ *
+ *
+ * @param aCallId Call Id of the operation's target call
+ * @return KErrNone or error code
+ */
+ TInt GoOneToOneL( TInt aCallId );
+
+ /**
+ * From CMmCallExtInterface Dial an emergency call
+ *
+ *
+ * @param aCallbackData
+ * @return KErrNone or error code
+ */
+ TInt DialEmergencyCall(TCtsySsmCallbackData& aCallbackData );
+
+
+ /**
+ * From CMmCallExtInterface Deflect an incoming call to another
+ * destination
+ *
+ *
+ * @param aData Packaged parameters
+ * @return KErrNone or error code
+ */
+ TInt DeflectL( const TDataPackage& aData );
+
+ /**
+ * From CMmCallExtInterface Informs GSM extension about the current
+ * status.
+ *
+ *
+ * @param aCallStatus Current call status
+ * @return KErrNone or error code
+ */
+ TInt CompleteNotifyStatusChange(
+ RMobileCall::TMobileCallStatus aCallStatus );
+
+ /**
+ * From CMmCallExtInterface Get GSM specific mobile call capabilities.
+ *
+ *
+ * @param aCallCapsV1: a reference to the parameter object to be filled
+ */
+ void GetMobileCallCapsV1(
+ RMobileCall::TMobileCallCapsV1& aCallCapsV1 );
+
+
+ /**
+ * From CMmCallExtInterface Set GSM specific mobile call capabilities.
+ *
+ *
+ * @return aCaps New call capabilities
+ */
+ void SetGSMCallCaps(
+ const RMobileCall::TMobileCallCapsV1* aCaps );
+
+ /**
+ * From CMmCallExtInterface Adds requested caps to GSM specific mobile
+ * call capabilities.
+ *
+ *
+ * @param aCaps Call capabilities to be added
+ */
+ void AddGSMCallCaps( TUint32 aCaps );
+
+ /**
+ * From CMmCallExtInterface Removes requested caps from GSM specific
+ * mobile call capabilities.
+ *
+ *
+ * @param aCaps Call capabilities to be removed
+ */
+ void RemoveGSMCallCaps( TUint32 aCaps );
+
+ /**
+ * From CMmCallExtInterface Transfer call to another destination
+ *
+ *
+ * @return KErrNone or error code
+ */
+ TInt TransferL();
+
+ /**
+ * From CMmCallExtInterface Resets call internal attributes.
+ *
+ *
+ */
+ void ResetInternalAttributes();
+
+ /**
+ * From CMmCallExtInterface Fill mobile call information in the infoV1
+ * given as parameter
+ *
+ *
+ * @return aInfoV1 Current Mobile Call Information
+ * @return KErrNone or error code
+ */
+ TInt FillMobileCallInfo(
+ RMobileCall::TMobileCallInfoV1* aInfoV1 );
+
+
+ /**
+ * From CMmCallExtInterface Fill mobile call information in the infoV3
+ * given as parameter
+ *
+ *
+ * @return aInfoV3 Current Mobile Call Information
+ * @return KErrNone or error code
+ */
+ TInt FillMobileCallInfoV3(
+ RMobileCall::TMobileCallInfoV3* aInfoV3 );
+
+ /**
+ * From CMmCallExtInterface Fill mobile call information in the infoV7
+ * given as parameter
+ *
+ *
+ * @return aInfoV7 Current Mobile Call Information
+ * @return KErrNone or error code
+ */
+ TInt FillMobileCallInfoV7(
+ RMobileCall::TMobileCallInfoV7* aInfoV7 );
+
+ /**
+ * From CMmCallExtInterface Fill mobile call information in the infoV8
+ * given as parameter
+ *
+ *
+ * @return aInfoV8 Current Mobile Call Information
+ * @return KErrNone or error code
+ */
+ TInt FillMobileCallInfoV8(
+ RMobileCall::TMobileCallInfoV8* aInfoV8);
+
+ /**
+ * From CMmCallExtInterface Fills in the remote party info in the
+ * infoV1Pckg given as parameter
+ *
+ *
+ * @return aInfoV1Pckg Current remote party information
+ */
+ TInt GetRemotePartyInfo(
+ RMobileCall::TMobileCallRemotePartyInfoV1Pckg* aInfoV1Pckg );
+
+ /**
+ * From CMmCallExtInterface Sets mobile call data
+ *
+ *
+ * @param aDataPackage New mobile call data
+ * @param aCallDirection New call direction
+ */
+ void SetMobileCallData(
+ CMmDataPackage* aDataPackage,
+ RMobileCall::TMobileCallDirection aCallDirection );
+
+ //CSD/HSCSD methods
+
+ /**
+ * Return GSM specific data call capabilities.
+ *
+ *
+ * @param aCallDataCapsV1: a reference to the parameter object to be filled
+ */
+ void GetMobileDataCallCapsV1(
+ RMobileCall::TMobileCallDataCapsV1& aCallDataCapsV1 );
+
+ /**
+ * Received GSM specific data call capabilities.
+ *
+ *
+ * @param aCaps: New data call caps
+ */
+ void ReceivedMobileDataCallCaps(
+ RMobileCall::TMobileCallDataCapsV1* aCaps );
+
+ /**
+ * Set GSM specific dynamic HSCSD parameters.
+ *
+ *
+ * @param RMobileCall::TMobileCallAiur* aAiur: Wanted rate
+ * @param TInt* aRxTimeslots: Wanted RX timeslots
+ * @return: KErrNone or KErrNotFound
+ */
+ TInt SetDynamicHscsdParamsL(
+ RMobileCall::TMobileCallAiur* aAiur,
+ TInt* aRxTimeslots );
+
+ /**
+ * Return GSM specific current HSCSD info.
+ *
+ *
+ * @param Current HSCSD info
+ * @return KErrNone or KErrETelCallNotActive
+ */
+ TInt GetCurrentHscsdInfo( TDes8* aHSCSDInfo );
+
+ /**
+ * Return GSM specific bearer service info.
+ *
+ *
+ * @param RCall::TBearerService* aBearerService: Bearer service info
+ * @return : KErrNone
+ */
+ TInt GetBearerServiceInfo(
+ RCall::TBearerService* aBearerService );
+
+ /**
+ * Dial for data calls.
+ *
+ *
+ * @parama CallMode: call mode
+ * @parama CallParams: call parameters
+ * @param aTelNumber: phone number to be called
+ * @return : KErrNone or error code from DP
+ */
+ TInt DialDataCallL(
+ RMobilePhone::TMobileService aCallMode,
+ const TDesC8* aCallParams,
+ const TDesC* aTelNumber );
+
+ /**
+ * From CMmCallExtInterface Answer incoming data call
+ *
+ *
+ * @param aCallId Call ID of the call to be answered
+ * @return KErrNone or error code
+ */
+ TInt AnswerIncomingDataCallL( TInt aCallId );
+
+ /**
+ * Copy received bearer service info.
+ *
+ *
+ * @param Bearer service info
+ */
+ void ReceivedBearerServiceInfo(
+ RCall::TBearerService aBearerService );
+
+ /**
+ * Sets correct data call attributes.
+ *
+ *
+ * @param Call parameters
+ */
+ void Connect( const TDesC8* aCallParams );
+
+ /**
+ * Stores new CALL/CSD parameters.
+ *
+ *
+ * @param aDataPackage: call parameters
+ */
+ void ReceivedCallParams(
+ const CMmDataPackage* aDataPackage );
+
+ /**
+ * Copies data call parameters to another variable without extension
+ * id
+ *
+ *
+ * @param destination parameter
+ * @param source parameter
+ */
+ void CopyMobileDataCallParams(
+ RMobileCall::TMobileDataCallParamsV1& aDestination,
+ const RMobileCall::TMobileDataCallParamsV1& aSource ) const;
+
+ /**
+ * Received extension specific HSCSD info.
+ *
+ *
+ * @param aDataPackage
+ */
+ void ReceivedHscsdInfo(
+ CMmDataPackage* aDataPackage );
+
+ /**
+ * Received extension specific data call capabilities.
+ *
+ *
+ * @param New data call capabilities and
+ * data call mode
+ */
+ void ReceivedMobileDataCallCaps(
+ CMmDataPackage* aDataPackage );
+
+ public: // Functions from MCtsySsmPluginCallback
+
+ /** CMmCallGsmWcdmaExt::SsmPluginCallback
+ * This is callback
+ * This method is called from System State Manager (or from CMmCallGsmWcdmaExt, if there
+ * is no reason to change RF state), after RF state changing
+ *
+ * @param aResult -- result returned either from SSM
+ */
+ void SsmPluginCallback(TInt aResult, TCtsySsmCallbackData& aCallbackData);
+
+
+ private: // Constructors and destructor
+
+ /**
+ * C++ default constructor.
+ *
+ *
+ */
+ CMmCallGsmWcdmaExt();
+
+ /**
+ * Second phase constructor of CMmCallGsmWcdmaExt.
+ *
+ *
+ */
+ void ConstructL();
+
+ /**
+ * This method updates call capabilities in case that there is only
+ * one non-idle call
+ *
+ *
+ * @param aCallStatus Current status of this call
+ * @return KErrNone or error code
+ */
+ TInt UpdateSingleCallControlCaps(
+ RMobileCall::TMobileCallStatus aCallStatus );
+
+ /**
+ * This method updates call capabilities in case that there are two
+ * calls in non-idle state and they are not in a conference.
+ *
+ *
+ * @param aCallStatus Current status of this call
+ * @return KErrNone or error code
+ */
+ TInt UpdateDoubleCallControlCaps(
+ RMobileCall::TMobileCallStatus aCallStatus );
+
+ /**
+ * This method updates call capabilities in case that conference call
+ * is going on.
+ *
+ *
+ * @param aCallStatus Current status of this call
+ * @return KErrNone or error code
+ */
+ TInt UpdateMultipleCallControlCaps(
+ RMobileCall::TMobileCallStatus aCallStatus);
+
+ //CSD/HSCSD methods
+ /**
+ * Sets data call service, protocol and QoS caps in CSD/HSCSD
+ *
+ *
+ * @param const aCallParams: Call parameters
+ * @return KErrNone
+ */
+ void SetDataCaps( const TDesC8* aCallParams );
+
+
+ private: // Data
+
+ /**
+ * Pointer to the mode independent call object
+ */
+ CMmCallTsy* iMmCallTsy;
+
+ /**
+ * call mode
+ */
+ RMobilePhone::TMobileService iSymbianCallMode;
+
+ /**
+ * Call parameters
+ */
+ RMobileCall::TMobileCallParamsV7 iCallParams;
+
+ /**
+ * Dynamic call capabilities
+ */
+ RMobileCall::TMobileCallCapsV1 iMobileCallCaps;
+
+ /**
+ * Current mobile call info
+ */
+ RMobileCall::TMobileCallInfoV8 iMobileCallInfo;
+
+ /**
+ * Tells if Join flag should be enabled for this calls when it enters
+ * the connected state
+ */
+ TBool iEnableJoinFlag;
+
+ /**
+ * pointer to the message manager
+ * Not own.
+ */
+ CMmMessageManagerBase* iMessageManager;
+
+ /**
+ * Data call mode (CSD or HSCSD)
+ */
+ TDataCallMode iDataCallMode;
+
+ /**
+ * Bearer service information for data call
+ */
+ RCall::TBearerService iBearerService;
+
+ /**
+ * Dynamic data call caps
+ */
+ RMobileCall::TMobileCallDataCapsV1* iDataCallCaps;
+
+ /**
+ * CSD parameters
+ */
+ RMobileCall::TMobileDataCallParamsV1* iCSDParams;
+
+ /**
+ * HSCSD parameters
+ */
+ RMobileCall::TMobileHscsdCallParamsV1* iHSCSDParams;
+
+ /**
+ * Current HSCSD call info
+ */
+ RMobileCall::TMobileCallHscsdInfoV8* iCurrentHSCSDInfo;
+
+ /**
+ * Tells if HSCSD info has been received or not
+ */
+ TBool iInformationReceived;
+
+ /**
+ * Used to query for supported features
+ */
+ RFeatureControl iFeatureControl;
+
+ /**
+ * Tells if Feature Manager is available. Will be EFalse if
+ * RFeatureControl::Open fails to connect to the Feature Manager
+ */
+ TBool iUsingFeatureManager;
+
+ // Pointer to SystemStatePlugin
+ CCtsySystemStatePluginHandler* iSystemStatePluginHandler;
+ };
+
+#endif // CMMCALLGSMWCDMAEXT_H
+
+// End of File