diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyserverplugins/simtsy/inc/CSimCall.h --- a/telephonyserverplugins/simtsy/inc/CSimCall.h Mon May 03 13:37:20 2010 +0300 +++ b/telephonyserverplugins/simtsy/inc/CSimCall.h Thu May 06 15:10:38 2010 +0100 @@ -1,198 +1,198 @@ -// Copyright (c) 2001-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: -// This file contains the definitions of the Simulator TSY call classes. The call classes -// process the call-based requests made by ETel clients and passed down to the TSY by the -// ETel Server. -// -// - -/** - @file - @internalAll -*/ - -#ifndef __CSIMCALL_H__ -#define __CSIMCALL_H__ - -#include -#include -#include -#include "utils.h" -#include "SimConstants.h" -#include "csimtimer.h" - -/** -* This class 'CSimCall' is the Call class for the Simulator TSY. -* This class is the base classs voice and data calls. It is an abstract class so it will -* not be instantiated. It handles all the call-based ETel requests common to voice and data calls. -* Requests are passed down from the ETel Server through virtual functions. -* Core ETel API requests appear as individual virtual functions, -* while extension API requests are passed through the ExtFunc requests. -*/ -class CSimLine; -class CSimCallDuration; -class CSimCallRemotePartyInfoChange; -class CSimCall : public CCallBase - { -friend class CSimCallDuration; -friend class CSimCallRemotePartyInfoChange; - -public: - enum TCallEvent - { - ECallEventDial, - ECallEventHangUp, - ECallEventAnswerIncoming, - ECallEventIncomingCall, - ECallEventTimeOut, - ECallEventNtRasConnected, - ECallEventHold, - ECallEventResume, - ECallEventSwap, - ECallEventConnectContinue, - ECallEventRemoteHangup - }; - -public: - CSimCall(CSimLine* aLine,const TName& aName, CSimPhone* aPhone); - ~CSimCall(); - void ConstructL(); - virtual void Init(); - virtual TInt RegisterNotification(const TInt aIpc); - virtual TInt DeregisterNotification(const TInt aIpc); - static void CloseCall(TAny* aObj); - virtual CTelObject::TReqMode ReqModeL(const TInt aIpc); - - // MCallBaseTSY pure virtuals - virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RCall::TCallInfo* aCallInfo); - virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps); - virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps); - virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle, RCall::THookStatus* aHookStatus); - virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus); - virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt NotifyDurationChange(const TTsyReqHandle aTsyReqHandle,TTimeIntervalSeconds* aTime); - virtual TInt NotifyDurationChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt RecoverDataPortAndRelinquishOwnership(); - virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aCallStatus); - virtual TInt TransferOwnership(const TTsyReqHandle aTsyReqHandle); - virtual TInt AcquireOwnership(const TTsyReqHandle aTsyReqHandle); - virtual TInt AcquireOwnershipCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt GetCallDuration(const TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime); - virtual TInt GetFaxSettings(const TTsyReqHandle aTsyReqHandle,RCall::TFaxSessionSettings* aSettings); - virtual TInt SetFaxSettings(const TTsyReqHandle aTsyReqHandle,const RCall::TFaxSessionSettings* aSettings); - virtual void UpdateNotifiers(); - //MM - virtual TInt GetMobileCallStatus(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aCallStatus); - TInt GetMobileCallInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aMobileCallInfo); - virtual TInt NotifyMobileCallStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus); - TInt NotifyMobileCallStatusChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt NumberOfSlotsL(const TInt aIpc); - TInt GetMobileCallCaps(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); - TInt NotifyMobileCallCapsChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); - TInt NotifyMobileCallCapsChangeCancel(const TTsyReqHandle aTsyReqHandle); - virtual TInt NotifyRemotePartyInfoChange(const TTsyReqHandle aTsyReqHandle, TDes8* aRemoteParty); - virtual TInt NotifyRemotePartyInfoChangeCancel(); - - // MTelObjectTSY pure virtuals - virtual CTelObject* OpenNewObjectByNameL(const TDesC&); - virtual CTelObject* OpenNewObjectL(TDes& aNewName); - - TBool Used(); - void SetUsed(); - void SetUnused(); - virtual TInt ActionEvent(TCallEvent aEvent,TInt aStatus); //< The state machine for the calls - TInt ChangeStateL(RMobileCall::TMobileCallStatus aState,TBool aSwap, TBool aNoPropagation); //< Changes the state of the call - void ResetIfRingingL(); - virtual TUint Caps()=0; - -protected: - void GenerateCoreCallCaps(TUint& aCaps); - -private: - RCall::TStatus GetCoreCallStatus(); //< Converts Multimode Line status to Core line status - -public: - TName iName; - RMobileCall::TMobileCallStatus iState; //< Holds the current state of the call - - CSimCallDuration* iCallDurationHandler; // < Pointer to the owned timer class. - -protected: - TNotifyData iAnswerIncomingCall; //< Holds the notification data (a flag, TsyReqHandle and any raw data) - //< for Answer incoming call notifications - TTsyReqHandle iDialRequestHandle; //< Request handle for the Dial request - TTsyReqHandle iHangUpRequestHandle; //< Request handle for the Hang up request - CSimLine* iLine; //< Pointer to the line class - TNotifyData iNotifyStatusChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) for core call status change. - TNotifyData iMobileNotifyStatusChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) for multimode call status change. - //< for the line status - RCall::THookStatus iHookState; //< The current call hook state. - TNotifyData iNotifyHookChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) - //< for the line hook status - TNotifyData iNotifyCapsChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) - //< for the core caps changes - TNotifyData iNotifyMobileCapsChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) - //< for the mobile caps changes - TUint iCaps; //< The capability flags associated with the call. - CSimCallRemotePartyInfoChange* iNotifyRemotePartyInfoTimer; //< active object that similates retrieval of remote party info after certain amount of time. - - CSimPhone* iPhone; - }; - -class CSimCallDuration : public CBase, MTimerCallBack - { -public: - static CSimCallDuration* NewL(CSimCall* aCall); - CSimCallDuration(CSimCall* aCall); - ~CSimCallDuration(); - void StartDuration(); - void StopDuration(); - void StartNotification(TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime); - void StopNotification(); - void GetDuration(TTimeIntervalSeconds* aTime); - void TimerCallBack(TInt aId); - TTimeIntervalSeconds iCallDuration; - -private: - void ConstructL(); - -private: - CSimCall* iCall; - CSimTimer* iDurationTimer; // < Pointer to the owned timer class. - // +#include +#include +#include "utils.h" +#include "SimConstants.h" +#include "csimtimer.h" + +/** +* This class 'CSimCall' is the Call class for the Simulator TSY. +* This class is the base classs voice and data calls. It is an abstract class so it will +* not be instantiated. It handles all the call-based ETel requests common to voice and data calls. +* Requests are passed down from the ETel Server through virtual functions. +* Core ETel API requests appear as individual virtual functions, +* while extension API requests are passed through the ExtFunc requests. +*/ +class CSimLine; +class CSimCallDuration; +class CSimCallRemotePartyInfoChange; +class CSimCall : public CCallBase + { +friend class CSimCallDuration; +friend class CSimCallRemotePartyInfoChange; + +public: + enum TCallEvent + { + ECallEventDial, + ECallEventHangUp, + ECallEventAnswerIncoming, + ECallEventIncomingCall, + ECallEventTimeOut, + ECallEventNtRasConnected, + ECallEventHold, + ECallEventResume, + ECallEventSwap, + ECallEventConnectContinue, + ECallEventRemoteHangup + }; + +public: + CSimCall(CSimLine* aLine,const TName& aName, CSimPhone* aPhone); + ~CSimCall(); + void ConstructL(); + virtual void Init(); + virtual TInt RegisterNotification(const TInt aIpc); + virtual TInt DeregisterNotification(const TInt aIpc); + static void CloseCall(TAny* aObj); + virtual CTelObject::TReqMode ReqModeL(const TInt aIpc); + + // MCallBaseTSY pure virtuals + virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RCall::TCallInfo* aCallInfo); + virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps); + virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps); + virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle, RCall::THookStatus* aHookStatus); + virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus); + virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt NotifyDurationChange(const TTsyReqHandle aTsyReqHandle,TTimeIntervalSeconds* aTime); + virtual TInt NotifyDurationChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RecoverDataPortAndRelinquishOwnership(); + virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aCallStatus); + virtual TInt TransferOwnership(const TTsyReqHandle aTsyReqHandle); + virtual TInt AcquireOwnership(const TTsyReqHandle aTsyReqHandle); + virtual TInt AcquireOwnershipCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt GetCallDuration(const TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime); + virtual TInt GetFaxSettings(const TTsyReqHandle aTsyReqHandle,RCall::TFaxSessionSettings* aSettings); + virtual TInt SetFaxSettings(const TTsyReqHandle aTsyReqHandle,const RCall::TFaxSessionSettings* aSettings); + virtual void UpdateNotifiers(); + //MM + virtual TInt GetMobileCallStatus(const TTsyReqHandle aTsyReqHandle, RMobileCall::TMobileCallStatus* aCallStatus); + TInt GetMobileCallInfo(const TTsyReqHandle aTsyReqHandle, TDes8* aMobileCallInfo); + virtual TInt NotifyMobileCallStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus); + TInt NotifyMobileCallStatusChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt NumberOfSlotsL(const TInt aIpc); + TInt GetMobileCallCaps(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); + TInt NotifyMobileCallCapsChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); + TInt NotifyMobileCallCapsChangeCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt NotifyRemotePartyInfoChange(const TTsyReqHandle aTsyReqHandle, TDes8* aRemoteParty); + virtual TInt NotifyRemotePartyInfoChangeCancel(); + + // MTelObjectTSY pure virtuals + virtual CTelObject* OpenNewObjectByNameL(const TDesC&); + virtual CTelObject* OpenNewObjectL(TDes& aNewName); + + TBool Used(); + void SetUsed(); + void SetUnused(); + virtual TInt ActionEvent(TCallEvent aEvent,TInt aStatus); //< The state machine for the calls + TInt ChangeStateL(RMobileCall::TMobileCallStatus aState,TBool aSwap, TBool aNoPropagation); //< Changes the state of the call + void ResetIfRingingL(); + virtual TUint Caps()=0; + +protected: + void GenerateCoreCallCaps(TUint& aCaps); + +private: + RCall::TStatus GetCoreCallStatus(); //< Converts Multimode Line status to Core line status + +public: + TName iName; + RMobileCall::TMobileCallStatus iState; //< Holds the current state of the call + + CSimCallDuration* iCallDurationHandler; // < Pointer to the owned timer class. + +protected: + TNotifyData iAnswerIncomingCall; //< Holds the notification data (a flag, TsyReqHandle and any raw data) + //< for Answer incoming call notifications + TTsyReqHandle iDialRequestHandle; //< Request handle for the Dial request + TTsyReqHandle iHangUpRequestHandle; //< Request handle for the Hang up request + CSimLine* iLine; //< Pointer to the line class + TNotifyData iNotifyStatusChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) for core call status change. + TNotifyData iMobileNotifyStatusChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) for multimode call status change. + //< for the line status + RCall::THookStatus iHookState; //< The current call hook state. + TNotifyData iNotifyHookChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) + //< for the line hook status + TNotifyData iNotifyCapsChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) + //< for the core caps changes + TNotifyData iNotifyMobileCapsChange; //< Holds the notification data (a flag, TsyReqHandle and any raw data) + //< for the mobile caps changes + TUint iCaps; //< The capability flags associated with the call. + CSimCallRemotePartyInfoChange* iNotifyRemotePartyInfoTimer; //< active object that similates retrieval of remote party info after certain amount of time. + + CSimPhone* iPhone; + }; + +class CSimCallDuration : public CBase, MTimerCallBack + { +public: + static CSimCallDuration* NewL(CSimCall* aCall); + CSimCallDuration(CSimCall* aCall); + ~CSimCallDuration(); + void StartDuration(); + void StopDuration(); + void StartNotification(TTsyReqHandle aTsyReqHandle, TTimeIntervalSeconds* aTime); + void StopNotification(); + void GetDuration(TTimeIntervalSeconds* aTime); + void TimerCallBack(TInt aId); + TTimeIntervalSeconds iCallDuration; + +private: + void ConstructL(); + +private: + CSimCall* iCall; + CSimTimer* iDurationTimer; // < Pointer to the owned timer class. + //