--- /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 <et_tsy.h>
+#include <et_phone.h>
+#include <etelmm.h>
+#include <ctsy/tflogger.h>
+
+// 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+