connectionmonitoring/connmon/connectionmonitor/src/ConnMonBearerGroupManager.cpp
changeset 0 5a93021fdf25
--- /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