connectionmonitoring/connmon/connectionmonitor/inc/ConnMonIAP.h
changeset 0 5a93021fdf25
child 2 086aae6fc07e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonIAP.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,910 @@
+/*
+* Copyright (c) 2002-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:  Core functionality for ConnMon.
+*
+*/
+
+#ifndef CONNMONIAP_H
+#define CONNMONIAP_H
+
+#include <es_sock.h>
+#include <in_sock.h>
+#include <commdb.h>
+#include <es_enum.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <etelpckt.h>
+#include <pcktcs.h>
+#include <rconnmon.h>
+
+#include "ConnMonDef.h"
+#include "CWlanSupport.h"
+#include "connmondtmnoti.h"
+#include "connmontelnoti.h"
+
+class CConnMonIAP;
+class CConnUpDownNotifier;
+class CProgressNotifier;
+class CDataNotifier;
+class CNetwStatusNotifier;
+class CNetwRegistrationNotifier;
+class CBearerNotifier;
+class CWcdmaBearerNotifier;
+class CModeNotifier;
+class CGsmSignalNotifier;
+class CBearerAvailabilityNotifier;
+class CSubConnUpDownNotifier;
+class CActivityNotifier;
+class CConnMonServer;
+class CDataVolume;
+class CCsdFax;
+class CPsdFax;
+class CWlanSupport;
+class CConnMonBearerNotifier;
+
+// Record name for WLAN bearer table
+_LIT( KWlanBearerRecordName, "WLANBearer" );
+
+const TInt KPhoneRetryCount = 7;
+const TInt KPhoneRetryTimeout = 100000;
+const TInt KConnMonSmallBufferLen = 30;
+const TInt KBitsInByte = 8;
+const TInt KAttributeParameterIndex = 3;
+
+/**
+* TConnInfo
+* Connection information record.
+*/
+class TConnInfo
+    {
+    public: // Constructors and destructor
+        TConnInfo(
+                TInt aIapId,
+                TInt aNetId,
+                TUint aConnectionId,
+                TInt aBearer,
+                TBearerInfo aBearerInfo );
+
+    public:
+        void Reset();
+        static TInt Compare( const TConnInfo& aFirst, const TConnInfo& aSecond );
+        static TBool MatchId( const TConnInfo& aFirst, const TConnInfo& aSecond );
+        static TBool MatchIap( const TConnInfo& aFirst, const TConnInfo& aSecond );
+        static TBool MatchBearer( const TConnInfo& aFirst,const TConnInfo& aSecond );
+
+    public: // Data
+        // IAP Id
+        TUint32 iIapId;
+
+        // Net Id
+        TUint32 iNetId;
+
+        // Unique connection id
+        TUint iConnectionId;
+
+        // Bearer type
+        TInt iBearer;
+
+        // RConnection object that is open and attached
+        RConnection* iConnAttach;
+
+        // Connection status notifier
+        CProgressNotifier* iProgressNotifier;
+
+        // Downlink data volume notifier
+        CDataNotifier* iDLDataNotifier;
+
+        // Uplink data volume notifier
+        CDataNotifier* iULDataNotifier;
+
+        // Active object for getting KDownlinkData and KUplinkData
+        CDataVolume* iDataVolumeAO;
+
+        // Connection down notifier
+        CSubConnUpDownNotifier* iConnDownNotifier;
+
+        // Connection activity notifier
+        CActivityNotifier* iActivityNotifier;
+
+        // 0 means that connection is idle
+        // 1 means that there is data moving through the connection
+        TUint8 iActivity;
+
+        // Bearer info
+        TBearerInfo iBearerInfo;
+
+        // BearerInfo/BearerGroup notifier
+        CConnMonBearerNotifier* iBearerNotifier;
+    };
+
+/**
+* CConnMonIAP
+*/
+NONSHARABLE_CLASS( CConnMonIAP )
+        :
+        public CBase,
+        public MConnMonTelephonyObserver,
+        public MConnMonDtmNotifierObserver
+    {
+    public: // Constructors and destructor
+        CConnMonIAP( CConnMonServer* aServer );
+        void ConstructL();
+        ~CConnMonIAP();
+
+    public: // New methods
+        /**
+         * Enumerates active connections.
+         * @since
+         * @param aCount On return, contains the number of the active connection
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt EnumerateConnections( TUint& aCount );
+
+        /**
+         * Enumerates active connections.
+         * @since
+         * @param aCount On return, contains the number of the active connection
+         * @param aEnumInfo On return, contains the enumarated connection ids.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt EnumerateConnectionsL( TUint& aCount, CArrayFixFlat<TUint>& aEnumInfo );
+
+        /**
+         * Checks if given connection id is valid.
+         * @since
+         * @param aConnectionId Connection id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TBool ConnectionExists( const TUint& aConnectionId );
+
+        /**
+         * Gets the count of the subconnections.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aSubConnectionCount On return, contains the count of the subconnections.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetConnectionInfo( const TUint& aConnectionId, TUint& aSubConnectionCount );
+
+        /**
+         * Gets a TInt attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue On return, contains the value.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetIntAttributeL( const RMessage2& aMessage, TInt& aValue );
+
+        /**
+         * Gets a TUint attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue On return, contains the value.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetUintAttributeL( const RMessage2& aMessage, TUint& aValue );
+
+        /**
+         * Gets a TBool attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue On return, contains the value.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetBoolAttributeL( const RMessage2& aMessage, TBool& aValue );
+
+
+        /**
+         * Gets a TDes attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue On return, contains the value.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetStringAttribute( const RMessage2& aMessage, TDes& aValue );
+
+        /**
+         * Gets the UIDs of the clients using a connection. UIDs are 0 in WINS.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aClientEnum On return, contains the count of the clients and their uids.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetUids( const TUint aConnectionId, TConnMonClientEnum& aClientEnum );
+
+        /**
+         * Sets a TUint attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue Value to be set.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt SetUintAttribute( const RMessage2& aMessage, const TUint aValue );
+
+        /**
+         * Sets a TBool attribute.
+         * @since
+         * @param aMessage Reference to client message, containing the attribute information.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt SetBoolAttribute( const RMessage2& aMessage );
+
+        /**
+         * Sets a String attribute.
+         * @since
+         * @param aMessage Reference to client message.
+         * @param aValue Value to be set.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt SetStringAttributeL( const RMessage2& aMessage, const TDes& aValue );
+
+        /**
+         * Turns notifications ON.
+         */
+        void ListenL();
+
+        /**
+         * Turns notifications OFF.
+         * @since
+         * @return void
+         */
+        void CancelListen();
+
+        /**
+         * Adds a connection to the global array and starts notifications for it.
+         * @since
+         * @param aConnection New connection information.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt AddConnectionL( TConnInfo& aConnection );
+
+        /**
+         * Removes connection from global array and stops notifications.
+         * @since
+         * @param aConnection Connection information.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt RemoveConnection( TConnInfo& aConnection );
+
+        /**
+         * Gets a pointer to the RConnection handle.
+         * @since
+         * @return A pointer to the RConnection handle.
+         */
+        inline RConnection* Rconnection()
+            {
+            return &iConnection;
+            }
+
+        /**
+         * Gets a pointer to the packet service handle.
+         * @since
+         * @return A pointer to the packet service handle.
+         */
+        inline const RPacketService* PacketService() const
+            {
+            return &iPacketService;
+            }
+
+        /**
+         * Gets a pointer to the WLAN management services.
+         * @since
+         * @return A pointer to the WLAN management services.
+         */
+        inline CWlanSupport* WlanSupport()
+            {
+            return iWlanSupport;
+            }
+
+        /**
+         * Gets a pointer to the RMobilePhone handle.
+         * @since
+         * @return A pointer to the iMobilePhone member.
+         */
+        inline const RMobilePhone* MobilePhone() const
+            {
+            return &iMobilePhone;
+            }
+
+        /**
+         * Gets TConnMonNetworkStatus matching ETel network status.
+         * @since
+         * @param aPacketStatus Packet network status returned by ETel server.
+         * @return TConnMonNetworkStatus.
+         */
+        TInt CalculateNetworkStatus(
+                const RPacketService::TStatus& aPacketStatus ) const;
+
+        /**
+         * Gets TConnMonNetworkRegistration matching ETel network registration status.
+         * @since
+         * @param aRegistration Network registration status returned by ETel server.
+         * @return TConnMonNetworkRegistration.
+         */
+        TInt CalculateNetworkRegistration(
+                const RMobilePhone::TMobilePhoneRegistrationStatus& aRegistration ) const;
+
+        /**
+         * Gets TConnMonNetworkRegistration_v2 matching ETel network registration status.
+         * @since
+         * @param aRegistration Network registration status returned by ETel server.
+         * @return TConnMonNetworkRegistration_v2.
+         */
+        TInt CalculateNetworkRegistration_v2(
+                const RMobilePhone::TMobilePhoneRegistrationStatus& aRegistration ) const;
+
+        /**
+         * Tells whether this cell supports EdgeGPRS or GPRS.
+         * @since
+         * @return ETrue if cell supports Edge, EFalse otherwise.
+         */
+        TBool IsEdgeCell();
+
+        /**
+         * Tells whether this cell supports Hsdpa or WCDMA.
+         * @since
+         * @return ETrue if cell supports Hsdpa, EFalse otherwise.
+         */
+        TBool IsHsdpaCell();
+
+        /**
+         * Tells whether this cell supports Hsdpa and/or Hsupa.
+         * @since MCL 9.1
+         * @return EBearerInfoWCDMA if no high speed features detected, or
+         * EBearerInfoHSDPA / EBearerInfoHSUPA / EBearerInfoHSxPA.
+         */
+        TInt HsxpaStatus();
+
+        /**
+         * Gets the time when the connection has started.
+         * @since
+         * @param aConnectionId The connection id.
+         * @param aTime On return, contains the starting time of the connection.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetStartTime( const TUint& aConnectionId, TTime& aTime );
+
+        /**
+         * Gets the bearer info for an internal connection.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aBearer On return, contains the bearer.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetBearer(
+                const TUint& aConnectionId,
+                TInt& aBearer,
+                TBearerInfo& aBearerInfo );
+
+        /**
+         * Updates activity information to connection array.
+         * @since
+         * @param aConnectionId The connection id.
+         * @param aActivity 0 means idle, 1 means active.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt UpdateActivity( const TUint& aConnectionId, const TUint& aActivity );
+
+        /**
+         * Checks if subconnection level notifier has already sent connection
+         * closed event.
+         * @since
+         * @param aConnection The connection info. On return, will contain connection id.
+         * @param aSent On return, value is ETrue if event has been sent, EFalse otherwise.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TBool GetDeleteNotifyStatus( TConnInfo& aConnection, TBool& aSent );
+
+        /**
+         * Gets a pointer to the activity notifier object for the given connection id.
+         * @since
+         * @param aConnectionId The connection id.
+         * @param aActivityNotifier On return, pointer to the activity notifier.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetActivityNotifier(
+                const TUint& aConnectionId,
+                CActivityNotifier** aActivityNotifier );
+
+        /**
+         * Gets a pointer to the progress notifier object for the given connection id.
+         * @since
+         * @param aConnectionId The connection id.
+         * @param aProgressNotifier On return, pointer to the progress notifier.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetProgressNotifier(
+                const TUint& aConnectionId,
+                CProgressNotifier** aProgressNotifier );
+
+        /**
+         * Gets a pointer to the subconnection up/down notifier object for the
+         * given connection id.
+         * @since
+         * @param aConnectionId The connection id.
+         * @param aSubConnUpDownNotifier On return, pointer to the subconnection
+         * up/down notifier.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetSubConnUpDownNotifier(
+                const TUint& aConnectionId,
+                CSubConnUpDownNotifier** aSubConnUpDownNotifier );
+
+        /**
+         * Wakes up CONNECTION SPECIFIC notifications that depend on threshold values.
+         * @since
+         * @param aConnectionId Connection Id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt WakeUpNotifications( const TUint& aConnectionId );
+
+        /**
+         * Wakes up GENERAL notifications that depend on threshold values.
+         * @since
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt WakeUpNotifications();
+
+        /**
+         * Starts activity notifier for the given connection id.
+         * @since
+         * @param aConnectionId Connection Id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt LaunchActivityNotifierL( const TUint& aConnectionId );
+
+        /**
+         * Starts data notifiers (uplink & downlink) for the given connection id.
+         * @since
+         * @param aConnectionId Connection Id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt LaunchDataNotifiers( const TUint& aConnectionId );
+
+        /**
+         * Starts bearer notifiers for the given connection id.
+         * @since
+         * @param aConnectionId Connection Id.
+         * @return KErrNone if successfull, otherwise KErrNotFound.
+         */
+        TInt LaunchBearerNotifier( const TUint& aConnectionId );
+
+        /**
+         * Appends active connections (iapID & netID) with matching aBearerId
+         * to aIdArray.
+         *
+         * @param aBearerId Identifies the bearer.
+         * @param aIdArray On return contains the use IAP IDs for the active
+         * connections matching the given aBearerId parameter.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        void GetActiveConnectionsIds( const TUint& aBearerId, RArray<TUint>& aIdArray );
+
+        /**
+         * Tells whether bearer is supported or not.
+         * @since
+         * @param aConnectionId Generic bearer id (EBearerIdGPRS, EBEarerIdCSD).
+         * @param aByCell On return, ETrue if the bearer is supported by the cell, EFalse otherwise.
+         * @param aByPhone On return, ETrue if the bearer is supported by the phone, EFalse otherwise.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetBearerSupportInfo(
+                const TUint aConnectionId,
+                TBool& aByCell,
+                TBool& aByPhone ) const;
+
+        /**
+         * Gets the bearer is matching the phone's mode.
+         * @since
+         * @param aBeareId On return, the bearer id matching the phone's mode.
+         * @param aCsd ETrue is CS bearer wanted, EFalse is PS bearer wanted.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetBearerId( TUint& aBearerId, TBool aCsd=EFalse ) const;
+
+       /**
+         * Destroys the old record and creates a new one because connection has reconnected.
+         * @since
+         * @param aConnectionId The old connectionId. On return it will be replaced by the new Id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt Reconnect( TUint& aConnectionId );
+
+        /**
+         * Saves network ids selected by the end user.
+         * @since
+         * @param aLanPreference A string of comma separated network id e.g. 1,2,5.
+         * @return void
+         */
+        void SetEndUserLanPreference( const TDes8& aLanPreference )
+            {
+            iEndUserNetIds = aLanPreference;
+            }
+
+        /**
+         * Gets network ids selected by the end user.
+         * @since
+         * @param aLanPreference On return contains a string of comma separated network id e.g. 1,2,5.
+         * @return void
+         */
+        void GetEndUserLanPreference( TDes8& aLanPreference )
+            {
+            aLanPreference = iEndUserNetIds;
+            }
+
+        /**
+         * Resets network ids.
+         * @since
+         * @return void
+         */
+        void ResetEndUserLanPreference()
+            {
+            iEndUserNetIds.Zero();
+            iEndUserNetIds.FillZ();
+            }
+
+        /**
+         * Check if WLAN is supported and connection ID is correct.
+         *
+         * @param aConnectionId Connection ID of the connection.
+         * @return KErrNone when successfull, otherwise a system wide error code.
+         */
+        TInt WlanSupportCheck( const TUint& aConnectionId );
+
+        /**
+         * Appends available WLAN IAPs. IAPs are queried from WLAN engine, if
+         * WLAN scanning flag is set, otherwise cache is used.
+         *
+         * @param aIapBuf On return, contains the available WLAN IAPs.
+         * @return KErrNone when successfull, otherwise a system wide error code.
+         */
+        TInt AppendAvailableWLANIaps( RArray<TUint>& aIdArray );
+
+        /**
+         * Appends available WLAN IAPs. IAP info is read from CommsDat. Those
+         * IAPs with a matching SSID with the current WLAN connection are
+         * marked available.
+         * @since 3.2
+         * @param aIapBuf On return, contains the available WLAN IAPs.
+         * @return KErrNone when successfull, otherwise a system wide error code.
+         */
+        TInt AppendAvailableWLANIapsBySsid( RArray<TUint>& aIdArray );
+
+        /**
+         * Enables WLAN scan for the next iap availability query.
+         * @since
+         * @return void
+         */
+        void EnableWlanScan();
+
+        /**
+         * Callback function from iDualTransferModeNotifier
+         */
+        virtual void DtmStateChanged();
+
+        /**
+         * Callback function from iTelephonyNotifier
+         */
+        virtual void PhoneLineStatusChange();
+
+        /**
+         * Gets the network registration status.
+         * @since
+         * @param aNetworkStatus On return, contains the current network registration status.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetNetworkRegistrationMode( TInt& aRegistration ) const;
+
+        /**
+         * Gets the bearer for the connection.
+         * @since 3.2
+         * @param aConnectionId Id of the connection.
+         * @return KErrNone if successfull, otherwise KErrNotFound.
+         */
+        TInt GetBearerInfo( const TUint aConnectionId, TBearerInfo& aBearerInfo );
+
+        /**
+         * Sends a bearer group changed event.
+         * @since
+         * @param aBearerinfo New bearer to find out the new bearer
+         * groups.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        void SendConnectionEvents( TConnMonBearerInfo& aBearerinfo );
+
+        /**
+         * Gets the last error value returned with connection status.
+         * Error code indicates the reason of connection closure.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aProgress On return, contains the last progress status and error code.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt LastProgressError( const TUint&  aConnectionId, TNifProgress& aProgress );
+
+        /**
+         * Check if the WLAN connection received signal strength is strong
+         * enough to maintain a decent quality connection.
+         *
+         * @since S60 v5.2
+         * @return ETrue if RSS is strong enough, EFalse in any other situation
+         * (weak signal, no WLAN connection, WLAN not supported... ).
+         */
+        TBool WlanRssGoodEnough();
+
+    private: // New methods
+        /**
+         * Opens and attaches to a connection.
+         * @since
+         * @param aConnInfo  Connection info record.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt OpenAndAttachTo( TConnInfo& aConnInfo );
+
+        /**
+         * Stops a connection.
+         * @since
+         * @param aIndex  iConnInfos index for the connection.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt StopConnection( const TInt aIndex );
+
+        /**
+         * Creates a new unique connection id.
+         * @since
+         * @return New connection id.
+         */
+        TUint NewConnectionId();
+
+        /**
+         * Gets the iConnInfos array index for a connection id.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @return iConnInfos index for connection id.
+         */
+        TInt Index( const TUint& aConnectionId );
+
+        /**
+         * Starts connection specific notifications (status, data volume, activity).
+         * @since
+         * @param aIndex  iConnInfos index for the connection.
+         * @return void
+         */
+        void AddConnNotificationsL( const TInt& aIndex );
+
+        /**
+         * Stops connection specific notifications (status, data volume, activity).
+         * @since
+         * @param aIndex  iConnInfos index for the connection.
+         * @return void
+         */
+        void DeleteConnNotifications( const TInt& aIndex );
+
+        /**
+         * Stops all the notifications.
+         * @since
+         * @return void
+         */
+        void DeleteNotifications();
+
+        /**
+         * Gets the access point name from commDB.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aName On return, contains the access point name.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetAccessPointName( const TUint& aConnectionId, TDes& aName );
+
+        /**
+         * Gets the telephone number from commDB.
+         * @since
+         * @param aConnectionId  Connection id.
+         * @param aTelNum On return, contains the tel number.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetTelNumber( const TUint& aConnectionId, TDes& aTelNum );
+
+        /**
+         * Gets the connection status.
+         * @since
+         * @param aIndex Index of the connection info in iConnInfos array.
+         * @param aConnectionStatus On return, contains the status of the connection.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetConnectionStatus( const TInt& aIndex, TInt& aConnectionStatus );
+
+        /**
+         * Gets the packet network status.
+         * @since
+         * @param aNetworkStatus On return, contains the current psd network status.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetPsdNetworkStatus( TInt& aNetworkStatus ) const;
+
+        /**
+         * Gets the network registration status.
+         * @since
+         * @param aNetworkStatus On return, contains the current network registration status.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetNetworkRegistration( TInt& aRegistration ) const;
+
+        /**
+         * Gets the network roaming status.
+         * @since
+         * @param aNetworkStatus On return, contains the current network registration status.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetNetworkRegistration_v2( TInt& aRegistration ) const;
+
+        /**
+         * Gets the GSM signal strength.
+         * @since
+         * @param aSignalStrength On return, contains the GSM signal strength in dBs.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetGSMSignalStrength( TInt& aSignalStrength ) const;
+
+        /**
+         * Gets the protocol type.
+         * @since
+         * @param aProtocolType On return, contains type the protocol (ip4,ip6).
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetProtocolTypeL( const TUint& aConnectionId, TInt& aProtocolType );
+
+        /**
+         * Gets the connection activity information asynchronously.
+         * @since
+         * @param aIndex Index of the connection info in iConnInfos array.
+         * @return void
+         */
+        void GetActivityOneShotL( const TInt& aIndex );
+
+        /**
+         * Gets the bearer info CSD/HSCSD from ETel.
+         * @since
+         * @param aNumber The dial up number of the call that will be used
+         * to match RConnection object to ETel object.
+         * @param aBearer On return, contains the bearer.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt GetBearerFromETel(
+                const TDes& aNumber,
+                TInt& aBearer,
+                TBearerInfo& aBearerInfo );
+
+        /**
+         * Compares two access point names.
+         * @since
+         * @param aNameFromCommDB The access point name (UNICODE) from commDB.
+         * @param aNameFromETel   The access point name (UNICODE) that ETel object is using.
+         * @return 0 if access point names are equal.
+         */
+        TInt CompareAccessPointNames(
+                const TDesC& aNameFromCommDB,
+                const TDesC& aNameFromETel ) const;
+
+        /**
+         * Compares two access point names.
+         * @since
+         * @param aNameFromCommDB The access point name (UNICODE) from commDB.
+         * @param aNameFromETel   The access point name (UTF8) that ETel object is using.
+         * @return 0 if access point names are equal.
+         */
+        TInt CompareAccessPointNames(
+                const TDesC& aNameFromCommDB,
+                const TDesC8& aNameFromETel ) const;
+
+        /**
+         * In case that a new connection has arrived with the same IAP
+         * id as one in the connection info array (that is closing but
+         * some event has not yet occured) the previous connection is
+         * removed and the needed event are sent.
+         * @since
+         * @param aIndex Index number in connection info array.
+         */
+        void CompleteConnectionClosing( TInt& aIndex );
+
+        /**
+         * Takes a connection specific or a bearer specific connection id and
+         * calculates the respective bearer specific connection id.
+         * @since MCL 9.1
+         * @param aConnId The connection id.
+         * @param aBearerId On return, contains the propper bearer specific connection id.
+         * @return KErrNone if successfull, otherwise a system wide error code.
+         */
+        TInt BearerIdForBearerAvailability( const TUint& aConnId, TUint& aBearerId );
+
+    private: // Data
+        // Array that stores connection information records
+        RArray<TConnInfo> iConnInfos;
+
+        // Pointer to server module
+        CConnMonServer* iServer;
+
+        // Handle to socket server
+        RSocketServ iSocketServer;
+
+        // Handle to RConnection
+        RConnection iConnection;
+
+        // Used when allocating new connection ids
+        TUint iIdCounter;
+
+        // Handle to the telephony server
+        RTelServer iTelServer;
+
+        // Handle to the packet service
+        RPacketService iPacketService;
+
+        // RMobilePhone handle
+        RMobilePhone iMobilePhone;
+
+        // Pointer to CSD fax handler module
+        CCsdFax* iCsdFax;
+
+        // Pointer to PSD fax handler module
+        CPsdFax* iPsdFax;
+
+        // Connection up/down event watcher
+        CConnUpDownNotifier* iConnUpDownNotifier;
+
+        // PSD network status event watcher
+        CNetwStatusNotifier* iPsdNetwStatusNotifier;
+
+        // Network registration status event watcher
+        CNetwRegistrationNotifier* iNetwRegistrationNotifier;
+
+        // Bearer change (GPRS/Edge GPRS) event watcher
+        CBearerNotifier* iEdgeNotifier;
+
+        // Bearer change (Wcdma/Hsdpa) event watcher
+        CWcdmaBearerNotifier* iWcdmaNotifier;
+
+        // Mode change (2G <-> 3G)
+        CModeNotifier* iModeNotifier;
+
+        // GSM signal strength event watcher
+        CGsmSignalNotifier* iGSMSignalNotifier;
+
+        // GPRS / CSD bearer availability changed event watcher
+        CBearerAvailabilityNotifier* iGSMBearerAvailabilityNotifier;
+
+        // Number of clients that are listening to events
+        TUint8 iCountListeners;
+
+        // 1 = phone tsy is loaded, 0 = tsy is not loaded
+        TUint8 iTSYLoaded;
+
+        // 1 = packet services are loaded, 0 = not loaded
+        TUint8 iPacketServLoaded;
+
+        // End user LAN network selection
+        TBuf8<KCommsDbSvrMaxFieldLength> iEndUserNetIds;
+
+        // Pointer to WLan management service
+        CWlanSupport* iWlanSupport;
+
+        // Phone call status watcher.
+        CConnMonTelNotifier* iTelephonyNotifier;
+
+        // DTM status watcher.
+        CConnMonDtmNotifier* iDualTransferModeNotifier;
+    };
+
+#endif // CONNMONIAP_H
+
+// End-of-file