omacpadapters/accesspointadapter/Src/CWPAPNapdef.cpp
author hgs
Fri, 15 Oct 2010 11:39:02 +0530
changeset 67 fdbfe0a95492
parent 62 03849bd79877
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
* All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
* Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
* Description:    Class stores data for one accesspoint
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
// INCLUDE FILES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
#include "CWPAPNapdef.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
#include <CWPCharacteristic.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
#include <CWPParameter.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
#include <featmgr.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
#include <WPAdapterUtil.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
#include "CWPAPAccesspointItem.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
#include "WPAPAdapter.pan"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
#include <WlanCdbCols.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
#include <EapType.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
#include <EapSettings.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
#include "ProvisioningDebug.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
#include <cmconnectionmethodext.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
#include <cmpluginpacketdatadef.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
#include <cmpluginwlandef.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
#include <cmmanagerext.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
#include <cmconnectionmethodext.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
#include <commdb.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
#include <WlanCdbCols.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
#include <EapExpandedType.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
#include <centralrepository.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
#include <pdpcontextmanagerinternalcrkeys.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
#include <EapGeneralSettings.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
#include <EapTypeDefinitions.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
const TUint KIapColumn        = 0x00000100;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
const TUint KLingerColumn     = 0x00000200;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
const TUint KColumnMask       = 0xFFFFFF00;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
const TUint KRowMask          = 0x000000FF;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
// Delay for comms db begintransaction retry (microseconds)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
const TInt KBeginTransRetryDelay = 1000000; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
// Maximum number of retries
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
const  TInt KBeginTransRetryCount = 7;      
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
// ============================ MEMBER FUNCTIONS ===============================
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
// CWPAPNapdef::NewLC
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
CWPAPNapdef* CWPAPNapdef::NewLC( TBool aFollowingLink,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
                                 const TDesC& aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
                                 CWPCharacteristic& aLogicalCharacteristic,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
                                 CWPCharacteristic& aLink )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
	CWPAPNapdef* self = new(ELeave) CWPAPNapdef( aFollowingLink,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
	                                             aDefaultName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
                                                 aLogicalCharacteristic ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
	CleanupStack::PushL( self );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
	self->ConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
    aLink.AcceptL( *self );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
	return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
// Destructor
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
CWPAPNapdef::~CWPAPNapdef()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::~CWPAPNapdef" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
    iEapTypeArray.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
    iEapTypeArray.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
    iSecSSID.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
	iSecSSID.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
    iNameServers.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
// CWPAPNapdef::ValidateL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
TBool CWPAPNapdef::ValidateL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
    TBool result( ETrue );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
	if ( iBearer == KUidWlanBearerType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
	    {	    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
	    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
	    if ( iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
	    	{	    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
	    	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan supported" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
	    	return result;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
	    	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
	    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
	    	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
	   		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan NOT supported" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
	    	return EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
	    	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
	// Received unsupported bearer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
	if( iBearerUnsupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
	    return EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
	// Didn't receive a bearer value.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
	if ( iBearer == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
    // Access point address type can also tell the bearer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
		if( iAccesspointNameType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   128
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
            TPtrC addrType( iAccesspointNameType->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
            if( addrType == KAddrTypeAPN )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
                iBearer =KUidPacketDataBearerType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
        // If still couldn't determine the bearer, default to GPRS
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
        if( iBearer == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
			iBearer = KUidPacketDataBearerType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   141
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
		        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
    // "NAP-ADDRESS" (Access point name) must be defined
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
    if( iAccesspointName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
        if( iAccesspointName->Value() == KNullDesC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
            return EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
        return EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
	/* 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
	Combinations of authentication type, username and password and corressponding
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
	value of prompt for password field. AuthType in this table means that provisioning document
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
	contained authtype parameter and it was supported by the implementation.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
	Provisioning document names are used in table.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
	x means that value of the specified parameter is received and it was valid.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
	AuthType received & supported 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
	| AuthName 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
	| | AuthSecret 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
	| |	| "Prompt for Password"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
		  no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
	x     no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
      x   no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
	x x   yes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
        x no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
    x   x yes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
      x x no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
    x x	x no
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
	*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
	// Set the "prompt password"-value. See the table above. Value is set to true
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
	// only if we have supported authentication type and either username or password
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
	// is empty.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
	if ( IsReceived( EWPParameterAuthentication_id ) &&
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
	     ( ( !iPassword && iUserName ) ||( iPassword && !iUserName ) ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
		iPromptPassword = ETrue;	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
    // IFNETWORKS is a list of possible protocols that a GPRS access points can be 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
    // used for. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
    if( iBearer == KUidPacketDataBearerType && IsReceived( EWPParameterIfNetworks_id ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
        TLex lex( iIfNetworks->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
        lex.Mark();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
        do
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
            TChar ch( lex.Get() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
            if( ( !iPdpType && !ch.IsAlphaDigit() ) || ( !iPdpType && lex.Eos() ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
				if(!lex.Eos())
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
					{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
					lex.UnGet();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
					}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
                TPtrC value( lex.MarkedToken() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
				if( !lex.Eos() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
					{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
					lex.Inc();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
					}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207
                if( value == KIPv6 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   208
                    && FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   209
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   210
                    //iPdpType = EIPv6;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   211
                    // CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   212
                    iPdpType = RPacketContext::EPdpTypeIPv6;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   213
                    result = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   214
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   215
                else if( value == KIPv6 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   216
                    && !FeatureManager::FeatureSupported( KFeatureIdIPv6 ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   217
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   218
                    result = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   219
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   220
                else if( value == KIPv4 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   221
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   222
                    //iPdpType = EIPv4;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   223
                    // CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   224
                    iPdpType = RPacketContext::EPdpTypeIPv4;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   225
                    result = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   226
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   227
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   228
            } while( !lex.Eos() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   229
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   230
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   231
	return result;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   232
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   233
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   234
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   235
// CWPAPNapdef::AddItemsL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   236
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   237
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   238
TInt CWPAPNapdef::AddItemsL( RPointerArray<CWPAPAccesspointItem>& aItems,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   239
                            CWPAPItemBase* aLogicalProxy,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   240
                            CWPAPItemBase* aPhysicalProxy ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   241
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   242
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   243
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   244
    TInt count( 0 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   245
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   246
    if( ( iFollowingLink || IsReceived( EWPParameterInternet_id ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   247
                         || IsReceived( EWPParameterWlan_id ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   248
                         && ValidateL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   249
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   250
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL append" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   251
        CWPAPAccesspointItem* item = CWPAPAccesspointItem::NewLC(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   252
                                                             iDefaultName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   253
                                                             aLogicalProxy,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   254
                                                             aPhysicalProxy,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   255
                                                             this,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   256
                                                             iCharacteristic );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   257
        User::LeaveIfError( aItems.Append( item ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   258
        //Internet Parameter is received
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   259
        if (IsReceived(EWPParameterInternet_id) && !iFollowingLink)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   260
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   261
            SetInternetIndicator(aItems.Count() - 1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   262
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   263
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   264
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   265
        count++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   266
        CleanupStack::Pop( item );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   267
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL append done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   268
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   269
    return count;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   270
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   271
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   272
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   273
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   274
// CWPAPNapdef::SetInternetIndicator
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   275
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   276
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   277
void CWPAPNapdef::SetInternetIndicator(TInt aValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   278
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   279
    iInternetIndicator = aValue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   280
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   281
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   282
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   283
// CWPAPNapdef::GetInternetIndicator
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   284
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   285
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   286
TInt CWPAPNapdef::GetInternetIndicator()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   287
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   288
    return iInternetIndicator;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   289
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   290
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   291
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   292
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   293
// CWPAPNapdef::AddDataL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   294
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   295
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   296
void CWPAPNapdef::AddDataL( /*CApAccessPointItem& aAPItem*/ RCmConnectionMethodExt& aCmItem ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   297
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   298
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   299
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   300
	TInt err( KErrNone );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   301
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   302
    if ( iBearer == KUidWlanBearerType )    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   303
	    {			    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   304
	    	if ( iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   305
        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   306
        	// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   307
        	AddWlanDataL( aCmItem);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   308
        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   309
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   310
        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   311
        	// WLAN is disabled (or does not exist) in the device.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   312
        	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL WLAN disabled." ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   313
        	User::Leave( KErrNotSupported );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   314
        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   315
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   316
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   317
        {	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   318
    	if ( iConnectionName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   319
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   320
    		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   321
    		aCmItem.SetStringAttributeL( CMManager::ECmName, (iConnectionName->Value().Left( KNameMaxLength ))); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   322
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   323
    	else // Use default name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   324
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   325
    		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   326
    		aCmItem.SetStringAttributeL( CMManager::ECmName, iDefaultName );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   327
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   328
    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   329
    	if ( iAccesspointName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   330
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   331
    		if ( iBearer == KUidPacketDataBearerType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   332
    			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   333
    			// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   334
    			TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EPacketDataAPName, iAccesspointName->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   335
                FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   336
                                                                     &iAccesspointName->Value(), err));    			                              
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   337
    			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   338
    		else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   339
    			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   340
    			// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   341
    			TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialDefaultTelNum, iAccesspointName->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   342
                FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::EApIspDefaultTelNumber value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   343
                			      &iAccesspointName->Value(), err ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   344
    			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   345
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   346
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   347
    	TRAP ( err, aCmItem.UpdateL() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   348
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   349
    	 if ( iUserName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   350
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   351
    		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   352
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialLoginName, iUserName->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   353
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialLoginName value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   354
    		                    		      &iUserName->Value(), err));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   355
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialIFAuthName, iUserName->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   356
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialIFAuthName value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   357
    		                    		      &iUserName->Value(), err));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   358
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIFAuthName, iUserName->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   359
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFAuthName value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   360
    		                    		      &iUserName->Value(), err));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   361
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   362
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   363
		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   364
    	TRAP ( err, aCmItem.SetBoolAttributeL( CMManager::ECmIFPromptForAuth, iPromptPassword));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   365
    	FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFPromptForAuth value: %d, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   366
    	                            	      iPromptPassword, err ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   367
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   368
    	if ( iPassword )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   369
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   370
    		// CMManager 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   371
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialLoginPassword, iPassword->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   372
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialLoginPassword value: %d, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   373
    		                		      &iPassword->Value(), err ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   374
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIFAuthPass, iPassword->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   375
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFAuthPass value: %d, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   376
    		                		      &iPassword->Value(), err ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   377
    		}	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   378
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   379
		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   380
    	TRAP ( err, aCmItem.SetBoolAttributeL( CMManager::ECmDisablePlainTextAuth, iSecureAuthentication ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   381
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EApEApIspDisablePlainTextAuth value: %d, err: %d"),    	                         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   382
                	                        iSecureAuthentication, err ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   383
                	                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   384
			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   385
        // IPv6 APs always have dynamic phone address
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   386
    	//CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   387
    	if ( iPhoneIPAddress && iPdpType != RPacketContext::EPdpTypeIPv6 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   388
    		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   389
    		// CMManager IS CORRECT?
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   390
    		//err = aAPItem.WriteTextL( EApIspIPAddr, iPhoneIPAddress->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   391
    		TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIPAddress, iPhoneIPAddress->Value() ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   392
    		FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EApIspIPAddr value: %S, err: %d"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   393
                        		     &iPhoneIPAddress->Value(), err ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   394
    		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   395
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   396
		TRAP ( err, aCmItem.UpdateL() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   397
        for( TInt i( 0 ); i < iNameServers.Count(); i++ )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   398
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   399
            WriteDNSAddressL( aCmItem, iNameServers[i]->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   400
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   401
		TRAP ( err, aCmItem.UpdateL() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   402
        if( FeatureManager::FeatureSupported( KFeatureIdIPv6 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   403
            && iPdpType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   404
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   405
         	// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   406
            TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EPacketDataPDPType, iPdpType ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   407
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   408
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   409
    if ( err ) err = 0; // prevent compiler warning
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   410
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   411
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   412
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   413
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   414
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   415
// CWPAPNapdef::AddWlanDataL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   416
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   417
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   418
void CWPAPNapdef::AddWlanDataL( RCmConnectionMethodExt& aCmItem )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   419
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   420
    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   421
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   422
    if ( !iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   423
    	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   424
    		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL WLAN NOT supported." ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   425
    		User::Leave( KErrNotSupported);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   426
    	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   427
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   428
    TInt err = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   429
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   430
	if ( iConnectionName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   431
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   432
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   433
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   434
		//Connection name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   435
		// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   436
		aCmItem.SetStringAttributeL( CMManager::ECmName, iConnectionName->Value().Left( KNameMaxLength ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   437
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   438
		// CMManager 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   439
		// Network name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   440
		aCmItem.SetStringAttributeL( CMManager::EWlanSSID, iConnectionName->Value());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   441
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   442
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName err (%d) (%S)"), err, &iConnectionName->Value()));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   443
				
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   444
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   445
	else // Use default name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   446
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   447
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName default" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   448
		aCmItem.SetStringAttributeL( CMManager::EWlanSSID, iDefaultName);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   449
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   450
		   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   451
   	//EApWlanNetworkMode Gives network mode, TUint32
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   452
   	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanNetworkMode" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   453
	// CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   454
   	TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EWlanConnectionMode, iNetMode ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   455
   	FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanNetworkMode err (%d)"), err));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   456
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   457
    //EApWlanSecurityMode The security mode, TUint32
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   458
    if ( iSecMode == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   459
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   460
        // This is needed if Provisioning message does not contain SECMODE parameter
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   461
        // AP does not work if secmode is not set
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   462
        iSecMode = CMManager::EWlanSecModeOpen;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   463
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   464
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   465
    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanSecurityMode" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   466
   	// CMManager, securitymode causes error -1, this will be set manually in SaveWlanData
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   467
   	//TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EWlanSecurityMode, iSecMode ));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   468
    FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanSecurityMode err (%d)"), err));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   469
    	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   470
    if (err)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   471
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   472
        err = KErrNone;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   473
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   474
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   475
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   476
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   477
// CWPAPNapdef::WriteDNSAddressL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   478
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   479
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   480
void CWPAPNapdef::WriteDNSAddressL( /*CApAccessPointItem& aAPItem*/ RCmConnectionMethodExt& aCmItem,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   481
                                    const TDesC& aValue )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   482
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   483
    // GPRS access points supports IPv6 only if explicitly stated. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   484
    // CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   485
    TBool apSupportsIPv6( iPdpType == RPacketContext::EPdpTypeIPv6 | iBearer != KUidPacketDataBearerType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   486
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   487
    // If IPv6 is supported, write the DNS address as IPv6 if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   488
    // bearer supports IPv6 and the address format is IPv6    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   489
    if( FeatureManager::FeatureSupported( KFeatureIdIPv6 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   490
        && apSupportsIPv6
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   491
        && WPAdapterUtil::CheckIPv6( aValue ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   492
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   493
        // Two name servers per network type
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   494
        if( iNumIPv6NameServers < KTwoNameServersPerNetworkType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   495
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   496
            // CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   497
            TRAPD (err, aCmItem.SetStringAttributeL( CMManager::TConnectionMethodCommonAttributes( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   498
            													( CMManager::ECmIP6NameServer1 ) + iNumIPv6NameServers ), aValue ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   499
            User::LeaveIfError( err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   500
            iNumIPv6NameServers++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   501
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   502
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   503
     else if( CheckIPv4values( aValue) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   504
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   505
        // Two name servers per network type
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   506
        if( iNumIPv4NameServers < KTwoNameServersPerNetworkType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   507
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   508
            // CMManager 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   509
            TRAPD ( err, aCmItem.SetStringAttributeL( CMManager::TConnectionMethodCommonAttributes( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   510
            													( CMManager::ECmIPNameServer1 ) + iNumIPv4NameServers ), aValue ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   511
            User::LeaveIfError( err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   512
            aCmItem.SetBoolAttributeL( CMManager::ECmIPDNSAddrFromServer, EFalse);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   513
            iNumIPv4NameServers++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   514
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   515
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   516
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   517
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   518
// CWPAPNapdef::CheckAddressPart
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   519
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   520
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   521
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   522
TBool CWPAPNapdef:: CheckAddressPart( TLex& aLex )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   523
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   524
    TBool result( aLex.Peek().IsDigit() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   525
    aLex.Inc();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   526
    if( aLex.Peek().IsDigit() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   527
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   528
        aLex.Inc();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   529
        if( aLex.Peek().IsDigit() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   530
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   531
            aLex.Inc();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   532
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   533
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   534
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   535
    return result;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   536
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   537
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   538
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   539
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   540
// CWPAPNapdef::CheckIPv4values
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   541
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   542
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   543
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   544
TBool CWPAPNapdef::CheckIPv4values( const TDesC& aValue )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   545
{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   546
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   547
	TLex aLex( aValue );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   548
	return CheckAddressPart( aLex ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   549
        && aLex.Get() == '.'
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   550
        && CheckAddressPart( aLex ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   551
        && aLex.Get() == '.'
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   552
        && CheckAddressPart( aLex ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   553
        && aLex.Get() == '.'
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   554
        && CheckAddressPart( aLex )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   555
        && aLex.Get() == '\0';
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   556
     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   557
}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   558
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   559
// CWPAPNapdef::Name
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   560
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   561
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   562
const TDesC& CWPAPNapdef::Name()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   563
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   564
	if ( iConnectionName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   565
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   566
		return iConnectionName->Value();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   567
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   568
	else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   569
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   570
		return KNullDesC;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   571
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   572
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   573
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   574
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   575
// CWPAPNapdef::VisitL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   576
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   577
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   578
void CWPAPNapdef::VisitL( CWPCharacteristic& aCharacteristic )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   579
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   580
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic)" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   581
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   582
	TInt type = aCharacteristic.Type();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   583
    FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) type (%d)"), type));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   584
	switch ( type )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   585
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   586
		case KWPNapAuthInfo:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   587
		case KWPValidity:				
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   588
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   589
			FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) normal" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   590
			aCharacteristic.AcceptL( *this );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   591
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   592
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   593
		case KWPWLAN:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   594
		case KWPWepKey:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   595
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   596
			if( iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   597
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   598
					FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) accept WLAN characteristic" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   599
					aCharacteristic.AcceptL( *this );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   600
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   601
			}
56
hgs
parents: 47
diff changeset
   602
			break;
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   603
		default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   604
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   605
			if ( ( ( ( aCharacteristic.Name().Compare( KWLAN ) ) == 0 )    ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   606
			     ( ( aCharacteristic.Name().Compare( SECSSID ) ) == 0 )  ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   607
			     ( ( aCharacteristic.Name().Compare( KEAP ) ) == 0 )     ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   608
			     ( ( aCharacteristic.Name().Compare( KCERT ) ) == 0 )    ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   609
			     ( ( aCharacteristic.Name().Compare( KWEP ) ) == 0 ) ) && iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   610
			    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   611
			    if(aCharacteristic.Name().Compare( KEAP ) == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   612
			        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   613
                    CEapTypeElement* newEap = new (ELeave) CEapTypeElement;
67
hgs
parents: 62
diff changeset
   614
                    CleanupStack::PushL( newEap );
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   615
                    newEap->iEAPSettings = new (ELeave) EAPSettings;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   616
               	    newEap->iCertificate = new (ELeave) EapCertificateEntry;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   617
                    iEapTypeArray.AppendL(newEap);
67
hgs
parents: 62
diff changeset
   618
                    CleanupStack::Pop(newEap);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   619
			        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   620
			    else if(aCharacteristic.Name().Compare( SECSSID ) == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   621
			        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   622
                    SECssID* newsecSSID = new (ELeave) SECssID;
67
hgs
parents: 62
diff changeset
   623
                    CleanupStack::PushL( newsecSSID );
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   624
                    newsecSSID->iSSSID = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   625
                    newsecSSID->iSUSSID = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   626
                    iSecSSID.AppendL(newsecSSID);
67
hgs
parents: 62
diff changeset
   627
                    CleanupStack::Pop(newsecSSID);
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   628
			        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   629
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   630
			    aCharacteristic.AcceptL( *this );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   631
			    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   632
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   633
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   634
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   635
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   636
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   637
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   638
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   639
// CWPAPNapdef::VisitL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   640
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   641
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   642
void CWPAPNapdef::VisitL( CWPParameter& aParameter )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   643
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   644
	TInt id = aParameter.ID();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   645
	TPtrC value( aParameter.Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   646
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   647
	FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::VisitL(CWPParameter) id: %d value: %S"), id, &value));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   648
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   649
	switch ( id )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   650
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   651
		case EWPParameterName:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   652
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   653
			if ( !iConnectionName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   654
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   655
				iConnectionName = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   656
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   657
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   658
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   659
		case EWPParameterBearer:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   660
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   661
			if ( iBearer != 0 || iBearerUnsupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   662
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   663
				break; // Already received a bearer information
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   664
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   665
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   666
			if ( value == KGSMGPRS )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   667
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   668
				iBearer = KUidPacketDataBearerType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   669
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   670
			else if ( value == KWLAN && iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   671
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   672
				iBearer = KUidWlanBearerType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   673
				MarkReceived( EWPParameterWlan_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   674
				}				
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   675
			else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   676
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   677
				// Unsupported bearer type
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   678
				iBearerUnsupported = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   679
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   680
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   681
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   682
		case EWPParameterNapAddress:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   683
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   684
			if ( !iAccesspointName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   685
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   686
				iAccesspointName = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   687
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   688
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   689
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   690
		case EWPParameterLinger:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   691
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   692
			iLinger = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   693
			UdateligerValueL( iLinger );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   694
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   695
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   696
		case EWPParameterNapAddrType:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   697
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   698
			if ( !iAccesspointNameType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   699
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   700
				iAccesspointNameType = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   701
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   702
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   703
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   704
		case EWPParameterAuthName:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   705
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   706
			if ( !iUserName )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   707
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   708
				iUserName = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   709
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   710
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   711
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   712
		case EWPParameterAuthSecret:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   713
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   714
			if ( !iPassword )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   715
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   716
				iPassword = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   717
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   718
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   719
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   720
		case EWPParameterAuthType:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   721
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   722
			// If already received don't accept
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   723
			if (IsReceived(EWPParameterAuthentication_id))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   724
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   725
				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   726
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   727
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   728
			if ( value == KCHAP || value == KMD5 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   729
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   730
				iSecureAuthentication = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   731
				MarkReceived( EWPParameterAuthentication_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   732
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   733
			else if ( value == KPAP )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   734
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   735
				iSecureAuthentication = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   736
				MarkReceived( EWPParameterAuthentication_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   737
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   738
			else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   739
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   740
				// Not supported...
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   741
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   742
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   743
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   744
		case EWPParameterLocalAddr: // iPhoneIPAddress
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   745
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   746
			if ( !iPhoneIPAddress )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   747
				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   748
				iPhoneIPAddress = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   749
				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   750
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   751
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   752
		case EWPParameterDNSAddr:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   753
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   754
            // All name servers must be stored, as some of them might
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   755
            // be IPv6 and some IPv4
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   756
            User::LeaveIfError( iNameServers.Append( &aParameter ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   757
			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   758
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   759
        case EWPParameterIfNetworks:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   760
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   761
            if( !iIfNetworks )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   762
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   763
                iIfNetworks = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   764
                MarkReceived( EWPParameterIfNetworks_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   765
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   766
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   767
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   768
        case EWPParameterInternet:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   769
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   770
            MarkReceived( EWPParameterInternet_id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   771
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   772
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   773
//JMan for WLan
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   774
        case EWPParameterNapID:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   775
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   776
            if ( !iNapID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   777
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   778
                iNapID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   779
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   780
            break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   781
            }    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   782
        // Here case 0 are handled the WLAN parameters that are extensions  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   783
        // to OMA Client Provisioning parameter set.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   784
        case 0:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   785
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   786
        if( iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   787
        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   788
        	HandleWLanParametersL( aParameter );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   789
        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   790
        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   791
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   792
//JMan for WLan ends
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   793
		default:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   794
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   795
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   796
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   797
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   798
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   799
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   800
// CWPAPNapdef::HandleWLanParametersL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   801
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   802
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   803
void CWPAPNapdef::HandleWLanParametersL( CWPParameter& aParameter )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   804
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   805
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   806
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   807
	if( !iWlanSupported )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   808
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   809
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WLAN not supported." ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   810
		User::Leave( KErrNotSupported );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   811
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   812
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   813
	SECssID* scssid = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   814
	if( iSecSSID.Count() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   815
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   816
		scssid = iSecSSID[iSecSSID.Count()-1];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   817
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   818
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   819
	TPtrC value( aParameter.Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   820
    if( ( aParameter.Name().Compare( PRISSID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   821
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   822
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriSSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   823
        if ( !iPriSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   824
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   825
            iPriSSID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   826
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   827
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   828
    else if( ( aParameter.Name().Compare( PRIUSSID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   829
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   830
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriUSSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   831
        if ( !iPriUSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   832
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   833
            iPriUSSID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   834
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   835
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   836
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   837
    else if( ( aParameter.Name().Compare( PRIHSSID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   838
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   839
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   840
        if ( !iPriHSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   841
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   842
            iPriHSSID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   843
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   844
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   845
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   846
    else if( ( aParameter.Name().Compare( SSSID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   847
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   848
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   849
        if(scssid!=NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   850
        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   851
        	scssid->iSSSID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   852
        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   853
			  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   854
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   855
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   856
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   857
    else if( ( aParameter.Name().Compare( SUSSID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   858
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   859
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   860
			  if(scssid!=NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   861
        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   862
        	scssid->iSUSSID = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   863
        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   864
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   865
                        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   866
    else if( ( aParameter.Name().Compare( NETMODE ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   867
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   868
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   869
        if ( value == KADHOC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   870
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   871
			FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode adhoc" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   872
			iNetMode = CMManager::EAdhoc;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   873
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   874
        else // default is INFRA
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   875
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   876
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode infra" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   877
            iNetMode =CMManager::EInfra;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   878
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   879
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   880
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   881
    else if( ( aParameter.Name().Compare( SECMODE ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   882
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   883
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   884
        if ( value == KWEPSEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   885
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   886
			FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWEPSEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   887
			iSecMode = CMManager::EWlanSecModeWep;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   888
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   889
        else if( value == K8021XSEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   890
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   891
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode K8021XSEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   892
			iSecMode = CMManager::EWlanSecMode802_1x;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   893
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   894
        else if( value == KWPASEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   895
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   896
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPASEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   897
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   898
			iSecMode = CMManager::EWlanSecModeWpa;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   899
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   900
        else if( value == KWPA2SEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   901
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   902
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPA2SEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   903
			iSecMode = CMManager::EWlanSecModeWpa2;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   904
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   905
        else if( value == KWPAPRESSEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   906
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   907
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPAPRESSEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   908
			iSecMode = CMManager::EWlanSecModeWpa;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   909
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   910
        else if( value == KWPA2PRESSEC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   911
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   912
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPA2PRESSEC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   913
			iSecMode = CMManager::EWlanSecModeWpa2;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   914
            }          
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   915
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   916
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   917
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode open" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   918
			iSecMode = CMManager::EWlanSecModeOpen;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   919
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   920
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   921
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   922
    else if( ( aParameter.Name().Compare( WPAPRESKEYASC ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   923
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   924
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WPAPRESKEYASC" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   925
        if ( !iWpaPresKeyAsc )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   926
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   927
            iWpaPresKeyAsc = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   928
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   929
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   930
        // indicates the default wepkey index
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   931
    else if( ( aParameter.Name().Compare( DEFAULTWEPIND ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   932
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   933
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepind" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   934
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   935
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   936
        lex.Val( iDefaultWepKeyIndex );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   937
        if ( iDefaultWepKeyIndex >= 4 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   938
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   939
            iDefaultWepKeyIndex = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   940
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   941
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   942
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   943
    else if( ( aParameter.Name().Compare( WEPAUTHMODE ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   944
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   945
        if ( value == KWEPAUTHMODEOPEN )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   946
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   947
			FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepauthmode OPEN" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   948
			iAuthentication = EAuthOpen;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   949
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   950
		else if ( value == KWEPAUTHMODESHARED )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   951
		    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   952
		    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepauthmode SHARED" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   953
			iAuthentication = EAuthShared;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   954
		    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   955
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   956
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   957
    else if( ( aParameter.Name().Compare( WEPKEYLENGTH ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   958
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   959
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYLENGTH" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   960
        if ( !iWepKeyLength )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   961
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   962
            iWepKeyLength = &aParameter;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   963
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   964
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   965
    else if( ( aParameter.Name().Compare( WEPKEYINDEX ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   966
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   967
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYINDEX" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   968
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   969
        lex.Val( iWepInd );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   970
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   971
    else if( ( aParameter.Name().Compare( WEPKEYDATA ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   972
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   973
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYDATA" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   974
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   975
        if ( iWepInd <  4 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   976
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   977
            const TUint8 K40Bits = 5;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   978
            const TUint8 K104Bits = 13;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   979
            const TUint8 K232Bits = 29;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   980
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   981
            TBuf8<KMaxLengthOfKeyData> buf8;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   982
            StrCopy( buf8, aParameter.Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   983
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   984
            if(buf8.Length() == K232Bits ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   985
                buf8.Length() == K104Bits ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   986
                buf8.Length() == K40Bits  )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   987
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   988
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL ASCI Wep Key" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   989
                HBufC8* buf8Conv = HBufC8::NewLC( KMaxLengthOfKeyData );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   990
                ConvertAsciiToHex( buf8, buf8Conv );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   991
                iKeyData[iWepInd] = *buf8Conv;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   992
                iKeyFormat[iWepInd] = CWPAPNapdef::EAscii;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   993
                CleanupStack::PopAndDestroy( buf8Conv );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   994
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   995
            else if( buf8.Length()==K232Bits*2 ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   996
                buf8.Length()== K104Bits*2 ||
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   997
                buf8.Length() == K40Bits*2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   998
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   999
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL HEX Wep Key" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1000
                iKeyData[iWepInd] = buf8;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1001
                iKeyFormat[iWepInd] = CWPAPNapdef::EHexadecimal;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1002
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1003
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1004
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1005
        }// else if	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1006
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1007
    // Handle EAP parameter
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1008
    HandleEAPParametersCCL( aParameter );        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1009
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1010
    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1011
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1012
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1013
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1014
// CWPAPNapdef::HandleEAPParametersL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1015
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1016
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1017
void CWPAPNapdef::HandleEAPParametersCCL( CWPParameter& aParameter )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1018
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1019
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1020
   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1021
   	CEapTypeElement* eap = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1022
   	if ( iEapTypeArray.Count() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1023
   	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1024
   	    eap = iEapTypeArray[iEapTypeArray.Count()-1];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1025
   	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1026
   	if(!eap)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1027
   	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1028
   	    return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1029
   	    }    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1030
   	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1031
	TPtrC value( aParameter.Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1032
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1033
    if( ( aParameter.Name().Compare( EAPTYPE ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1034
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1035
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPTYPE" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1036
              
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1037
        ConvertEAPStringToIds( value, eap->iEapTypeString, eap->iEAPSettings->iEAPExpandedType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1038
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1039
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1040
    else if( ( aParameter.Name().Compare( EAPUSERNAME ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1041
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1042
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPUSERNAME" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1043
        if ( eap->iEAPSettings->iUsername.Length() == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1044
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1045
            eap->iEAPSettings->iUsername = value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1046
            eap->iEAPSettings->iUsernamePresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1047
            eap->iEAPSettings->iUseAutomaticUsernamePresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1048
            eap->iEAPSettings->iUseAutomaticUsername = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1049
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1050
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1051
    else if( ( aParameter.Name().Compare( EAPPASSWORD ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1052
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1053
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPASSWORD" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1054
        if ( eap->iEAPSettings->iPassword.Length() == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1055
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1056
            eap->iEAPSettings->iPassword = value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1057
            eap->iEAPSettings->iPasswordPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1058
            eap->iEAPSettings-> iShowPassWordPromptPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1059
            eap->iEAPSettings-> iShowPassWordPrompt = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1060
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1061
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1062
    else if( ( aParameter.Name().Compare( EAPREALM ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1063
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1064
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPREALM" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1065
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1066
        if ( eap->iEAPSettings->iRealm.Length() == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1067
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1068
            eap->iEAPSettings->iRealm = value;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1069
            eap->iEAPSettings->iRealmPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1070
            eap->iEAPSettings->iUseAutomaticRealmPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1071
            eap->iEAPSettings->iUseAutomaticRealm = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1072
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1073
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1074
    else if( ( aParameter.Name().Compare( EAPUSEPSEUD ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1075
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1076
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPUSEPSEUD" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1077
        TInt pseudonyms;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1078
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1079
        lex.Val( pseudonyms );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1080
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1081
        eap->iEAPSettings->iUsePseudonymsPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1082
        if ( pseudonyms == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1083
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1084
            eap->iEAPSettings->iUsePseudonyms = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1085
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1086
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1087
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1088
            eap->iEAPSettings->iUsePseudonyms = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1089
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1090
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1091
    else if( ( aParameter.Name().Compare( EAPMAXAUTHS ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1092
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1093
        // not supported
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1094
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPMAXAUTHS" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1095
        }// else if 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1096
    else if( ( aParameter.Name().Compare( EAPENCAPS ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1097
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1098
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1099
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPENCAPS" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1100
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1101
        TEapExpandedType dummy; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1102
        ConvertEAPStringToIds( value, eap->iEncapsulatingExpandedEapId, dummy );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1103
                     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1104
        }// else if    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1105
    else if( ( aParameter.Name().Compare( EAPVERSERREALM ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1106
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1107
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPVERSERREALM" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1108
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1109
        TInt serverRealm;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1110
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1111
        lex.Val( serverRealm );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1112
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1113
        eap->iEAPSettings->iVerifyServerRealmPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1114
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1115
        if ( serverRealm == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1116
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1117
            eap->iEAPSettings->iVerifyServerRealm = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1118
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1119
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1120
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1121
            eap->iEAPSettings->iVerifyServerRealm = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1122
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1123
        }// else if    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1124
    else if( ( aParameter.Name().Compare( EAPCLIENTHAUTH ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1125
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1126
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCLIENTHAUTH" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1127
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1128
        TInt clientAuthentication;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1129
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1130
        lex.Val( clientAuthentication );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1131
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1132
        eap->iEAPSettings->iRequireClientAuthenticationPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1133
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1134
        if ( clientAuthentication == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1135
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1136
            eap->iEAPSettings->iRequireClientAuthentication = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1137
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1138
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1139
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1140
            eap->iEAPSettings->iRequireClientAuthentication = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1141
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1142
        }// else if    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1143
    else if( ( aParameter.Name().Compare( EAPSESVALTIME ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1144
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1145
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSESVALTIME" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1146
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1147
        TInt sessionValidityTime;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1148
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1149
        lex.Val( sessionValidityTime );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1150
        eap->iEAPSettings->iSessionValidityTime = sessionValidityTime;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1151
        eap->iEAPSettings->iSessionValidityTimePresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1152
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1153
        }// else if    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1154
    else if( ( aParameter.Name().Compare( EAPCIPSUIT ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1155
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1156
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCIPSUIT" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1157
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1158
        TInt cipherSuites;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1159
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1160
        lex.Val( cipherSuites );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1161
        eap->iEAPSettings->iCipherSuites.Append( cipherSuites );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1162
        eap->iEAPSettings->iCipherSuitesPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1163
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1164
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1165
    else if( ( aParameter.Name().Compare( EAPPEAPV0 ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1166
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1167
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV0" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1168
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1169
        TInt peap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1170
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1171
        lex.Val( peap );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1172
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1173
        eap->iEAPSettings->iPEAPVersionsPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1174
        if ( peap == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1175
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1176
            eap->iEAPSettings->iPEAPv0Allowed = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1177
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1178
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1179
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1180
            eap->iEAPSettings->iPEAPv0Allowed = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1181
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1182
        }// else if     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1183
    else if( ( aParameter.Name().Compare( EAPPEAPV1 ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1184
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1185
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV1" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1186
        TInt peap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1187
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1188
        lex.Val( peap );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1189
        eap->iEAPSettings->iPEAPVersionsPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1190
        if ( peap == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1191
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1192
            eap->iEAPSettings->iPEAPv1Allowed = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1193
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1194
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1195
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1196
            eap->iEAPSettings->iPEAPv1Allowed = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1197
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1198
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1199
    else if( ( aParameter.Name().Compare( EAPPEAPV2 ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1200
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1201
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV2" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1202
        TInt peap;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1203
        TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1204
        lex.Val( peap );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1205
        eap->iEAPSettings->iPEAPVersionsPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1206
        if ( peap == 1 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1207
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1208
            eap->iEAPSettings->iPEAPv2Allowed = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1209
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1210
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1211
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1212
            eap->iEAPSettings->iPEAPv2Allowed = EFalse;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1213
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1214
        }// else if  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1215
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1216
    else if( ( aParameter.Name().Compare( EAPISSNAME ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1217
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1218
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPISSNAME" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1219
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1220
        eap->iCertificate->SetSubjectName(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1221
        eap->iCertificate->SetSubjectNamePresent();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1222
        }// else if        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1223
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1224
    else if( ( aParameter.Name().Compare( EAPSUBNAME ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1225
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1226
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSUBNAME" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1227
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1228
        eap->iCertificate->SetIssuerName(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1229
        eap->iCertificate->SetIssuerNamePresent();       
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1230
        }// else if        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1231
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1232
    else if( ( aParameter.Name().Compare( EAPCERTTYPE ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1233
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1234
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCERTTYPE" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1235
        if ( value == EAPCERTCA )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1236
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1237
			FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EEapSim" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1238
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1239
            eap->iCertificate->SetCertType(EapCertificateEntry::ECA);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1240
            eap->iEAPSettings-> iUseAutomaticCACertificatePresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1241
            eap->iEAPSettings-> iUseAutomaticCACertificate = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1242
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1243
		else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1244
		    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1245
		    eap->iCertificate->SetCertType(EapCertificateEntry::EUser);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1246
		    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1247
		// Certificates must be present since this field was added
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1248
		eap->iEAPSettings->iCertificatesPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1249
		eap->iCertificate->SetIsEnabledPresent();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1250
		eap->iCertificate->SetIsEnabled(ETrue) ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1251
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1252
        }// else if        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1253
    else if( ( aParameter.Name().Compare( EAPSERNUM ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1254
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1255
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSERNUM" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1256
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1257
        eap->iCertificate->SetSerialNumber(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1258
        eap->iCertificate->SetSerialNumberPresent();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1259
        }// else if
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1260
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1261
    else if( ( aParameter.Name().Compare( EAPSUBKEYID ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1262
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1263
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSUBKEYID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1264
           
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1265
        _LIT(KHexIdLC, "0x");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1266
       	_LIT(KHexIdUC, "0X");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1267
       	TBuf<2> HexIdBuf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1268
       	TInt keyLen = aParameter.Value().Length();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1269
       	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1270
       	// setting the given key to the key buffer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1271
       	TBuf<KMaxSubKeyLenght> origKey;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1272
       	origKey.SetLength(keyLen);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1273
       	origKey = aParameter.Value();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1274
       	TBuf<KMaxSubKeyLenght> key;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1275
       	TLex tmpByte;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1276
       	TInt err(KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1277
       	TUint16 byte;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1278
       	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1279
       	// Remove possible spaces from the beginning
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1280
       	origKey.TrimLeft();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1281
       	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1282
       	// if the key is over two chars long, then we have to check
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1283
       	// whether there is 0x or 0X in the beginning
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1284
       	if (origKey.Length() >= 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1285
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1286
        	// Copy the two left most characters in to the buffer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1287
        	HexIdBuf.Copy(origKey.Left(2));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1288
        	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1289
        	// If the first characters are 0x or 0X, then they should be ignored
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1290
        	if (HexIdBuf.Compare(KHexIdLC) == 0
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1291
        			|| HexIdBuf.Compare(KHexIdUC) == 0)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1292
        		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1293
        		// delete two characters
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1294
        		origKey.Delete(0, 2);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1295
        		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1296
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1297
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1298
       	// looping the subject key through, removing whitespaces
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1299
       	for (TInt i = 0; i < keyLen; i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1300
       		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1301
       		// removing white spaces from the left side of the key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1302
       		origKey.TrimLeft();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1303
       		// check that there are characters left
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1304
       		if (origKey.Length() >= 2)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1305
       			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1306
       			// pick the two left most bytes from the key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1307
       			tmpByte = origKey.Left(2);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1308
       			// convert byte into binary format
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1309
       			err = tmpByte.Val(byte, EHex);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1310
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1311
       			// delete two characters from the left side of the character array in the buffer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1312
       			origKey.Delete(0, 2);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1313
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1314
       			// check whether conversion to decimal went ok
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1315
       			if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1316
       				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1317
       				// if there are problems, then leave the loop
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1318
       				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1319
       				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1320
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1321
       			// store the appended byte into the key variable
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1322
       			key.Append(byte);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1323
       			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1324
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1325
       		else if (origKey.Length() == 1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1326
       			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1327
       			// pick the left most bytes from the key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1328
       			tmpByte = origKey.Left(1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1329
       			// convert byte into binary format
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1330
       			err = tmpByte.Val(byte, EHex);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1331
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1332
       			// delete two characters from the left side of the character array in the buffer
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1333
       			origKey.Delete(0, 1);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1334
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1335
       			// check whether conversion to decimal went ok
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1336
       			if (err != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1337
       				{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1338
       				// if there are problems, then leave the loop
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1339
       				break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1340
       				}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1341
       			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1342
       			// store the appended byte into the key variable
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1343
       			key.Append(byte);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1344
       			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1345
       		else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1346
       			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1347
       			break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1348
       			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1349
       		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1350
       	TBuf8<KMaxSubKeyLenght> keyIdentifier;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1351
       	keyIdentifier.Copy(key);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1352
       	// store key value only if no errors occurred
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1353
       	if (err == KErrNone) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1354
       		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1355
       		eap->iCertificate->SetSubjectKeyId(keyIdentifier);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1356
       		eap->iCertificate->SetSubjectKeyIdPresent();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1357
       		eap->iEAPSettings->iCertificatesPresent = ETrue; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1358
       		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1359
       	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1360
       	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1361
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1362
    else if( ( aParameter.Name().Compare( EAPTHUMBPRINT ) ) == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1363
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1364
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPTHUMBPRINT" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1365
        eap->iCertificate->SetThumbprintPresent();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1366
        eap->iCertificate->SetThumbprint(value);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1367
        }// else if                  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1368
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1369
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1370
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1371
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1372
// CWPAPNapdef::CWPAPNapdef
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1373
// C++ default constructor can NOT contain any code, that
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1374
// might leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1375
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1376
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1377
CWPAPNapdef::CWPAPNapdef( TBool aFollowingLink,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1378
                          const TDesC& aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1379
                          CWPCharacteristic& aLogicalCharacteristic )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1380
                        : CWPAPItemBase( aDefaultName ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1381
                          iCharacteristic( aLogicalCharacteristic ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1382
                          iFollowingLink( aFollowingLink )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1383
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1384
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1385
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1386
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1387
// CWPAPNapdef::ConstructL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1388
// Symbian 2nd phase constructor can leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1389
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1390
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1391
void CWPAPNapdef::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1392
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1393
	iLingerValue = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1394
	iLingerFlag = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1395
	iInternetIndicator = -1;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1396
	//checks if Wlan feature is supported
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1397
  FeatureManager::InitializeLibL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1398
  iWlanSupported = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1399
  FeatureManager::UnInitializeLib();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1400
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1401
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1402
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1403
// CWPAPNapdef::SaveWlanDataL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1404
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1405
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1406
void CWPAPNapdef::SaveWlanDataL( TUint32 aIapId, CCommsDatabase& aCommsDb )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1407
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1408
    FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL APid: (%d)"),  aIapId) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1409
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1410
    if ( iBearer == KUidWlanBearerType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1411
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1412
        CCommsDbTableView* wLanServiceTable;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1413
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1414
        // CMManager
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1415
        // Search the Iap Service Id using the received IapId
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1416
        RCmConnectionMethodExt cm = iCm->ConnectionMethodL( aIapId );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1417
        TUint32 serviceId = cm.GetIntAttributeL( CMManager::ECmIapServiceId );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1418
     	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1419
        // The BeginTransaction might fail if someone else has locked CommsDat
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1420
        TInt dberr = aCommsDb.BeginTransaction();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1421
        if( dberr == KErrLocked )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1422
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1423
            // Try BeginTransaction again to get lock
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1424
            TInt retry = KBeginTransRetryCount;            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1425
            while ( retry > 0 && dberr == KErrLocked )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1426
                {                   
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1427
                User::After(KBeginTransRetryDelay);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1428
                dberr = aCommsDb.BeginTransaction();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1429
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL: Database locked. BeginTransaction retry." ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1430
                retry--;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1431
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1432
            if(dberr != KErrNone)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1433
                {                            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1434
                // Could not get lock to CommsDat at all
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1435
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL: BeginTransaction failed completely." ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1436
                User::Leave( dberr ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1437
                }           
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1438
            }                             
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1439
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1440
        TInt indexToSec = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1441
        wLanServiceTable = aCommsDb.OpenViewMatchingUintLC( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1442
                        TPtrC( WLAN_SERVICE ), TPtrC( WLAN_SERVICE_ID ), serviceId );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1443
        TInt errorCode = wLanServiceTable->GotoFirstRecord();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1444
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1445
        if ( errorCode == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1446
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1447
            indexToSec = serviceId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1448
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL updaterecord" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1449
            wLanServiceTable->UpdateRecord();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1450
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1451
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1452
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1453
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL insertrecord" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1454
            TUint32 dummyUid( 0 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1455
            User::LeaveIfError( wLanServiceTable->InsertRecord( dummyUid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1456
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1457
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_SERVICE_ID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1458
            // Save link to LAN service
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1459
            wLanServiceTable->WriteUintL( TPtrC( WLAN_SERVICE_ID ), aIapId );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1460
            indexToSec = aIapId;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1461
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1462
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1463
        // Setting the security mode manually, because CMManager does not do that
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1464
        wLanServiceTable->WriteUintL( TPtrC( WLAN_SECURITY_MODE ), iSecMode );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1465
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1466
    	if( iSecSSID.Count() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1467
			{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1468
	        CCommsDbTableView* wLanSecserviceTable;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1469
			wLanSecserviceTable = aCommsDb.OpenTableLC( TPtrC( WLAN_SECONDARY_SSID ) ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1470
			//CleanupStack::Pop(wLanSecserviceTable); // wLanSecserviceTable
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1471
		 	TBuf<4> blank;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1472
		 	blank.Append(KNullDesC);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1473
		    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1474
		    TBool sssid = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1475
	        TBool sussid = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1476
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1477
	        for(TInt i = 0; i < iSecSSID.Count(); i++ )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1478
	        	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1479
	        	TUint32 id ;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1480
	        	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1481
		        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1482
		        TInt retval = wLanSecserviceTable->InsertRecord(id);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1483
		        wLanSecserviceTable->WriteUintL(TPtrC(WLAN_SEC_SSID_SERVICE_ID), indexToSec );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1484
		        wLanSecserviceTable->WriteUintL(TPtrC(WLAN_SEC_SSID_ID), id );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1485
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1486
		 	    if( iSecSSID[i]->iSSSID != NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1487
		 	    sssid = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1488
		 	    if(iSecSSID[i]->iSUSSID != NULL)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1489
		 	    sussid = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1490
		 	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1491
		 	    if((sssid && iSecSSID[i]->iSSSID->Value() != blank) || (sussid && iSecSSID[i]->iSUSSID->Value() != blank ))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1492
		 	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1493
		 		if( sssid )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1494
		 		wLanSecserviceTable->WriteTextL(TPtrC(WLAN_SEC_SSID_SCANNED_SSID), iSecSSID[i]->iSSSID->Value());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1495
			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1496
				if(sussid)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1497
				wLanSecserviceTable->WriteTextL(TPtrC(WLAN_SEC_SSID_USED_SSID), iSecSSID[i]->iSUSSID->Value());
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1498
		        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1499
		 	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1500
		 	    wLanSecserviceTable->PutRecordChanges();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1501
		 	    sssid = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1502
	            sussid = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1503
	        	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1504
	        	CleanupStack::PopAndDestroy( wLanSecserviceTable );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1505
			}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1506
			
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1507
			iSecSSID.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1508
			iSecSSID.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1509
        if ( iPriSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1510
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1511
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_SSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1512
            // Save NU_WLAN_SSID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1513
        	wLanServiceTable->WriteTextL( TPtrC(NU_WLAN_SSID), iPriSSID->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1514
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1515
        if ( iPriUSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1516
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1517
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_USED_SSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1518
            // Save WLAN_USED_SSID	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1519
    	      wLanServiceTable->WriteTextL( TPtrC(WLAN_USED_SSID), iPriUSSID->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1520
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1521
        if ( iPriHSSID )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1522
            {        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1523
    	    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_SCAN_SSID" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1524
            // Save WLAN_SCAN_SSID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1525
    	    wLanServiceTable->WriteBoolL( TPtrC(WLAN_SCAN_SSID), ETrue );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1526
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1527
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1528
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1529
    	    wLanServiceTable->WriteBoolL( TPtrC(WLAN_SCAN_SSID), EFalse );            	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1530
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1531
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1532
       	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WEP_INDEX" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1533
        // Save index of key in use
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1534
        wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_INDEX ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1535
                                      (TUint32&) iDefaultWepKeyIndex );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1536
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WEP_INDEX: (%d)"),  iDefaultWepKeyIndex) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1537
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1538
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL NU_WLAN_AUTHENTICATION_MODE" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1539
        // Open / Shared (0/1)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1540
        // Save index of key in use
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1541
        wLanServiceTable->WriteUintL( TPtrC( NU_WLAN_AUTHENTICATION_MODE ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1542
                                     ( TUint32& ) iAuthentication );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1543
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL NU_WLAN_AUTHENTICATION_MODE: (%d)"),  iAuthentication) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1544
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1545
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1546
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY1" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1547
        // Save first WEP key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1548
        wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY1 ), iKeyData[0] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1549
        wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY1_FORMAT ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1550
                                 ( TUint32& ) iKeyFormat[0] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1551
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[0] ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1552
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1553
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1554
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY2" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1555
        // Save second WEP key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1556
        wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY2 ), iKeyData[1] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1557
        wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY2_FORMAT ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1558
                                 ( TUint32& ) iKeyFormat[1] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1559
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[1] ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1560
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1561
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1562
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY3" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1563
        // Save third WEP key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1564
        wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY3 ), iKeyData[2] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1565
        wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY3_FORMAT ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1566
                                 ( TUint32& ) iKeyFormat[2] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1567
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[2] ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1568
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1569
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1570
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1571
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY4" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1572
        // Save fourth WEP key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1573
        wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY4 ), iKeyData[3] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1574
        wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY4_FORMAT ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1575
                                 ( TUint32& ) iKeyFormat[3] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1576
        FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[3] ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1577
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1578
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1579
        if ( iWpaPresKeyAsc )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1580
            {     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1581
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL convert WPAKEY to ascii" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1582
            // convert unicode to 8-bit ascii
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1583
            TBuf8<KMaxWpaPskLength> wpaKey;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1584
            StrCopy( wpaKey, iWpaPresKeyAsc->Value() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1585
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1586
            // Enable WPA Pre Shared key mode
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1587
            wLanServiceTable->WriteBoolL( TPtrC( WLAN_ENABLE_WPA_PSK ), ETrue );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1588
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1589
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WPA_PRE_SHARED_KEY" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1590
            // Save PreShared Key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1591
            wLanServiceTable->WriteTextL( TPtrC( WLAN_WPA_PRE_SHARED_KEY ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1592
                                         wpaKey );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1593
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WPA_KEY_LENGTH" ) ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1594
            // Save PreShared Key Length
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1595
            wLanServiceTable->WriteUintL( TPtrC( WLAN_WPA_KEY_LENGTH ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1596
                                         wpaKey.Length() );                                         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1597
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1598
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1599
        TBuf<KMaxLengthOfEapList> eapList;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1600
        eapList.Copy(KEapAll);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1601
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1602
        for (TInt i=0;i<iEapTypeArray.Count();i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1603
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1604
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1605
            CEapTypeElement* eap = iEapTypeArray[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1606
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1607
            if ( eap->iEAPSettings->iCertificatesPresent )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1608
            	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1609
            	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL Certificate was present." ) );
62
hgs
parents: 56
diff changeset
  1610
            	eap->iEAPSettings->iCertificates.AppendL( eap->iCertificate );	
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1611
            	}                  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1612
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1613
            // Save EAP list
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1614
            if ( eap->iEapTypeString.Length() > 0  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1615
            	 && eap->iEncapsulatingExpandedEapId.Length() == 0) // AND method is not encapsulated
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1616
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1617
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_EAPS" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1618
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1619
                TBuf8<3> buf;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1620
                _LIT8(KFormat, "%d");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1621
                // pick the last byte from the array
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1622
                buf.Format(KFormat, eap->iEapTypeString[KExpandedEapIdLength - 1]);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1623
                // search for the correct offset for the eap type from the KEapAll literal
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1624
                TInt index = KEapAll().Find(buf);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1625
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1626
                const TUint8 offset = 2; //length = f "-0" string
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1627
                // Add '+' to the correct offset, so that the eap is repsesented activated in the list
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1628
                if(index >= offset)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1629
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1630
                    eapList[index-offset] = KEapPlus; 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1631
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1632
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1633
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1634
            // Set iEncapsulatingEapTypes
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1635
                 for ( TInt j = 0; j < iEapTypeArray.Count(); j++ )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1636
                     {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1637
                     // Check if any method has this method as the encapsulating method
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1638
                     if ( eap->iEapTypeString == iEapTypeArray[j]->iEncapsulatingExpandedEapId )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1639
                         {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1640
                         // Append this method to iEncapsulatedEAPType
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1641
                         eap->iEAPSettings->iEnabledEncapsulatedEAPExpandedTypes.Append( iEapTypeArray[j]->iEAPSettings->iEAPExpandedType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1642
                         eap->iEAPSettings->iEnabledEncapsulatedEAPExpandedTypesPresent = ETrue;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1643
                         }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1644
                     }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1645
                 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1646
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings CEapType::NewL" ) );        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1647
            CEapType* eapType = NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1648
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1649
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1650
            TRAPD( error, ( eapType = CEapType::NewL( ELan, serviceId, eap->iEAPSettings->iEAPExpandedType ) ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1651
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1652
            if ( ( error == KErrNone ) && eapType )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1653
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1654
                CleanupStack::PushL( eapType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1655
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1656
                // Check if this type is tunneled
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1657
                if ( eap->iEncapsulatingExpandedEapId.Length() > 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1658
                	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1659
                	// It is tunneled. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1660
                	eapType->SetTunnelingType( eap->iEncapsulatingExpandedEapId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1661
                	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1662
                	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1663
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1664
                FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings SetConfigurationL" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1665
                TRAP_IGNORE( eapType->SetConfigurationL( *eap->iEAPSettings ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1666
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1667
                CleanupStack::PopAndDestroy( eapType );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1668
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1669
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1670
            else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1671
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1672
                FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL CEapType::NewL err: %d"), error ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1673
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1674
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1675
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1676
            FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1677
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1678
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1679
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1680
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1681
	  		// Expanded EAP types in use. Write the eap list to the new columns.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1682
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1683
    		// generate appropriate entries in the new enabled and disabled list,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1684
    		// overwriting those values 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1685
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1686
    		// count the + and - signs to determine the size of enabled and 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1687
    		// disabled descriptors
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1688
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1689
    		TLex lex( eapList );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1690
    		TInt numPlus = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1691
    		TInt numMinus = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1692
    		TChar ch;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1693
    		while ( !lex.Eos() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1694
    		    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1695
    		    ch = lex.Get();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1696
    		    if ( ch == '+' ) ++numPlus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1697
    		    else if ( ch == '-' ) ++numMinus;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1698
    		    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1699
    		// load general EAP settings If
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1700
    		CEapGeneralSettings* genSettings;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1701
    		genSettings = CEapGeneralSettings::NewL(ELan, serviceId);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1702
    		CleanupStack::PushL( genSettings );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1703
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1704
    		// get lists of enabled/disabled EAPs for the IAP
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1705
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1706
    		RArray<TEapExpandedType> enabledEapMethods;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1707
    		RArray<TEapExpandedType> disabledEapMethods;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1708
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1709
    		enabledEapMethods.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1710
    		disabledEapMethods.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1711
   		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1712
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1713
    		// each entry consumes 8 bytes in binary format
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1714
    		HBufC8* enabledEAPPlugin = HBufC8::NewL( 8 * numPlus );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1715
    		CleanupStack::PushL( enabledEAPPlugin );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1716
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1717
    		HBufC8* disabledEAPPlugin = HBufC8::NewL( 8 * numMinus );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1718
    		CleanupStack::PushL( disabledEAPPlugin );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1719
    		    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1720
    		lex.Assign( eapList );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1721
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1722
    		while ( !lex.Eos() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1723
    		    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1724
    		    // beginning of implementation UID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1725
    		    TInt16 implUid = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1726
    		    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1727
    		    if ( lex.Val( implUid ) != KErrNone || !implUid )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1728
    		        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1729
    		        // if the old string is corrupted, null out both lists
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1730
    		        enabledEAPPlugin->Des().Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1731
    		        disabledEAPPlugin->Des().Zero();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1732
    		        break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1733
    		        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1734
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1735
    		    // append it to the appropriate list ('+' enabled, '-' disabled)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1736
    		    _LIT8( KPadding, "\xFE\0\0\0\0\0\0" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1737
    		    _LIT8( KMsChapV2Padding, "\xFE\xFF\xFF\xFF\0\0\0");
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1738
    		    const TInt KPlainMsChapV2ImplUid = 99;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1739
    		    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1740
    		    if ( implUid > 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1741
    		        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1742
    		        enabledEAPPlugin->Des().Append( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1743
    		                            Abs( implUid ) == KPlainMsChapV2ImplUid? 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1744
    		                                        KMsChapV2Padding: KPadding );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1745
    		        enabledEAPPlugin->Des().Append( Abs( implUid ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1746
    		        TPtrC8 data(reinterpret_cast<TUint8*>(&implUid), KExpandedEapIdLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1747
    		        TEapExpandedType expandedType;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1748
					      expandedType.SetValue(enabledEAPPlugin,KEapExpandedTypeLength);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1749
					      enabledEapMethods.Append(expandedType);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1750
					      }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1751
	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1752
    		    // swallow the delimiter (',')
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1753
    		    lex.Get();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1754
    		    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1755
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1756
    		genSettings->SetEapMethods(enabledEapMethods, disabledEapMethods);  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1757
    		            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1758
                	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1759
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1760
    		CleanupStack::PopAndDestroy( disabledEAPPlugin );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1761
    		CleanupStack::PopAndDestroy( enabledEAPPlugin );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1762
    		CleanupStack::PopAndDestroy( genSettings );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1763
    		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1764
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1765
     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1766
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1767
       iEapTypeArray.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1768
       wLanServiceTable->PutRecordChanges();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1769
  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1770
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1771
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL PutRecordChanges" ) ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1772
        CleanupStack::PopAndDestroy( wLanServiceTable );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1773
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1774
        FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1775
	    aCommsDb.CommitTransaction();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1776
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1777
	else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1778
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1779
	    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL ignored not a WLAN AP" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1780
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1781
	    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1782
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1783
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1784
//------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1785
// CWPAPNapdef::ConvertAsciiToHex
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1786
//------------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1787
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1788
void CWPAPNapdef::ConvertAsciiToHex( const TDesC8& aSource, HBufC8*& aDest )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1789
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1790
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertAsciiToHex" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1791
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1792
	_LIT( hex, "0123456789ABCDEF" );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1793
	TInt size = aSource.Size();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1794
	TPtr8 ptr = aDest->Des();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1795
	for ( TInt ii = 0; ii < size; ii++ )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1796
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1797
		TText8 ch = aSource[ii];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1798
		ptr.Append( hex()[(ch/16)&0x0f] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1799
		ptr.Append( hex()[ch&0x0f] );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1800
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1801
    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertAsciiToHex Done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1802
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1803
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1804
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1805
// CWPAPNapdef::StrCopy
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1806
// String copy with lenght check.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1807
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1808
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1809
void CWPAPNapdef::StrCopy( TDes8& aTarget, const TDesC& aSource )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1810
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1811
    FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::StrCopy" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1812
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1813
	TInt len = aTarget.MaxLength();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1814
    if( len < aSource.Length() ) 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1815
	    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1816
		aTarget.Copy( aSource.Left( len ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1817
		return;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1818
	    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1819
	aTarget.Copy( aSource );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1820
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1821
	FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::StrCopy Done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1822
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1823
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1824
CEapTypeElement::~CEapTypeElement()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1825
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1826
    delete iEAPSettings;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1827
    delete iCertificate;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1828
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1829
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1830
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1831
// CWPAPNapdef::UpdateLingerL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1832
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1833
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1834
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1835
void CWPAPNapdef::UpdateLingerL(const TUint32 aIapId)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1836
{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1837
		if ( iLinger && ( !iLingerFlag ) )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1838
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1839
    	AddLingerL( aIapId , iLingerValue );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1840
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1841
		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1842
}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1843
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1844
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1845
// CWPAPNapdef::UdateligerValueL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1846
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1847
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1848
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1849
void CWPAPNapdef::UdateligerValueL(CWPParameter* aLinger)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1850
{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1851
		TInt err(KErrNone);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1852
		const TDesC& value = aLinger->Value();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1853
		if( !Notalpha(value))
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1854
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1855
		TLex lex( value );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1856
		TUint Linger = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1857
		TInt lingerint;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1858
		err = lex.Val( Linger, EDecimal );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1859
		if( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1860
		{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1861
		    lingerint = Linger;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1862
			if( lingerint >= 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1863
		    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1864
		    	iLingerValue = lingerint;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1865
		    	iLingerFlag = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1866
		    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1867
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1868
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1869
}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1870
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1871
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1872
// CWPAPNapdef::UdateligerValueL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1873
// 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1874
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1875
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1876
TBool CWPAPNapdef::Notalpha(const TDesC& aValue)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1877
{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1878
	TBool NotAlpha = EFalse;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1879
	TChar character;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1880
	for(TInt i = 0 ; i < aValue.Length(); i++)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1881
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1882
		character = aValue[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1883
		NotAlpha = character.IsAlpha();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1884
		if(NotAlpha)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1885
		break;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1886
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1887
	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1888
	return NotAlpha;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1889
}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1890
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1891
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1892
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1893
// Adds iapID and linger interval to CentralRepository
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1894
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1895
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1896
void CWPAPNapdef::AddLingerL( const TInt aIapId, const TInt aLingerInterval )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1897
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1898
    TInt    err( KErrNone );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1899
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1900
    // Open repository
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1901
    CRepository* repository = CRepository::NewLC( KCRUidPDPContextManager );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1902
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1903
    // Find if an entry for "iapId" already exists in CentRep 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1904
    RArray< TUint32 > foundKeys;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1905
    foundKeys.Reset();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1906
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1907
    err = repository->FindEqL( KIapColumn,       // partial key
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1908
                               KColumnMask,      // key mask
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1909
                               aIapId,           // value
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1910
                               foundKeys );      // found keys
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1911
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1912
    if ( err == KErrNone || err == KErrNotFound )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1913
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1914
        if ( foundKeys.Count() == 0 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1915
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1916
            // Add a new entry
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1917
            TInt arrayCount( 0 );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1918
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1919
            // Get number of iapId&linger entries in Centrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1920
            err = repository->Get( KPdpContextManagerLingerArrayCount, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1921
                                   arrayCount );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1922
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1923
            if ( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1924
                {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1925
                arrayCount++;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1926
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1927
                err = repository->Create( ( KIapColumn | arrayCount ), aIapId ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1928
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1929
                if ( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1930
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1931
                    err = repository->Create( ( KLingerColumn | arrayCount ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1932
                                               aLingerInterval );     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1933
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1934
                
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1935
                if ( err == KErrNone )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1936
                    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1937
                    // Update number of iapId&linger entries in Centrep
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1938
                    err = repository->Set( KPdpContextManagerLingerArrayCount, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1939
                                           arrayCount );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1940
                    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1941
                }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1942
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1943
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1944
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1945
            // Update existing entry on current row
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1946
            TInt32 row = foundKeys[ 0 ] & KRowMask;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1947
            
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1948
            err = repository->Set( ( KLingerColumn | row ), aLingerInterval ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1949
            }         
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1950
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1951
        
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1952
    foundKeys.Close();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1953
    CleanupStack::PopAndDestroy( repository );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1954
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1955
    User::LeaveIfError( err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1956
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1957
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1958
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1959
void CWPAPNapdef::ConvertEAPStringToIds( const TDesC& aEAPString, TDes8& aExpandedId, TEapExpandedType& aID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1960
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1961
    if ( aEAPString == KEAPSIM )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1962
		{	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1963
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapSim" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1964
		aExpandedId.Copy( KEapSimTypeId, KExpandedEapIdLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1965
		aID = *EapExpandedTypeSim.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1966
		}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1967
    else if( aEAPString == KEAPAKA )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1968
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1969
  		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapAka" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1970
		aExpandedId.Copy( KEapAkaTypeId, KExpandedEapIdLength );	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1971
		aID = *EapExpandedTypeAka.GetType();	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1972
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1973
    else if( aEAPString == KEAPTLS )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1974
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1975
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapTls" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1976
		aExpandedId.Copy( KEapTlsTypeId, KExpandedEapIdLength );	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1977
		aID = *EapExpandedTypeTls.GetType();	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1978
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1979
    else if( aEAPString == KEAPPEAP )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1980
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1981
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapPeap" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1982
		aExpandedId.Copy( KEapPeapTypeId, KExpandedEapIdLength );	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1983
		aID = *EapExpandedTypePeap.GetType();	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1984
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1985
    else if( aEAPString == KEAPTTLS )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1986
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1987
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapTtls" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1988
		aExpandedId.Copy( KEapTtlsTypeId, KExpandedEapIdLength );		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1989
		aID = *EapExpandedTypeTtls.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1990
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1991
   else if( aEAPString == KEAPLEAP )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1992
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1993
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapLeap" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1994
		aExpandedId.Copy( KEapLeapTypeId, KExpandedEapIdLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1995
		aID = *EapExpandedTypeLeap.GetType();		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1996
        }                                    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1997
   else if( aEAPString == KEAPMSCHAPV2 )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1998
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  1999
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapMschapv2" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2000
		aExpandedId.Copy( KEapMschapv2TypeId, KExpandedEapIdLength );		
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2001
		aID = *EapExpandedTypeMsChapv2.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2002
        }     
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2003
   else if( aEAPString == KEAPGTC )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2004
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2005
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapGtc" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2006
		aExpandedId.Copy( KEapGtcTypeId, KExpandedEapIdLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2007
		aID = *EapExpandedTypeGtc.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2008
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2009
   else if( aEAPString == KEAPFAST )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2010
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2011
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapFast" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2012
		aExpandedId.Copy( KEapFastTypeId, KExpandedEapIdLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2013
		aID = *EapExpandedTypeFast.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2014
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2015
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2016
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2017
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2018
		FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapNone" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2019
		aExpandedId.Copy( KEapNoneId, KExpandedEapIdLength );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2020
		aID = *EapExpandedTypeNone.GetType();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2021
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2022
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2023
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2024
 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2025
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2026
// Returns the NAP-ID
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2027
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2028
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2029
const TDesC& CWPAPNapdef::NapId()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2030
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2031
	return iNapID->Value();	
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2032
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2033
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2034
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2035
// Returns the bearer value
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2036
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2037
//    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2038
TUint CWPAPNapdef::Bearer()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2039
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2040
	return iBearer;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2041
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2042
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2043
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2044
// Returns the bearer value
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2045
// ---------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2046
//    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2047
void CWPAPNapdef::SetCMManager( RCmManagerExt* aCm )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2048
	{
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2049
	iCm = aCm;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2050
	}
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2051
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2052
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2053
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
  2054
//  End of File