telephonyserverplugins/simtsy/inc/CSimLine.h
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/simtsy/inc/CSimLine.h	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/simtsy/inc/CSimLine.h	Thu May 06 15:10:38 2010 +0100
@@ -1,203 +1,203 @@
-// Copyright (c) 2003-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 __CSIMLINE_H__
-#define __CSIMLINE_H__
-
-
-#include <et_phone.h>
-#include "utils.h"
-#include <etelmm.h>
-#include "CSimPubSub.h"
-#include "csimtimer.h"
-
-/**
- * @file
- * Declares the base class for voice and data lines - CSimLine
- * @internalAll
- */
-
-const RMobileCall::TMobileCallStatus KStateTableTerminator=(RMobileCall::TMobileCallStatus)999;
-
-struct TStateChangeValidity
-	{
-	RMobileCall::TMobileCallStatus iOldState;
-	RMobileCall::TMobileCallStatus iNewState;
-	TInt iError;
-	};
-
-/**
- * This table is used to test the validity of potential line state changes.
- * If the state change is not included in the table, the error KErrGeneral will be generated.
- * A potential error value is included as the third item in each entry to enable errors
- * other than KErrGeneral to be generated for specific erroneous state changes.
- */
-const struct TStateChangeValidity KLineStateChangeValidity[]= {
-	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusDialling,	KErrNone },
-	{ RMobileCall::EStatusDialling,		RMobileCall::EStatusConnecting,	KErrNone },
-	{ RMobileCall::EStatusConnecting,	RMobileCall::EStatusConnected,	KErrNone },
-
-	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusAnswering,	KErrNone },
-	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusRinging,	KErrNone },
-	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusAnswering,	KErrNone },
-	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusRinging,	KErrNone },
-	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusHold,	KErrNone },
-	{ RMobileCall::EStatusAnswering,	RMobileCall::EStatusConnected,	KErrNone },
-
-	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusHold,		KErrNone },
-	{ RMobileCall::EStatusHold,			RMobileCall::EStatusConnected,	KErrNone },
-	{ RMobileCall::EStatusHold,			RMobileCall::EStatusDialling,	KErrNone },
-	{ RMobileCall::EStatusHold,			RMobileCall::EStatusAnswering,	KErrNone },
-	{ RMobileCall::EStatusHold,			RMobileCall::EStatusDisconnecting,	KErrNone },
-
-	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusDisconnecting,	KErrNone },
-	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusRinging,	KErrNone }, // new AA
-	{ RMobileCall::EStatusHold,	RMobileCall::EStatusRinging,	KErrNone }, 
-	{ RMobileCall::EStatusDisconnecting,	RMobileCall::EStatusIdle,		KErrNone },
-	
-	{ RMobileCall::EStatusDisconnecting,	RMobileCall::EStatusConnected,		KErrNone },//HangUp Cancel
-
-	{ KStateTableTerminator,			KStateTableTerminator,			KStateTableTerminator}
-	};
-
-//
-// CSimLine - General Line Functionality
-//
-/**
-* This class 'CSimLine' is the Line class for the Simulator TSY.
-* It is the base class for Voice (CSimVoiceLine) and Data (CSimDataLine) lines. 
-* It is an abstract class and is therefore not going to be instantiated. 
-* It will handle all functionality common to voice and data lines.
-*/
-class CSimPhone;
-class CSimCall;
-class CTestConfigSection;
-
-class CSimLine : public CLineBase, public MPSSimObserver, public MTimerCallBack
-	{
-	friend class CSimVoiceCall;
-public:
-	CSimLine(CSimPhone* aPhone);
-	~CSimLine();
-	virtual TInt RegisterNotification(const TInt aIpc);
-	virtual TInt DeregisterNotification(const TInt aIpc);
-	static void CloseLine(TAny* aObj);
-	virtual CTelObject::TReqMode ReqModeL(const TInt aIpc);
-	// MTelObjectTSY pure virtuals
-	virtual void Init();
-	
-	// Functionality associated with the ETel Core API
-	virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RLine::TLineInfo* aLineInfo);
-
-	virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps);
-	virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle, RLine::TCaps* aCaps);
-	virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle);
-
-	virtual TInt NotifyIncomingCall(const TTsyReqHandle aTsyReqHandle, TName* aName);
-	virtual TInt NotifyIncomingCallCancel(const TTsyReqHandle aTsyReqHandle);
-
-	virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle, RCall::THookStatus* aHookStatus);
-	virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle);
-
-	virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus);
-	virtual TInt GetHookStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::THookStatus* aHookStatus);
-	virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aLineStatus);
-	virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle);
-
-	// Functionality associated with the ETel Multimode API
-	virtual TInt NotifyMobileLineStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aLineStatus);
-	virtual TInt NotifyMobileLineStatusChangeCancel(const TTsyReqHandle aTsyReqHandle);
-	virtual TInt NotifyCallAdded(const TTsyReqHandle aTsyReqHandle,TName* aName);
-	virtual TInt NotifyCallAddedCancel(const TTsyReqHandle aTsyReqHandle);
-	virtual TInt GetMobileLineStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus);
-	virtual TInt NumberOfSlotsL(const TInt aIpc);
-
-	const CTestConfigSection* CfgFile();					// < Accessor function for the configuration file.
-	TInt ChangeStateL(RMobileCall::TMobileCallStatus aNewState,TBool aSwap,CSimCall* aOriginatingCall);	// < Attempt to change the line state.
-	virtual void SimPSEvent(const CSimPubSub::TPubSubProperty aProperty, TInt aStatus);		// < MPSSimObserver  pure virtual
-	TInt SetAutoAnswerCallObject(CSimCall* aCallObject);			// < Set the call object that will be used to answer the next incoming call.
-	void ResetAutoAnswerCallObject(CSimCall* aCallObject);			// < Reset the call object that would have been used to answer the next incoming call.
-	TInt SetRemoteHangupCallObject(CSimCall* aCallObject);			// < Set the call object that will be remotely hung up.
-	void ResetRemoteHangupCallObject(CSimCall* aCallObject);		// < Reset the call object that would have been remotely hung up.
-	void CallDestructor(CSimCall* aCall);
-	TBool IsAnswerCallObjectSpare();
-	virtual TUint Caps()=0;
-	enum TCallType
-		{
-		ECallTypeSpareCall,
-		ECallTypeNormalCall
-		};
-	virtual CSimCall* CreateNewCallL(TDes& aNewName,TCallType aCallType)=0;
-	virtual TInt FindActiveCall(CSimCall*& aCall)=0;
-
-
-	// Implement the MTimerCallBack interface
-	void TimerCallBack(TInt /*aId*/);
-
-protected:
-	void ConstructL(const TName& aName);
-	void HandleNewCallAddedNotification(const TDesC& aNewName);
-
-private:
-	void ProcessIncomingCallEvent();
-	void ProcessNotifyIncomingCallEvent();
-	void ProcessRemoteHangupEvent();
-	RCall::TStatus GetCoreLineStatus();	//< Converts Multimode Line status to Core line status
-
-public:
-	CSimPhone* iPhone;							//< Pointer to the phone object
-	TName iLineName;							//< Current Line name
-	RMobileCall::TMobileCallStatus iState;		//< Holds the current line status
-	void UpdatePhoneNotifiers(CSimCall*,TUint);
-
-protected:
-	CArrayFixFlat<CSimCall*>* iCalls;			//< Array of all the call objects created
-	TInt iCallCnt;
-	TInt iNameIndex;							//< Call index in the pool of calls created
-	TName iNameOfLastCallAdded;					//< Name of last call added
-	CSimCall* iAnswerNextIncomingCall;			//< Pointer for handling AnswerIncomingCall request
-	CSimCall* iSpareCall;						//< Pointer to the spare call, used for incoming calls if none is allocated.
-	CSimCall* iRemoteHangupCall;				//< Pointer for handling RemoteHangupCall request
-
-	CSimPubSub::TPubSubProperty iICProperty;
-	CSimPubSub::TPubSubProperty iRHProperty;
-	
-	TBool iAnswerIncomingCallReqPending;		//< There is an answer incoming call request pending on a call on this line.
-	TBool iRemoteHangupCallReqPending;			//< There is a remote hangup call request pending on a call on this line.
-
-	TNotifyData		iNotifyMobileStatusChange;	//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the mobile line status
-	TNotifyData		iNotifyStatusChange;		//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the line status
-	RCall::THookStatus	iHookState;				//< The current line hook state.
-	TNotifyData		iNotifyHookChange;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the line hook status
-	TNotifyData		iNotifyCallAdded;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the newly added call
-	TNotifyData		iNotifyIncomingCall;		//< Holds the notification data (a flag, TsyReqHandle and any raw data) for IncomingCall Notification
-	TNotifyData		iNotifyCapsChange;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for Line Capability Notifications
-	TUint			iCaps;						//< Current line capability information
-private:
-	CSimPubSub*		iSimPubSubIC;				//< Pointer to the Publish & Subscribe object for the incoming call
-	CSimPubSub*		iSimPubSubRH;				//< Pointer to the Publish & Subscribe object for the incoming call
-	
-	/** 
-	Duration between receiving an incoming call and sending the 
-	incoming call notification.
-	*/
-	TInt iNotifyIncomingCallPause;
-	/**
-	Timer to delay sending the notification of the incoming call.
-	*/
-	CSimTimer* iTimer;
-	};
-
-#endif // __CSIMLINE_H__
+// Copyright (c) 2003-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 __CSIMLINE_H__
+#define __CSIMLINE_H__
+
+
+#include <et_phone.h>
+#include "utils.h"
+#include <etelmm.h>
+#include "CSimPubSub.h"
+#include "csimtimer.h"
+
+/**
+ * @file
+ * Declares the base class for voice and data lines - CSimLine
+ * @internalAll
+ */
+
+const RMobileCall::TMobileCallStatus KStateTableTerminator=(RMobileCall::TMobileCallStatus)999;
+
+struct TStateChangeValidity
+	{
+	RMobileCall::TMobileCallStatus iOldState;
+	RMobileCall::TMobileCallStatus iNewState;
+	TInt iError;
+	};
+
+/**
+ * This table is used to test the validity of potential line state changes.
+ * If the state change is not included in the table, the error KErrGeneral will be generated.
+ * A potential error value is included as the third item in each entry to enable errors
+ * other than KErrGeneral to be generated for specific erroneous state changes.
+ */
+const struct TStateChangeValidity KLineStateChangeValidity[]= {
+	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusDialling,	KErrNone },
+	{ RMobileCall::EStatusDialling,		RMobileCall::EStatusConnecting,	KErrNone },
+	{ RMobileCall::EStatusConnecting,	RMobileCall::EStatusConnected,	KErrNone },
+
+	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusAnswering,	KErrNone },
+	{ RMobileCall::EStatusIdle,			RMobileCall::EStatusRinging,	KErrNone },
+	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusAnswering,	KErrNone },
+	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusRinging,	KErrNone },
+	{ RMobileCall::EStatusRinging,		RMobileCall::EStatusHold,	KErrNone },
+	{ RMobileCall::EStatusAnswering,	RMobileCall::EStatusConnected,	KErrNone },
+
+	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusHold,		KErrNone },
+	{ RMobileCall::EStatusHold,			RMobileCall::EStatusConnected,	KErrNone },
+	{ RMobileCall::EStatusHold,			RMobileCall::EStatusDialling,	KErrNone },
+	{ RMobileCall::EStatusHold,			RMobileCall::EStatusAnswering,	KErrNone },
+	{ RMobileCall::EStatusHold,			RMobileCall::EStatusDisconnecting,	KErrNone },
+
+	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusDisconnecting,	KErrNone },
+	{ RMobileCall::EStatusConnected,	RMobileCall::EStatusRinging,	KErrNone }, // new AA
+	{ RMobileCall::EStatusHold,	RMobileCall::EStatusRinging,	KErrNone }, 
+	{ RMobileCall::EStatusDisconnecting,	RMobileCall::EStatusIdle,		KErrNone },
+	
+	{ RMobileCall::EStatusDisconnecting,	RMobileCall::EStatusConnected,		KErrNone },//HangUp Cancel
+
+	{ KStateTableTerminator,			KStateTableTerminator,			KStateTableTerminator}
+	};
+
+//
+// CSimLine - General Line Functionality
+//
+/**
+* This class 'CSimLine' is the Line class for the Simulator TSY.
+* It is the base class for Voice (CSimVoiceLine) and Data (CSimDataLine) lines. 
+* It is an abstract class and is therefore not going to be instantiated. 
+* It will handle all functionality common to voice and data lines.
+*/
+class CSimPhone;
+class CSimCall;
+class CTestConfigSection;
+
+class CSimLine : public CLineBase, public MPSSimObserver, public MTimerCallBack
+	{
+	friend class CSimVoiceCall;
+public:
+	CSimLine(CSimPhone* aPhone);
+	~CSimLine();
+	virtual TInt RegisterNotification(const TInt aIpc);
+	virtual TInt DeregisterNotification(const TInt aIpc);
+	static void CloseLine(TAny* aObj);
+	virtual CTelObject::TReqMode ReqModeL(const TInt aIpc);
+	// MTelObjectTSY pure virtuals
+	virtual void Init();
+	
+	// Functionality associated with the ETel Core API
+	virtual TInt GetInfo(const TTsyReqHandle aTsyReqHandle,RLine::TLineInfo* aLineInfo);
+
+	virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RLine::TCaps* aCaps);
+	virtual TInt NotifyCapsChange(const TTsyReqHandle aTsyReqHandle, RLine::TCaps* aCaps);
+	virtual TInt NotifyCapsChangeCancel(const TTsyReqHandle aTsyReqHandle);
+
+	virtual TInt NotifyIncomingCall(const TTsyReqHandle aTsyReqHandle, TName* aName);
+	virtual TInt NotifyIncomingCallCancel(const TTsyReqHandle aTsyReqHandle);
+
+	virtual TInt NotifyHookChange(const TTsyReqHandle aTsyReqHandle, RCall::THookStatus* aHookStatus);
+	virtual TInt NotifyHookChangeCancel(const TTsyReqHandle aTsyReqHandle);
+
+	virtual TInt GetStatus(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aStatus);
+	virtual TInt GetHookStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::THookStatus* aHookStatus);
+	virtual TInt NotifyStatusChange(const TTsyReqHandle aTsyReqHandle,RCall::TStatus* aLineStatus);
+	virtual TInt NotifyStatusChangeCancel(const TTsyReqHandle aTsyReqHandle);
+
+	// Functionality associated with the ETel Multimode API
+	virtual TInt NotifyMobileLineStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aLineStatus);
+	virtual TInt NotifyMobileLineStatusChangeCancel(const TTsyReqHandle aTsyReqHandle);
+	virtual TInt NotifyCallAdded(const TTsyReqHandle aTsyReqHandle,TName* aName);
+	virtual TInt NotifyCallAddedCancel(const TTsyReqHandle aTsyReqHandle);
+	virtual TInt GetMobileLineStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus);
+	virtual TInt NumberOfSlotsL(const TInt aIpc);
+
+	const CTestConfigSection* CfgFile();					// < Accessor function for the configuration file.
+	TInt ChangeStateL(RMobileCall::TMobileCallStatus aNewState,TBool aSwap,CSimCall* aOriginatingCall);	// < Attempt to change the line state.
+	virtual void SimPSEvent(const CSimPubSub::TPubSubProperty aProperty, TInt aStatus);		// < MPSSimObserver  pure virtual
+	TInt SetAutoAnswerCallObject(CSimCall* aCallObject);			// < Set the call object that will be used to answer the next incoming call.
+	void ResetAutoAnswerCallObject(CSimCall* aCallObject);			// < Reset the call object that would have been used to answer the next incoming call.
+	TInt SetRemoteHangupCallObject(CSimCall* aCallObject);			// < Set the call object that will be remotely hung up.
+	void ResetRemoteHangupCallObject(CSimCall* aCallObject);		// < Reset the call object that would have been remotely hung up.
+	void CallDestructor(CSimCall* aCall);
+	TBool IsAnswerCallObjectSpare();
+	virtual TUint Caps()=0;
+	enum TCallType
+		{
+		ECallTypeSpareCall,
+		ECallTypeNormalCall
+		};
+	virtual CSimCall* CreateNewCallL(TDes& aNewName,TCallType aCallType)=0;
+	virtual TInt FindActiveCall(CSimCall*& aCall)=0;
+
+
+	// Implement the MTimerCallBack interface
+	void TimerCallBack(TInt /*aId*/);
+
+protected:
+	void ConstructL(const TName& aName);
+	void HandleNewCallAddedNotification(const TDesC& aNewName);
+
+private:
+	void ProcessIncomingCallEvent();
+	void ProcessNotifyIncomingCallEvent();
+	void ProcessRemoteHangupEvent();
+	RCall::TStatus GetCoreLineStatus();	//< Converts Multimode Line status to Core line status
+
+public:
+	CSimPhone* iPhone;							//< Pointer to the phone object
+	TName iLineName;							//< Current Line name
+	RMobileCall::TMobileCallStatus iState;		//< Holds the current line status
+	void UpdatePhoneNotifiers(CSimCall*,TUint);
+
+protected:
+	CArrayFixFlat<CSimCall*>* iCalls;			//< Array of all the call objects created
+	TInt iCallCnt;
+	TInt iNameIndex;							//< Call index in the pool of calls created
+	TName iNameOfLastCallAdded;					//< Name of last call added
+	CSimCall* iAnswerNextIncomingCall;			//< Pointer for handling AnswerIncomingCall request
+	CSimCall* iSpareCall;						//< Pointer to the spare call, used for incoming calls if none is allocated.
+	CSimCall* iRemoteHangupCall;				//< Pointer for handling RemoteHangupCall request
+
+	CSimPubSub::TPubSubProperty iICProperty;
+	CSimPubSub::TPubSubProperty iRHProperty;
+	
+	TBool iAnswerIncomingCallReqPending;		//< There is an answer incoming call request pending on a call on this line.
+	TBool iRemoteHangupCallReqPending;			//< There is a remote hangup call request pending on a call on this line.
+
+	TNotifyData		iNotifyMobileStatusChange;	//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the mobile line status
+	TNotifyData		iNotifyStatusChange;		//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the line status
+	RCall::THookStatus	iHookState;				//< The current line hook state.
+	TNotifyData		iNotifyHookChange;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the line hook status
+	TNotifyData		iNotifyCallAdded;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for the newly added call
+	TNotifyData		iNotifyIncomingCall;		//< Holds the notification data (a flag, TsyReqHandle and any raw data) for IncomingCall Notification
+	TNotifyData		iNotifyCapsChange;			//< Holds the notification data (a flag, TsyReqHandle and any raw data) for Line Capability Notifications
+	TUint			iCaps;						//< Current line capability information
+private:
+	CSimPubSub*		iSimPubSubIC;				//< Pointer to the Publish & Subscribe object for the incoming call
+	CSimPubSub*		iSimPubSubRH;				//< Pointer to the Publish & Subscribe object for the incoming call
+	
+	/** 
+	Duration between receiving an incoming call and sending the 
+	incoming call notification.
+	*/
+	TInt iNotifyIncomingCallPause;
+	/**
+	Timer to delay sending the notification of the incoming call.
+	*/
+	CSimTimer* iTimer;
+	};
+
+#endif // __CSIMLINE_H__