cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atchld.h
branchRCL_3
changeset 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atchld.h	Tue Aug 31 16:23:08 2010 +0300
@@ -0,0 +1,296 @@
+// Copyright (c) 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 atchld.h
+// This contains CATChld which hold, resume, release, swap one call.
+// 
+
+#ifndef ATCHLD_H_
+#define ATCHLD_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+class CATChld : public CAtCommandBase
+	{
+public:
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATChld* NewL(CGlobalPhonemanager& aGloblePhone,
+			             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATChld* NewLC(CGlobalPhonemanager& aGloblePhone,
+			              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATChld();
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+		
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start AT request
+	* 
+	*/
+	virtual void StartRequest();	
+	
+public:
+	
+	/**
+	 * IPC type
+	 * 
+	 */
+	enum TIpcType
+		{
+		ELtsyReqCallHangup = 0,   //Invoke function HandleHangUpReqL(TInt aCallId, TInt aHangupCause)     
+		ELtsyReqCallHold = 1,	  //Invoke function HandleHoldReqL(TInt aCallId)
+		ELtsyReqCallResume = 2,	  //Invoke function HandleResumeReqL(TInt aCallId)
+		ELtsyReqCallSwap = 3	  //Invoke function HandleSwapReqL(TInt aHeldCallId, TInt aConnectedCallId)
+		};
+	
+	/**
+	 * which identify AT type
+	 * 
+	 */
+	enum TChldType
+		{
+		EReleaseAllHeldCallOrUDUB = 0,
+		EReleaseAllActiveCallAndAcceptHeldWaiting = 1,
+		EHeldAllActiveCallAndAcceptHeldWaiting = 2,  //For held a call and resume a call
+		EAddHeldCallToConversation = 3,
+		ECallTranster =  4,
+		ERleaseSpecificCall = 5,
+		EHeldAllActiveCallExceptCallX = 6
+		};
+	
+	/**
+	 *Set IPC type 
+	 * 
+	 * @param aIpcType
+	 */
+	void SetIpcType(TIpcType aIpcType);	
+	
+	/**
+	 * Set chld type
+	 * 
+	 * @param aManageType
+	 */
+	void SetChldType(TChldType aManageType);
+	
+	/**
+	 * Set call id
+	 * 
+	 * @param aCallId
+	 */
+	void SetCallId(TInt aCallId);
+	
+	/**
+	 * Set connected call id
+	 * 
+	 * @param aConnectedCallId
+	 */
+	void SetConnectedCallId(TInt aConnectedCallId);
+	
+	/**
+	 * Set hang up case 
+	 * 
+	 * @param aHangupCase
+	 */
+	void SetHangupCase(TInt aHangupCase);
+	
+	/**
+	 * Init member
+	 * 
+	 */
+	void InitVariable();
+	
+	/**
+	 * Prevent second holding when the aHoldCallId is holded
+	 * 
+	 * @param aHoldCallId
+	 */
+	TBool IsHoldCall(TInt aHoldCallId);
+	
+	/**
+	 * Prevent second resumeing when the aActiveCallId is actived
+	 * 
+	 * @param aActiveCallId
+	 */
+	TBool IsActiveCall(TInt aActiveCallId);
+	
+protected:
+	
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CATChld(CGlobalPhonemanager& aGloblePhone,
+			CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+
+	/**
+	* The last execute end of this command
+	* 
+	*/	
+	virtual void Complete();
+	
+private:
+	
+	/**
+	 * AT command execute step
+	 * 
+	 */
+	enum TATStep
+		{
+		EATNotInProgress,
+		EATWaitForWriteComplete,
+		EATReadComplete
+		};
+	
+private:
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle response OK
+	 * 
+	 */
+	void HandleCHLDComplete();
+	
+	/**
+	 * Hang up call complete
+	 * 
+	 */
+	void HandleHangupComplete();
+	
+	/**
+	 * Hold call complete
+	 * 
+	 */
+	void HandleHoldComplete();
+	
+	/**
+	 * Resume call complete
+	 * 
+	 */
+	void HandleResumeComplete();
+	
+	/**
+	 * Swap call complete
+	 * 
+	 */
+	void HandleSwapComplete();
+	
+private:
+	
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+		
+	/**
+	 * Identifier step
+	 * 
+	 */
+	TATStep iATStep;
+	
+	/**
+	 * 
+	 * 
+	 */
+	TIpcType iIpcType;
+	
+	/**
+	 * 
+	 * 
+	 */
+	TChldType iChldType;
+	
+	/**
+	 * for hangup/hold/resum/swap
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * for swap
+	 * 
+	 */
+	TInt iConnectedCallId;
+	
+	/**
+	 * for hangup
+	 * 
+	 */
+	TInt iHangupCause;
+	
+	};
+
+#endif /*ATCHLD_H_*/