diff -r 000000000000 -r 5a93021fdf25 connectionmonitoring/connmon/connectionmonitor/src/ConnMonBearerGroupManager.cpp --- /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