videoconnutility/connutility/inc/vcxconnutilengine.h
branchRCL_3
changeset 23 13a33d82ad98
parent 0 822a42b6c3f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoconnutility/connutility/inc/vcxconnutilengine.h	Wed Sep 01 12:20:37 2010 +0100
@@ -0,0 +1,358 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:    class to handle networking functions in vcxconnectionutility*
+*/
+
+
+
+
+#ifndef __CVCX_CONUTILENGINE_H__
+#define __CVCX_CONUTILENGINE_H__
+
+#include <e32base.h>
+
+#include <e32std.h>
+#include <cmmanager.h>
+#include <es_sock.h>
+#include <connpref.h>
+#include <commdbconnpref.h>
+#include <comms-infras/cs_mobility_apiext.h>
+
+#include <cmdestinationext.h>
+#include <cmmanagerext.h>
+#include <rconnmon.h>
+#include "vcxconnectionutility.hrh"
+
+class CActiveCommsMobilityApiExt;
+class MConnUtilExtEngineObserver;
+
+
+// CLASS DECLARATION
+/**
+* Class defines functionality for handling networking functions in 
+* vcxconnectionutility. 
+* These are:
+* 1. connection creation and disconnecting
+* 2. handling and notifying of events from apllication level roaming (ALR)
+* 3. handling and notifying of other interesting events from the network:
+*  - link layer closing and connection deletion
+*  - iap list changing
+*
+* Class uses MConnUtilEngineObserver interface to inform CVcxConnUtilImpl 
+* -class about the events.  
+*/
+
+NONSHARABLE_CLASS (  CVcxConnUtilEngine ) : public CActive,
+                                            public MMobilityProtocolResp,
+                                            public MConnectionMonitorObserver
+    {   
+    public: // construction / destruction
+    
+        /**
+         * Construction.
+         * 
+         * @param MConnUtilExtEngineObserver
+         * @return The newly constructed CVcxConnUtilEngine
+         */
+        static CVcxConnUtilEngine* NewL( MConnUtilExtEngineObserver* aObserver );
+    
+        /**
+         * Construction. Object left to cleanupstack
+         * 
+         * @param MConnUtilExtEngineObserver
+         * @return The newly constructed CVcxConnUtilEngine
+         */
+        static CVcxConnUtilEngine* NewLC( MConnUtilExtEngineObserver* aObserver );
+        
+        /**
+         * destructor
+         */
+        virtual ~CVcxConnUtilEngine();
+        
+    private:
+            
+        /**
+         * C++ constructor
+         */
+        CVcxConnUtilEngine(); 
+            
+        /**
+         * Private 2nd phase construction.
+         */
+        void ConstructL();  
+        
+    private: // From CActive
+            
+        /**
+         * From CActive. Connection startup is done asynchronously after 
+         * connection cretaion ends, the status value of the connection is 
+         * updated whether connection succeed or not
+         */  
+        void RunL();
+        
+        /**
+         * From CActive. Cancels coonnection creation.
+         */
+        void DoCancel();
+
+    private: // From MMobilityProtocolResp
+    
+        /**
+         * From MMobilityProtocolResp. We have better carrier available for
+         * the active connection.
+         * 
+         * @param aOldAPInfo    current IAP information
+         * @param aNewAPInfo    suggested new IAP information
+         * @param aIsUpgrade    ETrue indicates IAP is to be upgraded
+         * @param aIsSeamless   ETrue indicates that new connection is seamless
+         *                      (new IAP requires dialog for connection)
+         */ 
+        void PreferredCarrierAvailable( TAccessPointInfo aOldAPInfo,
+                                        TAccessPointInfo aNewAPInfo,
+                                        TBool aIsUpgrade,
+                                        TBool aIsSeamless );
+         
+        /**
+         * From MMobilityProtocolResp. We have a new carrier available for
+         * the active connection.
+         * 
+         * @param aNewAPInfo    IAP information from the new available connection
+         * @param aIsSeamless   ETrue indicates that new connection is seamless
+         *                      (new IAP requires dialog for connection)
+         */ 
+        void NewCarrierActive( TAccessPointInfo aNewAPInfo, TBool aIsSeamless );
+          
+        /**
+         * From MMobilityProtocolResp.
+         * 
+         * @param aError
+         */
+        void Error( TInt aError );
+        
+    private: // from MConnectionMonitorObserver
+        
+        /**
+         * @see MConnectionMonitorObserver
+         */
+        void EventL( const CConnMonEventBase &aConnMonEvent );
+    
+    public: // new methods
+
+        typedef RArray<TUint32> RDestinationArray;
+        
+        /**
+         * Starts a connection via SNAP
+         * 
+         * @param aPref         connection information to be used connection startup
+         * @return              KErrNone always is async connection and if sync connection
+         *                      startup succeed or one of the system wide error codes
+         */ 
+        TInt StartToConnect( TConnPref& aPref,  TBool aConnAsync = ETrue ); 
+        
+        /**
+        * Disconnects active connection and closes RConnection
+        */
+        void Disconnect();
+  
+        /**
+         * Method is used to get the name of the destination that matches 
+         * given id and to make sure, that destination really have connection
+         * methods to use. 
+         * 
+         * @param aDestinationID destination (SNAP) if from where to fetch infromation
+         * 
+         * @return TBool true, if connection is ok to start 
+         */ 
+        TBool PrepareConnectionDetailsL( TInt aDestinationID );
+        
+        /**
+         * Method reads platform's connection settings, and returns a destination id.
+         * If aPurpose is setted as ESnapPurposeUnknown, default id is returned,
+         * otherwise purpose is used to get correct id 
+         * 
+         * @param aPurpose if ESnapPurposeUnknown, get default, in all other cases
+         *                 try to fetch id based on the purpose
+         * 
+         * @return TUint32 destination id 
+         */ 
+        TUint32 GetCmmDestinationIdL( CMManager::TSnapPurpose aPurpose = 
+                                          CMManager::ESnapPurposeUnknown );
+        
+        /**
+         * Method checks if there is an active connection for
+         * the given iap
+         * 
+         * @param aIapId   iap id to check
+         * 
+         * @return TBool   ETrue if connection exists
+         * 
+         */ 
+        TBool IsIapConnected( TUint32 aIapId );
+        
+        /**
+         * Method fills started connection's information: IAP id (iIapId) and IAP name
+         * This is needed in case of "always ask" to get the information client requires.
+         * 
+         */ 
+        void FillActiveConnectionDetailsL();        
+        
+        /**
+         * clears iapid, snapid and their names
+         * 
+         */
+        void ResetConnectionInfo();
+       
+        /**
+         * Returns currently fetched iap id
+         * 
+         * @return TUint32
+         */
+        TUint32 IapId() const;
+        
+        /**
+         * Returns currently fetched iap id
+         * 
+         * @return TInt
+         */
+        TInt DestinationId() const;
+        
+        /**
+         * Returns currently fetched snap name
+         * 
+         * @return TUint32
+         */
+         TPtrC DestinationName() const;
+                 
+        /**
+         * Returns current connection status
+         * 
+         * @return TPSVCConnectionStatus
+         */
+         TVCxConnectionStatus ConnectionStatus() const;
+        
+        /**
+         * Explicitly sets internal connection status.          
+         * 
+         * @param TPSVCConnectionStatus
+         */
+        void SetConnectionStatus( TVCxConnectionStatus aStatus );
+               
+        /**
+         * Method can be called to create mobility object
+         * for getting roaming events from the network.          
+         * 
+         * @return TInt KErrnone if object created or already exists. Otherwise a
+         *                       system level error. 
+         */
+        TInt CreateMobility();
+
+        /**
+         * Returns "query connection" status.
+         */
+        TBool QueryConn();
+
+        /**
+         * Set "query connection" status.
+		 *
+		 * @param aQueryConn 	Value for connection query flag.
+         */
+        void SetQueryConn( TBool aQueryConn );
+
+        
+    private:
+        
+        /**
+         * Internal helper method trying to fetch destination
+         * information for the current IAP.
+         * 
+         */
+        void FillDestinationInfoL();
+        
+    private:
+        
+        /**
+         * Socket Server
+         */
+        RSocketServ iSocketServer;
+
+        /**
+         * Connection
+         */
+        RConnection iConnection;
+
+        /**
+         * Connection monitor
+         */
+        RConnectionMonitor iConnectionMonitor;
+        
+        /**
+         * Current connection state
+         */
+        TVCxConnectionStatus iConnectionState;
+        
+        /**
+         * Connection Manager Extensions
+         */
+        RCmManagerExt  iCmManagerExt;
+
+        /**
+         * Destination id.
+         */
+        TInt iDestinationId;
+        
+        /**
+         * IAP ID.
+         */
+        TUint32 iIapId;
+
+        /**
+         * Destination (snap) Name.
+         */
+        HBufC* iDestinationName;
+              
+        /**
+         * current connection id
+         */
+        TUint iCurrentConnectionId;
+        
+        /**
+         * Mobility object to fetch carrier change events 
+         */
+        CActiveCommsMobilityApiExt* iMobility;
+        
+        /**
+         * array of all available destination ids
+         */
+        RDestinationArray iDestinationArray;
+        
+        /**
+         * observer to notify about changes in the network 
+         */
+        MConnUtilExtEngineObserver* iObserver;
+        
+        /**
+         * Value to pass connection result error code from the 
+         * async connection creation
+         */
+        TInt iConnectingResult;
+        
+        /**
+         * If is set to ETrue, connection selection dialog will be displayed.
+         * Used when tried SNAP contained invalid IAP. 
+         */
+        TBool iQueryConn;
+        
+    };
+
+#endif // __CVCX_CONUTILENGINE_H__