diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmlinetsy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmlinetsy.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,667 @@ +/* +* Copyright (c) 2006-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 CMMLINETSY_H +#define CMMLINETSY_H + +// INCLUDES +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CMmPhoneTsy; +class CMmCallTsy; +class CMmTsyReqHandleStore; +class CMmMessageManagerBase; +class CMmDataPackage; +class MLtsyFactoryBase; + +// CLASS DECLARATION + +/** + * CMmLineTsy implements mode independent Line based functionality (defined by + * Symbian + */ +NONSHARABLE_CLASS( CMmLineTsy ) : public CLineBase + { + public: // Enumerations + + /**Enumeration for request handle types*/ + enum TLineRequestTypes + { + EMultimodeLineReqHandleUnknown, //0 + EMultimodeLineNotifyIncomingCall, + EMultimodeLineNotifyStatusChange, + EMultimodeLineNotifyCallAdded, + EMultimodeLineCapsChangeNotification, + EMultimodeLineMobileLineStatusChange, //5 + + // NOTE!: Declare constant for those requests that need + // own request handle record in iTsyReqHandleStore above the + // following! + EMultimodeLineMaxNumOfRequests + }; + + public: // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CMmLineTsy(); + + // New functions + + /** + * This method is used for notifying a client about an incoming call. + * + * + * @param aDataPackage Package containing information about the + * incoming call + */ + virtual void CompleteNotifyIncomingCall( + CMmDataPackage* aDataPackage ) = 0; + + /** + * This method is used for notifying a line of a call entering + * Dialling state + * + * + * @param aDataPackage Package containing information about the call + */ + virtual void CompleteNotifyDiallingStatus( + CMmDataPackage* aDataPackage ) = 0; + + /** + * This method is used for notifying a client that a + * call has been added + * + * + * to the line. + * @param aName Name of the call added to this line + */ + void CompleteNotifyCallAdded( const TDesC& aName ); + + /** + * This method is used to notify a client about a line status change + * + * + */ + virtual void CompleteNotifyStatusChange(); + + /** + * Returns current line mode + * + * + * @return Line mode + */ + RMobilePhone::TMobileService LineMode() const; + + /** + * Returns current line name + * + * + * @return Line name + */ + TName LineName() const; + + /** + * Returns current line information + * + * + * @return Line information + */ + RPhone::TLineInfo LineInfo() const; + + /** + * Decrements counter containing information about the number of calls + * opened from this line + * + * + */ + void DecrementNumberOfCalls(); + + /** + * Notifies Line object about a new MO call that has been initiated + * bypassing TSY + * + * + * @param aDataPackage Information about the call + */ + void CompleteNotifyAddBypassingCall( CMmDataPackage* aDataPackage ); + + // Functions from base classes + + /** + * Dispatches Multimode API functions calls + * + * + * @param aTsyReqHandle TSY request handle + * @param aIpc IPC number of the request + * @param aPackage Packaged request parameters + * @return Result of the request + */ + TInt ExtFunc( + const TTsyReqHandle aTsyReqHandle, + const TInt aIpc, + const TDataPackage& aPackage ); + + /** + * This function opens a requested line. + * + * + * @param aName Name of the call to be opened. + * @return Call object that was opened. + */ + CTelObject* OpenNewObjectByNameL( const TDesC& aName ); + + /** + * This function creates a new name for a call and opens a new call. + * + * + * @param aName Name of the new call. + * @return Call object that was opened. + */ + virtual CTelObject* OpenNewObjectL( TDes& aNewName ) = 0; + + /** + * Returns request mode for a given IPC. + * + * + * @param aIpc: IPC number + * @return Request mode for the given IPC + */ + CTelObject::TReqMode ReqModeL( const TInt aIpc ); + + /** + * Cancels request that's IPC number and request handle are given as + * parameters + * + * + * @param aIpc IPC number of the cancelled request + * @param aTsyReqHandle TSY request handle of the cancelled request + * @return Result of the request + */ + TInt CancelService( const TInt aIpc, + const TTsyReqHandle aTsyReqHandle ); + + /** + * Register a notification by IPC number. + * + * + * @param aIpc IPC number of the request. + * @return Result of the request + */ + TInt RegisterNotification( const TInt aIpc ); + + /** + * Deregisters a given notification + * + * + * @param aIpc IPC number of the request + * @return Result of the request + */ + TInt DeregisterNotification( const TInt aIpc ); + + /** + * Returns number of slots to be used for a given IPC + * + * + * @param aIpc IPC number of the request + * @return Number of slots for the given IPC + */ + TInt NumberOfSlotsL( const TInt aIpc ); + + /** + * Returns the number of calls opened from this line. + * + * + * @param aTsyReqHandle: TSY request handle + * @param aCount: Number of calls opened from this line + * @return Return value to the ETel Server + */ + TInt EnumerateCall( const TTsyReqHandle aTsyReqHandle, + TInt* aCount ); + + /** + * This function retrieves the current line information. + * + * + * @param aTsyReqHandle TSY Request handle + * @param aLineInfo Current line information + * @return Return value to the ETel Server + */ + TInt GetInfo( const TTsyReqHandle aTsyReqHandle, + RLine::TLineInfo* aLineInfo ); + + /** + * This function retrieves the current line capabilities. + * + * + * @param aTsyReqHandle TSY request handle + * @param aCaps Current line capabilities + * @return Return value to the ETel Server + */ + TInt GetCaps( const TTsyReqHandle aTsyReqHandle, + RLine::TCaps* aCaps ); + + /** + * This function returns core line status information. + * + * + * @param aTsyReqHandle TSY request handle + * @param aStatus Current line status + * @return Return value to the ETel Server + */ + TInt GetStatus( const TTsyReqHandle aTsyReqHandle, + RCall::TStatus* aStatus ); + + /** + * This function returns information about a call. + * + * + * @param aTsyReqHandle TSY request handle + * @param aCallInfo Call ínformation + * @return Return value to the ETel Server + */ + TInt GetCallInfo( + const TTsyReqHandle aTsyReqHandle, + TCallInfoIndex* aCallInfo ); + + /** + * Used for subscribing a notification in a line status change. + * + * + * @param aTsyReqHandle TSY request handle + * @param aLineStatus New status of this line + * @return Return value to the ETel Server + */ + TInt NotifyStatusChange( const TTsyReqHandle aTsyReqHandle, + RCall::TStatus* aLineStatus ); + + /** + * Cancels line status notifications. + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyStatusChangeCancel( + const TTsyReqHandle aTsyReqHandle ); + + /** + * This method retrieves the current hook status. + * + * + * @param aTsyReqHandle TSY request handle + * @param aHookStatus Hook status + * @return Return value to the ETel Server + */ + TInt GetHookStatus( const TTsyReqHandle aTsyReqHandle, + RCall::THookStatus* /*aHookStatus*/ ); + + /** + * Notify when hook status has changed + * + * + * @param aTsyReqHandle TSY request handle + * @param aHookStatus Hook status + * @return Return value to the ETel Server + */ + TInt NotifyHookChange( const TTsyReqHandle aTsyReqHandle, + RCall::THookStatus* /*aHookStatus*/ ); + + /** + * Cancels hook status change notifications + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyHookChangeCancel( + const TTsyReqHandle aTsyReqHandle ); + + /** + * This method provides notification of a change in the line + * capabilities. + * + * + * @param aTsyReqHandle TSY request handle + * @param aCaps New capabilities of this line + * @return Return value to the ETel Server + */ + TInt NotifyCapsChange( const TTsyReqHandle aTsyReqHandle, + RLine::TCaps* aCaps ); + + /** + * This method cancels line capabilities change notification + * request. + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyCapsChangeCancel( + const TTsyReqHandle aTsyReqHandle ); + + /** + * This method is used for notifyinf a client when an incoming call is + * detected. + * + * + * @param aTsyReqHandle TSY request handle + * @param aName Name of the incoming call + * @return Return value to the ETel Server + */ + virtual TInt NotifyIncomingCall( const TTsyReqHandle aTsyReqHandle, + TName* aName ); + + /** + * This method cancels an outstanding incoming call notification. + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyIncomingCallCancel( + const TTsyReqHandle aTsyReqHandle ); + + /** + * This method provides a notification that a new call has been added to + * the line. + * + * @param aTsyReqHandle TSY request handle + * @param aName The name of the added call + * @return Return value to the ETel Server + */ + TInt NotifyCallAdded( const TTsyReqHandle aTsyReqHandle, + TName* aName ); + + /** + * This method cancels an outstanding new call added notification + * request. + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyCallAddedCancel( const TTsyReqHandle aTsyReqHandle ); + +#ifdef TF_LOGGING_ENABLED + + /** + * Overloads original ReqCompleted for logging purposes + * + * + * @param aTsyReqHandle TSY request handle + * @param aError Result + */ + virtual void ReqCompleted(const TTsyReqHandle aTsyReqHandle, + const TInt aError); +#endif + + protected: // Constructors and destructor + + /** + * C++ default constructor. + */ + CMmLineTsy(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + // New functions + + /** + * Returns the current status of the line + * + * + * @param aTsyReqHandle TSY request handle + * @param aStatus Mobile line status + * @return Return value to the ETel Server + */ + TInt GetMobileLineStatus( const TTsyReqHandle aTsyReqHandle, + RMobileCall::TMobileCallStatus* aStatus ); + + /** + * Allows a client to be notified when the mobile line changes state. + * + * + * @param aStatus New mobile status of a line + * @return Return value to the ETel Server + */ + TInt NotifyMobileLineStatusChange( + RMobileCall::TMobileCallStatus* aStatus ); + + /** + * Cancels an outstanding asynchronous NotifyMobileLineStatusChange + * request. + * + * + * @param aTsyReqHandle TSY request handle + * @return Return value to the ETel Server + */ + TInt NotifyMobileLineStatusChangeCancel( + const TTsyReqHandle aTsyReqHandle ); + + /** + * Handles extended client requests. + * + * + * @param aTsyReqHandle TSY request handle + * @param aIpc IPC number of the request + * @param aPackage Packaged request parameters + * @return Result of the request + */ + TInt DoExtFuncL( const TTsyReqHandle aTsyReqHandle, const TInt aIpc, + const TDataPackage& aPackage ); + + /** + * Creates a call object for the call that has been initiated bypassing + * TSY + * + * + * @param aCallId: Call id of the new call + * @param aCallMode: Call mode + * @param aCallStatus: Call status + * @return Pointer to created call object + */ + virtual CMmCallTsy* CreateGhostCallObject( + TInt aCallId, + RMobilePhone::TMobileService aCallMode, + RMobileCall::TMobileCallStatus aCallStatus ) = 0; + + /** + * Initialises miscellaneous internal attributes + * + * + */ + virtual void InitInternalAttributesL(); + + /** + * Returns the preallocated Call object for incoming call or creates a + * new one + * + * + * @return Pointer to the call object for incoming call + */ + CMmCallTsy* CallObjectForIncomingCall(); + + /** + * Creates and stores a Call object for incoming call + * + * + * @return TInt Success/failure value + */ + virtual TInt CreateCallObjectForIncomingCall() = 0; + + /** + * Creates a new name for a call. + * + * + * @param aNewName On return contains the new call name + * @return Success/failure value + */ + TInt CreateNewCallName( TDes& aNewName ); + + /** + * Returns the sequence number of the call created from this line. + * + * + * @return Sequence number of calls after incrementing. + */ + TUint IncrementCallSequenceNumber(); + + /** + * This method is used for notifying a client about the capabilities + * change. + * + * + */ + void CompleteNotifyCapsChange(); + + protected: // Data + + /** + * A pointer to the multimode phone object. + */ + CMmPhoneTsy* iMmPhone; + + /** + * A table for line request handles + */ + TTsyReqHandle iLineReqHandles[EMultimodeLineMaxNumOfRequests]; + + /** + * Pointer to request handle store + * Own. + */ + CMmTsyReqHandleStore* iTsyReqHandleStore; + + /** + * Line request handle type + */ + TLineRequestTypes iReqHandleType; + + /** + * Pointer to the call object reserved for incoming call + */ + CMmCallTsy* iCallForIncomingCall; + + /** + * Current core line status + */ + RCall::TStatus iLineStatus; + + /** + * Current Mobile line status + */ + RMobileCall::TMobileCallStatus iMobileLineStatus; + + /** + * Current line capabilities + */ + RLine::TCaps iLineCaps; + + /** + * Current number of calls opened from this line + */ + TInt iNumCalls; + + /** + * Name of this line + */ + TName iLineName; + + /** + * Sequence number given for a new call + */ + TUint iCallSequenceNumber; + + /** + * The name of the last call opened from this line + */ + TName iNameOfLastCallAdded; + + /** + * The name of the incoming call to be opened from this line + */ + TName iNameOfCallForAnswering; + + /** + * Line status pointer (pointing to ETel server's address space) + */ + RCall::TStatus* iRetLineStatus; + + /** + * Line capabilities pointer (pointing to ETel server's address space) + */ + RLine::TCaps* iRetCaps; + + /** + * Incoming call name pointer + * (pointing to ETel server's address space) + */ + TName* iRetIncomingCallName; + + /** + * Pointer to the name of the last call added (pointing to ETel + * server's address space) + */ + TName* iRetCallAdded; + + /** + * Pointer to the mobile status (pointing to ETel server's address + * space) + */ + RMobileCall::TMobileCallStatus* iRetMobileLineStatus; + + /** + * Pointer to the message manager + */ + CMmMessageManagerBase* iMessageManager; + + /** + * Line Mode + */ + RMobilePhone::TMobileService iLineMode; + + }; + +#endif // CMMLINETSY_H + +// End of File + + + + + + + + + + + + + + +