eapol/eapol_framework/eapol_symbian/am/type/generic/symbian/plugin/src/EapGeneric.cpp
author hgs
Thu, 16 Sep 2010 13:07:04 +0300
changeset 49 43351a4f2da3
parent 34 ad1f037f1ac2
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  EAP and WLAN authentication protocols.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
/*
49
hgs
parents: 34
diff changeset
    19
* %version: 62 %
26
hgs
parents:
diff changeset
    20
*/
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// This is enumeration of EAPOL source code.
hgs
parents:
diff changeset
    23
#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
hgs
parents:
diff changeset
    24
	#undef EAP_FILE_NUMBER_ENUM
34
hgs
parents: 27
diff changeset
    25
	#define EAP_FILE_NUMBER_ENUM 739 
26
hgs
parents:
diff changeset
    26
	#undef EAP_FILE_NUMBER_DATE 
hgs
parents:
diff changeset
    27
	#define EAP_FILE_NUMBER_DATE 1127594498 
hgs
parents:
diff changeset
    28
#endif //#if defined(USE_EAP_MINIMUM_RELEASE_TRACES)
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// INCLUDE FILES
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
#include "EapGeneric.h"
hgs
parents:
diff changeset
    34
#include "EapConversion.h"
hgs
parents:
diff changeset
    35
#include "eap_base_type.h"
hgs
parents:
diff changeset
    36
#include "eap_method_settings.h"
hgs
parents:
diff changeset
    37
#include "eap_am_assert.h"
hgs
parents:
diff changeset
    38
#include <EapTypeInfo.h>
hgs
parents:
diff changeset
    39
#include "abs_eap_am_tools.h"
hgs
parents:
diff changeset
    40
#include "eap_automatic_variable.h"
hgs
parents:
diff changeset
    41
#include <utf.h>                           // for CnvUtfConverter
hgs
parents:
diff changeset
    42
#include "abs_eap_plugin_message.h"
hgs
parents:
diff changeset
    43
#include "eap_plugin_message_base.h"
hgs
parents:
diff changeset
    44
#include "abs_eap_am_message_if.h"
hgs
parents:
diff changeset
    45
#include "eap_am_message_if.h"
hgs
parents:
diff changeset
    46
#include "eap_automatic_variable.h"
hgs
parents:
diff changeset
    47
#include "eap_plugin_client_message_if.h"
hgs
parents:
diff changeset
    48
#include "eap_am_message_if_symbian.h"
hgs
parents:
diff changeset
    49
#include "EapTraceSymbian.h"
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// LOCAL CONSTANTS
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
// The version number of this interface.
hgs
parents:
diff changeset
    54
const TUint KInterfaceVersion = 1;
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ================= MEMBER FUNCTIONS =======================
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
CEapGeneric::CEapGeneric(
hgs
parents:
diff changeset
    61
	const TIndexType aIndexType,	
hgs
parents:
diff changeset
    62
	const TInt aIndex,
hgs
parents:
diff changeset
    63
	const TEapExpandedType aEapType)
hgs
parents:
diff changeset
    64
: m_am_tools(abs_eap_am_tools_c::new_abs_eap_am_tools_c())
hgs
parents:
diff changeset
    65
, m_server(eap_plugin_message_base_c::new_eap_plugin_client_message_if_c(
hgs
parents:
diff changeset
    66
		m_am_tools,
hgs
parents:
diff changeset
    67
		this))
hgs
parents:
diff changeset
    68
, iIndexType(aIndexType)
hgs
parents:
diff changeset
    69
, iIndex(aIndex)
hgs
parents:
diff changeset
    70
, iEapType(aEapType)
hgs
parents:
diff changeset
    71
, iTunnelingType(eap_type_none)
hgs
parents:
diff changeset
    72
, iTunnelingTypePresent(false)
hgs
parents:
diff changeset
    73
, iWaitState(eap_generic_wait_state_none)
hgs
parents:
diff changeset
    74
, iCompletionStatus(eap_status_process_general_error)
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
, ipEAPSettings(0)
hgs
parents:
diff changeset
    77
{
hgs
parents:
diff changeset
    78
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
    79
		m_am_tools,
hgs
parents:
diff changeset
    80
		TRACE_FLAGS_DEFAULT,
34
hgs
parents: 27
diff changeset
    81
		(EAPL("CEapGeneric::CEapGeneric(): this=0x%08x, aIndexType=%d, aIndex=%d.\n"),
hgs
parents: 27
diff changeset
    82
		this,
hgs
parents: 27
diff changeset
    83
		aIndexType,
hgs
parents: 27
diff changeset
    84
		aIndex));
26
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::CEapGeneric()");
hgs
parents:
diff changeset
    87
}
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
// ----------------------------------------------------------
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
void CEapGeneric::ConstructL()
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
    94
		m_am_tools,
hgs
parents:
diff changeset
    95
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
    96
		(EAPL("CEapGeneric::ConstructL(): this=0x%08x.\n"),
hgs
parents:
diff changeset
    97
		this));
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::ConstructL()");
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
	if (m_am_tools == 0
hgs
parents:
diff changeset
   102
		|| m_am_tools->get_is_valid() == false
hgs
parents:
diff changeset
   103
		|| m_server == 0
hgs
parents:
diff changeset
   104
		|| m_server->get_is_valid() == false)
hgs
parents:
diff changeset
   105
	{
hgs
parents:
diff changeset
   106
		abs_eap_am_tools_c::delete_abs_eap_am_tools_c(m_am_tools);
hgs
parents:
diff changeset
   107
		delete m_server;
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
		User::Leave(KErrNoMemory);
hgs
parents:
diff changeset
   110
	}
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
	eap_status_e status = m_server->configure();
hgs
parents:
diff changeset
   113
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   114
	{
hgs
parents:
diff changeset
   115
		abs_eap_am_tools_c::delete_abs_eap_am_tools_c(m_am_tools);
hgs
parents:
diff changeset
   116
		delete m_server;
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
		User::Leave(KErrNoMemory);
hgs
parents:
diff changeset
   119
	}
hgs
parents:
diff changeset
   120
}
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
// ----------------------------------------------------------
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
CEapGeneric* CEapGeneric::NewL(SIapInfo *aIapInfo)
hgs
parents:
diff changeset
   125
{
hgs
parents:
diff changeset
   126
	CEapGeneric* self = new(ELeave) CEapGeneric(aIapInfo->indexType, aIapInfo->index, aIapInfo->aEapType);
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
	CleanupStack::PushL(self);
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
	self->ConstructL();
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
	CleanupStack::Pop();
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
	return self;
hgs
parents:
diff changeset
   135
}
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
// ----------------------------------------------------------
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
CEapGeneric::~CEapGeneric()
hgs
parents:
diff changeset
   140
{
hgs
parents:
diff changeset
   141
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   142
		m_am_tools,
hgs
parents:
diff changeset
   143
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   144
		(EAPL("CEapGeneric::~CEapGeneric(): this=0x%08x.\n"),
hgs
parents:
diff changeset
   145
		this));
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
	// Do not use m_am_tools, because it will be destroyed before return.
hgs
parents:
diff changeset
   148
	EAP_TRACE_RETURN_STRING_SYMBIAN(_L("returns: CEapGeneric::~CEapGeneric()"));
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
	if (m_server != 0)
hgs
parents:
diff changeset
   151
	{
hgs
parents:
diff changeset
   152
		m_server->shutdown();
hgs
parents:
diff changeset
   153
	}
hgs
parents:
diff changeset
   154
	delete m_server;
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
	abs_eap_am_tools_c::delete_abs_eap_am_tools_c(m_am_tools);
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// ----------------------------------------------------------
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
#ifdef USE_EAP_SIMPLE_CONFIG
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
eap_base_type_c* CEapGeneric::GetStackInterfaceL(abs_eap_am_tools_c* const aTools, 
34
hgs
parents: 27
diff changeset
   164
											   abs_eap_base_type_c* const /* aPartner */,
hgs
parents: 27
diff changeset
   165
											   const bool /* is_client_when_true */,
hgs
parents: 27
diff changeset
   166
											   const eap_am_network_id_c * const /* receive_network_id */,
26
hgs
parents:
diff changeset
   167
											   abs_eap_configuration_if_c * const /*configuration_if*/)
hgs
parents:
diff changeset
   168
	
hgs
parents:
diff changeset
   169
#else
hgs
parents:
diff changeset
   170
	
hgs
parents:
diff changeset
   171
eap_base_type_c* CEapGeneric::GetStackInterfaceL(abs_eap_am_tools_c* const aTools, 
34
hgs
parents: 27
diff changeset
   172
											abs_eap_base_type_c* const /* aPartner */,
hgs
parents: 27
diff changeset
   173
											const bool /* is_client_when_true */,
hgs
parents: 27
diff changeset
   174
											const eap_am_network_id_c * const /* receive_network_id */)
26
hgs
parents:
diff changeset
   175
	
hgs
parents:
diff changeset
   176
#endif // #ifdef USE_EAP_SIMPLE_CONFIG
hgs
parents:
diff changeset
   177
{
34
hgs
parents: 27
diff changeset
   178
	EAP_UNREFERENCED_PARAMETER(aTools);
26
hgs
parents:
diff changeset
   179
	// This class does not have stack interface.
hgs
parents:
diff changeset
   180
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   181
		m_am_tools,
hgs
parents:
diff changeset
   182
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   183
		(EAPL("ERROR: CEapGeneric::GetStackInterfaceL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   184
		this));
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
	EAP_ASSERT_ANYWAY_TOOLS(aTools);
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
	return 0;
hgs
parents:
diff changeset
   189
}
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
//----------------------------------------------------------------
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
void CEapGeneric::Activate()
hgs
parents:
diff changeset
   194
{
hgs
parents:
diff changeset
   195
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   196
		m_am_tools,
hgs
parents:
diff changeset
   197
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 34
diff changeset
   198
		(EAPL("CEapGeneric::Activate(): this=0x%08x, iAsyncronousStatus=%u\n"),
hgs
parents: 34
diff changeset
   199
		this,
26
hgs
parents:
diff changeset
   200
		iAsyncronousStatus.Int()));
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::Activate()");
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
	iAsyncronousStatus = KRequestPending;
hgs
parents:
diff changeset
   205
}
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
//----------------------------------------------------------------
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
void CEapGeneric::Complete()
hgs
parents:
diff changeset
   210
{
hgs
parents:
diff changeset
   211
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   212
		m_am_tools,
hgs
parents:
diff changeset
   213
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 34
diff changeset
   214
		(EAPL("CEapGeneric::Complete(): this=0x%08x, iAsyncronousStatus=%u\n"),
hgs
parents: 34
diff changeset
   215
		this,
26
hgs
parents:
diff changeset
   216
		iAsyncronousStatus.Int()));
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::Complete()");
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
	iAsyncronousStatus = KErrNone;
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
	// This is needed to continue the execution after Wait.Start(); 
hgs
parents:
diff changeset
   223
	iWait.AsyncStop();
hgs
parents:
diff changeset
   224
}
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
//----------------------------------------------------------------
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
void CEapGeneric::WaitCompletion()
hgs
parents:
diff changeset
   229
{
hgs
parents:
diff changeset
   230
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   231
		m_am_tools,
hgs
parents:
diff changeset
   232
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 34
diff changeset
   233
		(EAPL("CEapGeneric::WaitCompletion(): this=0x%08x, iAsyncronousStatus=%u\n"),
hgs
parents: 34
diff changeset
   234
		this,
26
hgs
parents:
diff changeset
   235
		iAsyncronousStatus.Int()));
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::WaitCompletion()");
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
	while (iAsyncronousStatus == KRequestPending)
hgs
parents:
diff changeset
   240
	{
hgs
parents:
diff changeset
   241
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   242
			m_am_tools,
hgs
parents:
diff changeset
   243
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   244
			(EAPL("CEapGeneric::WaitCompletion(): calls iWait.Start()\n")));
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
		iWait.Start();
hgs
parents:
diff changeset
   247
hgs
parents:
diff changeset
   248
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   249
			m_am_tools,
hgs
parents:
diff changeset
   250
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   251
			(EAPL("CEapGeneric::WaitCompletion(): iWait.Start() continue, iAsyncronousStatus=%u\n"),
hgs
parents:
diff changeset
   252
			iAsyncronousStatus.Int()));
hgs
parents:
diff changeset
   253
	}
hgs
parents:
diff changeset
   254
}
hgs
parents:
diff changeset
   255
hgs
parents:
diff changeset
   256
// ----------------------------------------------------------
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
void CEapGeneric::SetCompletionStatusIfStillOk(const eap_status_e status)
hgs
parents:
diff changeset
   259
{
hgs
parents:
diff changeset
   260
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   261
		m_am_tools,
hgs
parents:
diff changeset
   262
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 34
diff changeset
   263
		(EAPL("CEapGeneric::SetCompletionStatusIfStillOk(): this=0x%08x, iCompletionStatus=%u=%s, status=%d=%s\n"),
hgs
parents: 34
diff changeset
   264
		this,
26
hgs
parents:
diff changeset
   265
		iCompletionStatus,
hgs
parents:
diff changeset
   266
		eap_status_string_c::get_status_string(iCompletionStatus),
hgs
parents:
diff changeset
   267
		status,
hgs
parents:
diff changeset
   268
		eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::SetCompletionStatusIfStillOk()");
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
	if (iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   273
	{
hgs
parents:
diff changeset
   274
		iCompletionStatus = status;
hgs
parents:
diff changeset
   275
	}
hgs
parents:
diff changeset
   276
}
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
// ----------------------------------------------------------
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
// ----------------------------------------------------------
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
CEapTypeInfo* CEapGeneric::GetInfoL()
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   287
		m_am_tools,
hgs
parents:
diff changeset
   288
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   289
		(EAPL("CEapGeneric::GetInfoL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   290
		this));
hgs
parents:
diff changeset
   291
hgs
parents:
diff changeset
   292
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::GetInfoL()");
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   295
	if (internal_settings == 0)
hgs
parents:
diff changeset
   296
	{
hgs
parents:
diff changeset
   297
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   298
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   299
	}
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
	eap_status_e status = m_server->get_type_info(internal_settings);
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
	delete internal_settings;
hgs
parents:
diff changeset
   306
hgs
parents:
diff changeset
   307
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   308
	{
hgs
parents:
diff changeset
   309
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   310
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   311
	}
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
	iWaitState = eap_generic_wait_state_complete_get_type_info;
hgs
parents:
diff changeset
   314
    Activate();
hgs
parents:
diff changeset
   315
    WaitCompletion();
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   318
	{
hgs
parents:
diff changeset
   319
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   320
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   321
	}
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
	CEapTypeInfo* info = new(ELeave) CEapTypeInfo(
hgs
parents:
diff changeset
   324
		iReleaseDate, 
hgs
parents:
diff changeset
   325
		iEapTypeVersion,
hgs
parents:
diff changeset
   326
		iManufacturer);
hgs
parents:
diff changeset
   327
hgs
parents:
diff changeset
   328
	return info;
hgs
parents:
diff changeset
   329
}
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
// ----------------------------------------------------------
hgs
parents:
diff changeset
   332
hgs
parents:
diff changeset
   333
void CEapGeneric::DeleteConfigurationL()
hgs
parents:
diff changeset
   334
{
hgs
parents:
diff changeset
   335
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   336
		m_am_tools,
hgs
parents:
diff changeset
   337
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   338
		(EAPL("CEapGeneric::DeleteConfigurationL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   339
		this));
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::DeleteConfigurationL()");
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   344
	if (internal_settings == 0)
hgs
parents:
diff changeset
   345
	{
hgs
parents:
diff changeset
   346
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   347
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   348
	}
hgs
parents:
diff changeset
   349
	
hgs
parents:
diff changeset
   350
	internal_settings->m_IndexType = iIndexType;
hgs
parents:
diff changeset
   351
	internal_settings->m_Index = iIndex;
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
	TInt error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   354
		&iEapType,
hgs
parents:
diff changeset
   355
		&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   356
	if (error != KErrNone)
hgs
parents:
diff changeset
   357
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   358
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   359
26
hgs
parents:
diff changeset
   360
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   361
		User::Leave(error);
hgs
parents:
diff changeset
   362
	}
hgs
parents:
diff changeset
   363
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
	eap_status_e status = m_server->delete_configuration(internal_settings);
hgs
parents:
diff changeset
   366
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   367
	delete internal_settings;
26
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   370
	{
hgs
parents:
diff changeset
   371
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   372
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   373
	}
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
	iWaitState = eap_generic_wait_state_complete_delete_configuration;
hgs
parents:
diff changeset
   376
    Activate();
hgs
parents:
diff changeset
   377
    WaitCompletion();
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   380
	{
hgs
parents:
diff changeset
   381
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   382
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   383
	}
hgs
parents:
diff changeset
   384
}
hgs
parents:
diff changeset
   385
hgs
parents:
diff changeset
   386
// ----------------------------------------------------------
hgs
parents:
diff changeset
   387
hgs
parents:
diff changeset
   388
TUint CEapGeneric::GetInterfaceVersion()
hgs
parents:
diff changeset
   389
{
hgs
parents:
diff changeset
   390
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   391
		m_am_tools,
hgs
parents:
diff changeset
   392
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   393
		(EAPL("CEapGeneric::GetInterfaceVersion(): this=0x%08x\n"),
hgs
parents:
diff changeset
   394
		this));
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::GetInterfaceVersion()");
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
	return KInterfaceVersion;
hgs
parents:
diff changeset
   399
}
hgs
parents:
diff changeset
   400
hgs
parents:
diff changeset
   401
// ----------------------------------------------------------
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
void CEapGeneric::SetTunnelingType(const TEapExpandedType aTunnelingType)
hgs
parents:
diff changeset
   404
{
hgs
parents:
diff changeset
   405
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   406
		m_am_tools,
hgs
parents:
diff changeset
   407
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   408
		(EAPL("CEapGeneric::SetTunnelingType(): this=0x%08x\n"),
hgs
parents:
diff changeset
   409
		this));
hgs
parents:
diff changeset
   410
hgs
parents:
diff changeset
   411
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::SetTunnelingType()");
hgs
parents:
diff changeset
   412
hgs
parents:
diff changeset
   413
    EAP_TRACE_DATA_DEBUG_SYMBIAN(
hgs
parents:
diff changeset
   414
        (EAPL("CEapGeneric::SetTunnelingType - tunneling type"),
hgs
parents:
diff changeset
   415
        aTunnelingType.GetValue().Ptr(), aTunnelingType.GetValue().Length()));
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
    iTunnelingTypePresent = true;
hgs
parents:
diff changeset
   418
hgs
parents:
diff changeset
   419
	eap_type_value_e aInternalType;
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
	TInt error = CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   422
	        &aTunnelingType,
hgs
parents:
diff changeset
   423
	        &aInternalType);
hgs
parents:
diff changeset
   424
	if (error != KErrNone)
hgs
parents:
diff changeset
   425
	{
hgs
parents:
diff changeset
   426
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   427
	}
hgs
parents:
diff changeset
   428
hgs
parents:
diff changeset
   429
	iTunnelingType = aInternalType;
hgs
parents:
diff changeset
   430
	
hgs
parents:
diff changeset
   431
}
hgs
parents:
diff changeset
   432
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
// ----------------------------------------------------------
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
void CEapGeneric::SetIndexL(
hgs
parents:
diff changeset
   437
		const TIndexType aIndexType, 
hgs
parents:
diff changeset
   438
		const TInt aIndex )
hgs
parents:
diff changeset
   439
{
hgs
parents:
diff changeset
   440
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   441
		m_am_tools,
hgs
parents:
diff changeset
   442
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   443
		(EAPL("CEapGeneric::SetIndexL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   444
		this));
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::SetIndexL()");
hgs
parents:
diff changeset
   447
hgs
parents:
diff changeset
   448
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   449
	if (internal_settings == 0)
hgs
parents:
diff changeset
   450
	{
hgs
parents:
diff changeset
   451
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   452
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   453
	}
hgs
parents:
diff changeset
   454
	
hgs
parents:
diff changeset
   455
	internal_settings->m_IndexType = aIndexType;
hgs
parents:
diff changeset
   456
	internal_settings->m_Index = aIndex;
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
	TInt error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   459
		&iEapType,
hgs
parents:
diff changeset
   460
		&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   461
	if (error != KErrNone)
hgs
parents:
diff changeset
   462
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   463
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   464
26
hgs
parents:
diff changeset
   465
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   466
		User::Leave(error);
hgs
parents:
diff changeset
   467
	}
hgs
parents:
diff changeset
   468
hgs
parents:
diff changeset
   469
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
	eap_status_e status = m_server->delete_configuration(internal_settings);
hgs
parents:
diff changeset
   472
hgs
parents:
diff changeset
   473
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   474
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   475
		delete internal_settings;
26
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   478
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   479
	}
hgs
parents:
diff changeset
   480
hgs
parents:
diff changeset
   481
	iWaitState = eap_generic_wait_state_complete_delete_configuration;
hgs
parents:
diff changeset
   482
	Activate();
hgs
parents:
diff changeset
   483
	WaitCompletion();
hgs
parents:
diff changeset
   484
hgs
parents:
diff changeset
   485
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   486
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   487
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   488
26
hgs
parents:
diff changeset
   489
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   490
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   491
	}
hgs
parents:
diff changeset
   492
hgs
parents:
diff changeset
   493
	internal_settings->m_IndexType = iIndexType;
hgs
parents:
diff changeset
   494
	internal_settings->m_Index = iIndex;
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
	error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   497
		&iEapType,
hgs
parents:
diff changeset
   498
		&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   499
	if (error != KErrNone)
hgs
parents:
diff changeset
   500
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   501
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   502
26
hgs
parents:
diff changeset
   503
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   504
		User::Leave(error);
hgs
parents:
diff changeset
   505
	}
hgs
parents:
diff changeset
   506
hgs
parents:
diff changeset
   507
	internal_settings->m_TunnelingTypePresent = iTunnelingTypePresent;
hgs
parents:
diff changeset
   508
	internal_settings->m_TunnelingType = iTunnelingType;
hgs
parents:
diff changeset
   509
hgs
parents:
diff changeset
   510
	internal_settings->m_DestinationIndexAndTypePresent = true;
hgs
parents:
diff changeset
   511
	internal_settings->m_DestinationIndexType = aIndexType;
hgs
parents:
diff changeset
   512
	internal_settings->m_DestinationIndex = aIndex;
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   515
hgs
parents:
diff changeset
   516
	status = m_server->set_index(internal_settings);
hgs
parents:
diff changeset
   517
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   518
	delete internal_settings;
26
hgs
parents:
diff changeset
   519
hgs
parents:
diff changeset
   520
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   521
	{
hgs
parents:
diff changeset
   522
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   523
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   524
	}
hgs
parents:
diff changeset
   525
hgs
parents:
diff changeset
   526
	iWaitState = eap_generic_wait_state_complete_set_index;
hgs
parents:
diff changeset
   527
    Activate();
hgs
parents:
diff changeset
   528
    WaitCompletion();
hgs
parents:
diff changeset
   529
hgs
parents:
diff changeset
   530
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   531
	{
hgs
parents:
diff changeset
   532
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   533
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   534
	}
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
}
hgs
parents:
diff changeset
   537
hgs
parents:
diff changeset
   538
// ----------------------------------------------------------
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
void CEapGeneric::SetConfigurationL(const EAPSettings& aSettings)
hgs
parents:
diff changeset
   541
{
hgs
parents:
diff changeset
   542
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   543
		m_am_tools,
hgs
parents:
diff changeset
   544
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   545
		(EAPL("CEapGeneric::SetConfigurationL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   546
		this));
hgs
parents:
diff changeset
   547
hgs
parents:
diff changeset
   548
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::SetConfigurationL()");
hgs
parents:
diff changeset
   549
hgs
parents:
diff changeset
   550
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   551
	if (internal_settings == 0)
hgs
parents:
diff changeset
   552
	{
hgs
parents:
diff changeset
   553
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   554
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   555
	}
hgs
parents:
diff changeset
   556
hgs
parents:
diff changeset
   557
	eap_status_e status(eap_status_process_general_error);
hgs
parents:
diff changeset
   558
hgs
parents:
diff changeset
   559
	TInt error(KErrNone);
hgs
parents:
diff changeset
   560
34
hgs
parents: 27
diff changeset
   561
	internal_settings->m_IndexType = iIndexType;
hgs
parents: 27
diff changeset
   562
	internal_settings->m_Index = iIndex;
hgs
parents: 27
diff changeset
   563
hgs
parents: 27
diff changeset
   564
	internal_settings->m_TunnelingTypePresent = iTunnelingTypePresent;
hgs
parents: 27
diff changeset
   565
	internal_settings->m_TunnelingType = iTunnelingType;
hgs
parents: 27
diff changeset
   566
26
hgs
parents:
diff changeset
   567
	error = CEapConversion::ConvertEAPSettingsToInternalType(
hgs
parents:
diff changeset
   568
		m_am_tools,
hgs
parents:
diff changeset
   569
		&aSettings,
hgs
parents:
diff changeset
   570
		internal_settings);
hgs
parents:
diff changeset
   571
	if(error == KErrNone)
hgs
parents:
diff changeset
   572
	{
hgs
parents:
diff changeset
   573
		TInt error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   574
			&iEapType,
hgs
parents:
diff changeset
   575
			&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   576
		if (error != KErrNone)
hgs
parents:
diff changeset
   577
		{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   578
			delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   579
26
hgs
parents:
diff changeset
   580
			(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   581
			User::Leave(error);
hgs
parents:
diff changeset
   582
		}
hgs
parents:
diff changeset
   583
hgs
parents:
diff changeset
   584
		iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   585
hgs
parents:
diff changeset
   586
		status = m_server->set_configuration(internal_settings);
hgs
parents:
diff changeset
   587
	}
hgs
parents:
diff changeset
   588
	else
hgs
parents:
diff changeset
   589
	{
hgs
parents:
diff changeset
   590
		status = m_am_tools->convert_am_error_to_eapol_error(error);
hgs
parents:
diff changeset
   591
	}
hgs
parents:
diff changeset
   592
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   593
	delete internal_settings;
26
hgs
parents:
diff changeset
   594
hgs
parents:
diff changeset
   595
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   596
	{
hgs
parents:
diff changeset
   597
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   598
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   599
	}
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
	iWaitState = eap_generic_wait_state_complete_set_configuration;
hgs
parents:
diff changeset
   602
    Activate();
hgs
parents:
diff changeset
   603
    WaitCompletion();
hgs
parents:
diff changeset
   604
hgs
parents:
diff changeset
   605
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   606
	{
hgs
parents:
diff changeset
   607
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   608
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   609
	}
hgs
parents:
diff changeset
   610
}
hgs
parents:
diff changeset
   611
hgs
parents:
diff changeset
   612
// ----------------------------------------------------------
hgs
parents:
diff changeset
   613
hgs
parents:
diff changeset
   614
void CEapGeneric::GetConfigurationL(EAPSettings& aSettings)
hgs
parents:
diff changeset
   615
{
hgs
parents:
diff changeset
   616
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   617
		m_am_tools,
hgs
parents:
diff changeset
   618
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   619
		(EAPL("CEapGeneric::GetConfigurationL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   620
		this));
hgs
parents:
diff changeset
   621
hgs
parents:
diff changeset
   622
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::GetConfigurationL()");
hgs
parents:
diff changeset
   623
hgs
parents:
diff changeset
   624
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   625
	if (internal_settings == 0)
hgs
parents:
diff changeset
   626
	{
hgs
parents:
diff changeset
   627
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   628
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   629
	}
hgs
parents:
diff changeset
   630
hgs
parents:
diff changeset
   631
	internal_settings->m_IndexType = iIndexType;
hgs
parents:
diff changeset
   632
	internal_settings->m_Index = iIndex;
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
	TInt error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   635
		&iEapType,
hgs
parents:
diff changeset
   636
		&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   637
	if (error != KErrNone)
hgs
parents:
diff changeset
   638
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   639
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   640
26
hgs
parents:
diff changeset
   641
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   642
		User::Leave(error);
hgs
parents:
diff changeset
   643
	}
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
	internal_settings->m_TunnelingTypePresent = iTunnelingTypePresent;
hgs
parents:
diff changeset
   646
	internal_settings->m_TunnelingType = iTunnelingType;
hgs
parents:
diff changeset
   647
hgs
parents:
diff changeset
   648
	ipEAPSettings = &aSettings;
hgs
parents:
diff changeset
   649
hgs
parents:
diff changeset
   650
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   651
hgs
parents:
diff changeset
   652
	eap_status_e status = m_server->get_configuration(internal_settings);
hgs
parents:
diff changeset
   653
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   654
	delete internal_settings;
26
hgs
parents:
diff changeset
   655
hgs
parents:
diff changeset
   656
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   657
	{
hgs
parents:
diff changeset
   658
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   659
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   660
	}
hgs
parents:
diff changeset
   661
hgs
parents:
diff changeset
   662
	iWaitState = eap_generic_wait_state_complete_get_configuration;
hgs
parents:
diff changeset
   663
    Activate();
hgs
parents:
diff changeset
   664
    WaitCompletion();
hgs
parents:
diff changeset
   665
hgs
parents:
diff changeset
   666
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   667
	{
hgs
parents:
diff changeset
   668
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   669
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   670
	}
hgs
parents:
diff changeset
   671
}
hgs
parents:
diff changeset
   672
hgs
parents:
diff changeset
   673
// ----------------------------------------------------------
hgs
parents:
diff changeset
   674
hgs
parents:
diff changeset
   675
void CEapGeneric::CopySettingsL(
hgs
parents:
diff changeset
   676
	const TIndexType aDestinationIndexType,
hgs
parents:
diff changeset
   677
	const TInt aDestinationIndex)
hgs
parents:
diff changeset
   678
{
hgs
parents:
diff changeset
   679
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   680
		m_am_tools,
hgs
parents:
diff changeset
   681
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   682
		(EAPL("CEapGeneric::CopySettingsL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   683
		this));
hgs
parents:
diff changeset
   684
hgs
parents:
diff changeset
   685
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::CopySettingsL()");
hgs
parents:
diff changeset
   686
hgs
parents:
diff changeset
   687
	eap_method_settings_c * const internal_settings = new eap_method_settings_c(m_am_tools);
hgs
parents:
diff changeset
   688
	if (internal_settings == 0)
hgs
parents:
diff changeset
   689
	{
hgs
parents:
diff changeset
   690
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   691
			EAP_STATUS_RETURN(m_am_tools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   692
	}
hgs
parents:
diff changeset
   693
hgs
parents:
diff changeset
   694
	internal_settings->m_IndexType = aDestinationIndexType;
hgs
parents:
diff changeset
   695
	internal_settings->m_Index = aDestinationIndex;
hgs
parents:
diff changeset
   696
hgs
parents:
diff changeset
   697
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   698
hgs
parents:
diff changeset
   699
	eap_status_e status = m_server->delete_configuration(internal_settings);
hgs
parents:
diff changeset
   700
hgs
parents:
diff changeset
   701
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   702
	{
hgs
parents:
diff changeset
   703
		delete internal_settings;
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   706
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   707
	}
hgs
parents:
diff changeset
   708
hgs
parents:
diff changeset
   709
	iWaitState = eap_generic_wait_state_complete_delete_configuration;
hgs
parents:
diff changeset
   710
    Activate();
hgs
parents:
diff changeset
   711
    WaitCompletion();
hgs
parents:
diff changeset
   712
hgs
parents:
diff changeset
   713
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   714
	{
hgs
parents:
diff changeset
   715
		delete internal_settings;
hgs
parents:
diff changeset
   716
hgs
parents:
diff changeset
   717
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   718
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   719
	}
hgs
parents:
diff changeset
   720
hgs
parents:
diff changeset
   721
	internal_settings->m_IndexType = iIndexType;
hgs
parents:
diff changeset
   722
	internal_settings->m_Index = iIndex;
hgs
parents:
diff changeset
   723
hgs
parents:
diff changeset
   724
	TInt error =  CEapConversion::ConvertExpandedEAPTypeToInternalType(
hgs
parents:
diff changeset
   725
		&iEapType,
hgs
parents:
diff changeset
   726
		&(internal_settings->m_EAPType));
hgs
parents:
diff changeset
   727
	if (error != KErrNone)
hgs
parents:
diff changeset
   728
	{
27
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   729
		delete internal_settings;
9660a5eb236f 201021_1
hgs
parents: 26
diff changeset
   730
26
hgs
parents:
diff changeset
   731
		(void)EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error));
hgs
parents:
diff changeset
   732
		User::Leave(error);
hgs
parents:
diff changeset
   733
	}
hgs
parents:
diff changeset
   734
hgs
parents:
diff changeset
   735
	internal_settings->m_TunnelingTypePresent = iTunnelingTypePresent;
hgs
parents:
diff changeset
   736
	internal_settings->m_TunnelingType = iTunnelingType;
hgs
parents:
diff changeset
   737
hgs
parents:
diff changeset
   738
	internal_settings->m_DestinationIndexAndTypePresent = true;
hgs
parents:
diff changeset
   739
	internal_settings->m_DestinationIndexType = aDestinationIndexType;
hgs
parents:
diff changeset
   740
	internal_settings->m_DestinationIndex = aDestinationIndex;
hgs
parents:
diff changeset
   741
hgs
parents:
diff changeset
   742
	iCompletionStatus = eap_status_process_general_error;
hgs
parents:
diff changeset
   743
hgs
parents:
diff changeset
   744
	status = m_server->copy_configuration(internal_settings);
hgs
parents:
diff changeset
   745
hgs
parents:
diff changeset
   746
	delete internal_settings;
hgs
parents:
diff changeset
   747
hgs
parents:
diff changeset
   748
	if (status != eap_status_ok)
hgs
parents:
diff changeset
   749
	{
hgs
parents:
diff changeset
   750
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   751
			EAP_STATUS_RETURN(m_am_tools, status)));
hgs
parents:
diff changeset
   752
	}
hgs
parents:
diff changeset
   753
hgs
parents:
diff changeset
   754
	iWaitState = eap_generic_wait_state_complete_copy_configuration;
hgs
parents:
diff changeset
   755
    Activate();
hgs
parents:
diff changeset
   756
    WaitCompletion();
hgs
parents:
diff changeset
   757
hgs
parents:
diff changeset
   758
	if (iCompletionStatus != eap_status_ok)
hgs
parents:
diff changeset
   759
	{
hgs
parents:
diff changeset
   760
		User::Leave(m_am_tools->convert_eapol_error_to_am_error(
hgs
parents:
diff changeset
   761
			EAP_STATUS_RETURN(m_am_tools, iCompletionStatus)));
hgs
parents:
diff changeset
   762
	}
hgs
parents:
diff changeset
   763
}
hgs
parents:
diff changeset
   764
hgs
parents:
diff changeset
   765
// ----------------------------------------------------------
hgs
parents:
diff changeset
   766
hgs
parents:
diff changeset
   767
eap_status_e CEapGeneric::complete_get_configuration(
hgs
parents:
diff changeset
   768
	const eap_method_settings_c * const internal_settings)
hgs
parents:
diff changeset
   769
{
hgs
parents:
diff changeset
   770
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   771
		m_am_tools,
hgs
parents:
diff changeset
   772
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   773
		(EAPL("CEapGeneric::complete_get_configuration(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   774
		this,
hgs
parents:
diff changeset
   775
		iWaitState,
hgs
parents:
diff changeset
   776
		internal_settings->m_completion_status,
hgs
parents:
diff changeset
   777
		eap_status_string_c::get_status_string(internal_settings->m_completion_status)));
hgs
parents:
diff changeset
   778
hgs
parents:
diff changeset
   779
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_get_configuration()");
hgs
parents:
diff changeset
   780
hgs
parents:
diff changeset
   781
	if (internal_settings == 0)
hgs
parents:
diff changeset
   782
	{
hgs
parents:
diff changeset
   783
		iCompletionStatus = eap_status_illegal_parameter;
hgs
parents:
diff changeset
   784
hgs
parents:
diff changeset
   785
		Complete();
hgs
parents:
diff changeset
   786
hgs
parents:
diff changeset
   787
		return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
   788
	}
hgs
parents:
diff changeset
   789
hgs
parents:
diff changeset
   790
	iCompletionStatus = internal_settings->m_completion_status;
hgs
parents:
diff changeset
   791
hgs
parents:
diff changeset
   792
	if (iWaitState == eap_generic_wait_state_complete_get_configuration
hgs
parents:
diff changeset
   793
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   794
	{
hgs
parents:
diff changeset
   795
		if (ipEAPSettings != 0
hgs
parents:
diff changeset
   796
			&& internal_settings != 0)
hgs
parents:
diff changeset
   797
		{
hgs
parents:
diff changeset
   798
			TInt error(KErrNone);
hgs
parents:
diff changeset
   799
hgs
parents:
diff changeset
   800
			error = CEapConversion::ConvertInternalTypeToEAPSettings(
hgs
parents:
diff changeset
   801
				m_am_tools,
hgs
parents:
diff changeset
   802
				internal_settings,
hgs
parents:
diff changeset
   803
				ipEAPSettings);
hgs
parents:
diff changeset
   804
			if(error != KErrNone)
hgs
parents:
diff changeset
   805
			{
hgs
parents:
diff changeset
   806
				SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error)));
hgs
parents:
diff changeset
   807
			}
hgs
parents:
diff changeset
   808
		}
hgs
parents:
diff changeset
   809
		else
hgs
parents:
diff changeset
   810
		{
hgs
parents:
diff changeset
   811
			SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_parameter));
hgs
parents:
diff changeset
   812
		}
hgs
parents:
diff changeset
   813
	}
hgs
parents:
diff changeset
   814
	else if (iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   815
	{
hgs
parents:
diff changeset
   816
		// ERROR wrong state.
hgs
parents:
diff changeset
   817
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
   818
	}
hgs
parents:
diff changeset
   819
hgs
parents:
diff changeset
   820
	Complete();
hgs
parents:
diff changeset
   821
hgs
parents:
diff changeset
   822
	return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
   823
}
hgs
parents:
diff changeset
   824
hgs
parents:
diff changeset
   825
// ----------------------------------------------------------
hgs
parents:
diff changeset
   826
hgs
parents:
diff changeset
   827
eap_status_e CEapGeneric::complete_set_configuration(
hgs
parents:
diff changeset
   828
	const eap_status_e completion_status)
hgs
parents:
diff changeset
   829
{
hgs
parents:
diff changeset
   830
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   831
		m_am_tools,
hgs
parents:
diff changeset
   832
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   833
		(EAPL("CEapGeneric::complete_set_configuration(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   834
		this,
hgs
parents:
diff changeset
   835
		iWaitState,
hgs
parents:
diff changeset
   836
		completion_status,
hgs
parents:
diff changeset
   837
		eap_status_string_c::get_status_string(completion_status)));
hgs
parents:
diff changeset
   838
hgs
parents:
diff changeset
   839
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_set_configuration()");
hgs
parents:
diff changeset
   840
hgs
parents:
diff changeset
   841
	iCompletionStatus = completion_status;
hgs
parents:
diff changeset
   842
hgs
parents:
diff changeset
   843
	if (iWaitState != eap_generic_wait_state_complete_set_configuration
hgs
parents:
diff changeset
   844
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   845
	{
hgs
parents:
diff changeset
   846
		// ERROR wrong state.
hgs
parents:
diff changeset
   847
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
   848
	}
hgs
parents:
diff changeset
   849
hgs
parents:
diff changeset
   850
	Complete();
hgs
parents:
diff changeset
   851
hgs
parents:
diff changeset
   852
	return EAP_STATUS_RETURN(m_am_tools, completion_status);
hgs
parents:
diff changeset
   853
}
hgs
parents:
diff changeset
   854
hgs
parents:
diff changeset
   855
// ----------------------------------------------------------
hgs
parents:
diff changeset
   856
hgs
parents:
diff changeset
   857
eap_status_e CEapGeneric::complete_delete_configuration(
hgs
parents:
diff changeset
   858
	const eap_status_e completion_status)
hgs
parents:
diff changeset
   859
{
hgs
parents:
diff changeset
   860
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   861
		m_am_tools,
hgs
parents:
diff changeset
   862
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   863
		(EAPL("CEapGeneric::complete_delete_configuration(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   864
		this,
hgs
parents:
diff changeset
   865
		iWaitState,
hgs
parents:
diff changeset
   866
		completion_status,
hgs
parents:
diff changeset
   867
		eap_status_string_c::get_status_string(completion_status)));
hgs
parents:
diff changeset
   868
hgs
parents:
diff changeset
   869
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_delete_configuration()");
hgs
parents:
diff changeset
   870
hgs
parents:
diff changeset
   871
	iCompletionStatus = completion_status;
hgs
parents:
diff changeset
   872
hgs
parents:
diff changeset
   873
	if (iWaitState != eap_generic_wait_state_complete_delete_configuration
hgs
parents:
diff changeset
   874
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   875
	{
hgs
parents:
diff changeset
   876
		// ERROR wrong state.
hgs
parents:
diff changeset
   877
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
   878
	}
hgs
parents:
diff changeset
   879
hgs
parents:
diff changeset
   880
	Complete();
hgs
parents:
diff changeset
   881
hgs
parents:
diff changeset
   882
	return EAP_STATUS_RETURN(m_am_tools, completion_status);
hgs
parents:
diff changeset
   883
}
hgs
parents:
diff changeset
   884
hgs
parents:
diff changeset
   885
// ----------------------------------------------------------
hgs
parents:
diff changeset
   886
hgs
parents:
diff changeset
   887
eap_status_e CEapGeneric::complete_copy_configuration(
hgs
parents:
diff changeset
   888
	const eap_status_e completion_status)
hgs
parents:
diff changeset
   889
{
hgs
parents:
diff changeset
   890
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   891
		m_am_tools,
hgs
parents:
diff changeset
   892
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   893
		(EAPL("CEapGeneric::complete_copy_configuration(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   894
		this,
hgs
parents:
diff changeset
   895
		iWaitState,
hgs
parents:
diff changeset
   896
		completion_status,
hgs
parents:
diff changeset
   897
		eap_status_string_c::get_status_string(completion_status)));
hgs
parents:
diff changeset
   898
hgs
parents:
diff changeset
   899
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_copy_configuration()");
hgs
parents:
diff changeset
   900
hgs
parents:
diff changeset
   901
	iCompletionStatus = completion_status;
hgs
parents:
diff changeset
   902
hgs
parents:
diff changeset
   903
	if (iWaitState != eap_generic_wait_state_complete_copy_configuration
hgs
parents:
diff changeset
   904
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   905
	{
hgs
parents:
diff changeset
   906
		// ERROR wrong state.
hgs
parents:
diff changeset
   907
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
   908
	}
hgs
parents:
diff changeset
   909
hgs
parents:
diff changeset
   910
	Complete();
hgs
parents:
diff changeset
   911
hgs
parents:
diff changeset
   912
	return EAP_STATUS_RETURN(m_am_tools, completion_status);
hgs
parents:
diff changeset
   913
}
hgs
parents:
diff changeset
   914
hgs
parents:
diff changeset
   915
// ----------------------------------------------------------
hgs
parents:
diff changeset
   916
hgs
parents:
diff changeset
   917
eap_status_e CEapGeneric::complete_set_index(
hgs
parents:
diff changeset
   918
	const eap_status_e completion_status)
hgs
parents:
diff changeset
   919
{
hgs
parents:
diff changeset
   920
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   921
		m_am_tools,
hgs
parents:
diff changeset
   922
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   923
		(EAPL("CEapGeneric::complete_set_index(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   924
		this,
hgs
parents:
diff changeset
   925
		iWaitState,
hgs
parents:
diff changeset
   926
		completion_status,
hgs
parents:
diff changeset
   927
		eap_status_string_c::get_status_string(completion_status)));
hgs
parents:
diff changeset
   928
hgs
parents:
diff changeset
   929
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_set_index()");
hgs
parents:
diff changeset
   930
hgs
parents:
diff changeset
   931
	iCompletionStatus = completion_status;
hgs
parents:
diff changeset
   932
hgs
parents:
diff changeset
   933
	if (iWaitState != eap_generic_wait_state_complete_set_index
hgs
parents:
diff changeset
   934
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   935
	{
hgs
parents:
diff changeset
   936
		// ERROR wrong state.
hgs
parents:
diff changeset
   937
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
   938
	}
hgs
parents:
diff changeset
   939
hgs
parents:
diff changeset
   940
	Complete();
hgs
parents:
diff changeset
   941
hgs
parents:
diff changeset
   942
	return EAP_STATUS_RETURN(m_am_tools, completion_status);
hgs
parents:
diff changeset
   943
}
hgs
parents:
diff changeset
   944
hgs
parents:
diff changeset
   945
// ----------------------------------------------------------
hgs
parents:
diff changeset
   946
hgs
parents:
diff changeset
   947
eap_status_e CEapGeneric::complete_get_type_info(
hgs
parents:
diff changeset
   948
	const eap_method_settings_c * const internal_settings)
hgs
parents:
diff changeset
   949
{
hgs
parents:
diff changeset
   950
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   951
		m_am_tools,
hgs
parents:
diff changeset
   952
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   953
		(EAPL("CEapGeneric::complete_get_type_info(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
   954
		this,
hgs
parents:
diff changeset
   955
		iWaitState,
hgs
parents:
diff changeset
   956
		internal_settings->m_completion_status,
hgs
parents:
diff changeset
   957
		eap_status_string_c::get_status_string(internal_settings->m_completion_status)));
hgs
parents:
diff changeset
   958
hgs
parents:
diff changeset
   959
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_get_type_info()");
hgs
parents:
diff changeset
   960
hgs
parents:
diff changeset
   961
	if (internal_settings == 0)
hgs
parents:
diff changeset
   962
	{
hgs
parents:
diff changeset
   963
		iCompletionStatus = eap_status_illegal_parameter;
hgs
parents:
diff changeset
   964
hgs
parents:
diff changeset
   965
		Complete();
hgs
parents:
diff changeset
   966
hgs
parents:
diff changeset
   967
		return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
   968
	}
hgs
parents:
diff changeset
   969
hgs
parents:
diff changeset
   970
	iCompletionStatus = internal_settings->m_completion_status;
hgs
parents:
diff changeset
   971
hgs
parents:
diff changeset
   972
	if (iWaitState == eap_generic_wait_state_complete_get_type_info
hgs
parents:
diff changeset
   973
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
   974
	{
hgs
parents:
diff changeset
   975
		if (internal_settings != 0
hgs
parents:
diff changeset
   976
			&& internal_settings->m_MethodInfoPresent == true)
hgs
parents:
diff changeset
   977
		{
hgs
parents:
diff changeset
   978
			TInt error(KErrNone);
hgs
parents:
diff changeset
   979
hgs
parents:
diff changeset
   980
			error = CEapConversion::ConvertFromInternalToBuf16(
hgs
parents:
diff changeset
   981
				m_am_tools,
hgs
parents:
diff changeset
   982
				&(internal_settings->m_KReleaseDate),
hgs
parents:
diff changeset
   983
				&iReleaseDate);
hgs
parents:
diff changeset
   984
hgs
parents:
diff changeset
   985
			if(error == KErrNone)
hgs
parents:
diff changeset
   986
			{
hgs
parents:
diff changeset
   987
				error = CEapConversion::ConvertFromInternalToBuf16(
hgs
parents:
diff changeset
   988
					m_am_tools,
hgs
parents:
diff changeset
   989
					&(internal_settings->m_KEapTypeVersion),
hgs
parents:
diff changeset
   990
					&iEapTypeVersion);
hgs
parents:
diff changeset
   991
			}
hgs
parents:
diff changeset
   992
hgs
parents:
diff changeset
   993
			if(error == KErrNone)
hgs
parents:
diff changeset
   994
			{
hgs
parents:
diff changeset
   995
				error = CEapConversion::ConvertFromInternalToBuf16(
hgs
parents:
diff changeset
   996
					m_am_tools,
hgs
parents:
diff changeset
   997
					&(internal_settings->m_KManufacturer),
hgs
parents:
diff changeset
   998
					&iManufacturer);
hgs
parents:
diff changeset
   999
			}
hgs
parents:
diff changeset
  1000
hgs
parents:
diff changeset
  1001
			if(error != KErrNone)
hgs
parents:
diff changeset
  1002
			{
hgs
parents:
diff changeset
  1003
				SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, m_am_tools->convert_am_error_to_eapol_error(error)));
hgs
parents:
diff changeset
  1004
			}
hgs
parents:
diff changeset
  1005
		}
hgs
parents:
diff changeset
  1006
		else
hgs
parents:
diff changeset
  1007
		{
hgs
parents:
diff changeset
  1008
			SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_parameter));
hgs
parents:
diff changeset
  1009
		}
hgs
parents:
diff changeset
  1010
	}
hgs
parents:
diff changeset
  1011
	else if (iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
  1012
	{
hgs
parents:
diff changeset
  1013
		// ERROR wrong state.
hgs
parents:
diff changeset
  1014
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
  1015
	}
hgs
parents:
diff changeset
  1016
hgs
parents:
diff changeset
  1017
	Complete();
hgs
parents:
diff changeset
  1018
hgs
parents:
diff changeset
  1019
	return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
  1020
}
hgs
parents:
diff changeset
  1021
hgs
parents:
diff changeset
  1022
// ----------------------------------------------------------
hgs
parents:
diff changeset
  1023
hgs
parents:
diff changeset
  1024
eap_status_e CEapGeneric::complete_invoke_ui(
hgs
parents:
diff changeset
  1025
	const eap_method_settings_c * const internal_settings)
hgs
parents:
diff changeset
  1026
{
hgs
parents:
diff changeset
  1027
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1028
		m_am_tools,
hgs
parents:
diff changeset
  1029
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1030
		(EAPL("CEapGeneric::complete_invoke_ui(): this=0x%08x, iWaitState=%d, status=%d=%s\n"),
hgs
parents:
diff changeset
  1031
		this,
hgs
parents:
diff changeset
  1032
		iWaitState,
hgs
parents:
diff changeset
  1033
		internal_settings->m_completion_status,
hgs
parents:
diff changeset
  1034
		eap_status_string_c::get_status_string(internal_settings->m_completion_status)));
hgs
parents:
diff changeset
  1035
hgs
parents:
diff changeset
  1036
	EAP_TRACE_RETURN_STRING(m_am_tools, "returns: CEapGeneric::complete_invoke_ui()");
hgs
parents:
diff changeset
  1037
hgs
parents:
diff changeset
  1038
	if (internal_settings == 0)
hgs
parents:
diff changeset
  1039
	{
hgs
parents:
diff changeset
  1040
		iCompletionStatus = eap_status_illegal_parameter;
hgs
parents:
diff changeset
  1041
hgs
parents:
diff changeset
  1042
		Complete();
hgs
parents:
diff changeset
  1043
hgs
parents:
diff changeset
  1044
		return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
  1045
	}
hgs
parents:
diff changeset
  1046
hgs
parents:
diff changeset
  1047
	iCompletionStatus = internal_settings->m_completion_status;
hgs
parents:
diff changeset
  1048
hgs
parents:
diff changeset
  1049
	if (iWaitState == eap_generic_wait_state_complete_invoke_ui
hgs
parents:
diff changeset
  1050
		&& iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
  1051
	{
hgs
parents:
diff changeset
  1052
		if (internal_settings != 0
hgs
parents:
diff changeset
  1053
			&& internal_settings->m_ButtonIdPresent == true)
hgs
parents:
diff changeset
  1054
		{
hgs
parents:
diff changeset
  1055
hgs
parents:
diff changeset
  1056
		}
hgs
parents:
diff changeset
  1057
		else
hgs
parents:
diff changeset
  1058
		{
hgs
parents:
diff changeset
  1059
			SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_illegal_parameter));
hgs
parents:
diff changeset
  1060
		}
hgs
parents:
diff changeset
  1061
	}
hgs
parents:
diff changeset
  1062
	else if (iCompletionStatus == eap_status_ok)
hgs
parents:
diff changeset
  1063
	{
hgs
parents:
diff changeset
  1064
		// ERROR wrong state.
hgs
parents:
diff changeset
  1065
		SetCompletionStatusIfStillOk(EAP_STATUS_RETURN(m_am_tools, eap_status_wrong_eap_type_state));
hgs
parents:
diff changeset
  1066
	}
hgs
parents:
diff changeset
  1067
hgs
parents:
diff changeset
  1068
	Complete();
hgs
parents:
diff changeset
  1069
hgs
parents:
diff changeset
  1070
	return EAP_STATUS_RETURN(m_am_tools, iCompletionStatus);
hgs
parents:
diff changeset
  1071
}
hgs
parents:
diff changeset
  1072
hgs
parents:
diff changeset
  1073
hgs
parents:
diff changeset
  1074
//--------------------------------------------------
hgs
parents:
diff changeset
  1075
//--------------------------------------------------
hgs
parents:
diff changeset
  1076
//--------------------------------------------------
hgs
parents:
diff changeset
  1077
hgs
parents:
diff changeset
  1078
eap_am_message_if_c * eap_am_message_if_c::new_eap_am_message_if_c(
hgs
parents:
diff changeset
  1079
	abs_eap_am_tools_c * const tools)
hgs
parents:
diff changeset
  1080
{
hgs
parents:
diff changeset
  1081
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1082
		tools,
hgs
parents:
diff changeset
  1083
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1084
		(EAPL("eap_am_message_if_c::new_eap_am_server_general_settings_c()\n")));
hgs
parents:
diff changeset
  1085
hgs
parents:
diff changeset
  1086
	EAP_TRACE_RETURN_STRING(tools, "returns: eap_am_message_if_c::new_eap_am_message_if_c()");
hgs
parents:
diff changeset
  1087
hgs
parents:
diff changeset
  1088
    eap_am_message_if_c *client_if = new eap_am_message_if_symbian_c(tools, EEapPluginNew);
hgs
parents:
diff changeset
  1089
hgs
parents:
diff changeset
  1090
	eap_automatic_variable_c<eap_am_message_if_c> automatic_client_if(
hgs
parents:
diff changeset
  1091
		tools,
hgs
parents:
diff changeset
  1092
		client_if);
hgs
parents:
diff changeset
  1093
hgs
parents:
diff changeset
  1094
	if (client_if == 0
hgs
parents:
diff changeset
  1095
		|| client_if->get_is_valid() == false)
hgs
parents:
diff changeset
  1096
	{
hgs
parents:
diff changeset
  1097
		// ERROR.
hgs
parents:
diff changeset
  1098
		if (client_if != 0)
hgs
parents:
diff changeset
  1099
		{
hgs
parents:
diff changeset
  1100
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1101
				tools,
hgs
parents:
diff changeset
  1102
				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
hgs
parents:
diff changeset
  1103
				(EAPL("ERROR: calls: eap_am_message_if_c::new_eap_am_server_general_settings_c(): client_if->shutdown()\n")));
hgs
parents:
diff changeset
  1104
hgs
parents:
diff changeset
  1105
			client_if->shutdown();
hgs
parents:
diff changeset
  1106
		}
hgs
parents:
diff changeset
  1107
		return 0;
hgs
parents:
diff changeset
  1108
	}
hgs
parents:
diff changeset
  1109
hgs
parents:
diff changeset
  1110
	automatic_client_if.do_not_free_variable();
hgs
parents:
diff changeset
  1111
hgs
parents:
diff changeset
  1112
	return client_if;
hgs
parents:
diff changeset
  1113
hgs
parents:
diff changeset
  1114
}
hgs
parents:
diff changeset
  1115
hgs
parents:
diff changeset
  1116
//--------------------------------------------------
hgs
parents:
diff changeset
  1117
hgs
parents:
diff changeset
  1118
EAP_FUNC_EXPORT eap_plugin_message_base_c * eap_plugin_message_base_c::new_eap_plugin_client_message_if_c(
hgs
parents:
diff changeset
  1119
	abs_eap_am_tools_c * const tools,
hgs
parents:
diff changeset
  1120
	abs_eap_plugin_message_c * const partner)
hgs
parents:
diff changeset
  1121
{
hgs
parents:
diff changeset
  1122
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1123
		tools,
hgs
parents:
diff changeset
  1124
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1125
		(EAPL("eap_plugin_message_base_c::new_eap_plugin_client_message_if_c()\n")));
hgs
parents:
diff changeset
  1126
hgs
parents:
diff changeset
  1127
	EAP_TRACE_RETURN_STRING(tools, "returns: eap_plugin_message_base_c::new_eap_plugin_client_message_if_c()");
hgs
parents:
diff changeset
  1128
hgs
parents:
diff changeset
  1129
	eap_am_message_if_c *client_if = eap_am_message_if_c::new_eap_am_message_if_c(
hgs
parents:
diff changeset
  1130
		tools);
hgs
parents:
diff changeset
  1131
hgs
parents:
diff changeset
  1132
	eap_automatic_variable_c<eap_am_message_if_c> automatic_client_if(
hgs
parents:
diff changeset
  1133
		tools,
hgs
parents:
diff changeset
  1134
		client_if);
hgs
parents:
diff changeset
  1135
hgs
parents:
diff changeset
  1136
	if (client_if == 0
hgs
parents:
diff changeset
  1137
		|| client_if->get_is_valid() == false)
hgs
parents:
diff changeset
  1138
	{
hgs
parents:
diff changeset
  1139
		// ERROR.
hgs
parents:
diff changeset
  1140
		if (client_if != 0)
hgs
parents:
diff changeset
  1141
		{
hgs
parents:
diff changeset
  1142
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1143
				tools,
hgs
parents:
diff changeset
  1144
				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
hgs
parents:
diff changeset
  1145
				(EAPL("ERROR: calls: eap_plugin_message_base_c::new_eap_plugin_client_message_if_c(): client_if->shutdown()\n")));
hgs
parents:
diff changeset
  1146
hgs
parents:
diff changeset
  1147
			(void) client_if->shutdown();
hgs
parents:
diff changeset
  1148
		}
hgs
parents:
diff changeset
  1149
		return 0;
hgs
parents:
diff changeset
  1150
	}
hgs
parents:
diff changeset
  1151
hgs
parents:
diff changeset
  1152
	eap_plugin_client_message_if_c * new_session_core = new eap_plugin_client_message_if_c(tools, client_if, partner);
hgs
parents:
diff changeset
  1153
hgs
parents:
diff changeset
  1154
	eap_automatic_variable_c<eap_plugin_client_message_if_c> automatic_new_session_core(
hgs
parents:
diff changeset
  1155
		tools,
hgs
parents:
diff changeset
  1156
		new_session_core);
hgs
parents:
diff changeset
  1157
hgs
parents:
diff changeset
  1158
	if (new_session_core == 0
hgs
parents:
diff changeset
  1159
		|| new_session_core->get_is_valid() == false)
hgs
parents:
diff changeset
  1160
	{
hgs
parents:
diff changeset
  1161
		// ERROR.
hgs
parents:
diff changeset
  1162
		if (new_session_core != 0)
hgs
parents:
diff changeset
  1163
		{
hgs
parents:
diff changeset
  1164
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1165
				tools,
hgs
parents:
diff changeset
  1166
				TRACE_FLAGS_ALWAYS|TRACE_FLAGS_DEFAULT, 
hgs
parents:
diff changeset
  1167
				(EAPL("ERROR: calls: eap_plugin_message_base_c::new_eap_plugin_client_message_if_c(): new_session_core->shutdown()\n")));
hgs
parents:
diff changeset
  1168
hgs
parents:
diff changeset
  1169
			new_session_core->shutdown();
hgs
parents:
diff changeset
  1170
		}
hgs
parents:
diff changeset
  1171
		return 0;
hgs
parents:
diff changeset
  1172
	}
hgs
parents:
diff changeset
  1173
hgs
parents:
diff changeset
  1174
	client_if->set_partner(new_session_core);
hgs
parents:
diff changeset
  1175
hgs
parents:
diff changeset
  1176
	automatic_client_if.do_not_free_variable();
hgs
parents:
diff changeset
  1177
	automatic_new_session_core.do_not_free_variable();
hgs
parents:
diff changeset
  1178
hgs
parents:
diff changeset
  1179
	return new_session_core;
hgs
parents:
diff changeset
  1180
}
hgs
parents:
diff changeset
  1181
hgs
parents:
diff changeset
  1182
// ----------------------------------------------------------
hgs
parents:
diff changeset
  1183
// End of file