diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/multimodetsy/hayes/CALL.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/multimodetsy/hayes/CALL.H Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,409 @@ +// Copyright (c) 1997-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 + @internalAll +*/ + + +#ifndef __CALL_H__ +#define __CALL_H__ + +#include +#include "TSYCONFG.H" +#include "ATBASE.H" +#include "faxstd.h" +#include +// +// CAcquireEntry +// +class CAcquireOwnerList; +class CFaxSharedFileHandles; +class CAcquireEntry : public CBase +/** +@internalComponent +*/ + { +public: + static CAcquireEntry* NewL(const TTsyReqHandle aTsyReqHandle); + CAcquireEntry(const TTsyReqHandle aTsyReqHandle); + ~CAcquireEntry(); + void Deque(); +public: + TTsyReqHandle iTsyReqHandle; +private: + TDblQueLink iLink; + friend class CAcquireOwnerList; + }; + +// +// CAcquireOwnerList +// +class CAcquireOwnerList : public CBase +/** +@internalComponent +*/ + { +public: + static CAcquireOwnerList* NewL(); + CAcquireOwnerList(); + ~CAcquireOwnerList(); + void ConstructL(); + CAcquireEntry* FindByTsyReqHandle(const TTsyReqHandle aTsyReqHandle); + void Remove(CAcquireEntry* aEntry); +public: + TDblQue iAcquireList; + }; + +class CCallHayes; +class CHeartbeatRunner : public CBase, public MBeating +/** +@internalComponent +*/ + { +public: + static CHeartbeatRunner* NewL(CCallHayes* aCallHayes,CNotifications* aNotificationStore); + ~CHeartbeatRunner(); + TTimeIntervalSeconds CallDuration() const; + void Start(); + void Stop(); +protected: + CHeartbeatRunner(CCallHayes* aCallHayes,CNotifications* aNotificationStore); +private: + void ConstructL(); + // functions for MBeating protocol + void Beat(); // called when beat works ok + void Synchronize(); // called when we need to synchronize +private: + TTime iStartTime; + CHeartbeat* iHeartbeat; + TInt iTicks; + CCallHayes* iCallHayes; + CNotifications* iNotificationStore; + }; + +// +// CCallHayes - General Call Functionality +// + +class CATHangUp; +class CATAnswerData; +class CATConnectData; +class CATQuickInit; +class CATWaitForNoCarrier; +class CCallHayes : public CCallBase +/** +@internalComponent +*/ + { +public: + CCallHayes(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aPhoneGlobals); + void ConstructL(const TName& aName); + ~CCallHayes(); + 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 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 LoanDataPort(const TTsyReqHandle aTsyReqHandle,RCall::TCommPort* aCommPort); + virtual TInt LoanDataPortCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RecoverDataPort(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 GetBearerServiceInfo(const TTsyReqHandle aTsyReqHandle,RCall::TBearerService* aService); + virtual TInt GetCallParams(const TTsyReqHandle aTsyReqHandle, TDes8* aParams); + 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); + +// MTelObjectTSY pure virtuals + virtual CTelObject* OpenNewObjectByNameL(const TDesC&); + virtual CTelObject* OpenNewObjectL(TDes& aNewName); + virtual TInt CheckAndSetRegistrationParams(const TInt aIpc,const TDes8* aDes1,const TDes8* aDes2); + + +// MSubSessionExtBaseTSY pure virtual + virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage); + +// own pure virtual + virtual void AnswerImmediately()=0; + +// other funtions + RCall::TStatus GetCoreCallStatus(); + TInt ChangeCallStatus(RMobileCall::TMobileCallStatus aCallStatus); + void ChangeLineStatus(RCall::TStatus aLineStatus); + void SetToIdle(); + void SetToIdleAndCompleteReq(TTsyReqHandle aTsyReqHandle,TInt aStatus); + TCallInfoTSY* CallInfo(); + void GetCallInfo(TCallInfoIndex* aCallInfoIndex); + TBool CheckName(const TDesC& aName) const; + void GetCallDuration(TTimeIntervalSeconds& aTime) const; + void StartCallTicker() const; + void StopCallTicker() const; + void ResetIsForIncomingCall(); + TBool IsForIncomingCall() const; + void SetOwnedByTSY(); + void SetUnownedByTSY(); + TBool IsOwnedByTSY() const; + virtual TBool CollateCurrentMobileCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps)=0; + virtual TBool CollateCurrentCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps)=0; + +protected: + void SetCallParams(const TDesC8* aParams); + void GetDefaultCallParams(); + TInt ValidateRequest(const TTsyReqHandle aTsyReqHandle, RCall::TStatus aLineStatus); + +public: + CPhoneGlobals* iPhoneGlobals; + CATWaitForNoCarrier* iWaitForNoCarrier; +protected: + TCallInfoTSY iCallInfo; + CATIO* iIo; + CATInit* iInit; + CATQuickInit* iQuickInit; + CAcquireOwnerList* iList; + CHeartbeatRunner* iCallTimer; + TBool iIsForIncomingCall; + TBool iIsOwnedByTSY; + TTsyReqHandle iAnswerTsyReqHandle; + RMobileCall::TMobileCallCapsV1 iMobileCaps; + RCall::TCaps iCaps; + }; + + +// +// CCallMobile - Call functionality for mobile phones +// +class CCallMobile : public CCallHayes +/** +@internalComponent +*/ + { +public: + CCallMobile(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aGlobals); + ~CCallMobile(); + + virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage); + virtual TInt CancelService(const TInt aIpc,const TTsyReqHandle aTsyReqHandle); + virtual TReqMode ReqModeL(const TInt aIpc); + virtual TInt NumberOfSlotsL(const TInt aIpc); + +private: + virtual TInt GetCaps(const TTsyReqHandle aTsyReqHandle,RCall::TCaps* aCaps); + + // ETELMM supported requests + TInt GetMobileCallCaps(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); + TInt NotifyMobileCallCapsChange(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); + TInt NotifyMobileCallCapsChangeCancel(const TTsyReqHandle aTsyReqHandle); + + TInt GetMobileCallStatus(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus); + TInt NotifyMobileCallStatusChange(const TTsyReqHandle aTsyReqHandle,RMobileCall::TMobileCallStatus* aStatus); + TInt NotifyMobileCallStatusChangeCancel(const TTsyReqHandle aTsyReqHandle); + + virtual void CollateCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps)=0; + virtual TBool CollateCurrentMobileCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps); + virtual TBool CollateCurrentCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps); + }; + + + +//Added for Java Demo 4.4.99 +// +// CCallMobileVoice - Specific Voice Call Functionality +// +class CATDialVoice; +class CATHangUpVoice; +class CATAnswerVoice; +class CCallMobileVoice : public CCallMobile +/** +@internalComponent +*/ + { +public: + static CCallMobileVoice* NewL(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aPhoneGlobals,const TName& aName); + CCallMobileVoice(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aGlobals); + ~CCallMobileVoice(); + +// MCallBaseTSY pure virtuals + virtual TInt RecoverDataPortAndRelinquishOwnership(); + // + virtual TInt LoanDataPort(const TTsyReqHandle aTsyReqHandle,RCall::TCommPort* aCommPort); + virtual TInt LoanDataPortCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RecoverDataPort(const TTsyReqHandle aTsyReqHandle); + virtual TInt Dial(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams,TDesC* aTelNumber); + virtual TInt DialCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt ConnectCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt AnswerIncomingCallCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUp(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUpCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RelinquishOwnership(); + + virtual void AnswerImmediately(); + virtual void CollateCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps); + +protected: + void ConstructL(const TName& aName); + +private: + CATDialVoice* iDialVoice; + CATAnswerVoice* iAnswerVoice; + CATHangUpVoice* iHangUpVoice; + }; + +// +// CCallMobileData - Specific Data Call Functionality +// +class CATDialData; +class CATHangUpData; +class CATSetToOnlineDataMode; +class CATSetCBST; +class CCallMobileData : public CCallMobile +/** +@internalComponent +*/ + { +public: + static CCallMobileData* NewL(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aPhoneGlobals,const TName& aName); + CCallMobileData(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aGlobals); + ~CCallMobileData(); + +// MCallBaseTSY pure virtuals + virtual TInt RecoverDataPortAndRelinquishOwnership(); + // + virtual TInt LoanDataPort(const TTsyReqHandle aTsyReqHandle,RCall::TCommPort* aCommPort); + virtual TInt LoanDataPortCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RecoverDataPort(const TTsyReqHandle aTsyReqHandle); + virtual TInt Dial(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams,TDesC* aTelNumber); + virtual TInt DialCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt ConnectCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt AnswerIncomingCallCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUp(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUpCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RelinquishOwnership(); + + // CCallHayes pure virtual + virtual void AnswerImmediately(); + + virtual void CollateCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps); + + // Utility function used by objects created by this class + // (this has been done to reduce code size). + TInt AssembleCBSTSetString(TBuf8& aTxBuffer); + +protected: + void ConstructL(const TName& aName); + virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage); + +private: + // Utility functions + void SetDataCallParams(const TDesC8* aCallParams); + TInt GetMobileDataCallCaps(const TTsyReqHandle aTsyReqHandle, TDes8* aCaps); + +private: + CATSetCBST* iSetCBST; + CATDialData* iDialData; + CATAnswerData* iAnswerData; + CATConnectData* iConnectData; + CATHangUpData* iHangUpData; + CATSetToOnlineDataMode* iATSetToOnlineDataMode; + }; + +class CATDialFax; +class CATConnectFax; +class CATAnswerFax; +class CATHangUpFax; +class CFaxHayes; +class CFaxSession; // the class defined by the fax server +class CFaxCompletion; +class CCallMobileFax : public CCallMobile +/** +@internalComponent +*/ + { +public: + static CCallMobileFax* NewL(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aPhoneGlobals,const TName& aName); + CCallMobileFax(CATIO* aATIO,CATInit* aInit,CPhoneGlobals* aGlobals); + ~CCallMobileFax(); + +// MTelObjectTSY pure virtual + virtual CTelObject* OpenNewObjectByNameL(const TDesC&); + +// MCallBaseTSY pure virtuals + virtual TInt Dial(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams,TDesC* aTelNumber); + virtual TInt DialCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt Connect(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt ConnectCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt AnswerIncomingCall(const TTsyReqHandle aTsyReqHandle,const TDesC8* aCallParams); + virtual TInt AnswerIncomingCallCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUp(const TTsyReqHandle aTsyReqHandle); + virtual TInt HangUpCancel(const TTsyReqHandle aTsyReqHandle); + virtual TInt RelinquishOwnership(); + virtual TInt GetFaxSettings(const TTsyReqHandle aTsyReqHandle,RCall::TFaxSessionSettings* aSettings); + virtual TInt SetFaxSettings(const TTsyReqHandle aTsyReqHandle,const RCall::TFaxSessionSettings* aSettings); + virtual TInt SetFaxSharedHeaderFile(const TTsyReqHandle aTsyReqHandle, CFaxSharedFileHandles* aFaxSharedFileHandles); +// CCallHayes pure virtual + virtual void AnswerImmediately(); + + virtual void CollateCoreCaps(const TTsyReqHandle aTsyReqHandle, TUint32* aCallCaps); + + TInt FaxConnectHandler(const TTsyReqHandle aTsyReqHandle); + TInt ValidateFaxClass(TFaxClass& aFaxClass); + void FaxCancelCommand(const TTsyReqHandle aTsyReqHandle); + void FaxDial(const TTsyReqHandle aTsyReqHandle,TDesC* aTelNumber); + void FaxConnect(const TTsyReqHandle aTsyReqHandle); + void FaxAnswer(const TTsyReqHandle aTsyReqHandle); + void FaxHangUp(const TTsyReqHandle aTsyReqHandle); + + TInt OpenFax(TDesC* aTelNumber,TFaxMode aFaxMode); + void GetFaxBaseL(); + void RemoveFax(CFaxHayes* aFaxHayes); + void CleanUpFaxServer(); +private: + void ConstructL(const TName& aName); +public: + CFaxSession* iFaxSession; +private: + CATDialFax* iDialFax; + CATConnectFax* iConnectFax; + CATAnswerFax* iAnswerFax; + CATHangUpFax* iHangUpFax; + RCall::TFaxSessionSettings iFaxSettings; + CFaxHayes* iFax; + CFaxCompletion* iFaxCompletion; + RLibrary iFaxServerLib; + RFax::TProgress* iFaxProgress; + CFaxSharedFileHandles* iFileHandles; + }; + + +#endif