apengine/apeng/src/APAccessPointItem.cpp
changeset 0 5a93021fdf25
child 15 4dc3bb0099b0
child 41 bbb64eb3bdee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/apengine/apeng/src/APAccessPointItem.cpp	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,5492 @@
+/*
+* Copyright (c) 2002 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:  Declaration of the class CApAccessPointItem
+*
+*/
+
+
+// INCLUDE FILES
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <nifvar_internal.h>
+#endif
+#include    <cdblen.h>
+#include    <f32file.h>
+#include    <bautils.h>
+#include    <barsc.h>
+#include    <ApEngine.rsg>
+#include    "ApAccessPointItem.h"
+#include    "ApEngineConsts.h"
+#include    "ApEngineCommons.h"
+#include    "ApEngineLogger.h"
+#include    <txtetext.h>
+#include    <in_sock.h>
+
+#include    "APItemExtra.h"
+#include    "APItemCdmaData.h"
+#include    "APItemWlanData.h"
+
+#include    <featmgr.h>
+#include    <etelpckt.h>
+#include    <etelqos.h>
+
+#include    <data_caging_path_literals.hrh>
+
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+_LIT( KDefIspIfName, "ppp" );                           // required !
+
+_LIT( KDefGprsIfName, "pppgprs" );                      // required !
+
+_LIT( KDefIspIfNetworksIPv4, "ip" );                        // required !
+//_LIT( KDefGprsIfParams, "gprsnif" );                    // required !
+_LIT( KDefGprsIfParams, "" );                    // required !
+
+_LIT( KDefWapGatewayIpAddress, "0.0.0.0" );
+_LIT( KDefIspGateway, "0.0.0.0" );
+_LIT( KDefPhoneIpAddress, "0.0.0.0" );
+_LIT( KDefPrimaryNameServer, "0.0.0.0" );
+_LIT( KDefSecondaryNameServer, "0.0.0.0" );
+
+_LIT( KWellKnownIp6PrimaryNameServer, "fec0:000:0000:ffff::1" );
+_LIT( KWellKnownIp6SecondaryNameServer, "fec0:000:0000:ffff::2" );
+_LIT( KDefIp6PrimaryNameServer, "0:0:0:0:0:0:0:0" );
+_LIT( KDefIp6SecondaryNameServer, "0:0:0:0:0:0:0:0" );
+
+_LIT( KDefIspIfNetworksIPv6, "ip6" );                        // required !
+_LIT( KDefIspIfNetworksIPv4IPv6, "ip,ip6" );                 // required !
+_LIT( KDefIspIfNetworksIPv4IPv6LAN, "ip,ip6" );              // required !
+
+
+
+/// ROM drive.
+_LIT( KApEngineResDriveZ, "z:" );
+/// ApEngine resource file name.
+_LIT( KApEngineResFileName, "ApEngine.rsc" );
+
+
+/**
+* General Settings UID
+*/
+#ifdef __TEST_USE_SHARED_DATA
+    LOCAL_D const TUid KGeneralSettingsUid = { 0X100058EC };
+#endif // __TEST_USE_SHARED_DATA
+
+
+// MACROS
+#define BOOL_COMPARE(a,b) (((a) && (b)) || (!(a) && !(b)))
+
+// LOCAL CONSTANTS AND MACROS
+const TInt KApItemInitialTxtBufSize = 0;
+
+const TInt KApMembers = EApWlanIPNameServer2+1;
+
+_LIT( KDefProxyProtocolName, "http" );                      // required !
+
+#if defined(_DEBUG)
+    _LIT( kApSet, "APEngine" ) ;
+#endif // (_DEBUG)
+
+const TInt KEndOfArray = -1;
+
+const TInt KCsdAnalogue[]       = { KSpeedAutobaud, KSpeed9600, KSpeed14400,
+                                    KEndOfArray };
+
+const TInt KCsdAnalogueWcdma[]  = { KSpeedAutobaud, KSpeed9600, KSpeed14400,
+                                    KSpeed28800, KEndOfArray};
+
+const TInt KCsdIsdn110[]        = { KSpeed9600, KSpeed14400, KEndOfArray};
+
+const TInt KCsdIsdn110Wcdma[]   = { KSpeed9600, KSpeed14400, KSpeed28800,
+                                    KSpeed38400, KEndOfArray};
+
+const TInt KCsdIsdn120[]        = { KSpeed9600, KSpeed14400, KEndOfArray};
+
+const TInt KCsdIsdn120Wcdma[]   = { KSpeed9600, KSpeed14400, KSpeed28800,
+                                    KSpeed56000, KEndOfArray};
+
+const TInt KHcsdAnal[]          = { KSpeedAutobaud, KSpeed9600, KSpeed14400,
+                                    KSpeed19200, KSpeed28800, KEndOfArray};
+
+const TInt KHcsdIsdn110[]       = { KSpeed9600, KSpeed14400, KSpeed19200, 
+                                    KSpeed28800, KSpeed38400, KEndOfArray};
+
+const TInt KHcsdIsdn120[]       = { KSpeed9600, KSpeed14400, KSpeed19200,
+                                    KSpeed28800, KSpeed43200, KEndOfArray};
+
+
+
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+// 
+//  LOCAL, CApItemExtra class implementation
+// 
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+//
+// ---------------------------------------------------------
+// CApItemExtra::NewL
+// ---------------------------------------------------------
+//
+CApItemExtra* CApItemExtra::NewL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemExtra::NewL" ) ) );
+
+    CApItemExtra* self = new ( ELeave ) CApItemExtra;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    CleanupStack::Pop( self );
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemExtra::NewL" ) ) );
+    
+    return self;
+    }
+
+
+// Destructor
+// ---------------------------------------------------------
+// CApItemExtra::~CApItemExtra
+// ---------------------------------------------------------
+//
+CApItemExtra::~CApItemExtra()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemExtra::~CApItemExtra" ) ) );
+
+    delete iCdmaData;
+    delete iWlanData;
+    delete iIpv6PrimaryDNS;
+    delete iIpv6SecondaryDNS;
+    delete iLanBearerModemName;
+    delete iIapBearerType;
+    }
+
+
+// C++ default constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+// CApItemExtra::CApItemExtra
+// ---------------------------------------------------------
+//
+CApItemExtra::CApItemExtra()
+:iIsFeatureManagerInitialised( EFalse ),
+iIpv6GetDNSIPFromServer( ETrue ),
+iIsWcdma( EFalse ), 
+iIsIpv6Supported( EFalse ),
+iIsVpnAp( EFalse ),
+iIsAppCsdSupport( EFalse )
+    {
+    }
+
+// Symbian OS default constructor can leave.
+// ---------------------------------------------------------
+// CApItemExtra::ConstructL
+// ---------------------------------------------------------
+//
+void CApItemExtra::ConstructL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemExtra::ConstructL" ) ) );
+
+    iIpv6PrimaryDNS = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIpv6SecondaryDNS = HBufC::NewL( KApItemInitialTxtBufSize );
+    iLanBearerModemName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIapBearerType = HBufC::NewL( KApItemInitialTxtBufSize );
+     
+#ifdef __TEST_USE_SHARED_DATA
+    iIsAppHscsdSupport = 
+        ApCommons::IsGivenSharedDataSupportL( KGeneralSettingsUid, 
+                                              KGSHSCSDAccessPoints );
+#else
+    iIsAppHscsdSupport = ETrue;
+#endif // __TEST_USE_SHARED_DATA
+
+
+#ifdef __TEST_HSCSD_SUPPORT
+    iIsAppHscsdSupport = ETrue;
+#endif // __TEST_HSCSD_SUPPORT
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemExtra::ConstructL" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+// 
+//  LOCAL, CApItemCdmaData class implementation
+// 
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+//
+// ---------------------------------------------------------
+// CApItemCdmaData::NewL
+// ---------------------------------------------------------
+//
+CApItemCdmaData* CApItemCdmaData::NewL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemCdmaData::NewL" ) ) );
+
+    CApItemCdmaData* self = new ( ELeave ) CApItemCdmaData;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemCdmaData::NewL" ) ) );
+    
+    return self;
+    }
+
+
+// Destructor
+// ---------------------------------------------------------
+// CApItemCdmaData::~CApItemCdmaData
+// ---------------------------------------------------------
+//
+CApItemCdmaData::~CApItemCdmaData()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemCdmaData::~CApItemCdmaData" ) ) );
+
+    delete iIwfName;
+    delete iPdpAddress;
+    delete iHomeAgentAddress;
+    delete iMipHomeAddress;
+    delete iMipPrimaryHomeAgent;
+    delete iMipSecondaryHomeAgent;
+    }
+
+
+// C++ default constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+// CApItemCdmaData::CApItemCdmaData
+// ---------------------------------------------------------
+//
+CApItemCdmaData::CApItemCdmaData()
+/* Assuming 0 default values everywhere. */
+:iServiceOption( RPacketContext::KLowSpeedData ),
+iPdpType( EIPv4 ),
+iReqFwdPriority( 0 ), /*RPacketQoS::TQoSLinkPriority*/
+iReqRevPriority( 0 ), /*RPacketQoS::TQoSLinkPriority*/
+iReqFwdBitrate( 0 ),  /*RPacketQoS::TQoSDataRate*/
+iReqRevBitrate( 0 ),  /*RPacketQoS::TQoSDataRate*/
+iReqFwdLoss( 0 ),  /*RPacketQoS::TQoSDataLoss*/
+iReqRevLoss( 0 ),  /*RPacketQoS::TQoSDataLoss*/
+iReqFwdMaxDelay( 0 ),  /*RPacketQoS::TQoSDelay*/
+iReqRevMaxDelay( 0 ),  /*RPacketQoS::TQoSDelay*/
+iMinFwdBitrate( 0 ),  /*RPacketQoS::TQoSDataRate*/
+iMinRevBitrate( 0 ),  /*RPacketQoS::TQoSDataRate*/
+iAccptFwdLoss( 0 ),  /*RPacketQoS::TQoSDataLoss*/
+iAccptRevLoss( 0 ),  /*RPacketQoS::TQoSDataLoss*/
+iAccptFwdMaxDelay( 0 ),  /*RPacketQoS::TQoSDelay*/
+iAccptRevMaxDelay( 0 ),  /*RPacketQoS::TQoSDelay*/
+iQosWarningTimeout( 0 ), /*0xffffffff disables*/
+iRlpMode( RPacketQoS::KRLPUnknown ),
+// CDMA2000 deprecated Mobile IP fields
+iMip( EFalse ),
+iMipTimeout( 0 ),
+// CDMA2000 specific CDMA parameters provisioned through OTA
+iNaiType( 0 ),
+iSimpleIpAuthAlgorithm( 0 ),
+iSimpleIpPapSsHandle( 0 ),
+iSimpleIpChapSsHandle( 0 ),
+iMipTBit( 0 ),
+iMipMnAaaAuthAlgorithm( 0 ),
+iMipMnAaaSpi( 0 ),
+iMipMnAaaSsHandle( 0 ),
+iMipMnHaAuthAlgorithm( 0 ),
+iMipMnHaSpi( 0 ),
+iMipMnHaSsHandle( 0 )
+    {
+    }
+
+// Symbian OS default constructor can leave.
+// ---------------------------------------------------------
+// CApItemCdmaData::ConstructL
+// ---------------------------------------------------------
+//
+void CApItemCdmaData::ConstructL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemCdmaData::ConstructL" ) ) );
+
+    iIwfName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iPdpAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+    iHomeAgentAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+    iMipHomeAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+    iMipPrimaryHomeAgent = HBufC::NewL( KApItemInitialTxtBufSize );
+    iMipSecondaryHomeAgent = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemCdmaData::ConstructL" ) ) );
+    }
+
+
+
+
+
+
+
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+// 
+//  LOCAL, CApItemWlanData class implementation
+// 
+// ---------------------------------------------------------
+// ---------------------------------------------------------
+//
+// ---------------------------------------------------------
+// CApItemWlanData::NewL
+// ---------------------------------------------------------
+//
+CApItemWlanData* CApItemWlanData::NewL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemWlanData::NewL" ) ) );
+
+    CApItemWlanData* self = new ( ELeave ) CApItemWlanData;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemWlanData::NewL" ) ) );
+    
+    return self;
+    }
+
+
+// Destructor
+// ---------------------------------------------------------
+// CApItemWlanData::~CApItemWlanData
+// ---------------------------------------------------------
+//
+CApItemWlanData::~CApItemWlanData()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemWlanData::~CApItemWlanData" ) ) );
+    delete iWlanNetworkName;
+    }
+
+
+// C++ default constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+// CApItemWlanData::CApItemWlanData
+// ---------------------------------------------------------
+//
+CApItemWlanData::CApItemWlanData()
+:iWlanNetworkMode( EInfra ),
+iWlanSecurityMode( EOpen )
+/* Assuming 0 default values elsewhere. */
+    {
+    }
+
+// Symbian OS default constructor can leave.
+// ---------------------------------------------------------
+// CApItemWlanData::ConstructL
+// ---------------------------------------------------------
+//
+void CApItemWlanData::ConstructL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApItemWlanData::ConstructL" ) ) );
+
+    iWlanNetworkName = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    CLOG( ( EApItem, 1, _L( "<- CApItemWlanData::ConstructL" ) ) );
+    }
+
+
+
+
+// MODULE DATA STRUCTURES
+
+// =========================================================
+// =========================================================
+// =========================================================
+// 
+// CApAccessPointItem class implementation
+// 
+// =========================================================
+// =========================================================
+// =========================================================
+//
+
+// ================= MEMBER FUNCTIONS =======================
+// Two-phased constructor.
+// ---------------------------------------------------------
+// CApAccessPointItem::NewLC
+// ---------------------------------------------------------
+//
+EXPORT_C CApAccessPointItem* CApAccessPointItem::NewLC()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::NewLC" ) ) );
+
+    CApAccessPointItem* self = new ( ELeave ) CApAccessPointItem;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::NewLC" ) ) );
+    return self;
+    }
+
+
+// Destructor
+// ---------------------------------------------------------
+// CApAccessPointItem::~CApAccessPointItem
+// ---------------------------------------------------------
+//
+EXPORT_C CApAccessPointItem::~CApAccessPointItem()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::~CApAccessPointItem" ) ) );
+
+    if ( iExt )
+        {
+        if ( iExt->iIsFeatureManagerInitialised )
+            {
+            FeatureManager::UnInitializeLib();
+            }
+        }
+
+    delete iExt;
+    delete iSpecified;
+    delete iWapAccessPointName;
+    delete iWapBearer;
+    delete iStartingPage;
+    delete iWapGatewayAddress;
+    delete iIapName;
+    delete iIspName;
+    delete iIspDescription;
+    delete iIspDefaultTelNumber;
+    delete iLoginScript;
+    delete iUserName;
+    delete iPassword;
+    delete iIspIfName;
+    delete iIspIfParams;
+    delete iIspIfNetworks;
+    delete iIspIfAuthName;
+    delete iIspIfAuthPass;
+    delete iIspIfCallbackInfo;
+    delete iIspIPAddr;
+    delete iIspIPNetMask;
+    delete iIspGateway;
+    delete iPrimaryDNS;
+    delete iSecondaryDNS;
+    delete iIspInitString;
+    delete iIapServiceType;
+    delete iGprsAccessPointName;
+    delete iGprsPdpAddress;
+    delete iApProxyProtocolName;
+    delete iApProxyServerAddress;
+    delete iApProxyExceptions;
+    delete iNetworkName;
+    delete iWapProxyLoginName; 
+    delete iWapProxyLoginPass;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::~CApAccessPointItem" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CopyFromL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::CopyFromL( const CApAccessPointItem&
+                                            aCopyFrom  )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CopyFromL" ) ) );
+
+    WriteTextL( EApWapAccessPointName, *aCopyFrom.iWapAccessPointName );
+    WriteTextL( EApWapCurrentBearer, *aCopyFrom.iWapBearer );
+    WriteLongTextL( EApWapStartPage, *aCopyFrom.iStartingPage );
+    // The WAP gateway address
+    WriteTextL( EApWapGatewayAddress, *aCopyFrom.iWapGatewayAddress );
+
+    iIsWTLSSecurityOn = aCopyFrom.iIsWTLSSecurityOn;
+    iIsConnectionTypeContinuous = aCopyFrom.iIsConnectionTypeContinuous;
+    iChargeCard = aCopyFrom.iChargeCard;
+    iWapIap = aCopyFrom.iWapIap;
+
+    WriteTextL( EApIapName, *aCopyFrom.iIapName );
+    iIapServiceId = aCopyFrom.iIapServiceId;
+    WriteTextL( EApIapServiceType, *aCopyFrom.iIapServiceType );
+
+
+    iIapChargeCardId = aCopyFrom.iIapChargeCardId;
+
+    WriteTextL( EApIspName, *aCopyFrom.iIspName );
+    WriteTextL( EApIspDescription, *aCopyFrom.iIspDescription );
+
+    iIspType = aCopyFrom.iIspType;
+
+    WriteTextL( EApIspDefaultTelNumber, *aCopyFrom.iIspDefaultTelNumber );
+
+    iIspDialResolution = aCopyFrom.iIspDialResolution;
+    iUseLoginScript = aCopyFrom.iUseLoginScript;
+
+    WriteLongTextL( EApIspLoginScript, *aCopyFrom.iLoginScript );
+
+    iPromptPassword = aCopyFrom.iPromptPassword;
+
+    WriteTextL( EApIspLoginName, *aCopyFrom.iUserName );
+    WriteTextL( EApIspLoginPass, *aCopyFrom.iPassword );
+
+    iDisplayTerminalWindow = aCopyFrom.iDisplayTerminalWindow;
+
+    WriteTextL( EApIspIfName, *aCopyFrom.iIspIfName );
+    WriteTextL( EApIspIfParams, *aCopyFrom.iIspIfParams );
+    WriteTextL( EApIspIfNetworks, *aCopyFrom.iIspIfNetworks );
+
+    iIspIfPromptForAuth = aCopyFrom.iIspIfPromptForAuth;
+
+    WriteTextL( EApIspIfAuthName, *aCopyFrom.iIspIfAuthName );
+    WriteTextL( EApIspIfAuthPass, *aCopyFrom.iIspIfAuthPass );
+
+    iIspIfAuthRetries = aCopyFrom.iIspIfAuthRetries;
+    iUseCallBack = aCopyFrom.iUseCallBack;
+    iCallBackTypeIsServerNum = aCopyFrom.iCallBackTypeIsServerNum;
+
+    WriteTextL( EApIspIfCallbackInfo, *aCopyFrom.iIspIfCallbackInfo );
+
+    iIspCallbackTimeOut = aCopyFrom.iIspCallbackTimeOut;
+    iIspIPAddrFromServer = aCopyFrom.iIspIPAddrFromServer;
+
+    WriteTextL( EApIspIPAddr, *aCopyFrom.iIspIPAddr );
+    WriteTextL( EApIspIPNetMask, *aCopyFrom.iIspIPNetMask );
+    WriteTextL( EApIspIPGateway, *aCopyFrom.iIspGateway );
+
+    iGetDNSIPFromServer = aCopyFrom.iGetDNSIPFromServer;
+
+    WriteTextL( EApIspIPNameServer1, *aCopyFrom.iPrimaryDNS );
+    WriteTextL( EApIspIPNameServer2, *aCopyFrom.iSecondaryDNS );
+
+    iEnablePPPCompression = aCopyFrom.iEnablePPPCompression;
+    iIspEnableLCPExtensions = aCopyFrom.iIspEnableLCPExtensions;
+    iIsPasswordAuthenticationSecure =
+                aCopyFrom.iIsPasswordAuthenticationSecure;
+    iIspEnableSwCompression = aCopyFrom.iIspEnableSwCompression;
+    iIspBearerName = aCopyFrom.iIspBearerName;
+    iMaxConnSpeed = aCopyFrom.iMaxConnSpeed;
+    iIspBearerCE = aCopyFrom.iIspBearerCE;
+    iApIapBearerService = aCopyFrom.iApIapBearerService;
+    iBearerCallTypeIsdn = aCopyFrom.iBearerCallTypeIsdn;
+
+    WriteTextL( EApIspInitString, *aCopyFrom.iIspInitString );
+
+    iIspBearerType = aCopyFrom.iIspBearerType;
+    iIspChannelCoding = aCopyFrom.iIspChannelCoding;
+    iIspAIUR = aCopyFrom.iIspAIUR;
+    iIspRequestedTimeSlots = aCopyFrom.iIspRequestedTimeSlots;
+    iIspMaximumTimeSlots = aCopyFrom.iIspMaximumTimeSlots;
+
+    WriteLongTextL( EApGprsAccessPointName, *aCopyFrom.iGprsAccessPointName );
+
+    WriteTextL( EApGprsPdpAddress, *aCopyFrom.iGprsPdpAddress );
+
+    iGprsPdpType = aCopyFrom.iGprsPdpType;
+    iGprsReqPrecedence = aCopyFrom.iGprsReqPrecedence;
+    iGprsReqDelay = aCopyFrom.iGprsReqDelay;
+    iGprsReqReliability = aCopyFrom.iGprsReqReliability;
+    iGprsReqPeakThroughput = aCopyFrom.iGprsReqPeakThroughput;
+    iGprsReqMeanPeakThroughput = aCopyFrom.iGprsReqMeanPeakThroughput;
+    iGprsMinPrecedence = aCopyFrom.iGprsMinPrecedence;
+
+    iGprsMinDelay = aCopyFrom.iGprsMinDelay;
+    iGprsMinReliability = aCopyFrom.iGprsMinReliability;
+    iGprsMinPeakThroughput = aCopyFrom.iGprsMinPeakThroughput;
+    iGprsMinMeanThroughput = aCopyFrom.iGprsMinMeanThroughput;
+
+    iGprsUseAnonymAccess = aCopyFrom.iGprsUseAnonymAccess;
+    WriteTextL( EApProxyProtocolName, *aCopyFrom.iApProxyProtocolName );
+    WriteLongTextL( EApProxyServerAddress, *aCopyFrom.iApProxyServerAddress );
+    WriteLongTextL( EApProxyExceptions, *aCopyFrom.iApProxyExceptions);        
+    iApProxyPortNumber = aCopyFrom.iApProxyPortNumber;
+    iApProxyUseProxy = aCopyFrom.iApProxyUseProxy;
+    iApHasProxySettings = aCopyFrom.iApHasProxySettings;
+    WriteTextL( EApNetworkName, *aCopyFrom.iNetworkName );
+    WriteTextL( EApProxyLoginName, *aCopyFrom.iWapProxyLoginName );
+    WriteTextL( EApProxyLoginPass, *aCopyFrom.iWapProxyLoginPass );
+
+    iNetworkId = aCopyFrom.iNetworkId;
+    WriteTextL( EApLanBearerName, *aCopyFrom.iExt->iLanBearerModemName );
+    WriteTextL( EApIapBearerType, *aCopyFrom.iExt->iIapBearerType );
+
+
+    // Copying of WLAN data must be before Ipv6 support handling as that 
+    // requires the knowledge of the bearer type!!!!!
+    if ( iExt->iWlanData )
+        {
+        iExt->iWlanData->iWlanNetworkMode = 
+                    aCopyFrom.iExt->iWlanData->iWlanNetworkMode;
+        iExt->iWlanData->iWlanSecurityMode = 
+                    aCopyFrom.iExt->iWlanData->iWlanSecurityMode;
+        ReAllocL( iExt->iWlanData->iWlanNetworkName, 
+                    *aCopyFrom.iExt->iWlanData->iWlanNetworkName );
+        iExt->iWlanData->iWlanId = aCopyFrom.iExt->iWlanData->iWlanId;
+        iExt->iWlanData->iIsWlan = aCopyFrom.iExt->iWlanData->iIsWlan;
+        iExt->iWlanData->iScanSSID = aCopyFrom.iExt->iWlanData->iScanSSID;
+        iExt->iWlanData->iChannelId = aCopyFrom.iExt->iWlanData->iChannelId;
+        }
+
+    if ( iExt->iIsIpv6Supported )
+        {
+        iExt->iIpv6GetDNSIPFromServer = 
+            aCopyFrom.iExt->iIpv6GetDNSIPFromServer;
+        WriteTextL( EApIP6NameServer1, *aCopyFrom.iExt->iIpv6PrimaryDNS );
+        WriteTextL( EApIP6NameServer2, *aCopyFrom.iExt->iIpv6SecondaryDNS );
+        }
+
+    if( iExt->iCdmaData )
+        {
+        // CDMA2000
+        ReAllocL( iExt->iCdmaData->iIwfName, 
+                    *aCopyFrom.iExt->iCdmaData->iIwfName );
+        iExt->iCdmaData->iServiceOption = 
+                    aCopyFrom.iExt->iCdmaData->iServiceOption;
+        iExt->iCdmaData->iPdpType = aCopyFrom.iExt->iCdmaData->iPdpType;
+        ReAllocL( iExt->iCdmaData->iPdpAddress, 
+                    *aCopyFrom.iExt->iCdmaData->iPdpAddress );
+        iExt->iCdmaData->iReqFwdPriority = 
+                    aCopyFrom.iExt->iCdmaData->iReqFwdPriority;
+        iExt->iCdmaData->iReqRevPriority = 
+                    aCopyFrom.iExt->iCdmaData->iReqRevPriority;
+        iExt->iCdmaData->iReqFwdBitrate = 
+                    aCopyFrom.iExt->iCdmaData->iReqFwdBitrate;
+        iExt->iCdmaData->iReqRevBitrate = 
+                    aCopyFrom.iExt->iCdmaData->iReqRevBitrate;
+        iExt->iCdmaData->iReqFwdLoss = aCopyFrom.iExt->iCdmaData->iReqFwdLoss;
+        iExt->iCdmaData->iReqRevLoss = aCopyFrom.iExt->iCdmaData->iReqRevLoss;
+        iExt->iCdmaData->iReqFwdMaxDelay = 
+                    aCopyFrom.iExt->iCdmaData->iReqFwdMaxDelay;
+        iExt->iCdmaData->iReqRevMaxDelay = 
+                    aCopyFrom.iExt->iCdmaData->iReqRevMaxDelay;
+        iExt->iCdmaData->iMinFwdBitrate = 
+                    aCopyFrom.iExt->iCdmaData->iMinFwdBitrate;
+        iExt->iCdmaData->iMinRevBitrate = 
+                    aCopyFrom.iExt->iCdmaData->iMinRevBitrate;
+        iExt->iCdmaData->iAccptFwdLoss = 
+                    aCopyFrom.iExt->iCdmaData->iAccptFwdLoss;
+        iExt->iCdmaData->iAccptRevLoss = 
+                    aCopyFrom.iExt->iCdmaData->iAccptRevLoss;
+        iExt->iCdmaData->iAccptFwdMaxDelay = 
+                    aCopyFrom.iExt->iCdmaData->iAccptFwdMaxDelay;
+        iExt->iCdmaData->iAccptRevMaxDelay = 
+                    aCopyFrom.iExt->iCdmaData->iAccptRevMaxDelay;
+        iExt->iCdmaData->iQosWarningTimeout = 
+                    aCopyFrom.iExt->iCdmaData->iQosWarningTimeout;
+        iExt->iCdmaData->iRlpMode = aCopyFrom.iExt->iCdmaData->iRlpMode;
+        // CDMA2000 deprecated Mobile IP fields
+        iExt->iCdmaData->iMip = aCopyFrom.iExt->iCdmaData->iMip;
+        ReAllocL( iExt->iCdmaData->iHomeAgentAddress, 
+                    *aCopyFrom.iExt->iCdmaData->iHomeAgentAddress );
+        iExt->iCdmaData->iMipTimeout = aCopyFrom.iExt->iCdmaData->iMipTimeout;
+        // CDMA2000 specific CDMA parameters provisioned through OTA
+        iExt->iCdmaData->iNaiType = aCopyFrom.iExt->iCdmaData->iNaiType;
+        iExt->iCdmaData->iSimpleIpAuthAlgorithm = 
+                    aCopyFrom.iExt->iCdmaData->iSimpleIpAuthAlgorithm;
+        iExt->iCdmaData->iSimpleIpPapSsHandle = 
+                    aCopyFrom.iExt->iCdmaData->iSimpleIpPapSsHandle;
+        iExt->iCdmaData->iSimpleIpChapSsHandle = 
+                    aCopyFrom.iExt->iCdmaData->iSimpleIpChapSsHandle;
+        iExt->iCdmaData->iMipTBit = aCopyFrom.iExt->iCdmaData->iMipTBit;
+        ReAllocL( iExt->iCdmaData->iMipHomeAddress, 
+                    *aCopyFrom.iExt->iCdmaData->iMipHomeAddress );
+        ReAllocL( iExt->iCdmaData->iMipPrimaryHomeAgent, 
+                    *aCopyFrom.iExt->iCdmaData->iMipPrimaryHomeAgent );
+        ReAllocL( iExt->iCdmaData->iMipSecondaryHomeAgent, 
+                    *aCopyFrom.iExt->iCdmaData->iMipSecondaryHomeAgent );
+        iExt->iCdmaData->iMipMnAaaAuthAlgorithm = 
+                    aCopyFrom.iExt->iCdmaData->iMipMnAaaAuthAlgorithm;
+        iExt->iCdmaData->iMipMnAaaSpi = 
+                    aCopyFrom.iExt->iCdmaData->iMipMnAaaSpi;
+        iExt->iCdmaData->iMipMnAaaSsHandle = 
+                    aCopyFrom.iExt->iCdmaData->iMipMnAaaSsHandle;
+        iExt->iCdmaData->iMipMnHaAuthAlgorithm = 
+                    aCopyFrom.iExt->iCdmaData->iMipMnHaAuthAlgorithm;
+        iExt->iCdmaData->iMipMnHaSpi = aCopyFrom.iExt->iCdmaData->iMipMnHaSpi;
+        iExt->iCdmaData->iMipMnHaSsHandle = 
+                    aCopyFrom.iExt->iCdmaData->iMipMnHaSsHandle;
+        }
+
+
+    SetIfNetworksL();
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CopyFromL" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::operator==
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CApAccessPointItem::operator==(
+                                             const CApAccessPointItem& aItem
+                                             ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::operator==" ) ) );
+
+    TBool retval( EFalse );
+    TRAPD( err, retval = DoCompareApL( aItem ) );
+    if ( err )
+        {
+        retval = EFalse;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::operator==" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::operator!=
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CApAccessPointItem::operator!=(
+                                             const CApAccessPointItem& aItem
+                                             ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::operator!=" ) ) );
+
+    TBool ret = ( *this == aItem );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::operator!=" ) ) );
+    return ( !ret );
+    }
+
+
+
+// C++ default constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+// CApAccessPointItem::CApAccessPointItem
+// ---------------------------------------------------------
+//
+EXPORT_C CApAccessPointItem::CApAccessPointItem()
+:iIsWTLSSecurityOn( EFalse ),
+iIsConnectionTypeContinuous( EWapWspOptionConnectionOriented ),
+iIspType( EIspTypeInternetOnly ),
+iUseLoginScript( EFalse ),
+iPromptPassword( EFalse ),
+iDisplayTerminalWindow( EFalse ),
+iUseCallBack( EFalse ),
+iCallBackTypeIsServerNum( ECallbackActionMSCBCPAcceptServerSpecifiedNumber ),
+iIspCallbackTimeOut( KCallBackTimeOut ),
+iEnablePPPCompression( EFalse ),
+iIsPasswordAuthenticationSecure( ETrue ),
+iBearerCallTypeIsdn( ECallTypeAnalogue ),
+iIspBearerCE( RMobileCall::EQoSNonTransparent ),
+iGprsPdpType( EIPv4 ),
+iIsReadOnly( EFalse ),
+iApHasProxySettings( EFalse ),
+iNetworkId( 0 ),
+iApIapBearerService( RMobileCall::KCapsDataCircuitAsynchronous )
+
+    {
+    }
+
+
+// Symbian OS default constructor can leave.
+// ---------------------------------------------------------
+// CApAccessPointItem::ConstructL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::ConstructL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ConstructL" ) ) );
+   
+    iExt = CApItemExtra::NewL();
+
+    FeatureManager::InitializeLibL();
+    iExt->iIsFeatureManagerInitialised = ETrue;
+
+    iExt->iIsWcdma = 
+        FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma );
+
+    iExt->iIsAppCsdSupport = 
+        FeatureManager::FeatureSupported( KFeatureIdAppCsdSupport );
+#ifdef __TEST_CSD_SUPPORT
+    iExt->iIsAppCsdSupport = ETrue;
+#endif // __TEST_CSD_SUPPORT
+
+
+    iExt->iIsIpv6Supported = 
+        FeatureManager::FeatureSupported( KFeatureIdIPv6 );
+#ifdef __TEST_IPV6_SUPPORT    
+    iExt->iIsIpv6Supported = ETrue;
+#endif //  __TEST_IPV6_SUPPORT    
+    if( FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ) )
+        {
+        iExt->iCdmaData = CApItemCdmaData::NewL();
+        }
+#ifdef __TEST_CDMA_SUPPORT
+    if( !iExt->iCdmaData )
+        {
+        iExt->iCdmaData = CApItemCdmaData::NewL();
+        }
+#endif // __TEST_CDMA_SUPPORT
+
+    if( FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ) )
+        {
+        iExt->iWlanData = CApItemWlanData::NewL();
+        }
+#ifdef __TEST_WLAN_SUPPORT
+    iExt->iWlanData = CApItemWlanData::NewL();
+#endif // __TEST_WLAN_SUPPORT
+
+    iSpecified = new (ELeave) CArrayFixFlat<TBool>( KApMembers );
+    for (TInt i=0; i< KApMembers; i++)
+        {
+        iSpecified->AppendL( EFalse );
+        }
+    // as we are in ConstructL called from NewLC,
+    // 'this' is already on the CleanupStack,
+    // so do not push members onto it!
+    iWapAccessPointName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iWapBearer = HBufC::NewL( KApItemInitialTxtBufSize );
+    iStartingPage = HBufC::NewL( KApItemInitialTxtBufSize );
+    iWapGatewayAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIapName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspDescription = HBufC::NewL( KApItemInitialTxtBufSize );
+    iLoginScript = HBufC::NewL( KApItemInitialTxtBufSize );
+    iUserName = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    iPassword = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfParams = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfNetworks = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfAuthName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfAuthPass = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIfCallbackInfo = HBufC8::NewL( KApItemInitialTxtBufSize );
+    iIspIPAddr = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspIPNetMask = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspGateway = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    iPrimaryDNS = HBufC::NewL( KApItemInitialTxtBufSize );
+    iSecondaryDNS = HBufC::NewL( KApItemInitialTxtBufSize );
+    iIspInitString = HBufC8::NewL( KApItemInitialTxtBufSize );
+    iIspDefaultTelNumber = HBufC::NewL( KApItemInitialTxtBufSize );
+
+
+    iIapServiceType = HBufC::NewL( KApItemInitialTxtBufSize );
+    iGprsAccessPointName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iGprsPdpAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+
+
+    iApProxyProtocolName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iApProxyServerAddress = HBufC::NewL( KApItemInitialTxtBufSize );
+    iApProxyExceptions = HBufC::NewL( KApItemInitialTxtBufSize );
+    iNetworkName = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    iWapProxyLoginName = HBufC::NewL( KApItemInitialTxtBufSize );
+    iWapProxyLoginPass = HBufC::NewL( KApItemInitialTxtBufSize );
+
+    RFs fs;
+    CleanupClosePushL<RFs>( fs );
+    User::LeaveIfError( fs.Connect() );
+
+    // can't use resource here because it is not added yet....
+    TFileName resourceFile;
+    resourceFile.Append( KApEngineResDriveZ );
+    resourceFile.Append( KDC_RESOURCE_FILES_DIR );
+    resourceFile.Append( KApEngineResFileName );
+    BaflUtils::NearestLanguageFile( fs, resourceFile );
+
+    RResourceFile rf;
+    CleanupClosePushL<RResourceFile>( rf );
+    rf.OpenL( fs, resourceFile );
+    rf.ConfirmSignatureL( 0 );
+    HBufC8* readBuffer = rf.AllocReadLC( R_APNG_DEFAULT_AP_NAME );
+    // as we are expecting HBufC16...
+    __ASSERT_DEBUG( ( readBuffer->Length()%2 ) == 0,
+                    ApCommons::Panic( EWrongResourceFormat ) );
+    const TPtrC16 ptrReadBuffer( (TText16*) readBuffer->Ptr(),
+                                 ( readBuffer->Length() + 1 ) >> 1 );
+    HBufC16* textBuffer=HBufC16::NewL( ptrReadBuffer.Length() );
+    *textBuffer=ptrReadBuffer;
+    CleanupStack::PopAndDestroy( readBuffer ); // readBuffer
+    CleanupStack::PushL( textBuffer );
+    
+    SetNamesL( *textBuffer );
+
+    CleanupStack::PopAndDestroy( 3 ); // textbuffer, fs, rf
+
+    WriteTextL( EApWapCurrentBearer, TPtrC(WAP_IP_BEARER) );    // required !
+
+    WriteTextL( EApIapServiceType, TPtrC(OUTGOING_WCDMA) );      // required !
+
+
+    WriteTextL( EApIspIfName, KDefGprsIfName );                 // required !
+    WriteTextL( EApIspIfParams, KDefGprsIfParams );             // required !
+    WriteTextL( EApIspIPGateway, KDefIspGateway );
+    
+    WriteTextL( EApWapGatewayAddress, KDefWapGatewayIpAddress );
+    WriteTextL( EApIspIPAddr, KDefPhoneIpAddress );
+    WriteTextL( EApIspIPNameServer1, KDefPrimaryNameServer );
+    WriteTextL( EApIspIPNameServer2, KDefSecondaryNameServer );
+
+    if ( iExt->iIsIpv6Supported )
+        {
+        WriteTextL( EApIP6NameServer1, KDefIp6PrimaryNameServer );
+        WriteTextL( EApIP6NameServer2, KDefIp6SecondaryNameServer );
+        }
+
+    SetIfNetworksL();
+
+    WriteTextL( EApProxyProtocolName, KDefProxyProtocolName );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ConstructL" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadTextL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::ReadTextL( const TApMember aColumn,
+                                           TDes8& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadTextL8" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    switch ( aColumn )
+        {
+        case EApIspIfCallbackInfo:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfCallbackInfo->Length() );
+            aValue.Format( KFormat8, iIspIfCallbackInfo );
+            break;
+            }
+        case EApIspInitString:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspInitString->Length() );
+            aValue.Format( KFormat8, iIspInitString );
+            break;
+            }
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            User::Leave( KErrInvalidColumn );
+            break;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadTextL8" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadTextL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::ReadTextL( const TApMember aColumn,
+                                           TDes16& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadTextL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    switch ( aColumn )
+        {
+        case EApWapAccessPointName:
+            {
+            aValue.SetLength( iWapAccessPointName->Length() );
+            aValue.Format( KFormat, iWapAccessPointName );
+            break;
+            }
+        case EApWapCurrentBearer:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iWapBearer->Length() );
+            aValue.Format( KFormat, iWapBearer );
+            break;
+            }
+        case EApWapGatewayAddress:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iWapGatewayAddress->Length() );
+            aValue.Format( KFormat, iWapGatewayAddress );
+            break;
+            }
+        case EApIapName:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIapName->Length() );
+            aValue.Format( KFormat, iIapName );
+            break;
+            }
+        case EApIapServiceType:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIapServiceType->Length() );
+            aValue.Format( KFormat, iIapServiceType );
+            break;
+            }
+        case EApIspName:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspName->Length() );
+            aValue.Format( KFormat, iIspName );
+            break;
+            }
+        case EApIspDescription:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspDescription->Length() );
+            aValue.Format( KFormat, iIspDescription );
+            break;
+            }
+        case EApIspDefaultTelNumber:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspDefaultTelNumber->Length() );
+            aValue.Format( KFormat, iIspDefaultTelNumber );
+            break;
+            }
+        case EApIspLoginName:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iUserName->Length() );
+            aValue.Format( KFormat, iUserName );
+            break;
+            }
+        case EApIspLoginPass:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iPassword->Length() );
+            aValue.Format( KFormat, iPassword );
+            break;
+            }
+        case EApIspIfName:
+        case EApGprsIfName:
+        case EApCdmaIfName:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfName->Length() );
+            aValue.Format( KFormat, iIspIfName );
+            break;
+            }
+        case EApIspIfParams:
+        case EApGprsIfParams:
+        case EApCdmaIfParams:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfParams->Length() );
+            aValue.Format( KFormat, iIspIfParams );
+            break;
+            }
+        case EApIspIfNetworks:
+        case EApGprsIfNetworks:
+        case EApCdmaIfNetworks:
+        case EApWlanIfNetworks:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfNetworks->Length() );
+            aValue.Format( KFormat, iIspIfNetworks );
+            break;
+            }
+        case EApIspIfAuthName:
+        case EApGprsIfAuthName:
+        case EApCdmaIfAuthName:
+        case EApWlanIfAuthName:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfAuthName->Length() );
+            aValue.Format( KFormat, iIspIfAuthName );
+            break;
+            }
+        case EApIspIfAuthPass:
+        case EApGprsIfAuthPassword:
+        case EApCdmaIfAuthPassword:
+        case EApWlanIfAuthPassword:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIfAuthPass->Length() );
+            aValue.Format( KFormat, iIspIfAuthPass );
+            break;
+            }
+        case EApIspIPAddr:
+        case EApGprsIpAddr:
+        case EApCdmaIpAddr:
+        case EApWlanIpAddr:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIPAddr->Length() );
+            aValue.Format( KFormat, iIspIPAddr );
+            break;
+            }
+        case EApIspIPNetMask:
+        case EApGprsIpNetMask:
+        case EApCdmaIpNetMask:
+        case EApWlanIpNetMask:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspIPNetMask->Length() );
+            aValue.Format( KFormat, iIspIPNetMask );
+            break;
+            }
+        case EApIspIPGateway:
+        case EApGprsIpGateway:
+        case EApCdmaIpGateway:
+        case EApWlanIpGateway:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iIspGateway->Length() );
+            aValue.Format( KFormat, iIspGateway );
+            break;
+            }
+        case EApIspIPNameServer1:
+        case EApGprsIPNameServer1:
+        case EApCdmaIPNameServer1:
+        case EApWlanIPNameServer1:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iPrimaryDNS->Length() );
+            aValue.Format( KFormat, iPrimaryDNS );
+            break;
+            }
+        case EApIspIPNameServer2:
+        case EApGprsIPNameServer2:
+        case EApCdmaIPNameServer2:
+        case EApWlanIPNameServer2:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iSecondaryDNS->Length() );
+            aValue.Format( KFormat, iSecondaryDNS );
+            break;
+            }
+        case EApGprsPdpAddress:
+            {
+            // make it large enough to hold
+            aValue.SetLength( iGprsPdpAddress->Length() );
+            aValue.Format( KFormat, iGprsPdpAddress );
+            break;
+            }
+        case EApProxyProtocolName:
+            {
+            aValue.SetLength( iApProxyProtocolName->Length() );
+            aValue.Format( KFormat, iApProxyProtocolName );
+            break;
+            }
+        case EApProxyLoginName:
+            {
+            aValue.SetLength( iWapProxyLoginName->Length() );
+            aValue.Format( KFormat, iWapProxyLoginName );
+            break;
+            }
+        case EApProxyLoginPass:
+            {
+            aValue.SetLength( iWapProxyLoginPass->Length() );
+            aValue.Format( KFormat, iWapProxyLoginPass );
+            break;
+            }
+        case EApNetworkName:
+            {
+            aValue.SetLength( iNetworkName->Length() );
+            aValue.Format( KFormat, iNetworkName );
+            break;
+            }
+        case EApIP6NameServer1:
+            {
+            // make it large enough to hold
+            if ( iExt->iIsIpv6Supported )
+                {
+                aValue.SetLength( iExt->iIpv6PrimaryDNS->Length() );
+                aValue.Format( KFormat, iExt->iIpv6PrimaryDNS );
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        case EApIP6NameServer2:
+            {
+            // make it large enough to hold
+            if ( iExt->iIsIpv6Supported )
+                {
+                aValue.SetLength( iExt->iIpv6SecondaryDNS->Length() );
+                aValue.Format( KFormat, iExt->iIpv6SecondaryDNS );
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        // CDMA2000
+        case EApCdmaIwfName:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength( iExt->iCdmaData->iIwfName->Length() );
+            aValue.Format( KFormat, iExt->iCdmaData->iIwfName );
+            break;
+            }
+        case EApCdmaPdpAddress:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength( iExt->iCdmaData->iPdpAddress->Length() );
+            aValue.Format( KFormat, iExt->iCdmaData->iPdpAddress );
+            break;
+            }
+        case EApCdmaHomeAgentAddress:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength( iExt->iCdmaData->iHomeAgentAddress->Length() );
+            aValue.Format( KFormat, iExt->iCdmaData->iHomeAgentAddress );
+            break;
+            }
+        case EApCdmaMipPrimaryHomeAgent:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength
+                ( iExt->iCdmaData->iMipPrimaryHomeAgent->Length() );
+            aValue.Format
+                ( KFormat, iExt->iCdmaData->iMipPrimaryHomeAgent );
+            break;
+            }
+        case EApCdmaMipSecondaryHomeAgent:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength
+                ( iExt->iCdmaData->iMipSecondaryHomeAgent->Length() );
+            aValue.Format
+                ( KFormat, iExt->iCdmaData->iMipSecondaryHomeAgent );
+            break;
+            }
+        // END CDMA2000
+        // WLAN
+        case EApWlanNetworkName:
+            {
+            // LeaveIfUnsupported prevents getting here with no WLAN support.
+            __ASSERT_ALWAYS \
+                ( iExt->iWlanData, ApCommons::Panic( ESanityCheckFailed ) );
+            aValue.SetLength
+                ( iExt->iWlanData->iWlanNetworkName->Length() );
+            aValue.Format
+                ( KFormat, iExt->iWlanData->iWlanNetworkName );
+            break;
+            }
+        // END WLAN
+        // LANModem
+        case EApLanBearerName:
+            {
+            aValue.SetLength( iExt->iLanBearerModemName->Length() );
+            aValue.Format( KFormat, iExt->iLanBearerModemName );            
+            break;
+            }
+        // END LANModem
+        case EApIapBearerType:
+            {
+            aValue.SetLength( iExt->iIapBearerType->Length() );
+            aValue.Format( KFormat, iExt->iIapBearerType );            
+            break;
+            }
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            User::Leave( KErrInvalidColumn );
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadTextL" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadLongTextL
+// ---------------------------------------------------------
+//
+EXPORT_C HBufC* CApAccessPointItem::ReadLongTextL( const TApMember aColumn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadLongTextL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    HBufC* retval = NULL;
+    switch ( aColumn )
+        {
+        case EApWapStartPage:
+            {
+            retval = iStartingPage;
+            break;
+            }
+        case EApIspLoginScript:
+            {
+            retval = iLoginScript;
+            break;
+            }
+        case EApGprsAccessPointName:
+            {
+            retval = iGprsAccessPointName;
+            break;
+            }
+        case EApProxyServerAddress:
+            {
+            retval = iApProxyServerAddress;
+            break;
+            }
+        case EApProxyExceptions:
+            {
+            retval = iApProxyExceptions;
+            break;
+            }
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            User::Leave( KErrInvalidColumn );
+            break;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadLongTextL" ) ) );
+    return retval;
+    }
+
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadConstLongTextL
+// ---------------------------------------------------------
+//
+EXPORT_C const HBufC* CApAccessPointItem::ReadConstLongTextL
+                                            ( const TApMember aColumn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadConstLongTextL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    HBufC* retval = NULL;
+    switch ( aColumn )
+        {
+        case EApWapStartPage:
+            {
+            retval = iStartingPage;
+            break;
+            }
+        case EApIspLoginScript:
+            {
+            retval = iLoginScript;
+            break;
+            }
+        case EApGprsAccessPointName:
+            {
+            retval = iGprsAccessPointName;
+            break;
+            }
+        case EApProxyServerAddress:
+            {
+            retval = iApProxyServerAddress;
+            break;
+            }
+        case EApProxyExceptions:
+            {
+            retval = iApProxyExceptions;
+            break;
+            }
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            User::Leave( KErrInvalidColumn );
+            break;
+            }
+        }
+    
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadConstLongTextL" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadTextLengthL
+// ---------------------------------------------------------
+//
+EXPORT_C TUint32 CApAccessPointItem::ReadTextLengthL( const TApMember aColumn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadTextLengthL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    TUint32 l( 0 );
+    switch ( aColumn )
+        { // 16 first
+        case EApWapAccessPointName:
+            {
+            l = iWapAccessPointName->Length();
+            break;
+            }
+        case EApWapStartPage:
+            {
+            l = iStartingPage->Length();
+            break;
+            }
+        case EApWapCurrentBearer:
+            {
+            l = iWapBearer->Length();
+            break;
+            }
+        case EApWapGatewayAddress:
+            {
+            l = iWapGatewayAddress->Length();
+            break;
+            }
+        case EApIapName:
+            {
+            l = iIapName->Length();
+            break;
+            }
+        case EApIapServiceType:
+            {
+            l = iIapServiceType->Length();
+            break;
+            }
+        case EApIspName:
+            {
+            l = iIspName->Length();
+            break;
+            }
+        case EApIspDescription:
+            {
+            l = iIspDescription->Length();
+            break;
+            }
+        case EApIspDefaultTelNumber:
+            {
+            l = iIspDefaultTelNumber->Length();
+            break;
+            }
+        case EApIspLoginName:
+            {
+            l = iUserName->Length();
+            break;
+            }
+        case EApIspLoginPass:
+            {
+            l = iPassword->Length();
+            break;
+            }
+        case EApIspIfName:
+        case EApGprsIfName:
+        case EApCdmaIfName:
+            {
+            l = iIspIfName->Length();
+            break;
+            }
+        case EApIspIfParams:
+        case EApGprsIfParams:
+        case EApCdmaIfParams:
+            {
+            l = iIspIfParams->Length();
+            break;
+            }
+        case EApIspIfNetworks:
+        case EApGprsIfNetworks:
+        case EApCdmaIfNetworks:
+        case EApWlanIfNetworks:
+            {
+            l = iIspIfNetworks->Length();
+            break;
+            }
+        case EApIspIfAuthName:
+        case EApGprsIfAuthName:
+        case EApCdmaIfAuthName:
+        case EApWlanIfAuthName:
+            {
+            l = iIspIfAuthName->Length();
+            break;
+            }
+        case EApIspIfAuthPass:
+        case EApGprsIfAuthPassword:
+        case EApCdmaIfAuthPassword:
+        case EApWlanIfAuthPassword:
+            {
+            l = iIspIfAuthPass->Length();
+            break;
+            }
+        case EApIspIPAddr:
+        case EApGprsIpAddr:
+        case EApCdmaIpAddr:
+        case EApWlanIpAddr:
+            {
+            l = iIspIPAddr->Length();
+            break;
+            }
+        case EApIspIPNetMask:
+        case EApGprsIpNetMask:
+        case EApCdmaIpNetMask:
+        case EApWlanIpNetMask:
+            {
+            l = iIspIPNetMask->Length();
+            break;
+            }
+        case EApIspIPGateway:
+        case EApGprsIpGateway:
+        case EApCdmaIpGateway:
+        case EApWlanIpGateway:
+            {
+            l = iIspGateway->Length();
+            break;
+            }
+        case EApIspIPNameServer1:
+        case EApGprsIPNameServer1:
+        case EApCdmaIPNameServer1:
+        case EApWlanIPNameServer1:
+            {
+            l = iPrimaryDNS->Length();
+            break;
+            }
+        case EApIspIPNameServer2:
+        case EApGprsIPNameServer2:
+        case EApCdmaIPNameServer2:
+        case EApWlanIPNameServer2:
+            {
+            l = iSecondaryDNS->Length();
+            break;
+            }
+        case EApGprsAccessPointName:
+            {
+            l = iGprsAccessPointName->Length();
+            break;
+            }
+        case EApGprsPdpAddress:
+            {
+            l = iGprsPdpAddress->Length();
+            break;
+            }
+        // 8 bit ones
+        case EApIspIfCallbackInfo:
+            {
+            l = iIspIfCallbackInfo->Length();
+            break;
+            }
+        case EApIspInitString:
+            {
+            l = iIspInitString->Length();
+            break;
+            }
+        // Login script
+        case EApIspLoginScript:
+            {
+            l = iLoginScript->Length();
+            break;
+            }
+        case EApProxyProtocolName:
+            {
+            l = iApProxyProtocolName->Length();
+            break;
+            }
+        case EApProxyServerAddress:
+            {
+            l = iApProxyServerAddress->Length();
+            break;
+            }
+        case EApProxyExceptions:
+            {
+            l = iApProxyExceptions->Length();
+            break;
+            }
+        case EApProxyLoginName:
+            {
+            l = iWapProxyLoginName->Length();
+            break;
+            }
+        case EApProxyLoginPass:
+            {
+            l = iWapProxyLoginPass->Length();
+            break;
+            }
+        case EApNetworkName:
+            {
+            l = iNetworkName->Length();
+            break;
+            }
+        case EApIP6NameServer1:
+            {
+            if ( iExt->iIsIpv6Supported )
+                {
+                l = iExt->iIpv6PrimaryDNS->Length();
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        case EApIP6NameServer2:
+            {
+            if ( iExt->iIsIpv6Supported )
+                {
+                l = iExt->iIpv6SecondaryDNS->Length();
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        // CDMA2000
+        case EApCdmaIwfName:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iCdmaData->iIwfName->Length();
+            break;
+            }
+        case EApCdmaPdpAddress:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iCdmaData->iPdpAddress->Length();
+            break;
+            }
+        case EApCdmaHomeAgentAddress:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iCdmaData->iHomeAgentAddress->Length();
+            break;
+            }
+        case EApCdmaMipPrimaryHomeAgent:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iCdmaData->iMipPrimaryHomeAgent->Length();
+            break;
+            }
+        case EApCdmaMipSecondaryHomeAgent:
+            {
+            // LeaveIfUnsupported prevents getting here with no CDMA support.
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iCdmaData->iMipSecondaryHomeAgent->Length();
+            break;
+            }
+        // END CDMA2000
+        // WLAN
+        case EApWlanNetworkName:
+            {
+            // LeaveIfUnsupported prevents getting here with no WLAN support.
+            __ASSERT_ALWAYS \
+                ( iExt->iWlanData, ApCommons::Panic( ESanityCheckFailed ) );
+            l = iExt->iWlanData->iWlanNetworkName->Length();
+            break;
+            }
+        // END WLAN
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            User::Leave( KErrInvalidColumn );
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadTextLengthL" ) ) );
+    return l;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadUint
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::ReadUint( const TApMember aColumn,
+                                           TUint32& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadUint" ) ) );
+
+    TInt retval ( KErrNone );
+
+    if( !IsSupported( aColumn ) )
+        {
+        retval = KErrNotSupported;
+        }
+    else
+        {
+        switch ( aColumn )
+            {
+            case EApWapAccessPointID:
+                {
+                aValue = iWapUid;
+                break;
+                }
+            case EApWapIap:
+                {
+                aValue = iWapIap;
+                break;
+                }
+            case EApIapServiceId:
+                {
+                aValue = iIapServiceId;
+                break;
+                }
+            case EApIapChargecard:
+                {
+                aValue = iIapChargeCardId;
+                break;
+                }
+            case EApIspIspType:
+            case EApCdmaApType:
+                {
+                aValue = iIspType;
+                break;
+                }
+            case EApIspAuthRetries:
+            case EApGprsIfAuthRetries:
+            case EApCdmaIfAuthRetries:
+            case EApWlanIfAuthRetries:
+                {
+                aValue = iIspIfAuthRetries;
+                break;
+                }
+            case EApIspIfCallbackType:
+                {
+                aValue = iCallBackTypeIsServerNum;
+                break;
+                }
+            case EApIspCallBackTimeOut:
+                {
+                aValue = iIspCallbackTimeOut;
+                break;
+                }
+            case EApIspBearerName:
+                {
+                aValue = iIspBearerName;
+                break;
+                }
+            case EApIspBearerSpeed:
+                {
+                aValue = iMaxConnSpeed;
+                break;
+                }
+            case EApIspBearerCE:
+                {
+                aValue = iIspBearerCE;
+                break;
+                }
+            case EApIspBearerCallTypeIsdn:
+                {
+                aValue = iBearerCallTypeIsdn;
+                break;
+                }
+            case EApIspBearerType:
+                {
+                aValue = iIspBearerType;
+                break;
+                }
+            case EApIspChannelCoding:
+                {
+                aValue = iIspChannelCoding;
+                break;
+                }
+            case EApIspAIUR:
+                {
+                aValue = iIspAIUR;
+                break;
+                }
+            case EApIspRequestedTimeSlots:
+                {
+                aValue = iIspRequestedTimeSlots;
+                break;
+                }
+            case EApIspMaximumTimeSlots:
+                {
+                aValue = iIspMaximumTimeSlots;
+                break;
+                }
+            case EApGprsPdpType:
+                {
+                aValue = iGprsPdpType;
+                break;
+                }
+            case EApGprsReqPrecedence:
+                {
+                aValue = iGprsReqPrecedence;
+                break;
+                }
+            case EApGprsReqDelay:
+                {
+                aValue = iGprsReqDelay;
+                break;
+                }
+            case EApGprsReqReliability:
+                {
+                aValue = iGprsReqReliability;
+                break;
+                }
+            case EApGprsReqPeakThroughput:
+                {
+                aValue = iGprsReqPeakThroughput;
+                break;
+                }
+            case EApGprsReqMeanPeakThroughput:
+                {
+                aValue = iGprsReqMeanPeakThroughput;
+                break;
+                }
+            case EApGprsMinPrecedence:
+                {
+                aValue = iGprsMinPrecedence;
+                break;
+                }
+            case EApGprsMinDelay:
+                {
+                aValue = iGprsMinDelay;
+                break;
+                }
+            case EApGprsMinReliability:
+                {
+                aValue = iGprsMinReliability;
+                break;
+                }
+            case EApGprsMinPeakThroughput:
+                {
+                aValue = iGprsMinPeakThroughput;
+                break;
+                }
+            case EApGprsMinMeanThroughput:
+                {
+                aValue = iGprsMinMeanThroughput;
+                break;
+                }
+            case EApWapWspOption:
+                {
+                aValue = iIsConnectionTypeContinuous;
+                break;
+                }
+            case EApProxyPortNumber:
+                {
+                aValue = iApProxyPortNumber;
+                break;
+                }
+            case EApWapProxyPort:
+                {
+                aValue = iWapProxyPort;
+                break;
+                }
+            case EApNetworkID:
+                {
+                aValue = iNetworkId;
+                break;
+                }
+            case EApIapBearerService:
+                {
+                aValue = iApIapBearerService;
+                break;
+                }
+
+    //* DEPRECATED !!!
+            case EApWapIsp:
+            case EApWapChargecard:
+            case EApWapIspType:
+                {
+                __ASSERT_DEBUG( EFalse, \
+                                User::Panic( kApSet, KErrNotSupported ) );
+                retval = KErrNotSupported;
+                break;
+                }
+    //* Deprecated ends
+            // CDMA2000
+            case EApCdmaServiceOption:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iServiceOption;
+                break;
+                }
+            case EApCdmaPdpType:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iPdpType;
+                break;
+                }
+            case EApCdmaReqFwdPriority:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqFwdPriority;
+                break;
+                }
+            case EApCdmaReqRevPriority:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqRevPriority;
+                break;
+                }
+            case EApCdmaReqFwdBitrate:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqFwdBitrate;
+                break;
+                }
+            case EApCdmaReqRevBitrate:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqRevBitrate;
+                break;
+                }
+            case EApCdmaReqFwdLoss:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqFwdLoss;
+                break;
+                }
+            case EApCdmaReqRevLoss:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqRevLoss;
+                break;
+                }
+            case EApCdmaReqFwdMaxDelay:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqFwdMaxDelay;
+                break;
+                }
+            case EApCdmaReqRevMaxDelay:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iReqRevMaxDelay;
+                break;
+                }
+            case EApCdmaMinFwdBitrate:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMinFwdBitrate;
+                break;
+                }
+            case EApCdmaMinRevBitrate:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMinRevBitrate;
+                break;
+                }
+            case EApCdmaAccptFwdLoss:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iAccptFwdLoss;
+                break;
+                }
+            case EApCdmaAccptRevLoss:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iAccptRevLoss;
+                break;
+                }
+            case EApCdmaAccptFwdMaxDelay:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iAccptFwdMaxDelay;
+                break;
+                }
+            case EApCdmaAccptRevMaxDelay:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iAccptRevMaxDelay;
+                break;
+                }
+            case EApCdmaQosWarningTimeout:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iQosWarningTimeout;
+                break;
+                }
+            case EApCdmaRlpMode:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iRlpMode;
+                break;
+                }
+            case EApCdmaMipTimeout:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipTimeout;
+                break;
+                }
+            case EApCdmaNaiType:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iNaiType;
+                break;
+                }
+            case EApCdmaSimpleIpAuthAlgorithm:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iSimpleIpAuthAlgorithm;
+                break;
+                }
+            case EApCdmaSimpleIpPapSsHandle:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iSimpleIpPapSsHandle;
+                break;
+                }
+            case EApCdmaSimpleIpChapSsHandle:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iSimpleIpChapSsHandle;
+                break;
+                }
+            case EApCdmaMipTBit:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipTBit;
+                break;
+                }
+            case EApCdmaMipMnAaaAuthAlgorithm:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnAaaAuthAlgorithm;
+                break;
+                }
+            case EApCdmaMipMnAaaSpi:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnAaaSpi;
+                break;
+                }
+            case EApCdmaMipMnAaaSsHandle:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnAaaSsHandle;
+                break;
+                }
+            case EApCdmaMipMnHaAuthAlgorithm:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnHaAuthAlgorithm;
+                break;
+                }
+            case EApCdmaMipMnHaSpi:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnHaSpi;
+                break;
+                }
+            case EApCdmaMipMnHaSsHandle:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMipMnHaSsHandle;
+                break;
+                }
+            // END CDMA2000
+            // WLAN
+            case EApWlanNetworkMode:
+                {
+                // IsSupported() check prevents getting here with no WLAN supp.
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iWlanData->iWlanNetworkMode;
+                break;
+                }
+            case EApWlanSecurityMode:
+                {
+                // IsSupported() check prevents getting here with no WLAN supp.
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iWlanData->iWlanSecurityMode;
+                break;
+                }
+            case EApWlanSettingsId:
+                {
+                // IsSupported() check prevents getting here with no WLAN supp.
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iWlanData->iWlanId;
+                break;
+                }
+            case EApWlanChannelId:
+                {
+                // IsSupported() check prevents getting here with no WLAN supp.
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iWlanData->iChannelId;
+                break;                
+                }
+            // END WLAN
+            // LANModem
+            case EApIapBearerID:
+                {
+                aValue = iExt->iIapBearerID;
+                break;
+                }
+            // END LANModem            
+            default :
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                retval = KErrInvalidColumn;
+                break;
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadUint" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReadBool
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::ReadBool( const TApMember aColumn,
+                                           TBool& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReadBool" ) ) );
+    
+    TInt retval ( KErrNone );
+
+    if( !IsSupported( aColumn ) )
+        {
+        retval = KErrNotSupported;
+        }
+    else
+        {
+        switch ( aColumn )
+            {
+            case EApWapSecurity:
+                {
+                aValue = iIsWTLSSecurityOn;
+                break;
+                }
+            case EApIspDialResolution:
+                {
+                aValue = iIspDialResolution;
+                break;
+                }
+            case EApIspUseLoginScript:
+                {
+                aValue = iUseLoginScript;
+                break;
+                }
+            case EApIspPromptForLogin:
+                {
+                aValue = iPromptPassword;
+                break;
+                }
+            case EApIspDisplayPCT:
+                {
+                aValue = iDisplayTerminalWindow;
+                break;
+                }
+            case EApIspIfPromptForAuth:
+            case EApGprsIfPromptForAuth:
+            case EApCdmaIfPromptForAuth:
+            case EApWlanIfPromptForAuth:
+                {
+                aValue = iIspIfPromptForAuth;
+                break;
+                }
+            case EApIspIfCallbackEnabled:
+                {
+                aValue = iUseCallBack;
+                break;
+                }
+            case EApIspIPAddrFromServer:
+            case EApGprsIpAddrFromServer:
+            case EApCdmaIpAddrFromServer:
+            case EApWlanIpAddrFromServer:
+                {
+                aValue = iIspIPAddrFromServer;
+                break;
+                }
+            case EApIspIPDnsAddrFromServer:
+            case EApGprsIpDnsAddrFromServer:
+            case EApCdmaIpDnsAddrFromServer:
+            case EApWlanIpDnsAddrFromServer:
+                {
+                aValue = iGetDNSIPFromServer;
+                break;
+                }
+            case EApIspEnableIpHeaderComp:
+            case EApGprsHeaderCompression:
+            case EApCdmaHeaderCompression:
+                {
+                aValue = iEnablePPPCompression;
+                break;
+                }
+            case EApIspEnableLCPExtensions:
+            case EApGprsEnableLCPExtensions:
+            case EApCdmaEnableLCPExtensions:
+                {
+                aValue = iIspEnableLCPExtensions;
+                break;
+                }
+            case EApIspDisablePlainTextAuth:
+            case EApGprsDisablePlainTextAuth:
+            case EApCdmaDisablePlainTextAuth:
+                {
+                aValue = iIsPasswordAuthenticationSecure;
+                break;
+                }
+            case EApIspEnableSWCompression:
+            case EApGprsDataCompression:
+            case EApCdmaDataCompression:
+                {
+                aValue = iIspEnableSwCompression;
+                break;
+                }
+// NOTE! This has been deprecated.
+            case EApIspBearerCallTypeIsdn:
+                {
+                aValue = ( iBearerCallTypeIsdn != ECallTypeAnalogue );
+                break;
+                }
+            case EApGprsUseAnonymAccess:
+            case EApCdmaAnonymousAccess:
+                {
+                aValue = iGprsUseAnonymAccess;
+                break;
+                }
+            case EApIsReadOnly:
+                {
+                aValue = iIsReadOnly;
+                break;
+                }
+            case EApProxyUseProxy:
+                {
+                aValue = iApProxyUseProxy;
+                break;
+                }
+            case EApHasProxySettings:
+                {
+                aValue = iApHasProxySettings;
+                break;
+                }
+            case EApIP6DNSAddrFromServer:
+                {
+                if ( iExt->iIsIpv6Supported )
+                    {
+                    aValue = iExt->iIpv6GetDNSIPFromServer;
+                    }
+                else
+                    {
+                    retval = KErrNotSupported;
+                    }
+                break;
+                }
+            // CDMA2000
+            case EApCdmaMip:
+                {
+                // IsSupported() check prevents getting here with no CDMA supp.
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                aValue = iExt->iCdmaData->iMip;
+                break;
+                }
+            // END CDMA2000
+            // WLAN
+            case EApWlanScanSSID:
+                {
+                // IsSupported() check prevents getting here with no WLAN supp.
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );                
+                aValue = iExt->iWlanData->iScanSSID;
+                break;
+                }
+            // END WLAN
+            default :
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                return KErrInvalidColumn;
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReadBool" ) ) );
+    return retval;
+    }
+
+
+// Update
+// ---------------------------------------------------------
+// CApAccessPointItem::WriteTextL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::WriteTextL( const TApMember aColumn,
+                                            const TDesC8& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::WriteTextL8" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    TInt ret = KErrNone;
+
+    switch ( aColumn )
+        {
+        case EApIspIfCallbackInfo:
+            {
+            ReAllocL( iIspIfCallbackInfo, aValue );
+            break;
+            }
+        case EApIspInitString:
+            {
+            ReAllocL( iIspInitString, aValue );
+            break;
+            }
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            ret = KErrInvalidColumn;
+            break;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::WriteTextL8" ) ) );
+    return ret;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::WriteTextL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::WriteTextL( const TApMember aColumn,
+                                            const TDesC16& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::WriteTextL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    TInt retval( KErrNone );
+    switch ( aColumn )
+    {
+        case EApWapAccessPointName:
+            {
+            HBufC* sgd = aValue.AllocLC();
+            sgd->Des().Trim();
+            ReAllocL( iWapAccessPointName, *sgd);
+            CleanupStack::PopAndDestroy( sgd ); // sgd
+            break;
+            }
+        case EApWapCurrentBearer:
+            {
+            ReAllocL( iWapBearer, aValue);
+            break;
+            }
+        case EApWapGatewayAddress:
+            {
+            // this is an IP Address, must remove leading 0s from
+            // the numbers
+            HBufC *tmp = GetCleanIpAddressLC( aValue );
+            ReAllocL( iWapGatewayAddress, *tmp );
+            CleanupStack::PopAndDestroy( tmp );
+            break;
+            }
+        case EApIapName:
+            {
+            ReAllocL( iIapName, aValue);
+            break;
+            }
+        case EApIspName:
+            {
+            ReAllocL( iIspName, aValue);
+            break;
+            }
+        case EApIapServiceType:
+            {
+            ReAllocL( iIapServiceType, aValue);
+            //Check if ISP/GPRS has changed , update lfname &/or lfnetworks.!
+            if ( ( *iIapServiceType == TPtrC(DIAL_IN_ISP) ) ||
+                 ( *iIapServiceType == TPtrC(DIAL_OUT_ISP) ) )
+                {
+                WriteTextL( EApIspIfName, KDefIspIfName );
+                }
+            else if ( ( *iIapServiceType == TPtrC(OUTGOING_GPRS) ) ||
+                     ( *iIapServiceType == TPtrC(INCOMING_GPRS) ) )
+                {
+                WriteTextL( EApIspIfName, KDefGprsIfName );
+                }
+            else
+                { // unknown ISP type, do not know what to write, 
+                // simply ignore it....
+                }
+            break;
+            }
+        case EApIspDescription:
+            {
+            ReAllocL( iIspDescription, aValue);
+            break;
+            }
+        case EApIspDefaultTelNumber:
+            {
+            ReAllocL( iIspDefaultTelNumber, aValue);
+            break;
+            }
+        case EApIspLoginName:
+            {
+            ReAllocL( iUserName, aValue);
+            ReAllocL( iIspIfAuthName, aValue);
+            break;
+            }
+        case EApIspLoginPass:
+            {
+            ReAllocL( iPassword, aValue);
+            ReAllocL( iIspIfAuthPass, aValue);
+            break;
+            }
+        case EApIspIfName:
+        case EApGprsIfName:
+        case EApCdmaIfName:
+            {
+            ReAllocL( iIspIfName, aValue);
+            break;
+            }
+        case EApIspIfParams:
+        case EApGprsIfParams:
+        case EApCdmaIfParams:
+            {
+            ReAllocL( iIspIfParams, aValue);
+            break;
+            }
+        case EApIspIfNetworks:
+        case EApGprsIfNetworks:
+        case EApCdmaIfNetworks:
+        case EApWlanIfNetworks:
+            {
+            ReAllocL( iIspIfNetworks, aValue); // CAN NOT BE CHANGED
+            break;
+            }
+        case EApIspIfAuthName:
+        case EApGprsIfAuthName:
+        case EApCdmaIfAuthName:
+        case EApWlanIfAuthName:
+            {
+            ReAllocL( iIspIfAuthName, aValue);
+            ReAllocL( iUserName, aValue);
+            break;
+            }
+        case EApIspIfAuthPass:
+        case EApGprsIfAuthPassword:
+        case EApCdmaIfAuthPassword:
+        case EApWlanIfAuthPassword:
+            {
+            ReAllocL( iIspIfAuthPass, aValue);
+            ReAllocL( iPassword, aValue);
+            break;
+            }
+        case EApIspIPAddr:
+        case EApGprsIpAddr:
+        case EApCdmaIpAddr:
+        case EApWlanIpAddr:
+            {
+            ReAllocL( iIspIPAddr, aValue);
+            SetIpFromServer();
+            break;
+            }
+        case EApIspIPNetMask:
+        case EApGprsIpNetMask:
+        case EApCdmaIpNetMask:
+        case EApWlanIpNetMask:
+            {
+            ReAllocL( iIspIPNetMask, aValue);
+            break;
+            }
+        case EApIspIPGateway:
+        case EApGprsIpGateway:
+        case EApCdmaIpGateway:
+        case EApWlanIpGateway:
+            {
+            ReAllocL( iIspGateway, aValue);
+            break;
+            }
+        case EApIspIPNameServer1:
+        case EApGprsIPNameServer1:
+        case EApCdmaIPNameServer1:
+        case EApWlanIPNameServer1:
+            {
+            ReAllocL( iPrimaryDNS, aValue);
+            SetDnsIpFromServer();
+            break;
+            }
+        case EApIspIPNameServer2:
+        case EApGprsIPNameServer2:
+        case EApCdmaIPNameServer2:
+        case EApWlanIPNameServer2:
+            {
+            ReAllocL( iSecondaryDNS, aValue);
+            SetDnsIpFromServer();
+            break;
+            }
+        case EApGprsPdpAddress:
+            {
+            ReAllocL( iGprsPdpAddress, aValue );
+            break;
+            }
+        case EApProxyProtocolName:
+            {
+            ReAllocL( iApProxyProtocolName, aValue );
+            SetProxyFlag();
+            break;
+            }
+        case EApNetworkName:
+            {
+            ReAllocL( iNetworkName, aValue );
+            break;
+            }
+        case EApProxyLoginName:
+            {
+            ReAllocL( iWapProxyLoginName, aValue );
+            break;
+            }
+        case EApProxyLoginPass:
+            {
+            ReAllocL( iWapProxyLoginPass, aValue );
+            break;
+            }
+        case EApIP6NameServer1:
+            {
+            if ( iExt->iIsIpv6Supported )
+                {
+                ReAllocL( iExt->iIpv6PrimaryDNS, aValue);
+                SetDns6IpFromServer();
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        case EApIP6NameServer2:
+            {
+            if ( iExt->iIsIpv6Supported )
+                {
+                ReAllocL( iExt->iIpv6SecondaryDNS, aValue);
+                SetDns6IpFromServer();
+                }
+            else
+                {
+                User::Leave( KErrNotSupported );
+                }
+            break;
+            }
+        // CDMA2000
+        case EApCdmaIwfName:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iCdmaData->iIwfName, aValue );
+            break;
+            }
+        case EApCdmaPdpAddress:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iCdmaData->iPdpAddress, aValue );
+            break;
+            }
+        case EApCdmaHomeAgentAddress:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iCdmaData->iHomeAgentAddress, aValue );
+            break;
+            }
+        case EApCdmaMipPrimaryHomeAgent:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iCdmaData->iMipPrimaryHomeAgent, aValue );
+            break;
+            }
+        case EApCdmaMipSecondaryHomeAgent:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iCdmaData->iMipSecondaryHomeAgent, aValue );
+            break;
+            }
+        // END CDMA2000
+        // WLAN
+        case EApWlanNetworkName:
+            {
+            __ASSERT_ALWAYS \
+                ( iExt->iWlanData, ApCommons::Panic( ESanityCheckFailed ) );
+            ReAllocL( iExt->iWlanData->iWlanNetworkName, aValue );
+            break;
+            }
+        // END WLAN
+        // LANModem
+        case EApLanBearerName:
+            {
+            ReAllocL( iExt->iLanBearerModemName, aValue );
+            break;
+            }
+        // END LANModem
+        case EApIapBearerType:
+            {
+            ReAllocL( iExt->iIapBearerType, aValue );
+            break;
+            }        
+        default:
+            {
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            retval = KErrInvalidColumn;
+            break;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::WriteTextL" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::WriteLongTextL
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::WriteLongTextL( const TApMember aColumn,
+                                                const TDesC& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::WriteLongTextL" ) ) );
+
+    LeaveIfUnsupportedL( aColumn );
+
+    TInt retval( KErrNone );
+    switch ( aColumn )
+        {
+        case EApGprsAccessPointName:
+            {
+            ReAllocL( iGprsAccessPointName, aValue);
+            break;
+            }
+        case EApWapStartPage:
+            {
+            ReAllocL( iStartingPage, aValue);
+            break;
+            }
+        case EApIspLoginScript:
+            {
+            ReAllocL( iLoginScript, aValue );
+            break;
+            }
+        case EApProxyServerAddress:
+            {
+            ReAllocL( iApProxyServerAddress, aValue );
+            SetProxyFlag();
+            break;
+            }
+        case EApProxyExceptions:
+            {
+            ReAllocL( iApProxyExceptions, aValue );
+            SetProxyFlag();
+            break;
+            }
+        default:
+            {
+            // unknown column...
+            __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+            retval = KErrInvalidColumn;
+            break;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::WriteLongTextL" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::WriteUint
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::WriteUint( const TApMember aColumn,
+                                            const TUint32& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::WriteUint" ) ) );
+
+    /*****************************************************
+    *   Series 60 Customer / ETel
+    *   Series 60  ETel API
+    *****************************************************/
+    TInt retval( KErrNone );
+
+    if ( !IsSupported( aColumn ) )
+        {
+        retval = KErrNotSupported;
+        }
+    else
+        {
+        switch ( aColumn )
+            {
+            case EApWapAccessPointID:
+                {
+                iWapUid = aValue;
+                break;
+                }
+            case EApWapIap:
+                {
+                iWapIap = aValue;
+                break;
+                }
+            case EApIapServiceId:
+                {
+                iIapServiceId = aValue;
+                break;
+                }
+            case EApIapChargecard:
+                {
+                iIapChargeCardId = aValue;
+                break;
+                }
+            case EApIspIspType:
+            case EApCdmaApType:
+                {
+                iIspType = (TCommsDbIspType)aValue;
+                break;
+                }
+            case EApIspAuthRetries:
+            case EApGprsIfAuthRetries:
+            case EApCdmaIfAuthRetries:
+            case EApWlanIfAuthRetries:
+                {
+                iIspIfAuthRetries = aValue;
+                break;
+                }
+            case EApIspIfCallbackType:
+                {
+                iCallBackTypeIsServerNum = TCallbackAction( aValue );
+                break;
+                }
+            case EApIspCallBackTimeOut:
+                {
+                iIspCallbackTimeOut = aValue;
+                break;
+                }
+            case EApIspBearerName:
+                {
+                iIspBearerName = 
+                    RMobileCall::TMobileCallDataServiceCaps( aValue );
+                break;
+                }
+            case EApIspBearerSpeed:
+                {
+                iMaxConnSpeed = TApCallSpeed( aValue );
+                break;
+                }
+            case EApIspBearerCE:
+                {
+                //iIspBearerCE = RMobileCall::TMobileCallDataQoSCaps( aValue );
+                iIspBearerCE = RMobileCall::TMobileCallDataQoS( aValue );
+                break;
+                }
+            case EApIspBearerCallTypeIsdn:
+                {
+                /*
+                // DO NOT CHECK VALIDITY HERE AS COMMSDB STORES IT DIFFERENTLY
+                // AFTER READED FROM THE DB, IT WILL BE CHECKED!!!!!
+                // ensure it is in the valid range
+                TUint32 tempint = aValue;
+                tempint = Min( tempint, TUint32(ECallTypeISDNv120) );
+                tempint = Max( tempint, TUint32(ECallTypeAnalogue) );
+                */
+                iBearerCallTypeIsdn = (TApCallType)aValue;
+                break;
+                }
+            case EApIspBearerType:
+                {
+                iIspBearerType = aValue;
+                break;
+                }
+            case EApIspChannelCoding:
+                {
+                iIspChannelCoding = aValue;
+                break;
+                }
+            case EApIspAIUR:
+                {
+                iIspAIUR = aValue;
+                break;
+                }
+            case EApIspRequestedTimeSlots:
+                {
+                iIspRequestedTimeSlots = aValue;
+                break;
+                }
+            case EApIspMaximumTimeSlots:
+                {
+                iIspMaximumTimeSlots = aValue;
+                break;
+                }
+
+            case EApGprsPdpType:
+                {
+                iGprsPdpType = aValue;
+                TRAP_IGNORE( SetIfNetworksL() );
+                break;
+                }
+            case EApGprsReqPrecedence:
+                {
+                iGprsReqPrecedence = aValue;
+                break;
+                }
+            case EApGprsReqDelay:
+                {
+                iGprsReqDelay = aValue;
+                break;
+                }
+            case EApGprsReqReliability:
+                {
+                iGprsReqReliability = aValue;
+                break;
+                }
+            case EApGprsReqPeakThroughput:
+                {
+                iGprsReqPeakThroughput = aValue;
+                break;
+                }
+            case EApGprsReqMeanPeakThroughput:
+                {
+                iGprsReqMeanPeakThroughput = aValue;
+                break;
+                }
+            case EApGprsMinPrecedence:
+                {
+                iGprsMinPrecedence = aValue;
+                break;
+                }
+            case EApGprsMinDelay:
+                {
+                iGprsMinDelay = aValue;
+                break;
+                }
+            case EApGprsMinReliability:
+                {
+                iGprsMinReliability = aValue;
+                break;
+                }
+            case EApGprsMinPeakThroughput:
+                {
+                iGprsMinPeakThroughput = aValue;
+                break;
+                }
+            case EApGprsMinMeanThroughput:
+                {
+                iGprsMinMeanThroughput = aValue;
+                break;
+                }
+            case EApWapWspOption:
+                {
+                iIsConnectionTypeContinuous = aValue;
+                break;
+                }
+            case EApProxyPortNumber:
+                {
+                iApProxyPortNumber = aValue;
+                SetProxyFlag();
+                break;
+                }
+            case EApWapProxyPort:
+                {
+                iWapProxyPort = aValue;
+                break;
+                }
+            case EApNetworkID:
+                { // now it is supported to set it from the outside...
+                iNetworkId = aValue;
+                break;
+                }
+            case EApIapBearerService:
+                {
+                iApIapBearerService = aValue;
+                break;
+                }
+
+    // DEPRECATED !!!
+            case EApWapIsp:
+            case EApWapChargecard:
+            case EApWapIspType:
+                {
+                __ASSERT_DEBUG( EFalse, \
+                                User::Panic( kApSet, KErrNotSupported ) );
+                retval = KErrNotSupported;
+                break;
+                }
+            // CDMA2000
+            case EApCdmaServiceOption:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iServiceOption = aValue;
+                break;
+                }
+            case EApCdmaPdpType:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iPdpType = aValue;
+                TRAP_IGNORE( SetIfNetworksL() );
+                break;
+                }
+            case EApCdmaReqFwdPriority:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqFwdPriority = aValue;
+                break;
+                }
+            case EApCdmaReqRevPriority:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqRevPriority = aValue;
+                break;
+                }
+            case EApCdmaReqFwdBitrate:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqFwdBitrate = aValue;
+                break;
+                }
+            case EApCdmaReqRevBitrate:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqRevBitrate = aValue;
+                break;
+                }
+            case EApCdmaReqFwdLoss:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqFwdLoss = aValue;
+                break;
+                }
+            case EApCdmaReqRevLoss:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqRevLoss = aValue;
+                break;
+                }
+            case EApCdmaReqFwdMaxDelay:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqFwdMaxDelay = aValue;
+                break;
+                }
+            case EApCdmaReqRevMaxDelay:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iReqRevMaxDelay = aValue;
+                break;
+                }
+            case EApCdmaMinFwdBitrate:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMinFwdBitrate = aValue;
+                break;
+                }
+            case EApCdmaMinRevBitrate:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMinRevBitrate = aValue;
+                break;
+                }
+            case EApCdmaAccptFwdLoss:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iAccptFwdLoss = aValue;
+                break;
+                }
+            case EApCdmaAccptRevLoss:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iAccptRevLoss = aValue;
+                break;
+                }
+            case EApCdmaAccptFwdMaxDelay:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iAccptFwdMaxDelay = aValue;
+                break;
+                }
+            case EApCdmaAccptRevMaxDelay:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iAccptRevMaxDelay = aValue;
+                break;
+                }
+            case EApCdmaQosWarningTimeout:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iQosWarningTimeout = aValue;
+                break;
+                }
+            case EApCdmaRlpMode:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iRlpMode = aValue;
+                break;
+                }
+            case EApCdmaMipTimeout:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipTimeout = aValue;
+                break;
+                }
+            case EApCdmaNaiType:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iNaiType = aValue;
+                break;
+                }
+            case EApCdmaSimpleIpAuthAlgorithm:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iSimpleIpAuthAlgorithm = aValue;
+                break;
+                }
+            case EApCdmaSimpleIpPapSsHandle:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iSimpleIpPapSsHandle = aValue;
+                break;
+                }
+            case EApCdmaSimpleIpChapSsHandle:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iSimpleIpChapSsHandle = aValue;
+                break;
+                }
+            case EApCdmaMipTBit:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipTBit = aValue;
+                break;
+                }
+            case EApCdmaMipMnAaaAuthAlgorithm:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnAaaAuthAlgorithm = aValue;
+                break;
+                }
+            case EApCdmaMipMnAaaSpi:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnAaaSpi = aValue;
+                break;
+                }
+            case EApCdmaMipMnAaaSsHandle:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnAaaSsHandle = aValue;
+                break;
+                }
+            case EApCdmaMipMnHaAuthAlgorithm:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnHaAuthAlgorithm = aValue;
+                break;
+                }
+            case EApCdmaMipMnHaSpi:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnHaSpi = aValue;
+                break;
+                }
+            case EApCdmaMipMnHaSsHandle:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMipMnHaSsHandle = aValue;
+                break;
+                }
+            // END CDMA2000
+            // WLAN
+            case EApWlanNetworkMode:
+                {
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iWlanData->iWlanNetworkMode = aValue;
+                break;
+                }
+            case EApWlanSecurityMode:
+                {
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iWlanData->iWlanSecurityMode = aValue;
+                break;
+                }
+            case EApWlanSettingsId:
+                {
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iWlanData->iWlanId = aValue;
+                break;
+                }
+            case EApWlanChannelId:
+                {
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iWlanData->iChannelId = aValue;
+                break;
+                }
+            // END WLAN
+            // LANModem
+            case EApIapBearerID:
+                {
+                iExt->iIapBearerID = aValue;
+                break;
+                }
+            // END LANModem
+            default :
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                retval = KErrInvalidColumn;
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::WriteUint" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::WriteBool
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CApAccessPointItem::WriteBool( const TApMember aColumn,
+                                            const TBool& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::WriteBool" ) ) );
+
+    TInt retval( KErrNone );
+
+    if ( !IsSupported( aColumn ) )
+        {
+        retval = KErrNotSupported;
+        }
+    else
+        {
+        switch ( aColumn )
+            {
+            case EApWapSecurity:
+                {
+                iIsWTLSSecurityOn = aValue;
+                break;
+                }
+            case EApIspDialResolution:
+                {
+                iIspDialResolution = aValue;
+                break;
+                }
+            case EApIspUseLoginScript:
+                {
+                iUseLoginScript = aValue;
+                break;
+                }
+            case EApIspPromptForLogin:
+                {
+                iPromptPassword = aValue;
+                iIspIfPromptForAuth = aValue;
+                break;
+                }
+            case EApIspDisplayPCT:
+                {
+                iDisplayTerminalWindow = EFalse;
+                break;
+                }
+            case EApIspIfPromptForAuth:
+            case EApGprsIfPromptForAuth:
+            case EApCdmaIfPromptForAuth:
+            case EApWlanIfPromptForAuth:
+                {
+                iIspIfPromptForAuth = aValue;
+                iPromptPassword = aValue;
+                break;
+                }
+            case EApIspIfCallbackEnabled:
+                {
+                iUseCallBack = aValue;
+                break;
+                }
+            case EApIspIPAddrFromServer:
+            case EApGprsIpAddrFromServer:
+            case EApCdmaIpAddrFromServer:
+            case EApWlanIpAddrFromServer:
+                {
+                iIspIPAddrFromServer = aValue;
+                break;
+                }
+            case EApIspIPDnsAddrFromServer:
+            case EApGprsIpDnsAddrFromServer:
+            case EApCdmaIpDnsAddrFromServer:
+            case EApWlanIpDnsAddrFromServer:
+                {
+                iGetDNSIPFromServer = aValue;
+                break;
+                }
+            case EApIspEnableIpHeaderComp:
+            case EApGprsHeaderCompression:
+            case EApCdmaHeaderCompression:
+                {
+                iEnablePPPCompression = aValue;
+                break;
+                }
+            case EApIspEnableLCPExtensions:
+            case EApGprsEnableLCPExtensions:
+            case EApCdmaEnableLCPExtensions:
+                {
+                iIspEnableLCPExtensions = aValue;
+                break;
+                }
+            case EApIspDisablePlainTextAuth:
+            case EApGprsDisablePlainTextAuth:
+            case EApCdmaDisablePlainTextAuth:
+                {
+                iIsPasswordAuthenticationSecure = aValue;
+                break;
+                }
+            case EApIspEnableSWCompression:
+            case EApGprsDataCompression:
+            case EApCdmaDataCompression:
+                {
+                iIspEnableSwCompression = aValue;
+                break;
+                }
+    // NOTE! This is deprecated.
+            case EApIspBearerCallTypeIsdn:
+                {
+                iBearerCallTypeIsdn = 
+                    TApCallType( aValue != ECallTypeAnalogue );
+                break;
+                }
+            case EApGprsUseAnonymAccess:
+            case EApCdmaAnonymousAccess:
+                {
+                iGprsUseAnonymAccess = aValue;
+                break;
+                }
+            case EApIsReadOnly:
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                retval = KErrInvalidColumn;
+                break;
+                }
+            case EApProxyUseProxy:
+                {
+                iApProxyUseProxy = aValue;
+                SetProxyFlag();
+                break;
+                }
+            case EApHasProxySettings:
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                retval = KErrNotSupported;
+                break;
+                }
+            case EApIP6DNSAddrFromServer:
+                {
+                if ( iExt->iIsIpv6Supported )
+                    {
+                    iExt->iIpv6GetDNSIPFromServer = aValue;
+                    }
+                else
+                    {
+                    retval = KErrNotSupported;
+                    }
+                break;
+                }
+            // CDMA2000
+            case EApCdmaMip:
+                {
+                __ASSERT_ALWAYS ( iExt->iCdmaData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iCdmaData->iMip = aValue;
+                break;
+                }
+            // END CDMA2000
+            // WLAN
+            case EApWlanScanSSID:
+                {
+                __ASSERT_ALWAYS ( iExt->iWlanData, \
+                    ApCommons::Panic( ESanityCheckFailed ) );
+                iExt->iWlanData->iScanSSID = aValue;
+                break;
+                }
+            // END WLAN
+            default :
+                {
+                __ASSERT_DEBUG( EFalse, ApCommons::Panic( EInvalidColumn ) );
+                retval = KErrInvalidColumn;
+                break;
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::WriteBool" ) ) );
+    return retval;
+    }
+
+
+
+// Query
+// COMMON
+
+// ---------------------------------------------------------
+// CApAccessPointItem::Uid
+// ---------------------------------------------------------
+//
+EXPORT_C TUint32 CApAccessPointItem::WapUid() const
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::WapUid" ) ) );
+
+    return iWapUid;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ConnectionName
+// ---------------------------------------------------------
+//
+EXPORT_C const TDesC& CApAccessPointItem::ConnectionName() const
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::ConnectionName" ) ) );
+
+    return *iWapAccessPointName;
+    }
+
+
+// WAP-spec.
+// ---------------------------------------------------------
+// CApAccessPointItem::WapBearer
+// ---------------------------------------------------------
+//
+EXPORT_C const TDesC& CApAccessPointItem::WapBearer() const
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::WapBearer" ) ) );
+
+    return *iWapBearer;
+    }
+
+
+
+// WAP-spec.
+// ---------------------------------------------------------
+// CApAccessPointItem::BearerTypeL
+// ---------------------------------------------------------
+//
+EXPORT_C TApBearerType CApAccessPointItem::BearerTypeL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::BearerTypeL" ) ) );
+
+    TApBearerType retval( EApBearerTypeAllBearers );
+    // decide which bearer, read bearer spec. data.
+    if ( *iWapBearer == TPtrC(WAP_IP_BEARER) )
+        {
+        if ( ( *iIapServiceType == TPtrC(DIAL_OUT_ISP) ) ||
+             ( *iIapServiceType == TPtrC(DIAL_IN_ISP) ) )
+            {
+            // now check speed
+            if ( iIspBearerType == EBearerTypeCSD )
+                {
+                retval = EApBearerTypeCSD;
+                }
+            else
+                {
+                if ( iIspBearerType == EBearerTypeHSCSD )
+                    {
+                    retval = EApBearerTypeHSCSD;
+                    }
+                else
+                    {
+                    User::Leave( KErrInvalidBearer );
+                    }
+                }
+            }
+        else
+            {
+            if ( ( *iIapServiceType == TPtrC(OUTGOING_WCDMA) ) ||
+                 ( *iIapServiceType == TPtrC(INCOMING_WCDMA) ) )
+                {
+                retval = EApBearerTypeGPRS;
+                }
+            else
+                { // some other bearer, currently only VPN...
+                if ( iExt->iIsVpnAp )
+                    {
+                    // in this case get REAL IAP's bearer type...
+                    retval = iExt->iVPnRealIapBearerType;
+                    }
+                else
+                    {
+                    if ( iExt->iWlanData )
+                        {                        
+                        // check if it is WLAN...
+                        if ( *iIapServiceType == TPtrC(LAN_SERVICE) )
+                            {
+                            if ( IsWlan() )
+                                {
+                                retval = EApBearerTypeWLAN;
+                                }
+                            else
+                                {
+                                if ( *iExt->iLanBearerModemName == 
+                                        KModemBearerLANModem )
+                                    {// IPPass Through
+                                    retval = EApBearerTypeLANModem;
+                                    }
+                                else
+                                    {                                
+                        #ifdef __TEST_LAN_BEARER
+                                    retval = EApBearerTypeLAN;
+                        #else
+                                    User::Leave( KErrInvalidBearer );
+                        #endif // __TEST_LAN_BEARER
+                                    }
+                                }
+                            }
+                        else
+                            { // otherwise, it is not known, invalid...
+                            User::Leave( KErrInvalidBearer );
+                            }
+                        }
+                    else
+                        {
+                        if ( *iExt->iLanBearerModemName == 
+                                KModemBearerLANModem )
+                            {// IPPass Through
+                            retval = EApBearerTypeLANModem;
+                            }
+                        else
+                            {
+                    #ifdef __TEST_LAN_BEARER
+                        retval = EApBearerTypeLAN;
+                    #else // __TEST_LAN_BEARER
+                        User::Leave( KErrInvalidBearer );
+                    #endif // __TEST_LAN_BEARER
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    else
+        {
+        User::Leave( KErrInvalidBearer );
+        }
+    if ( retval == EApBearerTypeAllBearers )
+        {
+        User::Leave( KErrInvalidBearer );
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::BearerTypeL" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetBearerTypeL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::SetBearerTypeL( TApBearerType aBearer )
+    {    
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetBearerTypeL" ) ) );
+
+    HBufC* tmpbuf;
+    switch ( aBearer )
+        {
+        case EApBearerTypeGPRS: // GPRS
+            {
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(OUTGOING_WCDMA) );
+            WriteTextL( EApIspIfParams, KDefGprsIfParams );      // required !
+            if( iExt->iWlanData )
+                {
+                iExt->iWlanData->iIsWlan = EFalse;
+                }
+            WriteTextL( EApLanBearerName, KModemBearerGPRS );
+            break;
+            }
+        case EApBearerTypeCSD: // CSD
+            {
+            if ( !iExt->iIsAppCsdSupport )
+                {
+                User::Leave( KErrNotSupported );
+                }
+
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(DIAL_OUT_ISP) );            
+            WriteTextL( EApIspIfParams, KEmpty );             // required !
+            iIspBearerType = EBearerTypeCSD;            
+            if( iExt->iWlanData )
+                {
+                iExt->iWlanData->iIsWlan = EFalse;
+                }            
+            WriteTextL( EApLanBearerName, KModemBearerCSD );
+            LimitIp6DNSL();            
+            break;
+            }
+        case EApBearerTypeHSCSD: // HSCSD
+            {
+            if ( !iExt->iIsAppHscsdSupport || !iExt->iIsAppCsdSupport )
+                {
+                User::Leave( KErrNotSupported );
+                }
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(DIAL_OUT_ISP) );
+            WriteTextL( EApIspIfParams, KEmpty );             // required !
+            iIspBearerType = EBearerTypeHSCSD;
+            if( iExt->iWlanData )
+                {
+                iExt->iWlanData->iIsWlan = EFalse;
+                }            
+            WriteTextL( EApLanBearerName, KModemBearerCSD );
+            LimitIp6DNSL();
+            break;
+            }
+        case EApBearerTypeWLAN: // WLAN
+            { 
+            if( !iExt->iWlanData )
+                {
+                User::Leave( KErrNotSupported );
+                }
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(LAN_SERVICE) );
+            WriteTextL( EApIspIfParams, KEmpty );             // required !
+            WriteTextL( EApLanBearerName, KModemBearerWLAN );
+            iExt->iWlanData->iIsWlan = ETrue;
+            break;
+            }
+#ifdef __TEST_LAN_BEARER
+        case EApBearerTypeLAN: // LAN
+            { 
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(LAN_SERVICE) );
+            WriteTextL( EApIspIfParams, KEmpty );             // required !
+            if( iExt->iWlanData )
+                {
+                iExt->iWlanData->iIsWlan = EFalse;
+                }            
+            WriteTextL( EApLanBearerName, KModemBearerLAN );
+            break;
+            }
+#endif // __TEST_LAN_BEARER
+        case EApBearerTypeLANModem: // LAN modem
+            { 
+            tmpbuf = TPtrC(WAP_IP_BEARER).AllocL();
+            delete iWapBearer;
+            iWapBearer = tmpbuf;
+            WriteTextL( EApIapServiceType, TPtrC(LAN_SERVICE) );
+            WriteTextL( EApIspIfParams, KEmpty );             // required !
+            if( iExt->iWlanData )
+                {
+                iExt->iWlanData->iIsWlan = EFalse;
+                }            
+            WriteTextL( EApLanBearerName, KModemBearerLANModem );
+            break;
+            }            
+        default:
+            {
+            User::Leave( KErrInvalidBearer );
+            break;
+            }
+        }
+    LimitSpeedL();
+
+    SetIfNetworksL();
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetBearerTypeL" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetNamesL
+// ---------------------------------------------------------
+//
+EXPORT_C void CApAccessPointItem::SetNamesL( const TDesC16& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetNamesL" ) ) );
+
+    WriteTextL( EApWapAccessPointName, aValue );
+    WriteTextL( EApIapName, aValue );
+    WriteTextL( EApIspName, aValue );
+    WriteTextL( EApNetworkName, aValue );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetNamesL" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SanityCheckOk
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CApAccessPointItem::SanityCheckOk()
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::SanityCheckOk" ) ) );
+
+    TBool retval( ETrue );
+    // as iWApIspType had been deprecated, this method also...
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::HasSameIspAndBearer
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CApAccessPointItem::HasSameIspAndBearerL(
+                                 CApAccessPointItem& aItem )
+    {
+    CLOG( ( EApItem, 0, 
+            _L( "-> CApAccessPointItem::HasSameIspAndBearerL" ) ) );
+
+    TBool retval( EFalse );
+    TApBearerType bearer = BearerTypeL();
+    if ( bearer == aItem.BearerTypeL() )
+        {
+        switch ( bearer )
+            {
+            case EApBearerTypeCSD:
+            case EApBearerTypeHSCSD:
+                {
+                // compare phone number, username, pwd
+                // first compare phone numbers
+                if ( IsSamePhoneNumberL( aItem ) )
+                    {
+                    TBool pwd1;
+                    ReadBool( EApIspPromptForLogin, pwd1 );
+                    TBool pwd2;
+                    aItem.ReadBool( EApIspPromptForLogin, pwd2 );
+                    if ( ( !pwd1 ) && ( !pwd2 ) )
+                        {
+                        HBufC* tmpuser = HBufC::NewLC( 
+                                aItem.ReadTextLengthL( EApIspLoginName ) );
+                        HBufC* tmppwd = HBufC::NewLC( 
+                                aItem.ReadTextLengthL( EApIspLoginPass ) );
+                        TPtr16 tmpptruser( tmpuser->Des() );
+                        TPtr16 tmpptrpwd( tmppwd->Des() );
+                        aItem.ReadTextL( EApIspLoginName, tmpptruser );
+                        aItem.ReadTextL( EApIspLoginPass, tmpptrpwd );
+                        if ( ( iUserName->Compare( *tmpuser ) == 0 )
+                            && (iPassword->Compare( *tmppwd ) == 0 ) )
+                            {
+                            retval = ETrue;
+                            }
+                        // tmpuser, tmppw
+                        CleanupStack::PopAndDestroy( 2, tmpuser ); 
+                        }
+                    }
+                break;
+                }
+            case EApBearerTypeGPRS:
+                {
+                // compare APN, (username/pwd?)
+                if ( aItem.ReadConstLongTextL( EApGprsAccessPointName )
+                    ->Compare( *iGprsAccessPointName ) == 0 )
+                    {
+                    retval = ETrue;
+                    }
+                break;
+                }
+            case EApBearerTypeCDMA:
+                {
+                retval = ETrue;
+                break;
+                }
+            case EApBearerTypeWLAN:
+                {
+                if( iExt->iWlanData )
+                    {                    
+                    retval = ETrue;
+                    }
+                else
+                    {
+                    User::Leave( KErrNotSupported );
+                    }
+                break;
+                }
+#ifdef __TEST_LAN_BEARER
+            case EApBearerTypeLAN:
+                {
+                retval = ETrue;
+                break;
+                }
+#endif // __TEST_LAN_BEARER
+            case EApBearerTypeLANModem:
+                {
+                retval = ETrue;
+                break;
+                }
+            default:
+                {
+                User::Leave( KErrInvalidBearer );
+                break;
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, 
+            _L( "<- CApAccessPointItem::HasSameIspAndBearerL" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::IsReadOnly
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CApAccessPointItem::IsReadOnly() const
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::IsReadOnly" ) ) );
+
+    return iIsReadOnly;
+    }
+
+
+
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+
+// =============== OTHER NON - EXPORTED FUNCTIONS ============
+// ---------------------------------------------------------
+// CApAccessPointItem::IsVpnAp
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::IsVpnAp() const
+    {
+    return iExt->iIsVpnAp;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetVpnAp
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SetVpnAp( TBool aIsVpn )
+    {
+    iExt->iIsVpnAp = aIsVpn;
+    }
+
+// ---------------------------------------------------------
+// CApAccessPointItem::Specified
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::Specified( TApMember aMember )
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::Specified" ) ) );
+
+    return iSpecified->At( aMember );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::Specify
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::Specify( TApMember aMember, TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::Specify" ) ) );
+
+    iSpecified->At( aMember ) = aOn;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyAll
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyAll( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyAll" ) ) );
+
+    for( TInt i=0; i< KApMembers; i++ )
+        {
+        iSpecified->At( i ) = aOn;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyAll" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyWap
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyWap( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyWap" ) ) );
+
+    iSpecified->At( EApWapAccessPointID ) = aOn;
+    iSpecified->At( EApWapAccessPointName ) = aOn;
+    iSpecified->At( EApWapCurrentBearer ) = aOn;
+    iSpecified->At( EApWapStartPage ) = aOn;
+    iSpecified->At( EApWapGatewayAddress ) = aOn;
+    iSpecified->At( EApWapWspOption ) = aOn;
+    iSpecified->At( EApWapSecurity ) = aOn;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyWap" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyIpBearer
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyIpBearer( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyIpBearer" ) ) );
+
+//* DEPRECATED
+    iSpecified->At( EApWapIsp ) = EFalse;
+//* DEPRECATED
+    iSpecified->At( EApWapChargecard ) = EFalse;
+    iSpecified->At( EApWapIap ) = aOn;
+//* DEPRECATED
+    iSpecified->At( EApWapIspType ) = EFalse;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyIpBearer" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyIAP
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyIAP( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyIAP" ) ) );
+
+    iSpecified->At( EApWapIap ) = aOn;
+    iSpecified->At( EApIapName ) = aOn;
+    iSpecified->At( EApIapServiceType ) = aOn;
+    iSpecified->At( EApIapServiceId ) = aOn;
+    iSpecified->At( EApIapChargecard ) = aOn;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyIAP" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyISP
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyISP( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyISP" ) ) );
+
+    iSpecified->At( EApIspName ) = aOn;
+    iSpecified->At( EApIspDescription ) = aOn;
+    iSpecified->At( EApIspIspType ) = aOn;
+
+    iSpecified->At( EApIspDefaultTelNumber ) = aOn;
+    iSpecified->At( EApIspDialResolution ) = aOn;
+    iSpecified->At( EApIspUseLoginScript ) = aOn;
+    iSpecified->At( EApIspLoginScript ) = aOn;
+    iSpecified->At( EApIspPromptForLogin ) = aOn;
+    iSpecified->At( EApIspLoginName ) = aOn;
+    iSpecified->At( EApIspLoginPass ) = aOn;
+    iSpecified->At( EApIspDisplayPCT ) = aOn;
+    iSpecified->At( EApIspIfName ) = aOn;
+    iSpecified->At( EApIspIfParams ) = aOn;
+    iSpecified->At( EApIspIfNetworks ) = aOn;
+    iSpecified->At( EApIspIfPromptForAuth ) = aOn;
+    iSpecified->At( EApIspIfAuthName ) = aOn;
+    iSpecified->At( EApIspIfAuthPass ) = aOn;
+    iSpecified->At( EApIspAuthRetries ) = aOn;
+    iSpecified->At( EApIspIfCallbackEnabled ) = aOn;
+    iSpecified->At( EApIspIfCallbackType ) = aOn;
+    iSpecified->At( EApIspIfCallbackInfo ) = aOn;
+    iSpecified->At( EApIspCallBackTimeOut ) = aOn;
+    iSpecified->At( EApIspIPAddrFromServer ) = aOn;
+    iSpecified->At( EApIspIPAddr ) = aOn;
+    iSpecified->At( EApIspIPNetMask ) = aOn;
+    iSpecified->At( EApIspIPGateway ) = aOn;
+    iSpecified->At( EApIspIPDnsAddrFromServer ) = aOn;
+    iSpecified->At( EApIspIPNameServer1 ) = aOn;
+    iSpecified->At( EApIspIPNameServer2 ) = aOn;
+    iSpecified->At( EApIspEnableIpHeaderComp ) = aOn;
+    iSpecified->At( EApIspEnableLCPExtensions ) = aOn;
+    iSpecified->At( EApIspDisablePlainTextAuth ) = aOn;
+    iSpecified->At( EApIspEnableSWCompression ) = aOn;
+    iSpecified->At( EApIspBearerName ) = aOn;
+    iSpecified->At( EApIspBearerSpeed ) = aOn;
+    iSpecified->At( EApIspBearerCallTypeIsdn ) = aOn;
+    iSpecified->At( EApIspBearerCE ) = aOn;
+    iSpecified->At( EApIspInitString ) = aOn;
+    iSpecified->At( EApIspBearerType ) = aOn;
+    iSpecified->At( EApIspChannelCoding ) = aOn;
+    iSpecified->At( EApIspAIUR ) = aOn;
+    iSpecified->At( EApIspRequestedTimeSlots ) = aOn;
+    iSpecified->At( EApIspMaximumTimeSlots ) = aOn;
+
+    if ( iExt->iIsIpv6Supported )
+        {
+        iSpecified->At( EApIP6DNSAddrFromServer ) = aOn;
+        iSpecified->At( EApIP6NameServer1 ) = aOn;
+        iSpecified->At( EApIP6NameServer2 ) = aOn;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyISP" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyGPRS
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyGPRS( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyGPRS" ) ) );
+
+    iSpecified->At( EApGprsAccessPointName ) = aOn;
+    iSpecified->At( EApGprsPdpType ) = aOn;
+    iSpecified->At( EApGprsPdpAddress ) = aOn;
+    iSpecified->At( EApGprsReqPrecedence ) = aOn;
+    iSpecified->At( EApGprsReqDelay ) = aOn;
+    iSpecified->At( EApGprsReqReliability ) = aOn;
+    iSpecified->At( EApGprsReqPeakThroughput ) = aOn;
+    iSpecified->At( EApGprsReqMeanPeakThroughput ) = aOn;
+    iSpecified->At( EApGprsMinPrecedence ) = aOn;
+    iSpecified->At( EApGprsMinDelay ) = aOn;
+    iSpecified->At( EApGprsMinReliability ) = aOn;
+    iSpecified->At( EApGprsMinPeakThroughput ) = aOn;
+    iSpecified->At( EApGprsMinMeanThroughput ) = aOn;
+    iSpecified->At( EApGprsUseAnonymAccess ) = aOn;
+
+    // followings are mapped to ISP... fields
+    iSpecified->At( EApGprsDataCompression ) = aOn;
+    iSpecified->At( EApGprsHeaderCompression ) = aOn;
+    iSpecified->At( EApGprsIfName ) = aOn;
+    iSpecified->At( EApGprsIfParams ) = aOn;
+    iSpecified->At( EApGprsIfNetworks ) = aOn;
+    iSpecified->At( EApGprsIfPromptForAuth ) = aOn;
+    iSpecified->At( EApGprsIfAuthName ) = aOn;
+    iSpecified->At( EApGprsIfAuthPassword ) = aOn;
+    iSpecified->At( EApGprsIfAuthRetries ) = aOn;
+    iSpecified->At( EApGprsIpNetMask ) = aOn;
+    iSpecified->At( EApGprsIpGateway ) = aOn;
+    iSpecified->At( EApGprsIpAddrFromServer ) = aOn;
+    iSpecified->At( EApGprsIpAddr ) = aOn;
+    iSpecified->At( EApGprsIpDnsAddrFromServer ) = aOn;
+    iSpecified->At( EApGprsIPNameServer1 ) = aOn;
+    iSpecified->At( EApGprsIPNameServer2 ) = aOn;
+    iSpecified->At( EApGprsEnableLCPExtensions ) = aOn;
+    iSpecified->At( EApGprsDisablePlainTextAuth ) = aOn;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyGPRS" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyCDMA
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyCDMA( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyCDMA" ) ) );
+
+    __ASSERT_DEBUG( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+
+    iSpecified->At( EApCdmaIwfName ) = aOn;
+    iSpecified->At( EApCdmaServiceOption ) = aOn;
+    iSpecified->At( EApCdmaPdpType ) = aOn;
+    iSpecified->At( EApCdmaPdpAddress ) = aOn;
+    iSpecified->At( EApCdmaReqFwdPriority ) = aOn;
+    iSpecified->At( EApCdmaReqRevPriority ) = aOn;
+    iSpecified->At( EApCdmaReqFwdBitrate ) = aOn;
+    iSpecified->At( EApCdmaReqRevBitrate ) = aOn;
+    iSpecified->At( EApCdmaReqFwdLoss ) = aOn;
+    iSpecified->At( EApCdmaReqRevLoss ) = aOn;
+    iSpecified->At( EApCdmaReqFwdMaxDelay ) = aOn;
+    iSpecified->At( EApCdmaReqRevMaxDelay ) = aOn;
+    iSpecified->At( EApCdmaMinFwdBitrate ) = aOn;
+    iSpecified->At( EApCdmaMinRevBitrate ) = aOn;
+    iSpecified->At( EApCdmaAccptFwdLoss ) = aOn;
+    iSpecified->At( EApCdmaAccptRevLoss ) = aOn;
+    iSpecified->At( EApCdmaAccptFwdMaxDelay ) = aOn;
+    iSpecified->At( EApCdmaAccptRevMaxDelay ) = aOn;
+    // CDMA2000, mapped to ISP... fields
+    iSpecified->At( EApCdmaDataCompression ) = aOn;
+    iSpecified->At( EApCdmaHeaderCompression ) = aOn;
+    iSpecified->At( EApCdmaAnonymousAccess ) = aOn;
+    iSpecified->At( EApCdmaIfName ) = aOn;
+    iSpecified->At( EApCdmaIfParams ) = aOn;
+    iSpecified->At( EApCdmaIfNetworks ) = aOn;
+    iSpecified->At( EApCdmaIfPromptForAuth ) = aOn;
+    iSpecified->At( EApCdmaIfAuthName ) = aOn;
+    iSpecified->At( EApCdmaIfAuthPassword ) = aOn;
+    iSpecified->At( EApCdmaIfAuthRetries ) = aOn;
+    iSpecified->At( EApCdmaIpNetMask ) = aOn;
+    iSpecified->At( EApCdmaIpGateway ) = aOn;
+    iSpecified->At( EApCdmaIpAddrFromServer ) = aOn;
+    iSpecified->At( EApCdmaIpAddr ) = aOn;
+    iSpecified->At( EApCdmaIpDnsAddrFromServer ) = aOn;
+    iSpecified->At( EApCdmaIPNameServer1 ) = aOn;
+    iSpecified->At( EApCdmaIPNameServer2 ) = aOn;
+    iSpecified->At( EApCdmaEnableLCPExtensions ) = aOn;
+    iSpecified->At( EApCdmaDisablePlainTextAuth ) = aOn;
+    // CDMA2000
+    iSpecified->At( EApCdmaApType ) = aOn;
+    iSpecified->At( EApCdmaQosWarningTimeout ) = aOn;
+    iSpecified->At( EApCdmaRlpMode ) = aOn;
+    // CDMA2000 deprecated Mobile IP fields
+    iSpecified->At( EApCdmaMip ) = aOn;
+    iSpecified->At( EApCdmaHomeAgentAddress ) = aOn;
+    iSpecified->At( EApCdmaMipTimeout ) = aOn;
+    // CDMA2000 specific CDMA parameters provisioned through OTA
+    iSpecified->At( EApCdmaNaiType ) = aOn;
+    iSpecified->At( EApCdmaSimpleIpAuthAlgorithm ) = aOn;
+    iSpecified->At( EApCdmaSimpleIpPapSsHandle ) = aOn;
+    iSpecified->At( EApCdmaSimpleIpChapSsHandle ) = aOn;
+    iSpecified->At( EApCdmaMipTBit ) = aOn;
+    iSpecified->At( EApCdmaMipHomeAddress ) = aOn;
+    iSpecified->At( EApCdmaMipPrimaryHomeAgent ) = aOn;
+    iSpecified->At( EApCdmaMipSecondaryHomeAgent ) = aOn;
+    iSpecified->At( EApCdmaMipMnAaaAuthAlgorithm ) = aOn;
+    iSpecified->At( EApCdmaMipMnAaaSpi ) = aOn;
+    iSpecified->At( EApCdmaMipMnAaaSsHandle ) = aOn;
+    iSpecified->At( EApCdmaMipMnHaAuthAlgorithm ) = aOn;
+    iSpecified->At( EApCdmaMipMnHaSpi ) = aOn;
+    iSpecified->At( EApCdmaMipMnHaSsHandle ) = aOn;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyCDMA" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SpecifyWLAN
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SpecifyWLAN( TBool aOn )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SpecifyWLAN" ) ) );
+
+    __ASSERT_DEBUG( iExt->iWlanData, ApCommons::Panic( ESanityCheckFailed ) );
+
+    // WLAN, mapped to ISP... fields
+    iSpecified->At( EApWlanIfNetworks ) = aOn;
+    iSpecified->At( EApWlanIfPromptForAuth ) = aOn;
+    iSpecified->At( EApWlanIfAuthName ) = aOn;
+    iSpecified->At( EApWlanIfAuthPassword ) = aOn;
+    iSpecified->At( EApWlanIfAuthRetries ) = aOn;
+    iSpecified->At( EApWlanIpNetMask ) = aOn;
+    iSpecified->At( EApWlanIpGateway ) = aOn;
+    iSpecified->At( EApWlanIpAddrFromServer ) = aOn;
+    iSpecified->At( EApWlanIpAddr ) = aOn;
+    iSpecified->At( EApWlanIpDnsAddrFromServer ) = aOn;
+    iSpecified->At( EApWlanIPNameServer1 ) = aOn;
+    iSpecified->At( EApWlanIPNameServer2 ) = aOn;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SpecifyWLAN" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetDnsIpFromServer
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SetDnsIpFromServer()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetDnsIpFromServer" ) ) );
+
+    if ( ( iPrimaryDNS->Compare( KDynIpAddress ) == 0 ) &&
+         ( iSecondaryDNS->Compare( KDynIpAddress ) == 0 ) )
+        {
+        iGetDNSIPFromServer = ETrue;
+        }
+    else
+        {
+        iGetDNSIPFromServer = EFalse;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetDnsIpFromServer" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetIpFromServer
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SetIpFromServer()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetIpFromServer" ) ) );
+
+    if ( iIspIPAddr->Compare( KDynIpAddress ) == 0 )
+        {
+        iIspIPAddrFromServer = ETrue;
+        }
+    else
+        {
+        iIspIPAddrFromServer = EFalse;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetIpFromServer" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetDns6IpFromServer
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SetDns6IpFromServer()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetDns6IpFromServer" ) ) );
+
+    if ( iExt->iIsIpv6Supported )
+        {
+        if ( ( iExt->iIpv6PrimaryDNS->Compare( KDynIpv6Address ) == 0 ) &&
+             ( iExt->iIpv6SecondaryDNS->Compare( KDynIpv6Address ) == 0 ) )
+            {
+            
+            TApBearerType bt(EApBearerTypeGPRS);
+            TInt err(KErrNone);
+            TRAP( err, bt = BearerTypeL() );
+            if ( err == KErrNone )
+                {
+                switch (bt) 
+                    {
+                    case EApBearerTypeCSD:
+                    case EApBearerTypeHSCSD:
+                        { // consider it user defined
+                        iExt->iIpv6GetDNSIPFromServer = EFalse; 
+                        break;
+                        }
+                    default:
+                        {
+                        iExt->iIpv6GetDNSIPFromServer = ETrue;
+                        break;
+                        }
+                    }
+                }
+            }
+        else
+            {
+            iExt->iIpv6GetDNSIPFromServer = EFalse;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetDns6IpFromServer" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReAllocL
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::ReAllocL(HBufC8*& aDes, const TDesC8& aValue)
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReAllocL8" ) ) );
+
+    // now remove 'invalid' chars (TABs) as they cause problems
+    // in other places, like listboxes...
+    HBufC8* tmp = RemoveInvalidCharsLC( aValue );
+    delete aDes;
+    aDes = tmp;
+    CleanupStack::Pop( tmp );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReAllocL8" ) ) );
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::ReAllocL
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::ReAllocL(HBufC*& aDes, const TDesC16& aValue)
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::ReAllocL" ) ) );
+
+    // now remove 'invalid' chars (TABs) as they cause problems
+    // in other places, like listboxes...
+    HBufC* tmp = RemoveInvalidCharsLC( aValue );
+    delete aDes;
+    aDes = tmp;
+    CleanupStack::Pop( tmp );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::ReAllocL" ) ) );
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::DoCompareApL
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::DoCompareApL( const CApAccessPointItem& aItem )const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::DoCompareApL" ) ) );
+
+    TBool retval( EFalse );
+    // sorry for those CONST_CASTS, but could not do it otherwise
+    // without API breask....
+    CApAccessPointItem* thisitem = CONST_CAST( CApAccessPointItem*, this );
+    CApAccessPointItem* otheritem = CONST_CAST( CApAccessPointItem*, &aItem );
+
+    TApBearerType thisbearer = thisitem->BearerTypeL();
+    if ( thisbearer == otheritem->BearerTypeL() )
+        { // if diff. bearers, compareing might give false results
+        // compare WAP:
+            // expect IAP ID
+        if ( CompareWap( aItem ) )
+            {
+            switch ( thisbearer )
+                {
+                case EApBearerTypeCSD:
+                case EApBearerTypeHSCSD:
+                    {
+                    // compare IAP
+                    if ( CompareIap( aItem ) )
+                        {
+                        // compare ISP
+                        if ( CompareIsp( aItem ) )
+                            {
+                            if ( CompareProxy( aItem ) )
+                                {
+                                retval = ETrue;
+                                }
+                            }
+                        }
+                    break;
+                    }
+                case EApBearerTypeGPRS:
+                    {
+                    // compare IAP
+                    if ( CompareIap( aItem ) )
+                        {
+                        // comapre GPRS
+                        if ( CompareGprs( aItem ) )
+                            {
+                            if ( CompareProxy( aItem ) )
+                                {
+                                retval = ETrue;
+                                }
+                            }
+                        }
+                    break;
+                    }
+                case EApBearerTypeCDMA:
+                    {
+                    // compare IAP
+                    if ( CompareIap( aItem ) )
+                        {
+                        // comapre CDMA
+                        if ( CompareCdma( aItem ) )
+                            {
+                            if ( CompareProxy( aItem ) )
+                                {
+                                retval = ETrue;
+                                }
+                            }
+                        }
+                    break;
+                    }
+                case EApBearerTypeWLAN:
+                    { 
+                    if ( iExt->iWlanData )
+                        {
+                        // Compare Iap
+                        if ( CompareIap( aItem ) )
+                            {
+                            // Check compareing for WLAN and LAN!!!
+                            // Compare WLAN
+                            if ( CompareWlan( aItem ) )
+                                {
+                                if ( CompareProxy( aItem ) )
+                                    {
+                                    retval = ETrue;
+                                    }
+                                }
+                            }
+                        }
+                    else
+                        {
+                        User::Leave( KErrNotSupported );
+                        }
+                    break;
+                    }
+                default:
+                    {
+                    // KErrInvalidBearer, but can not Leave here,
+                    // so just return False
+                    // retval is already False, nothing to do
+                    break;
+                    }
+                }
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::DoCompareApL" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareWap
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareWap( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareWap" ) ) );
+
+    TBool retval( EFalse );
+// WAP AP Table
+/*
+WAP_CURRENT_BEARER
+WAP_START_PAGE
+*/
+
+// WAP IP Bearer Table
+/*
+    -- WAP_ACCESS_POINT_ID
+WAP_GATEWAY_ADDRESS
+    -- WAP_IAP
+    -- WAP_ISP
+    -- WAP_CHARGECARD
+WAP_ISP_TYPE
+WAP_WSP_OPTION
+WAP_SECURITY
+*/
+
+    if ( BOOL_COMPARE( iIsWTLSSecurityOn, aItem.iIsWTLSSecurityOn )
+       && ( iIsConnectionTypeContinuous == aItem.iIsConnectionTypeContinuous )
+       )
+        {
+        if (
+           ( iWapAccessPointName->Compare( *aItem.iWapAccessPointName ) == 0 )
+           && ( iWapBearer->Compare( *aItem.iWapBearer ) == 0 )
+           && ( iStartingPage->Compare( *aItem.iStartingPage ) == 0 )
+           && ( iWapGatewayAddress->Compare( *aItem.iWapGatewayAddress ) == 0 )
+           && ( iWapProxyLoginName->Compare(
+                                        *aItem.iWapProxyLoginName ) == 0 )
+           && ( iWapProxyLoginPass->Compare(
+                                        *aItem.iWapProxyLoginPass ) == 0 )
+            )
+            {
+            retval = ETrue;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareWap" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareIap
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareIap( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareIap" ) ) );
+
+    TBool retval( EFalse );
+// WAP IAP Table
+/*
+COMMDB_NAME
+-- IAP_SERVICE                                      _S("IAPService")
+IAP_SERVICE_TYPE                                _S("IAPServiceType")
+-- IAP_CHARGECARD                                   _S("Chargecard")
+*/
+    if (
+       ( iIapName->Compare( *aItem.iIapName ) == 0 )
+        && ( iIapServiceType->Compare( *aItem.iIapServiceType ) == 0 )
+        && ( iNetworkName->Compare( *aItem.iNetworkName ) == 0 )
+        && ( iNetworkId == aItem.iNetworkId )
+        )
+        {
+        retval = ETrue;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareIap" ) ) );
+    return retval;
+    }
+
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareIsp
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareIsp( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareIsp" ) ) );
+
+    TBool retval( EFalse );
+    if (
+        BOOL_COMPARE( iIspDialResolution , aItem.iIspDialResolution )
+        && BOOL_COMPARE( iUseLoginScript, aItem.iUseLoginScript )
+        && BOOL_COMPARE( iPromptPassword, aItem.iPromptPassword )
+        && BOOL_COMPARE( iDisplayTerminalWindow, aItem.iDisplayTerminalWindow )
+        && BOOL_COMPARE( iIspIfPromptForAuth, aItem.iIspIfPromptForAuth )
+        && iIspIfAuthRetries == aItem.iIspIfAuthRetries
+        && BOOL_COMPARE( iUseCallBack, aItem.iUseCallBack )
+        && iCallBackTypeIsServerNum == aItem.iCallBackTypeIsServerNum
+        && iIspCallbackTimeOut == aItem.iIspCallbackTimeOut
+        && BOOL_COMPARE( iIspIPAddrFromServer, aItem.iIspIPAddrFromServer )
+        && BOOL_COMPARE( iGetDNSIPFromServer, aItem.iGetDNSIPFromServer )
+        && BOOL_COMPARE( iEnablePPPCompression, aItem.iEnablePPPCompression )
+        && BOOL_COMPARE( iIspEnableLCPExtensions,
+                                aItem.iIspEnableLCPExtensions )
+        && BOOL_COMPARE( iIsPasswordAuthenticationSecure,
+                                aItem.iIsPasswordAuthenticationSecure )
+        && BOOL_COMPARE( iIspEnableSwCompression, 
+                                aItem.iIspEnableSwCompression )
+        && iIspBearerName == aItem.iIspBearerName
+        && iMaxConnSpeed == aItem.iMaxConnSpeed
+        && iIspBearerCE == aItem.iIspBearerCE
+        && iApIapBearerService == aItem.iApIapBearerService
+        && iIspBearerType == aItem.iIspBearerType
+        && iBearerCallTypeIsdn == aItem.iBearerCallTypeIsdn
+        && iIspChannelCoding == aItem.iIspChannelCoding
+        && iIspAIUR == aItem.iIspAIUR
+        && iIspRequestedTimeSlots == aItem.iIspRequestedTimeSlots
+        && iIspMaximumTimeSlots == aItem.iIspMaximumTimeSlots
+        && ( 
+            ( iExt->iIsIpv6Supported 
+            && ( BOOL_COMPARE( iExt->iIpv6GetDNSIPFromServer,
+                                 aItem.iExt->iIpv6GetDNSIPFromServer ) ) )
+            || !iExt->iIsIpv6Supported )
+        )
+        {
+        if (
+            ( iIspName->Compare( *aItem.iIspName ) == 0 )
+            && ( iIspDescription->Compare( *aItem.iIspDescription ) == 0 )
+            &&
+            ( iIspDefaultTelNumber->Compare( 
+                        *aItem.iIspDefaultTelNumber ) == 0 )
+            && ( iLoginScript->Compare( *aItem.iLoginScript ) == 0 )
+            && ( iUserName->Compare( *aItem.iUserName ) == 0 )
+            && ( iPassword->Compare( *aItem.iPassword ) == 0 )
+            && ( iIspIfName->Compare( *aItem.iIspIfName ) == 0 )
+            && ( iIspIfParams->Compare( *aItem.iIspIfParams ) == 0 )
+            && ( iIspIfNetworks->Compare( *aItem.iIspIfNetworks ) == 0 )
+            && ( iIspIfAuthName->Compare( *aItem.iIspIfAuthName ) == 0 )
+            && ( iIspIfAuthPass->Compare( *aItem.iIspIfAuthPass ) == 0 )
+            &&
+            ( iIspIfCallbackInfo->Compare( *aItem.iIspIfCallbackInfo ) == 0 )
+            && ( iIspIPAddr->Compare( *aItem.iIspIPAddr ) == 0 )
+            && ( iIspIPNetMask->Compare( *aItem.iIspIPNetMask ) == 0 )
+            && ( iIspGateway->Compare( *aItem.iIspGateway ) == 0 )
+            && ( iPrimaryDNS->Compare( *aItem.iPrimaryDNS ) == 0 )
+            && ( iSecondaryDNS->Compare( *aItem.iSecondaryDNS ) == 0 )
+            && ( iIspInitString->Compare( *aItem.iIspInitString ) == 0 )
+            && (
+               ( iExt->iIsIpv6Supported && 
+                    ( 
+                        ( iExt->iIpv6PrimaryDNS->Compare( 
+                                *aItem.iExt->iIpv6PrimaryDNS ) == 0 )
+                        && 
+                        ( iExt->iIpv6SecondaryDNS->Compare( 
+                                *aItem.iExt->iIpv6SecondaryDNS ) == 0 )
+                    )
+                || !iExt->iIsIpv6Supported )
+                )
+            )
+            {
+            retval = ETrue;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareIsp" ) ) );
+    return retval;
+    }
+
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareGprs
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareGprs( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareGprs" ) ) );
+
+    TBool retval( EFalse );
+
+    if (
+        iGprsPdpType == aItem.iGprsPdpType
+//
+        && BOOL_COMPARE( iIspIfPromptForAuth, aItem.iIspIfPromptForAuth )
+        && iIspIfAuthRetries == aItem.iIspIfAuthRetries
+        && BOOL_COMPARE( iIspIPAddrFromServer, aItem.iIspIPAddrFromServer )
+        && BOOL_COMPARE( iGetDNSIPFromServer, aItem.iGetDNSIPFromServer )
+        && BOOL_COMPARE( iEnablePPPCompression, aItem.iEnablePPPCompression )
+        && BOOL_COMPARE( iIspEnableLCPExtensions, 
+                                aItem.iIspEnableLCPExtensions )
+        && BOOL_COMPARE( iIsPasswordAuthenticationSecure,
+                                aItem.iIsPasswordAuthenticationSecure )
+        && BOOL_COMPARE( iIspEnableSwCompression, 
+                                aItem.iIspEnableSwCompression )
+//
+        && iGprsReqPrecedence == aItem.iGprsReqPrecedence
+        && iGprsReqDelay == aItem.iGprsReqDelay
+        && iGprsReqReliability == aItem.iGprsReqReliability
+        && iGprsReqPeakThroughput == aItem.iGprsReqPeakThroughput
+        && iGprsReqMeanPeakThroughput == aItem.iGprsReqMeanPeakThroughput
+        && iGprsMinPrecedence == aItem.iGprsMinPrecedence
+        && iGprsMinDelay == aItem.iGprsMinDelay
+        && iGprsMinReliability == aItem.iGprsMinReliability
+        && iGprsMinPeakThroughput == aItem.iGprsMinPeakThroughput
+        && iGprsMinMeanThroughput == aItem.iGprsMinMeanThroughput
+        && BOOL_COMPARE( iGprsUseAnonymAccess, aItem.iGprsUseAnonymAccess )
+        && ( 
+            ( iExt->iIsIpv6Supported 
+            && (BOOL_COMPARE( iExt->iIpv6GetDNSIPFromServer,
+                                 aItem.iExt->iIpv6GetDNSIPFromServer ) ) )
+            || ( !iExt->iIsIpv6Supported ) )
+        )
+        {
+        if (
+            ( iGprsAccessPointName->Compare( 
+                        *aItem.iGprsAccessPointName ) == 0 )
+//
+            && ( iIspIfName->Compare( *aItem.iIspIfName ) == 0 )
+            && ( iIspIfParams->Compare( *aItem.iIspIfParams ) == 0 )
+            && ( iIspIfNetworks->Compare( *aItem.iIspIfNetworks ) == 0 )
+            && ( iIspIfAuthName->Compare( *aItem.iIspIfAuthName ) == 0 )
+            && ( iIspIfAuthPass->Compare( *aItem.iIspIfAuthPass ) == 0 )
+            && ( iIspIPAddr->Compare( *aItem.iIspIPAddr ) == 0 )
+            && ( iIspIPNetMask->Compare( *aItem.iIspIPNetMask ) == 0 )
+            && ( iIspGateway->Compare( *aItem.iIspGateway ) == 0 )
+            && ( iPrimaryDNS->Compare( *aItem.iPrimaryDNS ) == 0 )
+            && ( iSecondaryDNS->Compare( *aItem.iSecondaryDNS ) == 0 )
+//
+            && ( iGprsPdpAddress->Compare( *aItem.iGprsPdpAddress ) == 0 )  
+            && (
+               ( iExt->iIsIpv6Supported && 
+                    ( 
+                        ( iExt->iIpv6PrimaryDNS->Compare( 
+                                *aItem.iExt->iIpv6PrimaryDNS ) == 0 )
+                        && 
+                        ( iExt->iIpv6SecondaryDNS->Compare( 
+                                *aItem.iExt->iIpv6SecondaryDNS ) == 0 )
+                    )
+                || !iExt->iIsIpv6Supported )
+                )
+            )
+            {
+            retval = ETrue;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareGprs" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareCdma
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareCdma( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareCdma" ) ) );
+
+    TBool retval( EFalse );
+
+    __ASSERT_ALWAYS( iExt->iCdmaData, ApCommons::Panic( ESanityCheckFailed ) );
+
+    if (
+           iExt->iCdmaData->iServiceOption == 
+                                aItem.iExt->iCdmaData->iServiceOption
+        && iExt->iCdmaData->iPdpType == aItem.iExt->iCdmaData->iPdpType
+        && iExt->iCdmaData->iReqFwdPriority == 
+                                aItem.iExt->iCdmaData->iReqFwdPriority
+        && iExt->iCdmaData->iReqRevPriority == 
+                                aItem.iExt->iCdmaData->iReqRevPriority
+        && iExt->iCdmaData->iReqFwdBitrate == 
+                                aItem.iExt->iCdmaData->iReqFwdBitrate
+        && iExt->iCdmaData->iReqRevBitrate == 
+                                aItem.iExt->iCdmaData->iReqRevBitrate
+        && iExt->iCdmaData->iReqFwdLoss == aItem.iExt->iCdmaData->iReqFwdLoss
+        && iExt->iCdmaData->iReqRevLoss == aItem.iExt->iCdmaData->iReqRevLoss
+        && iExt->iCdmaData->iReqFwdMaxDelay == 
+                                aItem.iExt->iCdmaData->iReqFwdMaxDelay
+        && iExt->iCdmaData->iReqRevMaxDelay == 
+                                aItem.iExt->iCdmaData->iReqRevMaxDelay
+        && iExt->iCdmaData->iMinFwdBitrate == 
+                                aItem.iExt->iCdmaData->iMinFwdBitrate
+        && iExt->iCdmaData->iMinRevBitrate == 
+                                aItem.iExt->iCdmaData->iMinRevBitrate
+        && iExt->iCdmaData->iAccptFwdLoss == 
+                                aItem.iExt->iCdmaData->iAccptFwdLoss
+        && iExt->iCdmaData->iAccptRevLoss == 
+                                aItem.iExt->iCdmaData->iAccptRevLoss
+        && iExt->iCdmaData->iAccptFwdMaxDelay == 
+                                aItem.iExt->iCdmaData->iAccptFwdMaxDelay
+        && iExt->iCdmaData->iAccptRevMaxDelay == 
+                                aItem.iExt->iCdmaData->iAccptRevMaxDelay
+//
+        && BOOL_COMPARE( iIspIfPromptForAuth, aItem.iIspIfPromptForAuth )
+        && iIspIfAuthRetries == aItem.iIspIfAuthRetries
+        && BOOL_COMPARE( iIspIPAddrFromServer, aItem.iIspIPAddrFromServer )
+        && BOOL_COMPARE( iGetDNSIPFromServer, aItem.iGetDNSIPFromServer )
+        && BOOL_COMPARE( iEnablePPPCompression, aItem.iEnablePPPCompression )
+        && BOOL_COMPARE( iIspEnableLCPExtensions, 
+                                aItem.iIspEnableLCPExtensions )
+        && BOOL_COMPARE( iIsPasswordAuthenticationSecure,
+                                aItem.iIsPasswordAuthenticationSecure )
+        && BOOL_COMPARE( iIspEnableSwCompression, 
+                                aItem.iIspEnableSwCompression )
+//
+        && iIspType == aItem.iIspType
+        && iExt->iCdmaData->iQosWarningTimeout == 
+                                aItem.iExt->iCdmaData->iQosWarningTimeout
+        && iExt->iCdmaData->iRlpMode == aItem.iExt->iCdmaData->iRlpMode
+        && BOOL_COMPARE( iExt->iCdmaData->iMip, aItem.iExt->iCdmaData->iMip )
+        && iExt->iCdmaData->iMipTimeout == aItem.iExt->iCdmaData->iMipTimeout
+        && iExt->iCdmaData->iNaiType == aItem.iExt->iCdmaData->iNaiType
+        && iExt->iCdmaData->iSimpleIpAuthAlgorithm == 
+                                aItem.iExt->iCdmaData->iSimpleIpAuthAlgorithm
+        && iExt->iCdmaData->iSimpleIpPapSsHandle == 
+                                aItem.iExt->iCdmaData->iSimpleIpPapSsHandle
+        && iExt->iCdmaData->iSimpleIpChapSsHandle == 
+                                aItem.iExt->iCdmaData->iSimpleIpChapSsHandle
+        && iExt->iCdmaData->iMipTBit == aItem.iExt->iCdmaData->iMipTBit
+        && iExt->iCdmaData->iMipMnAaaAuthAlgorithm == 
+                                aItem.iExt->iCdmaData->iMipMnAaaAuthAlgorithm
+        && iExt->iCdmaData->iMipMnAaaSpi == 
+                                aItem.iExt->iCdmaData->iMipMnAaaSpi
+        && iExt->iCdmaData->iMipMnAaaSsHandle == 
+                                aItem.iExt->iCdmaData->iMipMnAaaSsHandle
+        && iExt->iCdmaData->iMipMnHaAuthAlgorithm == 
+                                aItem.iExt->iCdmaData->iMipMnHaAuthAlgorithm
+        && iExt->iCdmaData->iMipMnHaSpi == aItem.iExt->iCdmaData->iMipMnHaSpi
+        && iExt->iCdmaData->iMipMnHaSsHandle == 
+                                aItem.iExt->iCdmaData->iMipMnHaSsHandle
+//
+        && BOOL_COMPARE( iGprsUseAnonymAccess, aItem.iGprsUseAnonymAccess )
+        && ( 
+            ( iExt->iIsIpv6Supported 
+            && ( BOOL_COMPARE( iExt->iIpv6GetDNSIPFromServer, 
+                                 aItem.iExt->iIpv6GetDNSIPFromServer ) ) )
+            || ( !iExt->iIsIpv6Supported ) )
+        )
+        {
+        if (
+               ( iExt->iCdmaData->iIwfName->Compare( 
+                        *aItem.iExt->iCdmaData->iIwfName ) == 0 )
+            && ( iExt->iCdmaData->iPdpAddress->Compare( 
+                        *aItem.iExt->iCdmaData->iPdpAddress ) == 0 )
+            && ( iExt->iCdmaData->iHomeAgentAddress->Compare( 
+                        *aItem.iExt->iCdmaData->iHomeAgentAddress ) == 0 )
+            && ( iExt->iCdmaData->iMipHomeAddress->Compare( 
+                        *aItem.iExt->iCdmaData->iMipHomeAddress ) == 0 )
+            && ( iExt->iCdmaData->iMipPrimaryHomeAgent->Compare( 
+                        *aItem.iExt->iCdmaData->iMipPrimaryHomeAgent ) == 0 )
+            && ( iExt->iCdmaData->iMipSecondaryHomeAgent->Compare( 
+                        *aItem.iExt->iCdmaData->iMipSecondaryHomeAgent ) == 0 )
+//
+            && ( iIspIfName->Compare( *aItem.iIspIfName ) == 0 )
+            && ( iIspIfParams->Compare( *aItem.iIspIfParams ) == 0 )
+            && ( iIspIfNetworks->Compare( *aItem.iIspIfNetworks ) == 0 )
+            && ( iIspIfAuthName->Compare( *aItem.iIspIfAuthName ) == 0 )
+            && ( iIspIfAuthPass->Compare( *aItem.iIspIfAuthPass ) == 0 )
+            && ( iIspIPAddr->Compare( *aItem.iIspIPAddr ) == 0 )
+            && ( iIspIPNetMask->Compare( *aItem.iIspIPNetMask ) == 0 )
+            && ( iIspGateway->Compare( *aItem.iIspGateway ) == 0 )
+            && ( iPrimaryDNS->Compare( *aItem.iPrimaryDNS ) == 0 )
+            && ( iSecondaryDNS->Compare( *aItem.iSecondaryDNS ) == 0 )
+//
+            && (
+               ( iExt->iIsIpv6Supported && 
+                    ( 
+                        ( iExt->iIpv6PrimaryDNS->Compare( 
+                                *aItem.iExt->iIpv6PrimaryDNS ) == 0 )
+                        && 
+                        ( iExt->iIpv6SecondaryDNS->Compare( 
+                                *aItem.iExt->iIpv6SecondaryDNS ) == 0 )
+                    )
+                || !iExt->iIsIpv6Supported )
+                )
+            )
+            {
+            retval = ETrue;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareCdma" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareWlan
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareWlan( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareWlan" ) ) );
+
+    TBool retval( EFalse );
+
+    __ASSERT_ALWAYS( iExt->iWlanData, ApCommons::Panic( ESanityCheckFailed ) );
+    __ASSERT_ALWAYS( aItem.iExt->iWlanData, 
+                     ApCommons::Panic( ESanityCheckFailed ) );
+
+    if (  
+         iExt->iWlanData->iWlanNetworkMode == 
+                                aItem.iExt->iWlanData->iWlanNetworkMode
+         && iExt->iWlanData->iScanSSID == aItem.iExt->iWlanData->iScanSSID
+         && iExt->iWlanData->iWlanSecurityMode == 
+                                aItem.iExt->iWlanData->iWlanSecurityMode
+         && iExt->iWlanData->iChannelId == 
+                                aItem.iExt->iWlanData->iChannelId
+        && BOOL_COMPARE( iGetDNSIPFromServer, aItem.iGetDNSIPFromServer )
+        )        
+        {
+        if (   ( iExt->iWlanData->iWlanNetworkName->Compare( 
+                    *aItem.iExt->iWlanData->iWlanNetworkName ) == 0 )
+            && ( iIspIPAddr->Compare( *aItem.iIspIPAddr ) == 0 )
+            && ( iIspIPNetMask->Compare( *aItem.iIspIPNetMask ) == 0 )
+            && ( iIspGateway->Compare( *aItem.iIspGateway ) == 0 )
+            && ( iPrimaryDNS->Compare( *aItem.iPrimaryDNS ) == 0 )
+            && ( iSecondaryDNS->Compare( *aItem.iSecondaryDNS ) == 0 )
+// Check if AuthName is needed or not
+//            && ( iIspIfAuthName->Compare( *aItem.iIspIfAuthName ) == 0 )
+            )
+            {
+            retval = ETrue;
+            }
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareWlan" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::GetCleanIpAddressLC
+// ---------------------------------------------------------
+//
+HBufC* CApAccessPointItem::GetCleanIpAddressLC( const TDesC& aValue )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::GetCleanIpAddressLC" ) ) );
+
+    TBuf<256> buf;
+    TInetAddr in;
+    User::LeaveIfError( in.Input( aValue ) );
+    in.Output( buf );
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::GetCleanIpAddressLC" ) ) );
+    return buf.AllocLC();
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::GetPlainPhoneNumberLC
+// ---------------------------------------------------------
+//
+HBufC* CApAccessPointItem::GetPlainPhoneNumberLC( const TDesC& aNumber )
+    {
+    CLOG( ( EApItem, 0, 
+            _L( "-> CApAccessPointItem::GetPlainPhoneNumberLC" ) ) );
+
+    // Removes invalid chars e.g. space, () from the passed phone number.
+    // (valid are 0,1,2,..9,p,w,+,*,#)
+    // Strips pre- and postfixes, prefix separator is#,
+    // postfix separators are p, w or +
+    HBufC* retval = NULL;
+
+    HBufC* numbuf = RemoveInvalidPhoneCharsLC( aNumber );
+    TPtr16 num( numbuf->Des() );
+
+    TInt prefixpos( 0 );
+    TInt postfixpos( 0 );
+    TInt lasthashmark = num.LocateReverse('#');
+    if ( lasthashmark != KErrNotFound )
+        { // has prefix
+        prefixpos = ++lasthashmark;
+        }
+    else
+        { // no prefix
+        prefixpos = 0;
+        }
+    // now get postfixes, if any
+    // be carefull not to say postfix for the international code...
+    // as can be more than one postfix, get each postfix-separator type's
+    // position and use the lowest one
+    TInt ppos( 0 );
+    TInt wpos( 0 );
+    TInt pluspos( 0 );
+    TInt tmppos( 0 );
+
+    tmppos = num.Locate( '+' );
+    if ( tmppos != KErrNotFound )
+        {
+        pluspos = tmppos;
+        if ( tmppos == 0 )
+            { // possibly country code comes, get next if any
+            // also inc. prefixpos
+            prefixpos++;
+            num = num.Right( num.Length() - 1 );
+            tmppos = num.Locate( '+' );
+            if ( tmppos != KErrNotFound )
+                {
+                tmppos = pluspos;
+                }
+            }
+        }
+
+    tmppos = num.Locate( 'p' );
+    if ( tmppos != KErrNotFound )
+        {
+        ppos = tmppos;
+        num = num.Left( num.Length() - ppos );
+        }
+    tmppos = num.LocateReverse( 'w' );
+    if ( tmppos != KErrNotFound )
+        {
+        wpos = tmppos;
+        num = num.Left( num.Length() - wpos );
+        }
+    // now we have 3 positions,
+    // decide which is the smallest but greater than 0
+    // if all is 0, it is 0...
+    if ( wpos )
+        {
+        postfixpos = wpos;
+        }
+    else
+        {
+        if ( ppos )
+            {
+            postfixpos = ppos;
+            }
+        else
+            {
+            if ( pluspos )
+                {
+                postfixpos = pluspos;
+                }
+            }
+        }
+    // now we have pre- and postfix positions, get the resulting string
+    if ( postfixpos == 0 )
+        {
+        postfixpos = aNumber.Length();
+        }
+    retval = aNumber.Mid( prefixpos, postfixpos-prefixpos ).AllocLC();
+    CleanupStack::Pop( retval ); // retval
+    CleanupStack::PopAndDestroy( numbuf ); // numbuf
+    CleanupStack::PushL( retval );
+
+    CLOG( ( EApItem, 1, 
+            _L( "<- CApAccessPointItem::GetPlainPhoneNumberLC" ) ) );
+    return retval;
+    }
+
+
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::IsSamePhoneNumber
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::IsSamePhoneNumberL( CApAccessPointItem& aItem )
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::IsSamePhoneNumberL" ) ) );
+
+    TBool retval( EFalse );
+
+    HBufC* tmpphone = 
+        HBufC::NewLC( aItem.ReadTextLengthL( EApIspDefaultTelNumber ) );
+    TPtr16 tmpptr( tmpphone->Des() );
+    aItem.ReadTextL( EApIspDefaultTelNumber, tmpptr );
+
+    HBufC* ph1 = GetPlainPhoneNumberLC( *iIspDefaultTelNumber );
+    HBufC* ph2 = GetPlainPhoneNumberLC( tmpptr );
+    TInt cl ( 7 );
+    cl = Min( cl, ph1->Length() );
+    cl = Min( cl, ph2->Length() );
+    TPtrC16 ptr1 = ph1->Right( cl );
+    TPtrC16 ptr2 = ph2->Right( cl );
+    if ( ptr1.Compare( ptr2 ) == 0 )
+        {
+        retval = ETrue;
+        }
+    CleanupStack::PopAndDestroy( 3, tmpphone ); // ph1, ph2, tmpphone
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::IsSamePhoneNumberL" ) ) );
+    return retval;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::RemoveInvalidPhoneCharsLC
+// ---------------------------------------------------------
+//
+HBufC* CApAccessPointItem::RemoveInvalidPhoneCharsLC( const TDesC16& aInText )
+    {
+    CLOG( ( EApItem, 0, 
+            _L( "-> CApAccessPointItem::RemoveInvalidPhoneCharsLC" ) ) );
+
+    // valid are 0,1,2,..9,p,w,+,*,#
+    TInt size = aInText.Length();
+    HBufC* aOutText = HBufC::NewLC( size );
+    TPtr ptr = aOutText->Des();
+
+    for(TInt i = 0; i< size; i++)
+        {
+        //TText ch = aInText[i];
+        TChar ch = aInText[i];
+        if ( ( ch == 'p' ) || ( ch == 'P' ) || ( ch == 'W' ) || ( ch == 'W' )
+            || ( ch == '+' ) || ( ch == '0' ) || ( ch == '1' ) || ( ch == '2' )
+            || ( ch == '3' ) || ( ch == '4' ) || ( ch == '5' ) || ( ch == '6' )
+            || ( ch == '7' ) || ( ch == '8' ) || ( ch == '9' ) || ( ch == '*' )
+            || ( ch == '#' )
+            )
+            {
+            ptr.Append( ch );
+            }
+        }
+
+    CLOG( ( EApItem, 1, 
+            _L( "<- CApAccessPointItem::RemoveInvalidPhoneCharsLC" ) ) );
+    return aOutText;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::RemoveInvalidCharsLC
+// ---------------------------------------------------------
+//
+HBufC* CApAccessPointItem::RemoveInvalidCharsLC( const TDesC16& aInText )
+    {
+    CLOG( ( EApItem, 0, 
+            _L( "-> CApAccessPointItem::RemoveInvalidCharsLC" ) ) );
+
+    TInt size = aInText.Length();
+    HBufC* aOutText = HBufC::NewLC( size );
+    TPtr ptr = aOutText->Des();
+
+    for ( TInt ii=0; ii<size; ++ii )
+        {
+        TText ch = aInText[ii];
+        if ( ch == CEditableText::ETabCharacter )
+            {
+            ch = ' ';
+            }
+        ptr.Append( ch );
+        }
+
+    CLOG( ( EApItem, 1, 
+            _L( "<- CApAccessPointItem::RemoveInvalidCharsLC" ) ) );
+    return aOutText;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::RemoveInvalidCharsLC
+// ---------------------------------------------------------
+//
+HBufC8* CApAccessPointItem::RemoveInvalidCharsLC( const TDesC8& aInText )
+    {
+    CLOG( ( EApItem, 0, 
+            _L( "-> CApAccessPointItem::RemoveInvalidCharsLC8" ) ) );
+
+    TInt size = aInText.Length();
+    HBufC8* aOutText = HBufC8::NewLC( size );
+    TPtr8 ptr = aOutText->Des();
+
+    for ( TInt ii=0; ii<size; ++ii )
+        {
+        TText ch = aInText[ii];
+        if ( ch == CEditableText::ETabCharacter )
+            {
+            ch = ' ';
+            }
+        ptr.Append( ch );
+        }
+
+    CLOG( ( EApItem, 1, 
+            _L( "<- CApAccessPointItem::RemoveInvalidCharsLC8" ) ) );
+    return aOutText;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::CompareProxy
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::CompareProxy( const CApAccessPointItem& aItem ) const
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::CompareProxy" ) ) );
+
+    TBool retval( EFalse );
+    if ( BOOL_COMPARE( iApHasProxySettings, aItem.iApHasProxySettings )
+         && iApProxyPortNumber == aItem.iApProxyPortNumber
+         && BOOL_COMPARE( iApProxyUseProxy, iApProxyUseProxy )
+         && ( iApProxyProtocolName->Compare( 
+                        *aItem.iApProxyProtocolName ) == 0 )
+         && ( iApProxyServerAddress->Compare( 
+                        *aItem.iApProxyServerAddress ) == 0 )
+         && ( iApProxyExceptions->Compare( *aItem.iApProxyExceptions ) == 0 ) )
+        {
+        retval = ETrue;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::CompareProxy" ) ) );
+    return retval;
+    }
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::HasProxy
+// ---------------------------------------------------------
+//
+TBool CApAccessPointItem::HasProxy() const
+    {
+    CLOG( ( EApItem, 0, _L( "<-> CApAccessPointItem::HasProxy" ) ) );
+
+    return iApHasProxySettings;
+    }
+
+
+
+// ---------------------------------------------------------
+// CApAccessPointItem::SetProxyFlag
+// ---------------------------------------------------------
+//
+void CApAccessPointItem::SetProxyFlag()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::SetProxyFlag" ) ) );
+
+    if ( ( iApProxyServerAddress->Compare( KDynIpAddress ) 
+         && iApProxyServerAddress->Compare( KEmpty ) )
+         || ( iApProxyPortNumber != 0 ) )
+        {
+        iApHasProxySettings = ETrue;
+        }
+    else
+        {
+        iApHasProxySettings = EFalse;
+        }
+    // BY DEFAULT, as it is not accessible on the UI,
+    // we set the USE PROXY flag if ANY proxy setting is defined...
+    iApProxyUseProxy = iApHasProxySettings;
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::SetProxyFlag" ) ) );
+    }
+
+
+
+
+//----------------------------------------------------------
+// CApAccessPointItem::LimitSpeed
+//----------------------------------------------------------
+//
+void CApAccessPointItem::LimitSpeedL()
+    {
+    CLOG( ( EApItem, 0, _L( "-> CApAccessPointItem::LimitSpeedL" ) ) );
+
+    TBool isWcdma = iExt->iIsWcdma;
+    TApBearerType bearer = BearerTypeL();
+    const TInt* actSpeeds = NULL;
+    switch ( bearer )
+        {
+        case EApBearerTypeCSD:
+            {
+            switch ( iBearerCallTypeIsdn )
+                {
+                case ECallTypeISDNv110:
+                    {
+                    isWcdma ? actSpeeds = KCsdIsdn110Wcdma :
+                              actSpeeds = KCsdIsdn110;
+                    break;
+                    }
+                case ECallTypeISDNv120:
+                    {
+                    isWcdma ? actSpeeds = KCsdIsdn120Wcdma :
+                              actSpeeds = KCsdIsdn120;
+                    break;
+                    }
+                case ECallTypeAnalogue:
+                default:
+                    {
+                    isWcdma ? actSpeeds = KCsdAnalogueWcdma :
+                              actSpeeds = KCsdAnalogue;
+                    break;
+                    }
+                }
+            break;
+            }
+        case EApBearerTypeHSCSD:
+            {
+            switch ( iBearerCallTypeIsdn )
+                {
+                case ECallTypeISDNv110:
+                    {
+                    actSpeeds = KHcsdIsdn110;
+                    break;
+                    }
+                case ECallTypeISDNv120:
+                    {
+                    actSpeeds = KHcsdIsdn120;
+                    break;
+                    }
+                case ECallTypeAnalogue:
+                default:
+                    {
+                    actSpeeds = KHcsdAnal;
+                    break;
+                    }
+                }
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+
+
+    if( actSpeeds )
+        {
+        TInt tempSpeed = *actSpeeds;
+        TInt nextSpeed = *( actSpeeds + 1);
+        while ( ( nextSpeed != KEndOfArray ) 
+                && ( tempSpeed < ( TInt )iMaxConnSpeed ) 
+                && ( nextSpeed <= ( TInt )iMaxConnSpeed ) )
+            {
+            tempSpeed = *( ++actSpeeds );
+            nextSpeed = *( actSpeeds + 1);
+            }
+        iMaxConnSpeed = ( TApCallSpeed )tempSpeed ;
+        }
+
+    CLOG( ( EApItem, 1, _L( "<- CApAccessPointItem::LimitSpeedL" ) ) );
+    }
+
+
+
+//----------------------------------------------------------
+// CApAccessPointItem::SetIfNetworksL
+//----------------------------------------------------------
+//
+void CApAccessPointItem::SetIfNetworksL()
+    {
+    // Check if Wlan affects this one!!!
+    // Check if Lan affects this one!!!
+    TApBearerType bearertype = BearerTypeL();
+    if ( iExt->iIsIpv6Supported )
+        {
+        if ( bearertype == EApBearerTypeGPRS )
+            {
+            if ( iGprsPdpType  == EIPv6 )
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv6 );
+                }
+            else
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4 );
+                }
+            }
+        else if ( bearertype == EApBearerTypeCDMA )
+            {
+            __ASSERT_ALWAYS( iExt->iCdmaData, \
+                ApCommons::Panic( ESanityCheckFailed ) );
+            if ( iExt->iCdmaData->iPdpType  == EIPv6 )
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv6 );
+                }
+            else
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4 );
+                }
+            }
+        else 
+            {
+#ifdef __TEST_LAN_BEARER
+            if ( bearertype == EApBearerTypeLAN )
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4IPv6LAN );
+                }            
+#endif// __TEST_LAN_BEARER
+            if ( ( bearertype == EApBearerTypeWLAN ) 
+                || ( bearertype == EApBearerTypeLANModem ) )
+                {
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4IPv6LAN );
+                }
+            else
+                { // CSD, HSCSD
+                WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4IPv6 );
+                }
+            }
+        }
+    else
+        {
+        WriteTextL( EApIspIfNetworks, KDefIspIfNetworksIPv4 );
+        }
+    }
+
+
+//----------------------------------------------------------
+// CApAccessPointItem::IsSupported
+//----------------------------------------------------------
+//
+TBool CApAccessPointItem::IsSupported( TApMember aColumn )
+    {
+    TBool ret( ETrue );
+
+    switch ( aColumn )
+        {
+        case EApCdmaIwfName:
+        case EApCdmaServiceOption:
+        case EApCdmaPdpType:
+        case EApCdmaPdpAddress:
+        case EApCdmaReqFwdPriority:
+        case EApCdmaReqRevPriority:
+        case EApCdmaReqFwdBitrate:
+        case EApCdmaReqRevBitrate:
+        case EApCdmaReqFwdLoss:
+        case EApCdmaReqRevLoss:
+        case EApCdmaReqFwdMaxDelay:
+        case EApCdmaReqRevMaxDelay:
+        case EApCdmaMinFwdBitrate:
+        case EApCdmaMinRevBitrate:
+        case EApCdmaAccptFwdLoss:
+        case EApCdmaAccptRevLoss:
+        case EApCdmaAccptFwdMaxDelay:
+        case EApCdmaAccptRevMaxDelay:
+        case EApCdmaDataCompression:
+        case EApCdmaHeaderCompression:
+        case EApCdmaAnonymousAccess:
+        case EApCdmaIfName:
+        case EApCdmaIfParams:
+        case EApCdmaIfNetworks:
+        case EApCdmaIfPromptForAuth:
+        case EApCdmaIfAuthName:
+        case EApCdmaIfAuthPassword:
+        case EApCdmaIfAuthRetries:
+        case EApCdmaIpNetMask:
+        case EApCdmaIpGateway:
+        case EApCdmaIpAddrFromServer:
+        case EApCdmaIpAddr:
+        case EApCdmaIpDnsAddrFromServer:
+        case EApCdmaIPNameServer1:
+        case EApCdmaIPNameServer2:
+        case EApCdmaEnableLCPExtensions:
+        case EApCdmaDisablePlainTextAuth:
+        case EApCdmaApType:
+        case EApCdmaQosWarningTimeout:
+        case EApCdmaRlpMode:
+        case EApCdmaMip:
+        case EApCdmaHomeAgentAddress:
+        case EApCdmaMipTimeout:
+        case EApCdmaNaiType:
+        case EApCdmaSimpleIpAuthAlgorithm:
+        case EApCdmaSimpleIpPapSsHandle:
+        case EApCdmaSimpleIpChapSsHandle:
+        case EApCdmaMipTBit:
+        case EApCdmaMipHomeAddress:
+        case EApCdmaMipPrimaryHomeAgent:
+        case EApCdmaMipSecondaryHomeAgent:
+        case EApCdmaMipMnAaaAuthAlgorithm:
+        case EApCdmaMipMnAaaSpi:
+        case EApCdmaMipMnAaaSsHandle:
+        case EApCdmaMipMnHaAuthAlgorithm:
+        case EApCdmaMipMnHaSpi:
+        case EApCdmaMipMnHaSsHandle:
+            {
+            ret = iExt->iCdmaData != NULL;
+            break;
+            }
+        case EApWlanNetworkName:
+        case EApWlanNetworkMode:
+        case EApWlanSecurityMode:
+        case EApWlanScanSSID:
+        case EApWlanChannelId:
+            {
+            ret = iExt->iWlanData != NULL;
+            break;
+            }
+
+        default:
+            {
+            break;
+            }
+        }
+
+    return ret;
+    }
+
+//----------------------------------------------------------
+// CApAccessPointItem::LeaveIfUnsupportedL
+//----------------------------------------------------------
+//
+void CApAccessPointItem::LeaveIfUnsupportedL( TApMember aColumn )
+    {
+    if( !IsSupported( aColumn ) )
+        {
+        User::Leave( KErrNotSupported );
+        }
+    }
+
+
+
+
+//----------------------------------------------------------
+// CApAccessPointItem::IsWlan
+//----------------------------------------------------------
+//
+TBool CApAccessPointItem::IsWlan()
+    {
+    TBool retval( EFalse );
+    if ( iExt->iWlanData )
+        {
+        retval = iExt->iWlanData->iIsWlan;
+        }
+    return retval;
+    }
+
+
+//----------------------------------------------------------
+// CApAccessPointItem::LimitIp6DNSL
+//----------------------------------------------------------
+//
+void CApAccessPointItem::LimitIp6DNSL()
+    {
+    if ( iExt->iIsIpv6Supported )
+        {
+        if ( ( iExt->iIpv6PrimaryDNS->Compare( KDynIpv6Address ) == 0 ) &&
+             ( iExt->iIpv6SecondaryDNS->Compare( KDynIpv6Address ) == 0 ) )
+            {
+            WriteTextL( EApIP6NameServer1, KWellKnownIp6PrimaryNameServer );
+            WriteTextL( EApIP6NameServer2, KWellKnownIp6SecondaryNameServer );
+            }
+        }
+    
+    }
+    
+//  End of File