cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp
changeset 27 489cf6208544
parent 23 7ec726f93df1
child 40 c5b848e6c7d1
--- a/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Fri May 14 16:15:46 2010 +0300
+++ b/cmmanager/cmmgr/cmmplugins/cmpluginpacketdata/src/cmpluginpacketdata.cpp	Thu May 27 13:17:01 2010 +0300
@@ -17,11 +17,12 @@
 */
 
 
-#include <stringloader.h>
-#include <FeatMgr.h>
+#include <StringLoader.h>
+#include <featmgr.h>
 #include <centralrepository.h>
 #include <CoreApplicationUIsSDKCRKeys.h>
 
+#include "datamobilitycommsdattypes.h"
 #include "cmpluginpacketdata.h"
 
 #include "OstTraceDefinitions.h"
@@ -34,9 +35,7 @@
 
 // ================= CONSTANTS =======================
 
-const TUint32 KDefaultPriorityPacketData = 1;
-
-/// Modem bearer names for GPRS/WCDMA Access Points
+/// Modem bearer names for GPRS/WCDMA access points.
 _LIT( KModemBearerPacketData, "GPRS Modem" );
 _LIT( KDefaultQosDataRecordName, "PRIMARY1" );
 _LIT( KDefaultQosDataRecordNamewithSpace, "PRIMARY1 " );
@@ -313,6 +312,16 @@
     FeatureManager::InitializeLibL();
     CCmPluginBaseEng::ConstructL();
 
+    // Get bearer priority table ID.
+    TRAP_IGNORE( iBearerPriorityTableId =
+            CCDGlobalBearerTypePriorizationRecord::TableIdL( iSession ) );
+
+    if ( !iBearerPriorityTableId )
+        {
+        iBearerPriorityTableId =
+                CCDGlobalBearerTypePriorizationRecord::CreateTableL( iSession );
+        }
+
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_CONSTRUCTL_EXIT );
     }
 
@@ -385,11 +394,13 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_PREPAREPLUGINTOUPDATERECORDSL_ENTRY );
 
-    CCDIAPRecord* iapRecord =
-                static_cast<CCDIAPRecord*>( aGenRecordArray[KIapRecordIndex] );
-
-    CCDWCDMAPacketServiceRecord* serviceRecord =
-            static_cast<CCDWCDMAPacketServiceRecord*>( aGenRecordArray[KServiceRecordIndex] );
+    //TODO, Add null checks for mandatory specific record pointers.
+
+    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+            aGenRecordArray[KIapRecordIndex] );
+
+    CCDWCDMAPacketServiceRecord* serviceRecord = static_cast<CCDWCDMAPacketServiceRecord*>(
+            aGenRecordArray[KServiceRecordIndex] );
 
     CheckIfNameModifiedL( iapRecord, serviceRecord );
 
@@ -418,7 +429,7 @@
     {
     OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_SETDAEMONNAMEL_ENTRY );
 
-    // use DHCP if we can
+    // Use DHCP if we can.
     TBool ipfromSrv = GetBearerBoolAttributeL( EPacketDataIPAddrFromServer,
                                                aGenRecordArray,
                                                aBearerSpecRecordArray );
@@ -1231,9 +1242,13 @@
                 }
                 break;
             case ECmDefaultUiPriority:
+                {
+                retVal = GetDefPriorityL( aAttribute );
+                }
+                break;
             case ECmDefaultPriority:
                 {
-                retVal = KDefaultPriorityPacketData;
+                retVal = GetDefPriorityL( aAttribute );
                 }
                 break;
             case ECmExtensionLevel:
@@ -2492,11 +2507,14 @@
             retVal = KCommDbBearerWcdma;
             }
             break;
-
         case ECmDefaultUiPriority:
+            {
+            retVal = GetDefPriorityL( aAttribute );
+            }
+            break;
         case ECmDefaultPriority:
             {
-            retVal = KDefaultPriorityPacketData;
+            retVal = GetDefPriorityL( aAttribute );
             }
             break;
         case ECmExtensionLevel:
@@ -2984,4 +3002,46 @@
     OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETBEARERTABLEIDSTOBEOBSERVEDL_EXIT );
     }
 
+// ---------------------------------------------------------------------------
+// CCmPluginPacketData::GetDefPriorityL
+// ---------------------------------------------------------------------------
+//
+TUint32 CCmPluginPacketData::GetDefPriorityL( const TUint32 aAttribute ) const
+    {
+    OstTraceFunctionEntry0( CCMPLUGINPACKETDATA_GETDEFPRIORITYL_ENTRY );
+
+    TUint32 retVal( KDataMobilitySelectionPolicyPriorityWildCard );
+
+    CCDGlobalBearerTypePriorizationRecord* priorityRecord =
+            new( ELeave ) CCDGlobalBearerTypePriorizationRecord( iBearerPriorityTableId );
+    CleanupStack::PushL( priorityRecord );
+
+    priorityRecord->iServiceType.SetL( TPtrC( KCDTypeNameOutgoingWCDMA ) );
+
+    if ( priorityRecord->FindL( iSession ) )
+        {
+        priorityRecord->LoadL( iSession );
+
+        switch ( aAttribute )
+            {
+            case ECmDefaultPriority:
+                {
+                retVal = priorityRecord->iPriority;
+                }
+                break;
+            case ECmDefaultUiPriority:
+                {
+                retVal = priorityRecord->iUIPriority;
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    CleanupStack::PopAndDestroy( priorityRecord );
+
+    OstTraceFunctionExit0( CCMPLUGINPACKETDATA_GETDEFPRIORITYL_EXIT );
+    return retVal;
+    }
+
 // End of file