connectionmonitoring/connmon/connectionmonitor/src/ConnMonBearerGroupManager.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:33:49 +0200
changeset 2 086aae6fc07e
parent 0 5a93021fdf25
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* 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