/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
* Handle to EAP plugin information
*
*/
/*
* %version: 16 %
*/
// System includes
#include <eapqtpluginhandle.h>
// User includes
#include "eapqtpluginhandle_p.h"
/*!
* \class EapQtPluginHandle
* \brief Public implementation of handle to EAP plugin information
*/
// External function prototypes
// Local constants
struct EapQtPluginHandleMapper
{
EapQtExpandedEapType::Type mType;
int mUid;
};
// mapper from EapQtPluginHandle::Plugin to default
// EapQtExpandedEapType & protocol plugin implementation UID pair
static const EapQtPluginHandleMapper handleMapper[EapQtPluginHandle::PluginLast] = {
{EapQtExpandedEapType::TypeUndefined, 0x00000000},
{EapQtExpandedEapType::TypeEapAka, 0x102073c2},
{EapQtExpandedEapType::TypeEapFast, 0x2000BF12},
{EapQtExpandedEapType::TypeEapGtc, 0x101f8e80},
{EapQtExpandedEapType::TypeLeap, 0x101f8ea7},
{EapQtExpandedEapType::TypeEapMschapv2, 0x101f8e67},
{EapQtExpandedEapType::TypePeap, 0x101f8e4e},
{EapQtExpandedEapType::TypeEapSim, 0x101f8e4b},
{EapQtExpandedEapType::TypeEapTls, 0x101f8e4d},
{EapQtExpandedEapType::TypeEapTtls, 0x101f8e4f},
{EapQtExpandedEapType::TypePap, 0x2001B2F2},
{EapQtExpandedEapType::TypePlainMschapv2, 0x101f8e7b}
};
// mapper from EapQtExpandedEapType::Type to EapQtPluginHandle::Plugin
static const EapQtPluginHandle::Plugin typeMapper[EapQtExpandedEapType::TypeLast] = {
EapQtPluginHandle::PluginUndefined,
EapQtPluginHandle::PluginEapAka,
EapQtPluginHandle::PluginEapFast,
EapQtPluginHandle::PluginEapGtc,
EapQtPluginHandle::PluginLeap,
EapQtPluginHandle::PluginEapMschapv2,
EapQtPluginHandle::PluginPeap,
EapQtPluginHandle::PluginEapSim,
EapQtPluginHandle::PluginEapTls,
EapQtPluginHandle::PluginEapTtls,
EapQtPluginHandle::PluginUndefined, /* wps does not have a plugin */
EapQtPluginHandle::PluginPap,
EapQtPluginHandle::PluginPlainMschapv2
};
// ======== LOCAL FUNCTIONS ========
// ======== MEMBER FUNCTIONS ========
EapQtPluginHandle::EapQtPluginHandle() :
d_ptr(new EapQtPluginHandlePrivate(handleMapper[PluginUndefined].mType,
handleMapper[PluginUndefined].mUid))
{
}
EapQtPluginHandle::EapQtPluginHandle(const Plugin id) :
d_ptr(NULL)
{
Plugin localId;
if (id < PluginLast) {
localId = id;
}
else {
localId = PluginUndefined;
}
d_ptr.reset(new EapQtPluginHandlePrivate(handleMapper[localId].mType,
handleMapper[localId].mUid));
}
EapQtPluginHandle::EapQtPluginHandle(const EapQtExpandedEapType& type, const int uid) :
d_ptr(new EapQtPluginHandlePrivate(type, uid))
{
}
EapQtPluginHandle::EapQtPluginHandle(const EapQtExpandedEapType& type) :
d_ptr(new EapQtPluginHandlePrivate(type, handleMapper[typeMapper[type.type()]].mUid))
{
}
EapQtPluginHandle::EapQtPluginHandle(const EapQtPluginHandle& handle) :
d_ptr(new EapQtPluginHandlePrivate(handle.type(), handle.protocolImplementationUid()))
{
}
EapQtPluginHandle::~EapQtPluginHandle()
{
// scoped pointer delete
}
EapQtExpandedEapType EapQtPluginHandle::type() const
{
return d_ptr->mType;
}
int EapQtPluginHandle::protocolImplementationUid() const
{
return d_ptr->mProtocolImplementationUid;
}
EapQtPluginHandle::Plugin EapQtPluginHandle::pluginId() const
{
return typeMapper[d_ptr->mType.type()];
}
EapQtPluginHandle& EapQtPluginHandle::operator=(const EapQtPluginHandle &handle)
{
// check if assigning to myself
if (this != &handle) {
d_ptr.reset(new EapQtPluginHandlePrivate(handle.type(), handle.protocolImplementationUid()));
}
return *this;
}
bool EapQtPluginHandle::operator ==(const EapQtPluginHandle &right_type_value) const
{
return (right_type_value.d_ptr->mProtocolImplementationUid == d_ptr->mProtocolImplementationUid)
&& (right_type_value.d_ptr->mType == d_ptr->mType);
}
bool EapQtPluginHandle::operator !=(const EapQtPluginHandle &right_type_value) const
{
return (right_type_value.d_ptr->mProtocolImplementationUid != d_ptr->mProtocolImplementationUid)
|| (right_type_value.d_ptr->mType != d_ptr->mType);
}