telephonyserverplugins/common_tsy/commontsy/inc/mmpacket/cmmmbmscontexttsy.h
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmpacket/cmmmbmscontexttsy.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,677 @@
+/*
+* 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 CMmMBMSContextTsy_H
+#define CMmMBMSContextTsy_H
+
+//  INCLUDES
+#include "Cmmpacketcontexttsy.h"
+#include "mbmstypes.h"
+
+
+// FORWARD DECLARATIONS
+class CMmTsyReqHandleStore;
+class CMmPacketServiceTsy;
+
+// CLASS DECLARATION
+
+/**
+*  CMmMBMSContextTsy contains MBMS context related functionality. 
+*/
+NONSHARABLE_CLASS( CMmMBMSContextTsy ) : public CMmPacketContextTsy
+    {
+    public: // Constructor and destructor    
+    
+  
+        /**
+         * NewL method is used to create a new instance of CMmMBMSContextTsy
+         * class.
+         * 
+         *                  
+         * @param aMmPacketService Pointer to the Packet Service object
+         * @param aName Context name
+         * @param aProxyId Proxy id
+         */
+        static CMmMBMSContextTsy* NewL
+                ( CMmPacketServiceTsy* aMmPacketService,                
+                  const TDes& aName,  
+                  const TUint8 aProxyId );
+
+        /**
+         * Destructor
+         */
+        ~CMmMBMSContextTsy();
+
+        /**
+         * TRAP's all CMmMBMSContextTsy related MM API requests in case that
+         * they fail. This method functions only as a centralized TRAP for the
+         * DoExtFuncL method that does the actual mapping of IPC number to
+         * TSY method call.
+         *         
+         *
+         * @param aTsyReqHandle TSY request handle from ETel server
+         * @param aIpc IPC number of the request
+         * @param aPackage Reference to the input parameters.
+         * @return KErrNone/KErrNotSupported
+         */
+        virtual TInt ExtFunc( TTsyReqHandle aTsyReqHandle, 
+            TInt aIpc, const TDataPackage& aPackage );    
+
+        /**
+         * Returns request mode for given IPC number
+         *          
+         *                 
+         * @param aIpc IPC number of the request
+         * @return CTelObject::TReqMode Request mode
+         */
+        virtual CTelObject::TReqMode ReqModeL( TInt aIpc );
+
+        /**
+         * Returns number of slots to be used for a given IPC
+         *          
+         *                  
+         * @param aIpc IPC number of the request
+         * @return TInt Number of slots for this request
+         */
+        virtual TInt NumberOfSlotsL( TInt aIpc );
+
+        /**
+         * Cancels request that's IPC number and request handle are given as
+         * parameters
+         *         
+         *   
+         * @param aIpc: IPC number of the request
+         * @param aTsyReqHandle Request handle from ETel server
+         * @return KErrNone/KErrNotSupported
+         */
+        virtual TInt CancelService( TInt aIpc, 
+            TTsyReqHandle aTsyReqHandle );
+
+        /**
+         * Register given notification
+         *         
+         *
+         * @param aIpc IPC number of the request
+         * @return TInt Result of the request
+         */
+        virtual TInt RegisterNotification( TInt aIpc );
+
+        /**
+         * Deregister given notification
+         *         
+         *
+         * @param aIpc IPC number of the request
+         * @return TInt Result of the request
+         */
+        virtual TInt DeregisterNotification( TInt aIpc );
+
+        /**
+         * Complete the context initialisation
+         *         
+         *
+         * @param aResult Result of the request
+         * @param aDataChannel the data channel to return to the client
+         */
+        void CompleteInitialiseContext( TInt aResult ,RPacketContext::TDataChannelV2* aDataChannel );
+
+        /**
+         * Complete the context activation.
+         *         
+         *
+         * @param aResult Result of the request
+         */
+        void CompleteActivate(TInt aResult );
+        
+        /**
+         * Complete activate phase2
+         *         
+         *
+         * @param aTsyReqHandle The ETEL request handle
+         * @param aClient The client id
+         * @param aBuffer A descriptor to put the active services into
+         * @return error code
+         */
+        TInt GetMbmsActiveServicesPhase2L(
+        	TTsyReqHandle aTsyReqHandle,
+        	RMobilePhone::TClientId* aClient,
+	        TDes8* aBuffer );
+	        
+	    /**
+	     * Cancel get service list request
+	     */
+        TInt CancelGetMbmsActiveServicesPhase1();
+
+        /**
+         * Complete the context deactivation
+         *         
+         *
+         * @param aResult Result of the request
+         * @param aDataPackage NULL or a list of failed entries in case there are failed entries 
+         */
+        void CompleteDeactivate( CMmDataPackage* aDataPackage, TInt aResult );
+ 
+        /**
+         * Complete the context delete
+         *         
+         *
+         * @param aResult Result of the request
+         */
+        void CompleteDelete( TInt aResult );
+
+        /**
+         * Complete the config changed notification
+         *         
+         * @param aDataPackage The data that was send from the LTSY
+         * @param aResult The result of the status change 
+         */
+        void CompleteNotifyConfigChanged( 
+        		const CMmDataPackage* aDataPackage = NULL,
+                TInt aResult= 0);
+        
+        /**
+         * Complete the status change notification
+         *         
+         * @param aDataPackage The data that was send from the LTSY
+         * @param aResult The result of the status change 
+         */
+        void CompleteNotifyStatusChange(
+            const CMmDataPackage* aDataPackage,
+            TInt aResult  );      
+            
+        /**
+         * Complete the status change notification
+         *         
+         *
+         * @param aContextStatus Contains status of the context
+         */
+        void CompleteNotifyStatusChange(
+            RPacketContext::TContextStatus aContextStatus  );                 
+        
+        /**
+         * Complete the context configuration
+         *         
+         *
+         * @param aResult Result of the request
+         */
+        void CompleteSetConfig( TInt aResult );
+
+        /**
+         * Set the last error cause.
+         *         
+         *
+         * @param aErrorCause Contains the last error cause
+         */
+        void SetLastErrorCause( TInt aErrorCause );
+
+        /**
+         * Get the context status.
+         *         
+         *
+         * return RPacketContext::TContextStatus
+         */
+        RPacketContext::TContextStatus ContextStatus() const;
+
+        /**
+         * Tells if context activation is allowed
+         *         
+         *
+         * @return TBool ETrue/EFalse
+         */ 
+        TBool IsContextActivationAllowed() const;
+
+        /**
+         * Return the contextName
+         *         
+         *
+         * @return The context name
+         */
+        const TInfoName &ContextName() const;
+        
+        /**
+         * Completets sessions list change request back to client
+         *
+         * @param aResult Actual result of complete
+         */
+        void CompleteUpdateMbmsSessionList( 
+            const TInt aResult );          
+
+        /**
+         * Return the context index
+         *         
+         *
+         * @return The context index
+         */
+        TInt ContextIndex() const;        
+        
+        /**
+         * First phase to retrieve active services
+         *
+         * @param aTsyReqHandle the ETEL request handle
+         * @param aClient Etel's client ID
+         * @param aBufSize Buffer size to client
+         * @return error code
+         */
+        TInt GetMbmsActiveServicesPhase1L(
+	        TTsyReqHandle aTsyReqHandle,
+	        RMobilePhone::TClientId* aClient,
+	        TInt* aBufSize );
+            
+        
+        /**
+         * Sets dynamic capability flags to this context
+         * 
+         * @param aFlag Flags to set
+         * @param aIsActionPossible Is action possible
+         */
+        void SetDynamicCapsFlag(
+            const RPacketService::TDynamicCapsFlags aFlag,  
+            const TBool aIsActionPossible );   
+            
+        /**
+         * Returns number of session in this context
+         *
+         * @return TInt Number of session in this context
+         */            
+        TInt SessionCount();
+        
+
+        /**
+         * Returns type of context based on context name
+         *
+         * @param aInfoName Name of the context
+         * @return TInt Type of context
+         */
+        virtual TPacketContextType ContextType() const;
+
+#ifdef REQHANDLE_TIMER
+        /**
+         * Call the needed complete method due the timer expiration.
+         *         
+         *
+         * @param aReqHandleType  
+         * @param aError                      
+         */
+        void Complete
+                (
+                const TInt aReqHandleType,
+                const TInt aError 
+                );
+#endif //REQHANDLE_TIMER
+
+    private: // functions
+      
+        /** 
+         * C++ default constructor.
+         */
+        CMmMBMSContextTsy();     
+        
+
+   
+        /**
+         * Class attributes are created in ConstructL.
+         * 
+         * 
+         * @param aMmPacketService Pointer to the Packet Service object
+         * @param aMessageManager Pointer to the Message Manager object
+         * @param aName Context name
+         * @param aProxyId Proxy id
+         */
+        void ConstructL(CMmPacketServiceTsy* const aMmPacketService,                
+                const TDes& aName,  
+                TUint8 aProxyId);
+
+
+        /**
+         * Initialise miscellaneous internal attributes.
+         * 
+         *                
+         */
+        void InitInternalAttributes();
+        
+        /**
+         * TRAP's all CMmMBMSContextTsy related MM Packet API requests in 
+         * case that they fail. This method functions only as a centralized
+         * TRAP for the DoExtFuncL method that does the actual mapping of IPC 
+         * number to TSY method call.
+         *         
+         *
+         * @param aTsyReqHandle TSY request handle from ETel server
+         * @param aIpc IPC number of the request
+         * @param aPackage Reference to the input parameters.
+         * @return KErrNone/KErrNotSupported
+         */
+        TInt DoExtFuncL( TTsyReqHandle aTsyReqHandle,
+            TInt aIpc, const TDataPackage& aPackage );
+
+        /**
+         * Initialise a context
+         *         
+         * @param aDataChannel A pointer to a client object to return the data channel
+         * @return TInt Success/failure value
+         */
+        TInt InitialiseContextL(RPacketContext::TDataChannelV2* aDataChannel );
+        
+        
+        /**
+         * Activate a context
+         *         
+         *
+         * @return TInt Success/failure value
+         */
+        TInt ActivateL();
+
+        /**
+         * Deactivate a context
+         *         
+         *
+         * @return TInt Success/failure value
+         */
+        TInt DeactivateL();
+
+        /**
+         * Deletes a context
+         *         
+         *
+         * @return TInt Success/failure value
+         */
+        TInt DeleteL();
+        
+        /**
+         * Updates session list of this context. Possible actions are;
+         * add, remove or remove all items
+         *
+         * @param aAction Update action; add, remove or remove all
+         * @param aSession The id of the session  
+         * @return TInt Possible error value
+         */
+        TInt UpdateMbmsSessionList( TMbmsAction* aAction,
+            TMbmsSessionId* aSession );
+            
+          
+    
+        /**
+         * Get the context configuration info
+         *         
+         *
+         * @param aTsyReqHandle TSY request handle
+         * @return aConfig Contains Context configuration info on return
+         * @return TInt Success/failure value
+         */
+        TInt GetConfig(TTsyReqHandle aTsyReqHandle,
+            TPacketDataConfigBase* aConfig );
+
+        /**
+         * Get the last error cause occurred
+         *         
+         *
+         * @param aTsyReqHandle TSY request handle
+         * @return aError Contains last error value on return
+         * @return TInt Success/failure value
+         */
+        TInt GetLastErrorCause( TTsyReqHandle aTsyReqHandle,
+            TInt* aError );
+
+        /**
+         * Get the current status of the context
+         *         
+         *
+         * @param aTsyReqHandle TSY request handle
+         * @return aContextStatus Contains current status of the context
+         * @return TInt KErrNone
+         */
+        TInt GetStatus( TTsyReqHandle aTsyReqHandle,
+            RPacketContext::TContextStatus* aContextStatus );
+
+        /**
+         * Allows clients to be notified of any change in context 
+         * configuration. Allows a client to be notified whenever a change in 
+         * the configuration of the current context is detected and passes 
+         * back the updated  configuration. Note that once the notification 
+         * completes, the clients must then re-post the notification if they 
+         * wish to continue receiving the notification.
+         *         
+         *
+         * @return aConfig Contains context configuration info on return
+         * @return TInt Success/failure value
+         */
+        TInt NotifyConfigChanged( TPacketDataConfigBase* aConfig );
+
+        /**
+         * Allows clients to be notified of any change in the context status
+         *
+         *         
+         * @return aContextStatus Contains the status of the context on return
+         * @return TInt Success/failure value
+         */
+        TInt NotifyStatusChange( RPacketContext::TContextStatus* aContextStatus );
+
+        
+        /**
+         * Set context configuration
+         *
+         *         
+         * @param aConfig Contains context configuration
+         * @return TInt Success/failure value.
+         */
+        TInt SetConfigL( TPacketDataConfigBase* aConfig );
+
+        /**
+         * Overloads original ReqCompleted for logging purposes
+         *
+         *         
+         * @param aTsyReqHandle TSY request handle
+         * @param aError error value
+         */
+        virtual void ReqCompleted( TTsyReqHandle aTsyReqHandle,
+            TInt aError );
+
+        /**
+         * Method invokes MS-initiated modification of an active context in the 
+         * network
+         *         
+         *
+         * @return TInt Success/failure value.
+         */
+        TInt ModifyActiveContextL();
+
+#ifdef REQHANDLE_TIMER
+
+        /**
+         * Choose the type of response, automatic or common.
+         * 
+         *  
+         * @param aReqHandleType
+         * @param aTsyReqHandle                         
+         */
+        void SetTypeOfResponse( TInt aReqHandleType, 
+                TTsyReqHandle aTsyReqHandle );
+
+#endif //REQHANDLE_TIMER
+
+    public: //Data
+    
+        // TPacketContextRequestTypes enumerates indexes to Packet's request
+        // handle table. Request handles are stored there while waiting for 
+        // completion of the request.
+        enum TPacketContextRequestTypes
+            {
+            EMultimodePacketMbmsReqHandleUnknown,
+            EMultimodePacketMbmsInitialiseContext,
+            EMultimodeMbmsContextActivate,
+            EMultimodeMbmsContextDeactivate,
+            EMultimodeMbmsContextDelete,
+            EMultimodeMbmsContextNotifyConfigChanged,
+            EMultimodePacketContextNotifyConnectionSpeedChange,
+            EMultimodeMbmsContextNotifyStatusChange,
+            EMultimodePacketMbmsContextSetConfig,
+            EMultimodePacketContextGetDataVolumeTransferred,
+            EMultimodePacketContextGetPacketFilterInfo,
+            EMultimodePacketContextEnumeratePacketFilters,
+            EMultimodePacketContextAddPacketFilter,
+            EMultimodePacketContextRemovePacketFilter,
+            EMultimodePacketContextModifyActiveContext,
+            EMultimodePacketContextNotifyConfigChanged99,
+            EMultimodeGetMbmsSessionListPhase1,
+            EMultimodeGetMbmsSessionListPhase2,
+            EMultimodeMbmsContextUpdateMbmsSessionList,
+            
+
+            // Max number of requests
+            // ADD NEW REQUESTS BEFORE THIS!
+            EMaxNumOfMBMSContextRequests
+
+            };
+
+    private: // Data
+
+   		/**
+         * Context configuration data GPRS
+         * Own.         
+         */
+        RPacketMbmsContext::TContextConfigMbmsV1* iConfig;
+
+        /**
+         * Req handle type
+         */        
+        TPacketContextRequestTypes iReqHandleType;
+        
+        /**
+         *  TSY request handle
+         */
+        TTsyReqHandle iTsyReqHandle;           
+
+        /**
+         *  Pointer to the Req handle store
+         *  Own.        
+         */        
+        CMmTsyReqHandleStore* iTsyReqHandleStore;
+        
+        /**
+         *  Table for packet context request handles
+         */        
+        TTsyReqHandle iPacketContextReqHandles[EMaxNumOfMBMSContextRequests];
+        
+        /**
+         *  Pointer to the Packet Service TSY
+         *  Not own.        
+         */
+        CMmPacketServiceTsy* iMmPacketService;                                                
+                                             
+        /**
+         *  Notify Config Changed
+         *  Not own.        
+         */
+        TPacketDataConfigBase* iRetNotifyConfig;
+        
+        /**
+         *  Notify Config Changed
+         *  Not own.        
+         */        
+        TPacketDataConfigBase* iRetNotifyConfig2;
+
+                                            
+        /**
+         *  Notify Context Status Change
+         *  Not own.        
+         */
+        RPacketContext::TContextStatus* iRetNotifyStatus;                                               
+
+        /**
+         * Context status   
+         */
+        RPacketContext::TContextStatus iContextStatus;
+                                               
+        /**
+         *  Context name      
+         */
+        TInfoName iContextName;    
+
+        /**
+         *  Initialisation state flag    
+         */        
+        TBool iIsInitialiseAllowed;                                            
+        
+        /**
+         *  Activation state flag    
+         */        
+        TBool iIsActivateAllowed; 
+        
+        /**
+         * Context status before deactivation
+         */
+        RPacketContext::TContextStatus iContextStatusBeforeDeactivation;
+        
+        /**
+         * Unique object Id       
+         */
+        TUint8 iObjectId;                                                                
+
+        /**
+         * Context status before suspending       
+         */
+        RPacketContext::TContextStatus iContextStatusBeforeSuspending;        
+
+        /**
+         *  Last error cause      
+         */
+        TInt iLastErrorCause;       
+        
+        /**
+         *  Array containing all services
+         */
+        RPacketMbmsContext::CMbmsSession* iServicesArray; 
+	    
+        
+        /**
+         * Temporary configuration structure
+         */
+        RPacketMbmsContext::TContextConfigMbmsV1* iTempConfig;
+        
+        
+   		/**
+         * Session list action to complete
+         */      
+        TMbmsAction iAction;
+        
+        /**
+         * Item to add or remove to/from session list
+         */
+        TMbmsSessionId iSession;
+        
+        
+        /**
+         * Buffer to store active session info
+         */
+        HBufC8* iActiveSessionInfoBuffer;
+        
+        /**
+         * The client id for GetMbmsActiveServices 
+         */ 
+        RMobilePhone::TClientId iClientId;
+        
+        /**
+         * A pointer to the client object, to return the data channel after init
+         */
+        RPacketContext::TDataChannelV2 *iDataChannelV2;
+
+    };
+
+#endif // CMmMBMSContextTsy_H
+   
+// End of File