--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/inc/CSimCall.h Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +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 <e32base.h>
+#include <etelmm.h>
+#include <et_phone.h>
+#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.
+ // <stores the call duration (since connected)
+ TNotifyData iNotifyDurationChange;
+ };
+
+class CSimCallRemotePartyInfoChange : public CBase, MTimerCallBack
+ {
+public:
+ static CSimCallRemotePartyInfoChange* NewL(CSimCall* aCall);
+ CSimCallRemotePartyInfoChange(CSimCall* aCall);
+ ~CSimCallRemotePartyInfoChange();
+ void TimerCallBack(TInt aId);
+ void Start();
+private:
+ void ConstructL();
+public:
+
+ RMobileCall::TMobileCallRemotePartyInfoV1 iRemotePartyInfoV1;
+ TNotifyData iNotifyRemotePartyInfo;
+ CSimTimer* iRemoteInfoTimer;
+ TInt iDelay;
+ CSimCall* iCall;
+ };
+
+#endif // CSIMCALL_H__