bearermanagement/mpm/inc/mpmserver.h
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
equal deleted inserted replaced
57:05bc53fe583b 58:83ca720e2b9a
     1 /*
     1 /*
     2 * Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). 
     2 * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    27 #include <e32base.h>
    27 #include <e32base.h>
    28 #include <rconnmon.h>
    28 #include <rconnmon.h>
    29 #include <etel.h>           // RTelServer
    29 #include <etel.h>           // RTelServer
    30 #include <etelmm.h>         // RMobilePhone
    30 #include <etelmm.h>         // RMobilePhone
    31 #include <etelpckt.h>       // RPacketService
    31 #include <etelpckt.h>       // RPacketService
    32 #include <ConnectionUiUtilities.h>
       
    33 
    32 
    34 #include "mpmcommon.h"
    33 #include "mpmcommon.h"
    35 #include "rmpm.h"
    34 #include "rmpm.h"
    36 #include "mpmroamingwatcher.h"
    35 #include "mpmroamingwatcher.h"
    37 #include "mpmdatausagewatcher.h"
    36 #include "mpmdatausagewatcher.h"
    38 #include "mpmvpntogglewatcher.h"
       
    39 
    37 
    40 
    38 
    41 class CMPMCommsDatAccess;
    39 class CMPMCommsDatAccess;
    42 class CMpmCsIdWatcher;
    40 class CMpmCsIdWatcher;
    43 class CMpmDataUsageWatcher;
    41 class CMpmDataUsageWatcher;
    44 class CMpmVpnToggleWatcher;
    42 class CMpmOfflineWatcher;
    45 
    43 
    46 // CONSTANTS
    44 // CONSTANTS
    47 _LIT( KMPMPanicCategory, "Mobility Policy Manager Server" );
    45 _LIT( KMPMPanicCategory, "Mobility Policy Manager Server" );
    48 
    46 
    49 const TInt    KPhoneRetryCount   = 7;
    47 const TInt    KPhoneRetryCount   = 7;
    50 // 0.1 seconds
    48 // 0.1 seconds
    51 //
    49 //
    52 const TInt    KPhoneRetryTimeout = 100000;
    50 const TInt    KPhoneRetryTimeout = 100000;
    53 
    51 
    54 // The granularity with which roaming and starting dialogs will allocate memory chunks. 
    52 const TUint32 KMaxOpenTransAttempts = 5;
    55 // If set to two there will be space for two instances before new memory will be allocated.
    53 const TUint32 KRetryAfter = 200000;
       
    54 
       
    55 // The granularity with which iDisconnectQueue will allocate memory chunks. 
       
    56 // If set to two there will be space for two instances of CMPMDisconnectDlg
       
    57 // before new memory will be allocated.
    56 const TInt    KGranularity       = 2;
    58 const TInt    KGranularity       = 2;
    57 
    59 
    58 // Security policy definitions
    60 // Security policy definitions
    59 
    61 
    60 //Total number of ranges
    62 //Total number of ranges
    61 const TUint KMPMPolicyRangeCount = 2;
    63 const TUint KMPMPolicyRangeCount = 2;
    62 
    64 
    63 // roaming to connected wlan wait interval
    65 // roaming to connected wlan wait interval
    64 // in micro seconds (10 sec)
    66 // in micro seconds (10 sec)
    65 const TInt KRoamingToWlanUpdateInterval = 10000000; 
    67 const TInt KRoamingToWlanUpdateInterval = 10000000; 
       
    68 
       
    69 // roaming to connected hotspot wlan wait interval
       
    70 // in micro seconds (120 sec)                    
       
    71 const TInt KRoamingToHotspotWlanUpdateInterval = 120000000; 
    66  
    72  
    67 //Definition of the ranges of IPC numbers
    73 //Definition of the ranges of IPC numbers
    68 const TInt KMPMPolicyRanges[KMPMPolicyRangeCount] = 
    74 const TInt KMPMPolicyRanges[KMPMPolicyRangeCount] = 
    69     {
    75     {
    70     0, // 0 -> 19 ; EMPMServerChooseIap,
    76     0, // 0 -> 19 ; EMPMServerChooseIap,
   186 
   192 
   187 // FORWARD DECLARATIONS
   193 // FORWARD DECLARATIONS
   188 class CMPMConnMonEvents;
   194 class CMPMConnMonEvents;
   189 class CMPMServerSession;
   195 class CMPMServerSession;
   190 class CMPMDtmWatcher;
   196 class CMPMDtmWatcher;
       
   197 class CMPMDisconnectDlg;
   191 class CMPMConfirmDlgRoaming;
   198 class CMPMConfirmDlgRoaming;
   192 class CMPMConfirmDlgStarting;
   199 class CMPMConfirmDlgStarting;
   193 class CMPMDefaultConnection;
   200 class CMPMDefaultConnection;
       
   201 class CMPMWlanQueryDialog;
       
   202 class CMPMDialog;
   194 class CMPMConnPermQueryTimer;
   203 class CMPMConnPermQueryTimer;
   195 
   204 
   196 // CLASS DECLARATION
   205 // CLASS DECLARATION
   197 /**
   206 /**
   198 *  Class structure to associate Connection Id 
   207 *  Class structure to associate Connection Id 
   266 *  MPM Server class definition.
   275 *  MPM Server class definition.
   267 *
   276 *
   268 *  @lib MPMServer.exe
   277 *  @lib MPMServer.exe
   269 *  @since 3.0
   278 *  @since 3.0
   270 */
   279 */
   271 class CMPMServer : public CPolicyServer,
   280 class CMPMServer : public CPolicyServer
   272                    public MMpmVpnToggleWatcherNotify
       
   273     {
   281     {
   274     public: // Constructors and destructor
   282     public: // Constructors and destructor
   275 
   283 
   276         /**
   284         /**
   277         * Two-phased constructor.
   285         * Two-phased constructor.
   351         */
   359         */
   352         void GetConnectionState( const TConnectionId aConnId,
   360         void GetConnectionState( const TConnectionId aConnId,
   353                                  TConnectionState&   aState );
   361                                  TConnectionState&   aState );
   354 
   362 
   355         /**
   363         /**
   356         * Checks if the connection is started for the Iap Id.
   364         * Checks if the connection is started for the Iap Id,
       
   365         * returning the state.
   357         * @since 3.2
   366         * @since 3.2
   358         * @param aIapId IAP Id of the connection
   367         * @param aIapId IAP Id of the connection
   359         * @param aConnId Connection Id
   368         * @param aConnId Connection Id
   360         */
   369         * @return Connection State, EIdle if not found
   361         TBool CheckIfStarted( const TUint32 aIapId, 
   370         */
       
   371         TConnectionState CheckUsageOfIap( const TUint32 aIapId, 
   362                               const TConnectionId aConnId );
   372                               const TConnectionId aConnId );
   363 
   373 
   364         /**
   374         /**
   365         * Checks if a connection is started with wlan iap.
   375         * Checks if any WLAN connection is started.
   366         * @since 3.2
   376         * @since 3.2
   367         * @param aCdbAccess
   377         * @param aCdbAccess
       
   378 		* @return IAP ID of the started WLAN connection, zero if not found
   368         */
   379         */
   369         TUint32 IsWlanConnectionStartedL( const CMPMCommsDatAccess* aCdbAccess );
   380         TUint32 IsWlanConnectionStartedL( const CMPMCommsDatAccess* aCdbAccess );
   370         
   381         
   371         /**
   382         /**
   372         * Appending the whole IAP info about an active BM connection.
   383         * Appending the whole IAP info about an active BM connection.
   420         /**
   431         /**
   421         * Checks whether given connection has registered for 
   432         * Checks whether given connection has registered for 
   422         * preferred IAP notifications.
   433         * preferred IAP notifications.
   423         * @since 3.2
   434         * @since 3.2
   424         * @param aConnId Connection Id
   435         * @param aConnId Connection Id
       
   436         * @return ETrue if registered
   425         */
   437         */
   426         TBool RegisteredForBMPrefIAP( const TConnectionId aConnId );
   438         TBool RegisteredForBMPrefIAP( const TConnectionId aConnId );
   427 
   439 
   428         /**
   440         /**
   429         * Sets last notified IAP for BMPrefIAPNotif related to a connection
   441         * Sets last notified IAP for BMPrefIAPNotif related to a connection
   456         * @param aIapInfo Info about available IAPs
   468         * @param aIapInfo Info about available IAPs
   457         * @param aCaller Identifies the calling context 
   469         * @param aCaller Identifies the calling context 
   458         */
   470         */
   459         void NotifyBMPrefIapL( const TConnMonIapInfo& aIapInfo,
   471         void NotifyBMPrefIapL( const TConnMonIapInfo& aIapInfo,
   460                                const TPrefIAPNotifCaller aCaller );
   472                                const TPrefIAPNotifCaller aCaller );
       
   473 
       
   474         /**
       
   475         * Update Connection dialog of each session
       
   476         * @since 3.2
       
   477         */
       
   478         void UpdateSessionConnectionDlgL();
       
   479 
       
   480         /**
       
   481         * Completes pending messages
       
   482         * @since 5.2
       
   483         * @param aIapId IAP Id of the connection.
       
   484         * @param aError Message status
       
   485         * @param aErrorReturned Error value to be returned, NULL if no 
       
   486         * value should be passed
       
   487         * @param aNeededAction Needed action to be returned, NULL if no 
       
   488         * value should be passed
       
   489         */
       
   490         void HandlePendingMsgs( TUint aIapId,
       
   491                                 TInt aError,
       
   492                                 TInt* aErrorReturned,
       
   493                                 TBMNeededAction* aNeededAction );
   461 
   494 
   462         /**
   495         /**
   463         * Handling of blacklisting certain IAP and the presumed IAP for 
   496         * Handling of blacklisting certain IAP and the presumed IAP for 
   464         * the certain connection.
   497         * the certain connection.
   465         * @since 3.1
   498         * @since 3.1
   588         * @return ETrue if yes, otherwise EFalse.
   621         * @return ETrue if yes, otherwise EFalse.
   589         */
   622         */
   590         inline TBool IsWLANScanRequired() const;
   623         inline TBool IsWLANScanRequired() const;
   591 
   624 
   592         /**
   625         /**
       
   626         * Get the DisconnectQueue.
       
   627         * @since 3.2
       
   628         * @return Pointer to the DisconnectQueue.
       
   629         */
       
   630         inline CArrayPtrFlat<CMPMDisconnectDlg>* DisconnectQueue();
       
   631 
       
   632         /**
   593         * Get the RoamingQueue.
   633         * Get the RoamingQueue.
   594         * @since 3.2
   634         * @since 3.2
   595         * @return Pointer to the RoamingQueue.
   635         * @return Pointer to the RoamingQueue.
   596         */
   636         */
   597         inline CArrayPtrFlat<CMPMConfirmDlgRoaming>* RoamingQueue();
   637         inline CArrayPtrFlat<CMPMConfirmDlgRoaming>* RoamingQueue();
   600         * Get the StartingQueue.
   640         * Get the StartingQueue.
   601         * @since 3.2
   641         * @since 3.2
   602         * @return Pointer to the StartingQueue.
   642         * @return Pointer to the StartingQueue.
   603         */
   643         */
   604         inline CArrayPtrFlat<CMPMConfirmDlgStarting>* StartingQueue();
   644         inline CArrayPtrFlat<CMPMConfirmDlgStarting>* StartingQueue();
       
   645 
       
   646         /**
       
   647         * Appends aDlg to the iWlanQueryQueue.
       
   648         * @since 3.2
       
   649         * @param aDlg Pointer to the CMPMConfirmDlgWlanQuery object.
       
   650         */
       
   651         void AppendWlanQueryQueueL( CMPMWlanQueryDialog* aDlg );
       
   652 
       
   653         /**
       
   654         * Removes the dialog from the iWlanQueryQueue.
       
   655         * @since 3.2
       
   656         * @param aDlg dialog to be removed.
       
   657         */
       
   658         inline void RemoveFromWlanQueryQueue( CMPMWlanQueryDialog* aDlg );
       
   659 
       
   660         /**
       
   661         * Get the WlanQueryQueue.
       
   662         * @since 3.2
       
   663         * @return Pointer to the WlanQueryQueue.
       
   664         */
       
   665         inline CArrayPtrFlat<CMPMWlanQueryDialog>* WlanQueryQueue();
       
   666 
       
   667         /**
       
   668         * Get the first item in iWlanQueryQueue.
       
   669         * @since 3.2
       
   670         * @return Pointer to the first item in iWlanQueryQueue.
       
   671         */
       
   672         inline CMPMWlanQueryDialog* FirstInWlanQueryQueue();
       
   673 
       
   674         /**
       
   675         * Get the ConnectDialogQueue.
       
   676         * @since 3.2
       
   677         * @return Pointer to the CMPMDialogQueue.
       
   678         */
       
   679         inline CArrayPtrFlat<CMPMDialog>* ConnectDialogQueue();
       
   680 
       
   681         /**
       
   682         * Get the Default Connection object.
       
   683         * @since 3.2
       
   684         * @return Pointer to the Default Connection object.
       
   685         */
       
   686         CMPMDefaultConnection* DefaultConnection(); 
   605 
   687 
   606         /**
   688         /**
   607         * Returns true if there is a started connection
   689         * Returns true if there is a started connection
   608         * 
   690         * 
   609         * @since 3.2
   691         * @since 3.2
   649 
   731 
   650         /**
   732         /**
   651         * Returns the Commsdat access instance
   733         * Returns the Commsdat access instance
   652         *
   734         *
   653         * @since 3.2
   735         * @since 3.2
       
   736         * @return Commsdat access instance.
   654         */
   737         */
   655         inline CMPMCommsDatAccess* CommsDatAccess();
   738         inline CMPMCommsDatAccess* CommsDatAccess();
   656 
   739 
   657         /**
   740         /**
   658         * Starts forced roaming sequence to wlan
   741         * Starts forced roaming sequence to wlan
   664         
   747         
   665         /**
   748         /**
   666         * Starts forced roaming sequence to connected wlan
   749         * Starts forced roaming sequence to connected wlan
   667         *
   750         *
   668         * @param aIapInfo Info about available IAPs
   751         * @param aIapInfo Info about available IAPs
       
   752         * @return Always zero...
   669         * @since 5.2
   753         * @since 5.2
   670         */
   754         */
   671         static TInt StartForcedRoamingToConnectedWlanL( TAny* aUpdater );
   755         static TInt StartForcedRoamingToConnectedWlanL( TAny* aUpdater );
   672         
   756         
       
   757         /**
       
   758         * Starts forced roaming sequence to connected hotspot wlan
       
   759         *
       
   760         * @param aIapInfo Info about available IAPs
       
   761         * @return Always zero...
       
   762         * @since 5.2
       
   763         */
       
   764         static TInt StartForcedRoamingToConnectedHotspotWlanL( TAny* aUpdater );
       
   765 
   673         /**
   766         /**
   674         * Starts forced roaming sequence from WLAN if necessary
   767         * Starts forced roaming sequence from WLAN if necessary
   675         *
   768         *
   676         * @param aIapInfo Info about available IAPs
   769         * @param aIapInfo Info about available IAPs
   677         * @since 5.2
   770         * @since 5.2
   680         
   773         
   681         /**
   774         /**
   682         * Checks whether phone is in visitor network.
   775         * Checks whether phone is in visitor network.
   683         *
   776         *
   684         * @since 5.2
   777         * @since 5.2
       
   778 		* @return ETrue if phone is in visitor network, EFalse otherwise
   685         */
   779         */
   686         TBool IsVisitorNetwork() const;
   780         TBool IsVisitorNetwork() const;
   687         
   781         
   688         /**
   782         /**
   689         * Returns the RoamingWatcher pointer
   783         * Returns the RoamingWatcher pointer
   690         *
   784         *
   691         * @since 5.2
   785         * @since 5.2
       
   786 		* @return RoamingWatcher pointer
   692         */
   787         */
   693         inline CMPMRoamingWatcher* RoamingWatcher() const;
   788         inline CMPMRoamingWatcher* RoamingWatcher() const;
   694 
   789 
   695         /**
   790          /**
   696         * Returns the DataUsageWatcher pointer
   791         * Returns the DataUsageWatcher pointer
   697         *
   792         *
   698         * @since 5.2
   793         * @since 5.2
   699         * @return DataUsageWatcher pointer
   794         * @return DataUsageWatcher pointer
   700         */
   795         */
   701         inline CMpmDataUsageWatcher* DataUsageWatcher() const;        
   796         inline CMpmDataUsageWatcher* DataUsageWatcher() const;        
   702         
   797         
   703         
   798         
   704     public: // Functions from base classes
   799     public: // Functions from base classes
   705 
       
   706         /**
       
   707          * From MMpmVpnToggleWatcherNotify. Sets values for VPN toggle after
       
   708          * VPN toggle key changes in central repository.
       
   709          * @param aVpnPreferred Informs if VPN connection is preferred
       
   710          *                      connection
       
   711          * @param aVpnIapId VPN IAP Id, which is used for VPN connection, when
       
   712          *                  VPN connection is preferred                           
       
   713          * @param aSnapId SNAP Id SNAP Id, which is used for VPN connection,
       
   714          *                when VPN connection is preferred
       
   715          */
       
   716          void SetVpnToggleValuesL( const TBool aVpnPreferred,
       
   717                                    const TUint32 aVpnIapId,
       
   718                                    const TUint32 aSnapId );
       
   719 
   800 
   720         /**
   801         /**
   721         * From CServer2. Creates a new session for a client.
   802         * From CServer2. Creates a new session for a client.
   722         * @since 3.0
   803         * @since 3.0
   723         * @param aVersion Version information
   804         * @param aVersion Version information
   725         * @return Pointer to the new client session
   806         * @return Pointer to the new client session
   726         */
   807         */
   727         CSession2* NewSessionL( const TVersion& aVersion,
   808         CSession2* NewSessionL( const TVersion& aVersion,
   728                                 const RMessage2& aMessage) const;
   809                                 const RMessage2& aMessage) const;
   729 
   810 
   730         // Stops connection of certain IAP, zero for all connections
   811         /**
       
   812 		* Stops either all connections or a certain IAP
       
   813 		*
       
   814         * @param IAP ID to be stopped, zero for all connections
       
   815 		*/
   731         void StopConnections( TInt aIapId = 0 );
   816         void StopConnections( TInt aIapId = 0 );
   732                 
   817 
   733     public:
   818     public:
   734 
   819 
   735         /**
   820         /**
   736          * Mark that there is an active user connection.
   821          * Mark that there is an active user connection.
   737          * @since 5.1
   822          * @since 5.1
   769          * Checks whether user connection is in internet snap.
   854          * Checks whether user connection is in internet snap.
   770          * @since 5.1
   855          * @since 5.1
   771          * @return ETrue if user connection is in internet snap
   856          * @return ETrue if user connection is in internet snap
   772          */
   857          */
   773         TBool UserConnectionInInternet() const;
   858         TBool UserConnectionInInternet() const;
   774 
       
   775         /**
       
   776          * Mark that there is an active VPN user connection.
       
   777          */
       
   778         void AddVpnUserConnectionSession();
       
   779         
       
   780         /**
       
   781          * Mark that VPN user connection is not active
       
   782          */
       
   783         void RemoveVpnUserConnectionSession();
       
   784         
       
   785         /**
       
   786          * Informs if VPN user connection is used with given MPM preferences
       
   787          * and application.
       
   788          * @param aMpmConnPref MPM connection preferences.
       
   789          * @param aAppUid Application UID
       
   790          * @return Informs if VPN connection is preferred
       
   791          */        
       
   792         TBool UseVpnUserConnection( const TMpmConnPref aMpmConnPref,
       
   793                                     const TUint32 aAppUid ) const;
       
   794         
       
   795         /**
       
   796          * Prepares VPN user connection.
       
   797          * @param aMpmConnPref Connection preferences, which are modified
       
   798          *                     for VPN user connection (returned)
       
   799          * @return Informs if preparation was successful.                                         
       
   800          */
       
   801         TBool PrepareVpnUserConnection( TMpmConnPref& aMpmConnPref );
       
   802                 
   859                 
   803         /**
   860         /**
   804          * Handle to central repository watcher
   861          * Handle to central repository watcher
   805          * @since 5.1
   862          * @since 5.1
   806          * @return Pointer to watcher object.
   863          * @return Pointer to watcher object.
   807          */
   864          */
   808         inline CMpmCsIdWatcher* CsIdWatcher();
   865         inline CMpmCsIdWatcher* CsIdWatcher();
   809 
   866 
   810         /**
   867         /**
   811          * Handle to VPN toggle central repository watcher
   868          * Change state of the P&S keys according to active connection.
   812          * @return Pointer to watcher object.
   869          * Non-leaving version. Resets variables in case error happens.
   813          */
   870          * @since 5.2         
   814         inline CMpmVpnToggleWatcher* VpnToggleWatcher();
   871          * @param aSession Handle to session used by connection.
       
   872         */
       
   873         void UpdateActiveConnection( CMPMServerSession& aSession );
       
   874         
       
   875         /**
       
   876         * Change state of the P&S keys according to active connection.
       
   877         * @since 5.0
       
   878         * @param aSession Handle to session used by connection.
       
   879         */
       
   880         void UpdateActiveConnectionL( CMPMServerSession& aSession );
       
   881 
       
   882         /**
       
   883         * Map bearer type between MPM and commsdat.
       
   884         * @since 5.0
       
   885         * @param aBearerType Bearer type used by MPM for active connection selection.
       
   886         * @return Bearer type used by commsdat
       
   887         */
       
   888         TUint32 MapBearerType( TMPMBearerType aBearerType );
       
   889 
       
   890         /**
       
   891         * Writes new active connection to the P&S keys
       
   892         * @since 5.0
       
   893         */    
       
   894         void PublishActiveConnection();
       
   895         
       
   896         /**
       
   897         * Returns number of active iaps.
       
   898         * @since 5.0
       
   899         * @param aKeysUpToDate Tells whether P&S keys are valid or not.
       
   900         * @return Number of active connections
       
   901         */
       
   902         TInt NumberOfActiveConnections( TBool& aKeysUpToDate );
   815 
   903 
   816         /**
   904         /**
   817         * Returns server session instance that corresponds to given
   905         * Returns server session instance that corresponds to given
   818         * connection id.
   906         * connection id.
   819         * @since 5.2
   907         * @since 5.2
   823         */
   911         */
   824         CMPMServerSession* GetServerSession( TConnectionId aConnId ) const;
   912         CMPMServerSession* GetServerSession( TConnectionId aConnId ) const;
   825         
   913         
   826         /**
   914         /**
   827         * Stops cellular connections, except MMS
   915         * Stops cellular connections, except MMS
   828         * @since 5.2
   916         * @param aSilentOnly stop only silent cellular connections
   829         */
   917         * @since 5.2
   830         void StopCellularConns();
   918         */
   831         
   919         void StopCellularConns( TBool aSilentOnly = EFalse );
   832         /**
       
   833         * Handle to connection ui utilities
       
   834         */        
       
   835         inline CConnectionUiUtilities* ConnUiUtils() const;
       
   836 
   920 
   837         /**
   921         /**
   838         * Offline mode watcher updates the mode variable stored by MPM server.
   922         * Offline mode watcher updates the mode variable stored by MPM server.
   839         * @since 5.2
   923         * @since 5.2
   840         * @param aNewModeValue New offline mode value to be updated.
   924         * @param aNewModeValue New offline mode value
   841         */
   925         */
   842         void UpdateOfflineMode( TInt aNewModeValue );
   926         void UpdateOfflineMode( TInt aNewModeValue );
   843 
   927 
   844         /**
   928         /**
   845         * Tells if the phone is in offline mode.
   929         * Returns true if the phone is in offline mode.
   846         * @since 5.2
   930         * @since 5.2
   847         * @return ETrue if phone is in offline mode.
   931         * @return ETrue if phone is in offline mode, EFalse otherwise.
   848         */
   932         */
   849         TBool IsPhoneOffline();
   933         TBool IsPhoneOffline();
   850 
   934 
   851         /**
   935         /**
   852         * Tells the "Use WLAN in offline mode" query response.
   936         * Tells the "Use WLAN in offline mode" query response.
   853         * @since 5.2
   937         * @since 5.2
   854         * @return TOfflineWlanQueryResponse (not_responded/yes/no).
   938         * @return Response of offline mode query (Undefined if not executed)
   855         */
   939         */
   856         TOfflineWlanQueryResponse OfflineWlanQueryResponse();
   940         TOfflineWlanQueryResponse OfflineWlanQueryResponse();
   857 
   941 
   858         /**
   942         /**
   859         * Called when the "Use WLAN in offline mode" query has been responded.
   943         * Called when the "Use WLAN in offline mode" query has been responded.
   860         * @since 5.2
   944         * @since 5.2
   861         * @param aResponse setting the query response value (not_responded/yes/no).
   945         * @param aResponse Sets the Offline mode query response value.
   862         */
   946         */
   863         void SetOfflineWlanQueryResponse( TOfflineWlanQueryResponse aResponse);
   947         void SetOfflineWlanQueryResponse( TOfflineWlanQueryResponse aResponse);
   864 
   948 
   865         /**
   949         /**
   866         * Starts the connection permission query timer.
   950         * Starts the connection permission query timer.
   909                                 RArray<TUint32>& aAvailWlanIapIds,
   993                                 RArray<TUint32>& aAvailWlanIapIds,
   910                                 RAvailableIAPList& aIapList,
   994                                 RAvailableIAPList& aIapList,
   911                                 TBool aCheckForBestIap,
   995                                 TBool aCheckForBestIap,
   912                                 TMPMBearerType aDestinationBearerType );
   996                                 TMPMBearerType aDestinationBearerType );
   913         
   997         
       
   998         /**
       
   999          * Check if iap can be disconnected, and disconnect it
       
  1000          * @since 5.2
       
  1001          * @param aIapId Iap id for checking
       
  1002          */
       
  1003         void CheckIapForDisconnect( TInt aIapId );
   914 
  1004 
   915     private: // Data
  1005     private: // Data
   916         // Pointer to the ConnMonEvents object
  1006         // Pointer to the ConnMonEvents object
   917         CMPMConnMonEvents* iEvents;
  1007         CMPMConnMonEvents* iEvents;
   918 
  1008 
   949         CMPMRoamingWatcher* iRoamingWatcher;
  1039         CMPMRoamingWatcher* iRoamingWatcher;
   950 
  1040 
   951         // Is WLAN scan required or not before displaying Connection Dialog
  1041         // Is WLAN scan required or not before displaying Connection Dialog
   952         TBool iWLANScanRequired;
  1042         TBool iWLANScanRequired;
   953 
  1043 
       
  1044         // Solves problem with overlapping Disconnect Dialogs
       
  1045         CArrayPtrFlat<CMPMDisconnectDlg>* iDisconnectQueue;
       
  1046 
   954         // Solves problem with overlapping Roaming Dialogs
  1047         // Solves problem with overlapping Roaming Dialogs
   955         CArrayPtrFlat<CMPMConfirmDlgRoaming>* iRoamingQueue;
  1048         CArrayPtrFlat<CMPMConfirmDlgRoaming>* iRoamingQueue;
   956 
  1049 
   957         // Solves problem with overlapping Starting Dialogs
  1050         // Solves problem with overlapping Starting Dialogs
   958         CArrayPtrFlat<CMPMConfirmDlgStarting>* iStartingQueue;
  1051         CArrayPtrFlat<CMPMConfirmDlgStarting>* iStartingQueue;
   959 
  1052 
       
  1053         // Solves problem with overlapping Wlan Queries
       
  1054         CArrayPtrFlat<CMPMWlanQueryDialog>* iWlanQueryQueue;
       
  1055 
       
  1056         // Solves problem with overlapping Connection Dialogs
       
  1057         CArrayPtrFlat<CMPMDialog>* iConnectDialogQueue;
       
  1058         
       
  1059         // Handles Default Connection selection
       
  1060         CMPMDefaultConnection* iDefaultConnection;
       
  1061 
   960         // Keeps track of the number of connections
  1062         // Keeps track of the number of connections
   961         TUint iConnectionCounter;
  1063         TUint iConnectionCounter;
   962 
  1064 
   963         // Set when there is user connection exist
  1065         // Set when there is user connection exist
   964         TBool iUserConnection;
  1066         TBool iUserConnection;
   966         // Preferences selected for the user connection
  1068         // Preferences selected for the user connection
   967         TMpmConnPref iUserConnPref;
  1069         TMpmConnPref iUserConnPref;
   968 
  1070 
   969         // Set when user connection in internet snap
  1071         // Set when user connection in internet snap
   970         TBool iUserConnectionInInternet;
  1072         TBool iUserConnectionInInternet;
   971         
       
   972         // Count of sessions using VPN user connection
       
   973         //
       
   974         TInt iVpnUserConnectionSessionCount;        
       
   975         
  1073         
   976         /**
  1074         /**
   977          * Handle to central repository watcher
  1075          * Handle to central repository watcher
   978          * Own.
  1076          * Own.
   979          */
  1077          */
   980         CMpmCsIdWatcher* iMpmCsIdWatcher;
  1078         CMpmCsIdWatcher* iMpmCsIdWatcher;
   981 
  1079 
   982         /**
  1080         /**
   983          * Handle to VPN toggle central repository watcher.
       
   984          * Own.
       
   985          */
       
   986         CMpmVpnToggleWatcher* iMpmVpnToggleWatcher;
       
   987 
       
   988         /**
       
   989          * Handle to central repository watcher
  1081          * Handle to central repository watcher
   990          */
  1082          */
   991         CMpmDataUsageWatcher* iMpmDataUsageWatcher;
  1083         CMpmDataUsageWatcher* iMpmDataUsageWatcher;
   992 
  1084 
       
  1085         /**
       
  1086          * Handle to central repository watcher
       
  1087          */
       
  1088         CMpmOfflineWatcher* iMpmOfflineWatcher;
       
  1089 
       
  1090         // Iap id of the active connection
       
  1091         TUint32 iActiveIapId;
       
  1092         
       
  1093         // Snap id of the active connection
       
  1094         TUint32 iActiveSnapId;
       
  1095 
       
  1096         // Bearer type of the active connection
       
  1097         TMPMBearerType iActiveBearerType;
       
  1098 
   993         // Dedicated clients
  1099         // Dedicated clients
   994         RArray<TUint32> iDedicatedClients;
  1100         RArray<TUint32> iDedicatedClients;
   995 
  1101 
   996         // Used for commsdat related functionalities
  1102         // Used for commsdat related functionalities
   997         CMPMCommsDatAccess* iCommsDatAccess;
  1103         CMPMCommsDatAccess* iCommsDatAccess;
   998 
       
   999         // Handle to connection UI utilities
       
  1000         //
       
  1001         CConnectionUiUtilities* iConnUiUtils;
       
  1002         
  1104         
  1003         // Offline mode.
  1105         // Offline mode.
  1004         TInt iOfflineMode;
  1106         TInt iOfflineMode;
  1005         
  1107         
  1006         // Is WLAN usage already accepted in this offline session.
  1108         // Is WLAN usage already accepted in this offline session.
  1007         TOfflineWlanQueryResponse iOfflineWlanQueryResponse;
  1109         TOfflineWlanQueryResponse iOfflineWlanQueryResponse;
  1008         
  1110         
  1009         // Timer to start roaming to connected WLAN network 
  1111         // Timer to start roaming to connected WLAN network 
  1010         CPeriodic* iRoamingToWlanPeriodic;
  1112         CPeriodic* iRoamingToWlanPeriodic;
  1011 
  1113         
       
  1114         // Timer to start roaming to connected WLAN network 
       
  1115         CPeriodic* iRoamingToHotspotWlanPeriodic;
       
  1116         
  1012         // TConnMonIapInfo Info about available IAPs
  1117         // TConnMonIapInfo Info about available IAPs
  1013         TConnMonIapInfo iConnMonIapInfo;
  1118         TConnMonIapInfo iConnMonIapInfo;
  1014         
  1119         
  1015         // Connection permission query cancellation delay timer
  1120         // Connection permission query cancellation delay timer
  1016         CMPMConnPermQueryTimer* iConnPermQueryTimer;
  1121         CMPMConnPermQueryTimer* iConnPermQueryTimer;