--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonBearerGroupManager.cpp Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2006-2007 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: Implementation for bearer and bearer group mapping.
+*
+*/
+
+#include "ConnMonBearerGroupManager.h"
+#include "log.h"
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CConnMonBearerGroupManager::CConnMonBearerGroupManager()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CConnMonBearerGroupManager* CConnMonBearerGroupManager::NewL()
+ {
+ CConnMonBearerGroupManager* bgm = new( ELeave ) CConnMonBearerGroupManager();
+
+ CleanupStack::PushL( bgm );
+ bgm->ConstructL();
+ CleanupStack::Pop( bgm );
+
+ return bgm;
+ }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+void CConnMonBearerGroupManager::ConstructL()
+ {
+ // Create group masks for each bearer
+ // NOTE: Masks must be appended in correct order to be able to use
+ // TConnMonDetailedBearer enumeration as indexes
+
+ iBearerGroupMasks1.Reset();
+ // EBearerUnknown
+ TUint unknown( 0 );
+ User::LeaveIfError( iBearerGroupMasks1.Append( unknown ) );
+
+ //EBearerCSD
+ TUint csd = EBearerGroupCellular | EBearerGroupCircuitSwitched | EBearerGroup2G;
+ User::LeaveIfError( iBearerGroupMasks1.Append( csd ) );
+
+ // EBearerWCDMA
+ TUint wcdma = EBearerGroupCellular | EBearerGroupCellularPacket | EBearerGroup3G;
+ User::LeaveIfError( iBearerGroupMasks1.Append( wcdma ) );
+
+ // EBearerLAN
+ TUint lan = EBearerGroupNonCellular | EBearerGroupLANBased | EBearerGroupWired;
+ User::LeaveIfError( iBearerGroupMasks1.Append( lan ) );
+
+ // EBearerCDMA2000
+ TUint cdma2000 = 0;
+ User::LeaveIfError( iBearerGroupMasks1.Append( cdma2000 ) );
+
+ // EBearerGPRS
+ TUint gprs = EBearerGroupCellular | EBearerGroupCellularPacket |
+ EBearerGroup2G | EBearerGroup2GPacket;
+ User::LeaveIfError( iBearerGroupMasks1.Append( gprs ) );
+
+ // EBearerHSCSD
+ TUint hscsd = EBearerGroupCellular | EBearerGroupCircuitSwitched | EBearerGroup2G;
+ User::LeaveIfError( iBearerGroupMasks1.Append( hscsd ) );
+
+ // EBearerEdgeGPRS
+ TUint egprs = EBearerGroupCellular | EBearerGroupCellularPacket |
+ EBearerGroup2G | EBearerGroup2GPacket;
+ User::LeaveIfError( iBearerGroupMasks1.Append( egprs ) );
+
+ // EBearerWLAN
+ TUint wlan = EBearerGroupNonCellular | EBearerGroupLANBased | EBearerGroupWLAN;
+ User::LeaveIfError( iBearerGroupMasks1.Append( wlan ) );
+
+ // EBearerBluetooth
+ TUint bt = EBearerGroupNonCellular | EBearerGroupIPOverConnectivityProtocol;
+ User::LeaveIfError( iBearerGroupMasks1.Append( bt ) );
+
+ // EBearerVirtual
+ TUint virt = EBearerGroupVirtual;
+ User::LeaveIfError( iBearerGroupMasks1.Append( virt ) );
+
+ // EBearerVirtualVPN
+ TUint virtVPN = EBearerGroupVirtual;
+ User::LeaveIfError( iBearerGroupMasks1.Append( virtVPN ) );
+
+ // EBearerWcdmaCSD
+ TUint wcdmaCSD = EBearerGroupCellular | EBearerGroupCircuitSwitched | EBearerGroup3G;
+ User::LeaveIfError( iBearerGroupMasks1.Append( wcdmaCSD ) );
+
+ // EBearerHSDPA
+ TUint hsdpa = EBearerGroupCellular | EBearerGroupCellularPacket |
+ EBearerGroup3G | EBearerGroup3GPacket | EBearerGroupHSPA;
+ User::LeaveIfError( iBearerGroupMasks1.Append( hsdpa ) );
+
+ // EBearerHSUPA (== EBearerHSDPA in this sense)
+ TUint hsupa = hsdpa;
+ User::LeaveIfError( iBearerGroupMasks1.Append( hsupa ) );
+
+ // EBearerHSxPA (== EBearerHSDPA and EBearerHSUPA in this sense)
+ TUint hsxpa = hsdpa;
+ User::LeaveIfError( iBearerGroupMasks1.Append( hsxpa ) );
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CConnMonBearerGroupManager::~CConnMonBearerGroupManager()
+ {
+ iBearerGroupMasks1.Close();
+ iBearerGroupMasks2.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// GetBearerGroups
+// ---------------------------------------------------------------------------
+//
+TInt CConnMonBearerGroupManager::GetBearerGroups(
+ const TConnMonBearerInfo aBearer,
+ TUint& aBearerGroups1,
+ TUint& aBearerGroups2 )
+ {
+ // Check first group mask
+ if ( iBearerGroupMasks1.Count() > 0 )
+ {
+ if ( iBearerGroupMasks1.Count() >= aBearer )
+ {
+ aBearerGroups1 = iBearerGroupMasks1[aBearer];
+ }
+ else
+ {
+ return KErrNotFound;
+ }
+ }
+ else
+ {
+ return KErrNotFound;
+ }
+
+ // And second
+ if ( iBearerGroupMasks2.Count() > 0 )
+ {
+ if ( iBearerGroupMasks2.Count() >= aBearer )
+ {
+ aBearerGroups2 = iBearerGroupMasks2[aBearer];
+ }
+ else
+ {
+ return KErrNotFound;
+ }
+ }
+
+ return KErrNone;
+ }
+
+// End of file