dbcreator/commsdatcreator/Src/cdccommsdatcreator.cpp
changeset 0 5a93021fdf25
child 20 9c97ad6591ae
child 57 05bc53fe583b
equal deleted inserted replaced
-1:000000000000 0:5a93021fdf25
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Module for creating CommsDat from an input file
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 
       
    23 #include "cdccommsdatcreator.h"
       
    24 #include "cdclogger.h"
       
    25 #include "cdcreaderxml.h"
       
    26 #include "cdcprocessorpacketdata.h"
       
    27 #include "cdcprocessorwlan.h"
       
    28 #include "cdcprocessorlan.h"
       
    29 #include "cdcprocessorvpn.h"
       
    30 #include "cdcprocessordn.h"
       
    31 #include "cdcprocessorglobal.h"
       
    32 #include "cdcwlantables.h"
       
    33 #include "cdcwlandevicesettings.h"
       
    34 #include "cdcdatamobilitytables.h"
       
    35 #include "cdcdumptables.h"
       
    36 #include "centralrepository.h"
       
    37 
       
    38 #include <cmconnectionmethoddef.h>
       
    39 #include <cmmanagerext.h>
       
    40 
       
    41 #include <e32def.h>
       
    42 #include <e32base.h>
       
    43 #include <s32strm.h>
       
    44 #include <s32file.h>
       
    45 #include <etelpckt.h>
       
    46 #include <featmgr.h>
       
    47 #include <commsdattypesv1_1.h>
       
    48 #include <commsdattypeinfov1_1.h>
       
    49 
       
    50 
       
    51 // CONSTANTS
       
    52 //maximum length of access point name
       
    53 const TInt KLengthOfExtention = 4;
       
    54 
       
    55 //extension
       
    56 _LIT16( KExtensionXML,     ".xml" );    //XML file
       
    57 
       
    58 
       
    59 //-----------------------------------------------------------------------------
       
    60 //  CCdcCommsDatCreator::NewL()
       
    61 //-----------------------------------------------------------------------------
       
    62 //
       
    63 EXPORT_C CCdcCommsDatCreator* CCdcCommsDatCreator::NewL()
       
    64     {
       
    65     CCdcCommsDatCreator* self = NewLC();
       
    66     CleanupStack::Pop( self );   // self
       
    67     
       
    68     return self;
       
    69     }
       
    70 
       
    71 
       
    72 //-----------------------------------------------------------------------------
       
    73 //  CCdcCommsDatCreator::NewLC()
       
    74 //-----------------------------------------------------------------------------
       
    75 //
       
    76 EXPORT_C CCdcCommsDatCreator* CCdcCommsDatCreator::NewLC()
       
    77     {
       
    78     CCdcCommsDatCreator* self = new (ELeave) CCdcCommsDatCreator();
       
    79     CleanupStack::PushL( self );
       
    80     self->ConstructL();
       
    81     
       
    82     return self;
       
    83     }
       
    84 
       
    85 
       
    86 //------------------------------------------------
       
    87 // CDbCreator::CreateTablesL
       
    88 //------------------------------------------------
       
    89 //
       
    90 EXPORT_C void CCdcCommsDatCreator::CreateTablesL()
       
    91     {
       
    92     CLOG_WRITE( "=====================\n" )
       
    93     CLOG_WRITE( "Creating tables ...\n" )
       
    94     CLOG_WRITE( "=====================\n" )   
       
    95 
       
    96     
       
    97     //extends architecture of CommsDat
       
    98     //creates WLAN tables
       
    99     //-------------------------------
       
   100     if ( iIsWlanS )
       
   101         {
       
   102         CLOG_WRITE( "Creates WLAN service tables\n" )
       
   103         CLOG_WRITE( "---------------------------\n" )
       
   104         
       
   105         CWlanTables* wlanTables = CWlanTables::NewL();
       
   106         CleanupStack::PushL( wlanTables );
       
   107         wlanTables->CheckAndCreateTablesL();
       
   108         
       
   109         CleanupStack::PopAndDestroy( wlanTables ); 
       
   110         
       
   111         // WLAN Device Settings Table.
       
   112         CLOG_WRITE( "Writes Default settings to WLAN Device Settings Table.\n" )
       
   113         
       
   114         // Creating a settings object does it all.
       
   115         CWlanDeviceSettings* wlanDeviceSettings = CWlanDeviceSettings::NewL();
       
   116         delete wlanDeviceSettings;
       
   117         }
       
   118 
       
   119     CLOG_WRITE( "CDataMobilityTables\n" )   
       
   120         
       
   121     //extends architecture of CommsDat
       
   122     //creates Data Mobility tables
       
   123     //----------------------------
       
   124     CDataMobilityTables* dmTables = CDataMobilityTables::NewL();
       
   125     CleanupStack::PushL( dmTables );
       
   126     
       
   127     CLOG_WRITE( "Creates Data Mobility ALR tables\n" )
       
   128     CLOG_WRITE( "--------------------------------\n" )
       
   129     dmTables->CheckAndCreateAlrTablesL();
       
   130     
       
   131     CLOG_WRITE( "Creates Data Mobility MIP tables\n" )
       
   132     CLOG_WRITE( "--------------------------------\n" )
       
   133     dmTables->CheckAndCreateMipTablesL();
       
   134     
       
   135     CleanupStack::PopAndDestroy( dmTables );
       
   136         
       
   137     //if there is only an "e" parameter then DbCreator extends CommsDat, but
       
   138     //does not create access points. This functionality earlier was done
       
   139     //by WlanToCDb modul.
       
   140     }
       
   141 
       
   142 
       
   143 //------------------------------------------------
       
   144 // CDbCreator::CreateCommsDatL
       
   145 //------------------------------------------------
       
   146 //
       
   147 EXPORT_C void CCdcCommsDatCreator::CreateCommsDatL( const TFileName& aInFileName )
       
   148     {
       
   149     CLOG_WRITE( "=====================\n" )
       
   150     CLOG_WRITE( "Processing started...\n" )
       
   151     CLOG_WRITE( "=====================\n" )               
       
   152 
       
   153 	iCmManager.OpenL();
       
   154 
       
   155     TDbCreatorInputCharSet charSet( ECharSetUnknown );//input character set
       
   156 
       
   157     //Creates access points
       
   158     //----------------------
       
   159             
       
   160     if ( InputFileType( aInFileName ) == EFileXML )
       
   161         {
       
   162         CLOG_WRITE( "Tries to open file");
       
   163         // Logs file name            
       
   164         HBufC *fileName = aInFileName.AllocLC();
       
   165         CLOG_WRITE_FORMAT( "Input file : %S\n", fileName )
       
   166         CleanupStack::PopAndDestroy( fileName );                          
       
   167         
       
   168         delete iReader;
       
   169         iReader = NULL;
       
   170         iReader = CReaderXML::NewLC( aInFileName, charSet );
       
   171     	CleanupStack::Pop(iReader);
       
   172     
       
   173         //locates feature in xml file
       
   174         iReader->LocateFeatureL();
       
   175         }
       
   176     else    
       
   177         {
       
   178         User::Leave( KErrInvalidExtension );
       
   179         }  
       
   180     	
       
   181 
       
   182     TBool found( EFalse );
       
   183     
       
   184     // First, add all destinations to the database. Connection methods and
       
   185     // embedded destinations are not added at this time.
       
   186     while ( iReader->CurrentFeature() != EFeatureNone && !found )
       
   187         {
       
   188         if( iReader->CurrentFeature() == EFeatureDN )
       
   189             {
       
   190             ProcessDNL( iCmInDest, ETrue );
       
   191             }
       
   192         iReader->LocateFeatureL();
       
   193         }
       
   194     
       
   195     // Reset input file
       
   196     iReader->Reset();
       
   197     iReader->LocateFeatureL();
       
   198     
       
   199     // Then add connection methods, and assign them to destinations if
       
   200     // needed
       
   201     while ( iReader->CurrentFeature() != EFeatureNone )
       
   202         {
       
   203         switch ( iReader->CurrentFeature() )
       
   204             {
       
   205             case EFeaturePacketData:
       
   206                 {
       
   207                 //creates GPRS access point
       
   208                 CLOG_WRITE( "Feature found : Packet Data Access point(s)\n" )
       
   209                 
       
   210                 iFileProcessor = CProcessorPacketData::NewL( iReader,
       
   211                                                        iCmManager,
       
   212                                                        iPluginArray,
       
   213                                                        iPluginNames,
       
   214                                                        iLingerSettings );
       
   215                 iFileProcessor->ParseFileL();
       
   216                 
       
   217                 delete iFileProcessor;
       
   218                 iFileProcessor = NULL;
       
   219 
       
   220                 break;
       
   221                 }
       
   222                 
       
   223             case EFeatureWLAN:
       
   224                 {
       
   225                 if( iIsWlanS )
       
   226                     {
       
   227                     //creates WLAN access point   
       
   228                     CLOG_WRITE( "Feature found : WLAN Access point(s)\n" )
       
   229                     
       
   230                     // Reset the EAP settings just to be safe although it should be empty always here.
       
   231                     iEapSettings.ResetAndDestroy();
       
   232                     
       
   233                     iFileProcessor = CProcessorWlan::NewL( iReader,
       
   234                                                            iCmManager,
       
   235                                                            iPluginArray,
       
   236                                                            iPluginNames,
       
   237                                                            iWlanSecurity,
       
   238                                                            iEapSettings );
       
   239                     iFileProcessor->ParseFileL();
       
   240                     
       
   241                     delete iFileProcessor;
       
   242                     iFileProcessor = NULL;
       
   243 
       
   244                     }
       
   245                 break;
       
   246                 }
       
   247                 
       
   248             case EFeatureLAN:
       
   249                 {
       
   250                 //creates LAN access point   
       
   251                 CLOG_WRITE( "Feature found : LAN Access point(s)\n" )
       
   252 
       
   253                 iFileProcessor = CProcessorLan::NewL( iReader,
       
   254                                                       iCmManager,
       
   255                                                       iPluginArray,
       
   256                                                       iPluginNames );
       
   257                 iFileProcessor->ParseFileL();
       
   258                
       
   259                 delete iFileProcessor;
       
   260                 iFileProcessor = NULL;
       
   261                 break;
       
   262                 }
       
   263                 
       
   264             case EFeatureVPN:
       
   265                 {
       
   266                 //creates VPN access point   
       
   267                 CLOG_WRITE( "Feature found : VPN Access point(s)\n" )
       
   268                 CLOG_WRITE( "-----------------------------------\n" )
       
   269                 
       
   270                 iFileProcessor = CProcessorVpn::NewL( iReader,
       
   271                                                        iCmManager,
       
   272                                                        iPluginArray,
       
   273                                                        iPluginNames,
       
   274                                                        iUnderLying );
       
   275                 iFileProcessor->ParseFileL();
       
   276                 
       
   277                 delete iFileProcessor;
       
   278                 iFileProcessor = NULL;
       
   279                 
       
   280                 break;
       
   281                 }
       
   282             
       
   283             case EFeatureDN:
       
   284                 {
       
   285                
       
   286                 ProcessDNL( iCmInDest, EFalse );
       
   287                 
       
   288                 break;
       
   289                 }
       
   290                 
       
   291             case EFeatureGlobal:
       
   292                 {
       
   293                 // Valid tag but does nothing now. 
       
   294                 // Global can be processed at the last end.
       
   295 
       
   296                 
       
   297                 //sets global settings 
       
   298                 CLOG_WRITE( "Feature found : Global settings\n" )
       
   299                 CLOG_WRITE( "-------------------------------\n" )
       
   300                     
       
   301                 iFileProcessor = CProcessorGlobal::NewL( iReader,
       
   302                                                           iCmManager,
       
   303                                                           iPluginArray,
       
   304                                                           iPluginNames,
       
   305                                                           iDestArray,
       
   306                                                           iDestNames,
       
   307                                                           iDefCon ); 
       
   308                 iFileProcessor->ParseFileL();
       
   309 
       
   310                 delete iFileProcessor;
       
   311                 iFileProcessor = NULL;
       
   312 
       
   313                 break;
       
   314                 }
       
   315                 
       
   316             default:
       
   317                 User::Panic( KPanicInvalidCase, KErrInvalidCase );
       
   318              
       
   319             }//switch
       
   320             
       
   321             //gets next feature
       
   322             iReader->LocateFeatureL();
       
   323             
       
   324         }//while
       
   325                   
       
   326 
       
   327     // Updates the IAPs that are not in destinations.
       
   328     UpdateUncatCmsL( iCmInDest /*, iPluginNames, iPluginArray*/ );
       
   329 
       
   330     // Sets the underlying IAP/SNAPS for vpn IAPs    
       
   331     SetUnderlyingIapL( iUnderLying );
       
   332 
       
   333     for( TInt i(0); i < iWlanSecurity.Count(); i++ )
       
   334         {
       
   335         CLOG_WRITE_FORMAT( "Sec Pos: %d", i );
       
   336         if( iWlanSecurity[i] != NULL )
       
   337             {
       
   338             CLOG_WRITE_FORMAT( "Sec data: %S", iWlanSecurity[i] );
       
   339             }
       
   340         else    
       
   341             {
       
   342             CLOG_WRITE( "Sec data NULL" );
       
   343             }
       
   344         }
       
   345 
       
   346 	// Sets the WLAN security paramters including EAP settings
       
   347     SetWlanSecurityL( iWlanSecurity );
       
   348     
       
   349     // Sets linger settings
       
   350     SetLingerSettingsL( iLingerSettings );
       
   351 
       
   352     // Sets the default connection    
       
   353     SetDefaultConnectionL( iDefCon );
       
   354 
       
   355     // Logs IAPs in UDEB mode
       
   356     #ifdef _DEBUG
       
   357     LogIapIdsL();
       
   358     #endif
       
   359 }
       
   360 
       
   361 //------------------------------------------------
       
   362 // CCdcCommsDatCreator::DumpCommsDatL
       
   363 //------------------------------------------------
       
   364 //
       
   365 EXPORT_C void CCdcCommsDatCreator::DumpCommsDatL( const TFileName& aOutFileName )
       
   366     {
       
   367     CLOG_WRITE( "==========================\n" )
       
   368     CLOG_WRITE( "Dump processing started...\n" )
       
   369     CLOG_WRITE( "==========================\n" )   
       
   370     
       
   371 
       
   372     CDumpTables* dump = CDumpTables::NewLC();
       
   373     dump->DoDumpTablesL( aOutFileName );
       
   374     CleanupStack::PopAndDestroy( dump ); //dump   
       
   375 
       
   376     CLOG_WRITE( "======== end dump =========\n" )   
       
   377 
       
   378     }
       
   379 
       
   380 //------------------------------------------------
       
   381 // CCdcCommsDatCreator::CCdcCommsDatCreator
       
   382 //------------------------------------------------
       
   383 //
       
   384 CCdcCommsDatCreator::CCdcCommsDatCreator()
       
   385     {
       
   386     }
       
   387 
       
   388 //------------------------------------------------
       
   389 // CCdcCommsDatCreator::~CCdcCommsDatCreator
       
   390 //------------------------------------------------
       
   391 //
       
   392 CCdcCommsDatCreator::~CCdcCommsDatCreator()
       
   393     {
       
   394     delete iReader;
       
   395     
       
   396     iEapSettings.ResetAndDestroy();
       
   397 
       
   398 	for ( TInt i = 0; i < iPluginArray.Count(); i++ )
       
   399 	{
       
   400 		iPluginArray[i]->Close();
       
   401 	}
       
   402     iPluginArray.ResetAndDestroy();
       
   403     iPluginNames.ResetAndDestroy();
       
   404 
       
   405 	for ( TInt i = 0; i < iDestArray.Count(); i++ )
       
   406 	{
       
   407 		iDestArray[i]->Close();
       
   408 	}
       
   409     iDestArray.ResetAndDestroy();
       
   410     
       
   411     iDestNames.ResetAndDestroy();    
       
   412     
       
   413     iUnderLying.ResetAndDestroy();    
       
   414     
       
   415     iWlanSecurity.ResetAndDestroy();
       
   416     
       
   417     iLingerSettings.ResetAndDestroy();
       
   418 
       
   419     iDefCon.ResetAndDestroy();
       
   420     
       
   421     iCmInDest.Close(); 
       
   422     
       
   423     iCmManager.Close();
       
   424     }
       
   425 
       
   426 
       
   427 //------------------------------------------------
       
   428 // CCdcCommsDatCreator::ConstructL
       
   429 //------------------------------------------------
       
   430 //
       
   431 void CCdcCommsDatCreator::ConstructL()
       
   432     {
       
   433     CLOG_WRITE( "Initialising FeatureManager\n" )   
       
   434     //checks if Wlan feature is supported
       
   435     FeatureManager::InitializeLibL();
       
   436     iIsWlanS = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
       
   437     FeatureManager::UnInitializeLib();
       
   438     CLOG_WRITE( "FeatureManager closed\n" )               
       
   439     }
       
   440     
       
   441 //------------------------------------------------
       
   442 // CCdcCommsDatCreator::InputFileType
       
   443 //------------------------------------------------
       
   444 //
       
   445 TUint CCdcCommsDatCreator::InputFileType( const TFileName& aFileName )
       
   446     {
       
   447     TBuf<KLengthOfExtention> extension;
       
   448     
       
   449     //get extension
       
   450     extension.Copy( aFileName.Right( KLengthOfExtention ) );
       
   451     
       
   452     TDbCreatorInputFile type ( EFileUnknown );
       
   453     
       
   454     if ( extension.CompareF( KExtensionXML ) == 0 )
       
   455         {
       
   456         type = EFileXML;            
       
   457         }
       
   458     else
       
   459         {
       
   460         //type keeps default value
       
   461         }
       
   462             
       
   463     return type;
       
   464     
       
   465     }
       
   466     
       
   467   
       
   468 //------------------------------------------------
       
   469 // CCdcCommsDatCreator::UpdateUncatCmsL
       
   470 //------------------------------------------------
       
   471 //
       
   472 void CCdcCommsDatCreator::UpdateUncatCmsL( RArray< TBool >& aCmInDest )
       
   473     {
       
   474     CLOG_WRITE( "-------------------------------\n" )
       
   475     CLOG_WRITE( "Uncategorised Cms:\n" )
       
   476 
       
   477     // No destination defined
       
   478     if( aCmInDest.Count() == 0 )
       
   479         {
       
   480         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   481             {
       
   482             iPluginArray[i]->UpdateL();
       
   483             CLOG_WRITE_FORMAT( "Uncat CM Name: %S", iPluginNames[i] );
       
   484             }
       
   485         }
       
   486     else
       
   487         {
       
   488         
       
   489         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   490             {
       
   491             if( aCmInDest[ i ] == EFalse )
       
   492                 {
       
   493                 iPluginArray[i]->UpdateL();
       
   494                 CLOG_WRITE_FORMAT( "Uncat CM Name: %S", iPluginNames[i] );
       
   495                 }
       
   496             }
       
   497         }
       
   498         
       
   499     CLOG_WRITE( "-------------------------------\n" )
       
   500     }    
       
   501 
       
   502 
       
   503 //------------------------------------------------
       
   504 // CCdcCommsDatCreator::LogIapIdsL
       
   505 //------------------------------------------------
       
   506 //
       
   507 void CCdcCommsDatCreator::LogIapIdsL()
       
   508     {
       
   509     for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   510         {
       
   511         TUint32 uid1 = iPluginArray[i]->GetIntAttributeL( CMManager::ECmId );
       
   512         CLOG_WRITE_FORMAT( "IAP Name: %S", iPluginNames[i] );
       
   513         CLOG_WRITE_FORMAT( "ID: %d\n", uid1 );
       
   514         }
       
   515 
       
   516     for( TInt i(0); i < iDestArray.Count(); i++ )
       
   517         {
       
   518         TUint32 uid1 = iDestArray[i]->Id();
       
   519         CLOG_WRITE_FORMAT( "SNAP Name: %S", iDestNames[i] );
       
   520         CLOG_WRITE_FORMAT( "ID: %d\n", uid1);
       
   521         }
       
   522     }
       
   523 
       
   524 // ---------------------------------------------------------
       
   525 // CCdcCommsDatCreator::ProcessDNL
       
   526 // ---------------------------------------------------------
       
   527 //
       
   528 void CCdcCommsDatCreator::ProcessDNL( RArray< TBool >& aCmInDest,
       
   529                                      TBool aFirstRound )
       
   530     {
       
   531     CLOG_WRITE( "Feature found : Destination Network(s)\n" )
       
   532     CLOG_WRITE( "--------------------------------------\n" )
       
   533     
       
   534     
       
   535     if( !aFirstRound )
       
   536         {
       
   537         for( TInt i(0); i < iPluginArray.Count(); i++ )
       
   538             {
       
   539             aCmInDest.Append( EFalse );
       
   540             }
       
   541         }
       
   542     
       
   543     iFileProcessor = CProcessorDN::NewL( iReader,
       
   544                                          iCmManager,
       
   545                                          iPluginArray,
       
   546                                          iPluginNames,
       
   547                                          iDestArray,
       
   548                                          iDestNames,
       
   549                                          aCmInDest,
       
   550                                          aFirstRound ); 
       
   551     iFileProcessor->ParseFileL();
       
   552     
       
   553     delete iFileProcessor;
       
   554     iFileProcessor = NULL;
       
   555     CLOG_WRITE( "--------------------------------------\n" )
       
   556     }    
       
   557 
       
   558 // ---------------------------------------------------------
       
   559 // CCdcCommsDatCreator::SetUnderlyingIapL
       
   560 // ---------------------------------------------------------
       
   561 //
       
   562 void CCdcCommsDatCreator::SetUnderlyingIapL( RPointerArray< HBufC >& aUnderLying )
       
   563     {
       
   564     // Sets the underlying IAP/SNAPS for vpn IAPs    
       
   565     if( aUnderLying.Count() > 0 )
       
   566         {
       
   567         CLOG_WRITE_FORMAT( "SetUnderlyingIapL: %d\n", aUnderLying.Count() )
       
   568         CLOG_WRITE( "--------------------------------------\n" )
       
   569 
       
   570         CProcessorVpn* vpn = CProcessorVpn::NewL( iReader,
       
   571                                                iCmManager,
       
   572                                                iPluginArray,
       
   573                                                iPluginNames,
       
   574                                                aUnderLying );
       
   575         
       
   576         CleanupStack::PushL( vpn );
       
   577         vpn->ProcessUnderLyingL(  iDestArray, iDestNames );
       
   578         
       
   579                 
       
   580         CleanupStack::PopAndDestroy( vpn );
       
   581 
       
   582         CLOG_WRITE( "--------------------------------------\n" )
       
   583         }
       
   584     }
       
   585 
       
   586 // ---------------------------------------------------------
       
   587 // CCdcCommsDatCreator::ProcessDNL
       
   588 // ---------------------------------------------------------
       
   589 //
       
   590 void CCdcCommsDatCreator::SetDefaultConnectionL( RPointerArray< HBufC >& aDefCon )
       
   591     {
       
   592     // Sets the default connection    
       
   593     if( aDefCon.Count() > 0 )
       
   594         {
       
   595         CLOG_WRITE_FORMAT( "SetDefaultConnectionL: %d\n", aDefCon.Count() )
       
   596         CLOG_WRITE( "--------------------------------------\n" )
       
   597 
       
   598         CProcessorGlobal* glb = CProcessorGlobal::NewL( iReader,
       
   599                                                iCmManager,
       
   600                                                iPluginArray,
       
   601                                                iPluginNames,
       
   602                                                iDestArray,
       
   603                                                iDestNames,
       
   604                                                aDefCon );
       
   605         
       
   606         CleanupStack::PushL( glb );
       
   607         glb->SetDefaultConnectionL();
       
   608                 
       
   609         CleanupStack::PopAndDestroy( glb );
       
   610 
       
   611         CLOG_WRITE( "--------------------------------------\n" )
       
   612         }
       
   613     }
       
   614 
       
   615 // ---------------------------------------------------------
       
   616 // CCdcCommsDatCreator::SetUnderlyingIapL
       
   617 // ---------------------------------------------------------
       
   618 //
       
   619 void CCdcCommsDatCreator::SetWlanSecurityL( RPointerArray< HBufC >& aWlanSecurity )
       
   620     {
       
   621     if( aWlanSecurity.Count() > 0 
       
   622 		|| iEapSettings.Count() > 0 )
       
   623         {
       
   624         CLOG_WRITE_FORMAT( "SetWlanSecurityL: %d\n", aWlanSecurity.Count() );
       
   625         CLOG_WRITE_FORMAT( "SetWlanSecurityL: EAPs: %d\n", iEapSettings.Count() );
       
   626         CLOG_WRITE( "--------------------------------------\n" )
       
   627 
       
   628         CProcessorWlan* wlan = CProcessorWlan::NewL( iReader,
       
   629                                                      iCmManager,
       
   630                                                      iPluginArray,
       
   631                                                      iPluginNames,
       
   632                                                      aWlanSecurity,
       
   633 													 iEapSettings);
       
   634         
       
   635         CleanupStack::PushL( wlan );
       
   636         wlan->SaveSecurityInfoL();
       
   637                 
       
   638         CleanupStack::PopAndDestroy( wlan );
       
   639         
       
   640         // EAP settings were saved. Delete them.
       
   641         iEapSettings.ResetAndDestroy();
       
   642 
       
   643         CLOG_WRITE( "--------------------------------------\n" )
       
   644         }
       
   645     }
       
   646 
       
   647 // ---------------------------------------------------------
       
   648 // CCdcCommsDatCreator:::SetLingerSettingsL
       
   649 // ---------------------------------------------------------
       
   650 //
       
   651 void CCdcCommsDatCreator::SetLingerSettingsL( 
       
   652         RPointerArray< CLingerElement >& aLingerSettings )
       
   653     {
       
   654     CLOG_WRITE_FORMAT( "SetLingerSettingsL: %d\n", aLingerSettings.Count() );
       
   655     if ( aLingerSettings.Count() > 0 )
       
   656         {
       
   657         CProcessorPacketData* pdp = CProcessorPacketData::NewL( iReader, 
       
   658                                                                 iCmManager,
       
   659                                                                 iPluginArray,
       
   660                                                                 iPluginNames,
       
   661                                                                 iLingerSettings );
       
   662         
       
   663         CleanupStack::PushL( pdp );
       
   664         pdp->SaveLingerSettingsL();
       
   665                 
       
   666         CleanupStack::PopAndDestroy( pdp );
       
   667         }  
       
   668     CLOG_WRITE( "--------------------------------------\n" )
       
   669     }
       
   670 
       
   671 
       
   672 // End of File.