# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1262862903 -7200 # Node ID a9c0ce9139248504b35be8b17e9a809405217e78 # Parent b497e44ab2fce52189d2d7c75786ee92b4e80734 Revision: 200951 Kit: 201001 diff -r b497e44ab2fc -r a9c0ce913924 devicediagnosticsfw/diagpluginbase/src/diagpluginwaitingdialogwrapper.cpp --- a/devicediagnosticsfw/diagpluginbase/src/diagpluginwaitingdialogwrapper.cpp Thu Dec 17 09:07:52 2009 +0200 +++ b/devicediagnosticsfw/diagpluginbase/src/diagpluginwaitingdialogwrapper.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -58,8 +58,8 @@ // Dialog must not be NULL __ASSERT_ALWAYS( iWaitingDialog, Panic( EDiagPluginBasePanicBadArgument ) ); - // Dialog must have EEikDialogFlagWait flag set - __ASSERT_ALWAYS( !(iWaitingDialog->DialogFlags() & EEikDialogFlagWait), + // Coverity Change ..... Dialog must have EEikDialogFlagWait flag set + __ASSERT_ALWAYS( (iWaitingDialog->DialogFlags() & EEikDialogFlagWait), Panic( EDiagPluginBasePanicBadArgument ) ); } diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaEngine/group/fotaengine.mmp --- a/fotaapplication/fotaserver/FotaEngine/group/fotaengine.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaEngine/group/fotaengine.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -55,4 +55,6 @@ LIBRARY centralrepository.lib LIBRARY flogger.lib +SMPSAFE + //End of file diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaRfsPlugin/group/RfsFotaPlugin.mmp --- a/fotaapplication/fotaserver/FotaRfsPlugin/group/RfsFotaPlugin.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaRfsPlugin/group/RfsFotaPlugin.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -47,3 +47,5 @@ LIBRARY euser.lib // Base library LIBRARY ecom.lib // ECom library LIBRARY flogger.lib + +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaScheduleHandler/group/fotaschedulehandler.mmp --- a/fotaapplication/fotaserver/FotaScheduleHandler/group/fotaschedulehandler.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaScheduleHandler/group/fotaschedulehandler.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -54,4 +54,4 @@ LIBRARY fotaengine.lib LIBRARY flogger.lib - +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp --- a/fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -125,3 +125,4 @@ LIBRARY flogger.lib // #endif +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaStorage/group/fotadiskstorage.mmp --- a/fotaapplication/fotaserver/FotaStorage/group/fotadiskstorage.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaStorage/group/fotadiskstorage.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -61,4 +61,4 @@ LIBRARY flogger.lib LIBRARY sysutil.lib - +SMPSAFE diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/FotaStorage/group/fotastorage.mmp --- a/fotaapplication/fotaserver/FotaStorage/group/fotastorage.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/FotaStorage/group/fotastorage.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -52,4 +52,5 @@ LIBRARY estor.lib LIBRARY efsrv.lib +SMPSAFE diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/fmsclient/group/fmsclient.mmp --- a/fotaapplication/fotaserver/fmsclient/group/fmsclient.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/fmsclient/group/fmsclient.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -43,3 +43,5 @@ LIBRARY efsrv.lib LIBRARY centralrepository.lib LIBRARY flogger.lib + +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/fmserver/group/fmsserver.mmp --- a/fotaapplication/fotaserver/fmserver/group/fmsserver.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/fmserver/group/fmsserver.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -52,3 +52,4 @@ LIBRARY etelmm.lib LIBRARY etel.lib +SMPSAFE diff -r b497e44ab2fc -r a9c0ce913924 fotaapplication/fotaserver/fotacustcmds/group/fotacustcmds.mmp --- a/fotaapplication/fotaserver/fotacustcmds/group/fotacustcmds.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/fotaapplication/fotaserver/fotacustcmds/group/fotacustcmds.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -47,3 +47,5 @@ LIBRARY schsvr.lib LIBRARY apgrfx.lib LIBRARY apparc.lib + +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/Group/bld.inf --- a/omaprovisioning/provisioning/Group/bld.inf Thu Dec 17 09:07:52 2009 +0200 +++ b/omaprovisioning/provisioning/Group/bld.inf Thu Jan 07 13:15:03 2010 +0200 @@ -50,7 +50,8 @@ //../ProvisioningCx/loc/ProvisioningCx.loc MW_LAYER_LOC_EXPORT_PATH(provisioningcx.loc) ../StreamingAdapter/loc/StreamingAdapter.loc MW_LAYER_LOC_EXPORT_PATH(streamingadapter.loc) ../AuthTypePlugin/loc/Authtypeplugin.loc MW_LAYER_LOC_EXPORT_PATH(authtypeplugin.loc) - +../accesspointadapter/loc/WPAPAdapter.loc MW_LAYER_LOC_EXPORT_PATH(wpapadapter.loc) +../cpdestinationnwadapter/loc/wpdestinationnwadapter.loc MW_LAYER_LOC_EXPORT_PATH(wpdestinationnwadapter.loc) PRJ_EXTENSIONS #ifdef SBSV2 @@ -88,13 +89,14 @@ ../ProvisioningEngine/Group/ProvisioningEngine.mmp ../ProvisioningParser/Group/ProvisioningParser.mmp ../ProvisioningHandler/Group/ProvisioningHandler.mmp -//../AccesspointAdapter/group/WPAPAdapter.mmp +../accesspointAdapter/group/WPAPAdapter.mmp ../WAPAdapter/Group/WPWAPAdapter.mmp ../IMAdapter/Group/IMAdapter.mmp ../StreamingAdapter/Group/StreamingAdapter.mmp //../ProvisioningCx/group/ProvisioningCx.mmp ../ProvisioningBC/Group/ProvisioningBC.mmp ../MbxNbrAdapter/Group/MbxNbrAdapter.mmp +../cpdestinationnwadapter/group/wpdestinationnwadapter.mmp diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/Rom/Provisioning.iby --- a/omaprovisioning/provisioning/Rom/Provisioning.iby Thu Dec 17 09:07:52 2009 +0200 +++ b/omaprovisioning/provisioning/Rom/Provisioning.iby Thu Jan 07 13:15:03 2010 +0200 @@ -37,6 +37,13 @@ // Streaming Adapter ECOM_PLUGIN(WPStreamingAdapter.dll,101F85CB.rsc) +//Accesspoint adapter +ECOM_PLUGIN(WPAPAdapter.dll, WPAPAdapter.rsc) + +//Destination Adapter + +ECOM_PLUGIN( wpdestinationnwadapter.dll, 2000b4af.rsc ) + // Mailbox Number adapter ECOM_PLUGIN(WPMbxNbrAdapter.dll,10207281.rsc) // this publishes the DLL and the // resource file to the correct location diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/Rom/ProvisioningResources.iby --- a/omaprovisioning/provisioning/Rom/ProvisioningResources.iby Thu Dec 17 09:07:52 2009 +0200 +++ b/omaprovisioning/provisioning/Rom/ProvisioningResources.iby Thu Jan 07 13:15:03 2010 +0200 @@ -52,4 +52,7 @@ data=DATAZ_\RESOURCE_FILES_DIR\AuthtypepluginRsc.rsc RESOURCE_FILES_DIR\AuthtypepluginRsc.rsc #endif +data=DATAZ_\RESOURCE_FILES_DIR\WPAPAdapterResource.rsc RESOURCE_FILES_DIR\WPAPAdapterResource.rsc +data=DATAZ_\RESOURCE_FILES_DIR\wpdestinationnwadapter.rsc RESOURCE_FILES_DIR\wpdestinationnwadapter.rsc + #endif // __PROVISIONINGRESOURCES_IBY__ diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPAccesspointItem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPAccesspointItem.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,167 @@ +/* +* 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: Class stores data for one accesspoint +* +*/ + + + +#ifndef CWPAPACCESSPOINTITEM_H +#define CWPAPACCESSPOINTITEM_H + +// INCLUDES +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CWPEngine; +class CWPAPItemBase; +class CWPParameter; +class CWPCharacteristic; +class CCommsDatabase; +class CWPAPNapdef; +class RCmManagerExt; + +// CLASS DECLARATION + +/** + * CWPAPAccesspointItem handles accesspoint settings. It links data from + * logical proxy, physical proxy and napdef into one item. + */ +class CWPAPAccesspointItem : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aDefaultName The default name if none is found + * @param aLogicalProxy The logical proxy + * @param aPhysicalProxy The physical proxy + * @param aNapdef The napdef + * @param aCharacteristic The characteristic + */ + static CWPAPAccesspointItem* NewLC( + const TDesC& aDefaultName, + CWPAPItemBase* iLogicalProxy, + CWPAPItemBase* iPhysicalProxy, + CWPAPItemBase* aNapdef, + CWPCharacteristic& aCharacteristic ); + + /** + * Destructor. + */ + virtual ~CWPAPAccesspointItem(); + + public: // New methods + + /** + * Get the accesspoint name. + * @return reference to name. + */ + const TDesC& Name() const; + + /** + * Get the NAPdef pointer + * @return pointer to napdef. + */ + CWPAPItemBase* NapDef(); + + /** + * Set the pointer to the CM manager + * @return void + */ + void SetCMManager( RCmManagerExt* aCm ); + + /** + * Get the characteristic value + * @return iCharacteristic. + */ + TInt Characteristic(); + + /** + * Save this accesspoint to comms database. + * @param aCommsDb reference to CCommsdatabase + */ + TUint32 SaveL( CCommsDatabase& aCommsDb ); + + /** + * Return the UID of the saved access point. + * @return UID + */ + const TDesC8& Uid() const; + + /** + * Delete old data from engine model. + */ + void DeleteUidData() const; + + private: // New functions + + /** + * Store the accesspoint data to comms database. + * @param aCommsDb reference to CCommsdatabase + */ + TUint32 StoreL( CCommsDatabase& aCommsDb ); + + /** + * C++ default constructor. + * @param aDefaultName The default name if none is found + * @param aLogicalProxy The logical proxy + * @param aPhysicalProxy The physical proxy + * @param aNapdef The napdef + * @param aCharacteristic The characteristic + */ + CWPAPAccesspointItem( const TDesC& aDefaultName, + CWPAPItemBase* iLogicalProxy, + CWPAPItemBase* iPhysicalProxy, + CWPAPItemBase* aNapdef, + CWPCharacteristic& aCharacteristic ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Data (Total ownership is assumed unless otherwise stated) + + /// The default name if no other is found + const TDesC& iDefaultName; + + /// The napdef + CWPAPItemBase* iNapdef; + + /// The physical proxy + CWPAPItemBase* iPhysicalProxy; + + /// The logical proxy + CWPAPItemBase* iLogicalProxy; + + /// The uid created when saving + TPckgBuf iUid; + + /// The characteristic the caused the creation of an access point + CWPCharacteristic& iCharacteristic; + RCmManagerExt* iCmManager; + + private: // For testing usage. + friend class T_CWPAPAccesspointItem; + friend class T_CWPAPAdapter; + friend class T_WPAPTestUtils; + }; + +#endif // CWPAPACCESSPOINTITEM_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPAdapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPAdapter.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,119 @@ +/* +* 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: Main class for handling provisioning accesspoint data +* +*/ + + + +#ifndef CWPAPADAPTER_H +#define CWPAPADAPTER_H + +// INCLUDES + +#include +#include +#include + +// FORWARD DECLARATIONS + +class CWPAPAccesspointItem; +class CCommsDatabase; + +// CLASS DECLARATION + +/** + * CWPAPAdapter handles accesspoint settings. + */ +class CWPAPAdapter : public CWPAdapter, public MWPContextExtension + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return a instance of class. + */ + static CWPAPAdapter* NewL(); + + /** + * Destructor + */ + ~CWPAPAdapter(); + + public: // From CWPAdapter + + TInt ItemCount() const; + const TDesC16& SummaryTitle(TInt aIndex) const; + const TDesC16& SummaryText(TInt aIndex) const; + TInt DetailsL( TInt aItem, MWPPairVisitor& aVisitor ); + void SaveL( TInt aItem ); + TBool CanSetAsDefault( TInt aItem ) const; + void SetAsDefaultL( TInt aItem ); + void VisitL(CWPCharacteristic& aElement); + void VisitL(CWPParameter& aElement); + void VisitLinkL(CWPCharacteristic& aCharacteristic ); + TInt ContextExtension( MWPContextExtension*& ); + + public: // From MWPContextExtension + + const TDesC8& SaveDataL( TInt aIndex ) const; + void DeleteL( const TDesC8& aSaveData ); + TUint32 Uid() const; + + private: // New functions + + /** + * C++ default constructor. + */ + CWPAPAdapter(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Check whether this characteristic is already linked. + * @param aCharacteristic characteristic to compare. + * @return ETrue if link to given characteristic was found. + */ + TBool IsAlreadyLinked( CWPCharacteristic& aCharacteristic ); + + private: // Data + + /// Array of linked NAPDEF and PXLOGICAL characteristics. Refs. + RPointerArray iLinks; + /// Array of data items for memory management. Owns. + RPointerArray iDataItems; + /// Array of save items. Owns. + RPointerArray iSaveItems; + /// Pointer to commsdatabase used in saving. Owns. + CCommsDatabase* iCommsDb; + /// Summary title. Owns. + HBufC* iTitle; + /// Default name. Owns. + HBufC* iDefaultName; + /// Indicates whether these settings are already saved. + TBool iAlreadySavedOnce; + // CMManager for managing connection methods + RCmManagerExt* iCmManager; + RArray iAPValue; + + private: // For testing. + friend class T_CWPAPAdapter; + }; + +#endif // CWPAPADAPTER_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPItemBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPItemBase.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,137 @@ +/* +* 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: Defines a base class for all the items in WPAPAdapter +* +*/ + + + + + +#ifndef CWPAPITEMBASE_H +#define CWPAPITEMBASE_H + +// INCLUDES + +#include +#include +#include + +// DATA TYPES + +// Field types that can be marked received. +// Values defined to the power of to to enable masking. +enum TMarkedField + { + EWPParameterPxAddrType_id = 2, + EWPParameterPxAddrFQDN_id = 4, + EWPParameterNapID_id = 8, + EWPParameterService_id = 16, + EWPParameterPortNbr_id = 32, + EWPParameterPxAddr_id = 64, + EWPParameterAuthentication_id = 512, + EWPParameterIfNetworks_id = 1024, + EWPParameterInternet_id = 2048, + EWPParameterWlan_id = 4096 + }; + +// FORWARD DECLARATIONS + +class CApAccessPointItem; +class CWPAPAccesspointItem; +class CCommsDatabase; + +// CLASS DECLARATION + +/** + * CWPAPItemBase is a base class for all the items in WPAPAdapter. + */ +class CWPAPItemBase : public CBase + { + public: + + /** + * Destructor. + */ + ~CWPAPItemBase(); + + public: // New methods + + /** + * Store the item data to APEngine's accesspoint item. + * @param aAPItem item where data is stored. + */ + virtual void AddDataL( RCmConnectionMethodExt& ) = 0; + + /** + * Add access point items to an array. + * @param aItems The array to add to + * @param aLogicalProxy The related logical proxy, if any + * @param aPhysicalProxy The related physical proxy, if any + */ + virtual TInt AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ) = 0; + + /** + * The name of the item to be displayed to the user. + * @return The name + */ + virtual const TDesC& Name() = 0; + + /** + * SaveWlanDataL + */ + virtual void SaveWlanDataL( TUint32 aIapId, CCommsDatabase& aCommsDb ) = 0; + + virtual void UpdateLingerL(const TUint32 aIapId) = 0; + + protected: // New methods. Only for subclasses use. + + /** + * Base constructor. + * @param aDefaultName The default name to use for an access point + */ + CWPAPItemBase( const TDesC& aDefaultName ); + + /** + * Mark that this field has arrived and was correctly handled. + * @param aField received field enumeration + */ + void MarkReceived( TMarkedField aField ); + + /** + * Check has the given field been received. + * @param aField received field enumeration + * @return ETrue if the field has already been received and handled + */ + TBool IsReceived( TMarkedField aField ); + + protected: + + /// The default name for an access point + const TDesC& iDefaultName; + + private: // Data + + /// Received fields marked here. + TUint32 iReceivedFieldsFlags; + + private: // For testing. + friend class T_CWPAPItemBase; + }; + +#endif // CWPAPITEMBASE_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPLogicalProxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPLogicalProxy.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,117 @@ +/* +* 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: Defines a class, which holds logical proxy information. +* +*/ + + + + + +#ifndef CWPAPLOGICALPROXY_H +#define CWPAPLOGICALPROXY_H + +// INCLUDES + +#include +#include "CWPAPItemBase.h" +#include + +// FORWARD DECLARATIONS + +class CWPAPPhysicalProxy; +class CWPAPAccesspointItem; +class CWPAPPort; + +// CLASS DECLARATION + +/** + * CWPAPLogicalProxy contains logical proxy data. + */ +class CWPAPLogicalProxy : public CWPAPItemBase, private MWPVisitor + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aDefaultName The default name of an access point + * @param aCharacteristic The PXLOGICAL characteristic + */ + static CWPAPLogicalProxy* NewLC( const TDesC& aDefaultName, + CWPCharacteristic& aCharacteristic ); + + /** + * Destructor. + */ + ~CWPAPLogicalProxy(); + + public: // From CWPAPItemBase + + TBool ValidateL(); + void AddDataL( RCmConnectionMethodExt& aCmItem ); + TInt AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ); + const TDesC& Name(); + void SaveWlanDataL( TUint32 /*aIapId*/, CCommsDatabase& /*aCommsDb*/ ) {}; + + void UpdateLingerL(const TUint32 /*aIapId*/){}; + + private: // From CWPAPItemBase + + void VisitL(CWPCharacteristic& aElement); + void VisitL(CWPParameter& aElement); + void VisitLinkL( CWPCharacteristic& /*aLink*/ ) {}; + + private: // New methods + + /** + * C++ default constructor. + * @param aDefaultName The default name of an access point + */ + CWPAPLogicalProxy( CWPCharacteristic& aCharacteristic, + const TDesC& aDefaultName ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Data + + /// Pointer to data model parameter. Refs. + CWPParameter* iHomepage; + + /// Pointer to data model parameter. Refs. + CWPParameter* iName; + + /// Pointer to port object. Owns. + CWPAPPort* iPort; + + /// Array of physical proxy objects. Owns. + RPointerArray iPhysicalProxies; + + /// Characteristic + CWPCharacteristic& iCharacteristic; + + private: // For testing + + friend class T_CWPAPLogicalProxy; + friend class T_CWPAPAdapter; + friend class T_WPAPTestUtils; + }; + +#endif // CWPAPLOGICALPROXY_H + +// End of File \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPNapdef.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPNapdef.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,387 @@ +/* +* Copyright (c) 2002-2006 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: Class stores data for one accesspoint +* +*/ + + + + + +#ifndef CWPAPNAPDEF_H +#define CWPAPNAPDEF_H + +// INCLUDES +#include +#include +#include +#include "CWPAPItemBase.h" +#include "WPAPDefs.h" +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CWPAPPhysicalProxy; +class CApAccessPointItem; +class CWPParameter; +class CCommsDatabase; +class EAPSettings; +class CertificateEntry; +class RCmManagerExt; + + +// CLASS DECLARATION + +/** + * CEapTypeElement is arrray element for several EapTypes + */ +class CEapTypeElement: public CBase + { + public: + ~CEapTypeElement(); + TBuf8 iEapTypeString; + TBuf8 iEncapsulatingExpandedEapId; + EAPSettings* iEAPSettings; + CertificateEntry* iCertificate; + }; + +struct SECssID + { + CWPParameter* iSSSID; + CWPParameter* iSUSSID; + }; +/** + * CWPAPNapdef handles NAPDEF characteristics. + */ +class CWPAPNapdef : public CWPAPItemBase, private MWPVisitor + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aFollowingLink ETrue if the NAPDEF was reached + * via a link. + * @param aDefaultName The default name of an access point + * @param aLogicalCharacteristic The PXLOGICAL, if following a link from + * there, or NAPDEF, if a direct link to NAPDEF. + * @param aLink The NAPDEF characteristic + */ + static CWPAPNapdef* NewLC( TBool aFollowingLink, + const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic, + CWPCharacteristic& aLink ); + + /** + * Destructor. + */ + virtual ~CWPAPNapdef(); + + public: // From CWPAPItemBase + + /** + * @precondition characteristic must be set otherwise Panics. + */ + TBool ValidateL(); + + /** + * AddDataL + */ + void AddDataL( RCmConnectionMethodExt& aCmItem ); + + /** + * AddItemsL + */ + TInt AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ); + /** + * Name + */ + const TDesC& Name(); + + /** + * SaveWlanDataL + */ + void SaveWlanDataL( TUint32 aIapId, CCommsDatabase& aCommsDb ); + + /** + * UpdateLingerL from the ItemBase + */ + + void UpdateLingerL(const TUint32 aIapId); + + /** + * Set The Internet Parameter Indicator + */ + void SetInternetIndicator(TInt value); + + /** + * Get The Internet Parameter Indicator + */ + TInt GetInternetIndicator(); + + + private: // From MWPVisitor + + /** + * VisitL + */ + void VisitL( CWPCharacteristic& aElement ); + + /** + * VisitL + */ + void VisitL( CWPParameter& aElement ); + + /** + * VisitLinkL + */ + void VisitLinkL( CWPCharacteristic& /*aLink*/ ) {}; + + private: // New functions + + /** + * C++ default constructor. + * @param aFollowingLink ETrue if the NAPDEF was reached + * via a link. + * @param aDefaultName The default name of an access point + * @param aLogicalCharacteristic The PXLOGICAL, if following a link from + * there, or NAPDEF, if a direct link to NAPDEF. + */ + CWPAPNapdef( TBool aFollowingLink, + const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Writes a DNS address in either IPv4 or IPv6 format + * to an access point item. + * @param aAPItem The access point item + * @param aValue The DNS address to write + */ + void WriteDNSAddressL( RCmConnectionMethodExt& aCmItem, + const TDesC& aValue ); + + /** + * AddWlanDataL + */ + void AddWlanDataL( RCmConnectionMethodExt& aCmItem ); + + /** + * HandleWLanParameters + */ + void HandleWLanParametersL( CWPParameter& aParameter ); + + void HandleEAPParametersCCL( CWPParameter& aParameter ); + + /** + * ConvertAsciiToHex + */ + void ConvertAsciiToHex( const TDesC8& aSource, HBufC8*& aDest ); + + /** + * StrCopy + */ + void StrCopy( TDes8& aTarget, const TDesC& aSource ); + + /** + * Add linger value + */ + void AddLingerL( const TInt , const TInt ); + + /** + * Update linger value + */ + void UdateligerValueL(CWPParameter* aLinger); + /** + * Isalpha + */ + TBool Notalpha(const TDesC& aValue); + /** + * CheckIPv4values + */ + TBool CheckIPv4values(const TDesC& aValue ); + + /** + * CheckAddressPart + */ + TBool CheckAddressPart( TLex& aLex ); + + /** + * ConvertEAPStringToIds + */ + void ConvertEAPStringToIds(const TDesC& aEAPString, TDes8& aExpandedId, TUint& aId); + public: // new function + + /** + * NapId value + */ + const TDesC& NapId(); + /** + * Bearer value + */ + TUint Bearer(); + + /** + * SetCMManager + */ + void SetCMManager( RCmManagerExt* aCm ); + + private: // Data (Total ownership is assumed unless otherwise stated) + + enum TAPWEPKeyFormat + { + EAscii, // Ascii format + EHexadecimal // Hex format + }; + /// PXLOGICAL characteristic + CWPCharacteristic& iCharacteristic; + + /// The human-readable name of the connection. Refs. + CWPParameter* iConnectionName; + + /// The access point address. Refs. + CWPParameter* iAccesspointName; + + /// The access point address. Refs. + CWPParameter* iAccesspointNameType; + + /// The user name. Refs. + CWPParameter* iUserName; + + /// The password. Refs. + CWPParameter* iPassword; + + /// The IP address of the phone. Refs. + CWPParameter* iPhoneIPAddress; + + /// The network type of the access point. Refs. + CWPParameter* iIfNetworks; + + /// Array of name servers. Refs. + RPointerArray iNameServers; + + /// Number of IPv4 name servers found so far. + TInt iNumIPv4NameServers; + + /// Number of IPv6 name servers found so far. + TInt iNumIPv6NameServers; + + /// The bearer of the access point. + //TApBearerType iBearer; + TUint iBearer; + + // Received bearer was unsupported + TBool iBearerUnsupported; + + /// The PDP type of a GPRS access point. + TUint32 iPdpType; + + /// ETrue of secure authentication must be used. + TBool iSecureAuthentication; + + /// ETrue if the user must be prompted for password. + TBool iPromptPassword; + + /// ETrue if we arrived to NAPDEF via a link + TBool iFollowingLink; + +//JMan for WLan + + // Is WLAN supported (queried from Feature Manager) + TBool iWlanSupported; + + // The Network Access Point ID. + CWPParameter* iNapID; + + // WLAN characteristic parameters + + // The Primary Service Set Identifier name. + CWPParameter* iPriSSID; + + // The Used Primary Service Set Identifier name. + CWPParameter* iPriUSSID; + + // The Hidden Primary Service Set Identifier name. + CWPParameter* iPriHSSID; + + //for secssid + RPointerArray iSecSSID; + + + // The operation mode of the WLAN network. + TUint32 iNetMode; + + // The Security mode of the WLAN network. + TUint32 iSecMode; + + // The ascii formed pre-shared key. + CWPParameter* iWpaPresKeyAsc; + + // The wep authentication mode + CWPParameter* iWepAuthMode; + + // Indicates the default wepkey + TUint iDefaultWepKeyIndex; + + // WEPKEY characteristic parameters + + // The lenght of the wepkey + CWPParameter* iWepKeyLength; + + // The index of the wepkey + TUint iWepInd; + + // The wepkey data + CWPParameter* iWepKeyData; + + // Type of authentication (EAuthOpen, EAuthShared) + TWEPAuthentication iAuthentication; + + // Data of the key + TBuf8 iKeyData[KMaxNumberofKeys]; + + // Format of the key + TAPWEPKeyFormat iKeyFormat[KMaxNumberofKeys]; + + RPointerArray iEapTypeArray; + + // Pointer to Linger value parameter. Refs. + CWPParameter* iLinger; + + //linger value + TUint iLingerValue; + TBool iLingerFlag; + + // Pointer to the used CMManager, needed to save WLAN data + RCmManagerExt* iCm; + + //Internet parameter Indicator + TInt iInternetIndicator; + + private: // For testing usage. + friend class T_CWPAPNapdef; + friend class T_CWPAPAdapter; + friend class T_WPAPTestUtils; + }; + +#endif // CWPAPNAPDEF_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPPhysicalProxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPPhysicalProxy.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,136 @@ +/* +* 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: Defines a class, which holds physical proxy information. +* +*/ + + + + + +#ifndef CWPAPPHYSICALPROXY_H +#define CWPAPPHYSICALPROXY_H + +// INCLUDES + +#include +#include "CWPAPItemBase.h" +#include + +// DATA TYPES + +enum TWPAPPxAddrType + { + EPxAddrTypeIPv4 = 1, + EPxAddrTypeIPv6, + EPxAddrTypeUnsupported // (IPv6, E164, ALPHA are not supported) + }; + +// FORWARD DECLARATIONS + +class CWPAPLogicalProxy; +class CWPAPPort; +class CWPAPNapdef; + +// CLASS DECLARATION + +/** + * CWPAPPhysicalProxy contains physical proxy information + */ +class CWPAPPhysicalProxy : public CWPAPItemBase, private MWPVisitor + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aDefaultName The default name of an access point + * @param aCharacteristic The PXPHYSICAL characteristic. + * @param aPort Reference to a pointer containing PORT of a PXLOGICAL. + */ + static CWPAPPhysicalProxy* NewLC( const TDesC& aDefaultName, + CWPCharacteristic& aCharacteristic, + CWPCharacteristic& aLogicalCharacteristic, + CWPAPPort*& aPort ); + + /** + * Destructor. + */ + ~CWPAPPhysicalProxy(); + + public: // From CWPAPItemBase + + TBool ValidateL(); + void AddDataL( RCmConnectionMethodExt& aCmItem ); + TInt AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ); + const TDesC& Name(); + void SaveWlanDataL( TUint32 /*aIapId*/, CCommsDatabase& /*aCommsDb*/ ) {}; + void UpdateLingerL(const TUint32 /*aIapId*/){}; + + private: // From CWPAPItemBase. Override default implementation. + + void VisitL( CWPCharacteristic& aElement ); + void VisitL( CWPParameter& aElement ); + void VisitLinkL( CWPCharacteristic& aCharacteristic ); + + private: // New functions + + /** + * C++ default constructor. + * @param aDefaultName The default name of an access point + * @param aPort Reference to a pointer containing PORT of a PXLOGICAL. + */ + CWPAPPhysicalProxy( const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic, + CWPAPPort*& aPort ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Data + + /// Pointer to data model parameter. Refs. + CWPParameter* iProxyAddr; + + /// Pointer to data model parameter. Refs. + CWPParameter* iName; + + /// Proxy address type + TWPAPPxAddrType iPxAddrType; + + /// Pointer to port object. Owns. + CWPAPPort* iPort; + + /// Pointer to port object owned by logical proxy. Refs. + CWPAPPort*& iLogicalPort; + + /// Napdefs linked to by PXPHYSICAL + RPointerArray iNapdefs; + + /// Pointer to characteristic + CWPCharacteristic& iLogicalCharacteristic; + + private: // For testing + + friend class T_CWPAPLogicalProxy; + friend class T_CWPAPAdapter; + friend class T_WPAPTestUtils; + }; + +#endif // CWPAPPHYSICALPROXY_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPPort.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/CWPAPPort.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,110 @@ +/* +* 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: Defines a class, which holds proxy port information. +* +*/ + + + + + +#ifndef CWPAPPORT_H +#define CWPAPPORT_H + +// INCLUDES + +#include +#include "CWPAPItemBase.h" + +// FORWARD DECLARATIONS + +class CApAccessPointItem; + +// CLASS DECLARATION + +/** + * CWPAPPort contains port information + */ +class CWPAPPort : public CWPAPItemBase, private MWPVisitor + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aCharacteristic The PORT characteristic + */ + static CWPAPPort* NewLC( CWPCharacteristic& aCharacteristic ); + + /** + * Destructor. + */ + virtual ~CWPAPPort(); + + public: // From CWPAPItemBase + + TBool ValidateL(); + void AddDataL( RCmConnectionMethodExt& aCmItem ); //CMManager + TInt AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ); + const TDesC& Name(); + void SaveWlanDataL( TUint32 /*aIapId*/, CCommsDatabase& /*aCommsDb*/ ) {}; + void UpdateLingerL(const TUint32 /*aIapId*/){}; + + private: // From MWPVisitor + + void VisitL(CWPCharacteristic& aCharacteristic); + void VisitL(CWPParameter& aParameter); + void VisitLinkL( CWPCharacteristic& /*aLink*/ ) {}; + + private: // New functions + + /** + * Constructor. + */ + CWPAPPort(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Helper method to set the internal values. + * @param aConnectionSecurity sets value for iConnectionSecurity. + * @param aSessionMode sets value for iSessionMode. + * @param aReceivedField marks the field as received + */ + void SetValues( TBool aConnectionSecurity, + TInt aSessionMode, + TMarkedField aReceivedField ); + + private: // Data + + /// ETrue if secure connection should be established + TBool iConnectionSecurity; + /// Session mode for WAP connections: connection oriented/less. + TInt iSessionMode; + /// Pointer to port number parameter. Refs. + CWPParameter* iPortNbr; + + private: + friend class T_CWPAPProxyData; + friend class T_CWPAPAdapter; + friend class T_WPAPTestUtils; + }; + +#endif // CWPAPPORT_H + +// End of File \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/ProvisioningDebug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/ProvisioningDebug.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,194 @@ +/* +* Copyright (c) 2005 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: This file defines logging macros for Provisioning +* +*/ + + + + + + +#ifndef PROVISIONINGDEBUG_H +#define PROVISIONINGDEBUG_H + +#include +#include + +//Examples +//FLOG( _L( "[Provisioning] ProvisioningEngine::ConstructL:" ) ); +//FTRACE(RDebug::Print(_L("[Provisioning] ProvisioningEngine::ConstructL: err (%d)"), err)); +#ifdef _DEBUG + +const TInt KBTHexDumpWidth=16; +const TInt KBTLogBufferSize=100; +const TText KFullStopChar='.'; + +_LIT(KBTFirstFormatString,"%04x: "); +_LIT(KBTSecondFormatString,"%02x "); +_LIT(KBTThirdFormatString,"%c"); +_LIT(KBTThreeSpaces," "); +_LIT(KBTSeparator," "); + +inline void HexDump(const TUint8* aPtr, TInt aLen) + { + if( aPtr != NULL ) + { + TBuf line; + TInt i = 0; + + while (aLen>0) + { + TInt n = (aLen>KBTHexDumpWidth ? KBTHexDumpWidth : aLen); + line.AppendFormat(KBTFirstFormatString,i); + TInt j; + for (j=0; j126 || aPtr[i+j]==37) ? KFullStopChar : aPtr[i+j]); + + RDebug::Print(line); + + line.Zero(); + aLen-=n; + i+=n; + } + } + } + + +// ------------------------------------------ + +inline void FHex(const TUint8* aPtr, TInt aLen) + { + HexDump( aPtr, aLen ); + } + +// ------------------------------------------ + +inline void FHex(const TDesC8& aDes) + { + RFs fs; + RFile file; + _LIT( TmpOutputName, "C:\\provisioning.wbxml" ); + fs.Connect(); + CleanupClosePushL(fs); + //if( aFile.Open(aFileSession, TmpOutputName(), EFileShareAny|EFileWrite) == KErrNone ) + file.Replace(fs, TmpOutputName(), EFileShareAny|EFileWrite); + CleanupClosePushL(file); + TInt pos(0); + file.Seek(ESeekEnd, pos); +// HBufC8* tmp = HBufC8::NewLC(line.Size()); +// TPtr8 ptr = tmp->Des(); +// ptr.Copy(line); + TInt result = file.Write(aDes); + CleanupStack::PopAndDestroy(2); // file, fs +/////////////////////////////////////////////////// + +// HexDump(aDes.Ptr(), aDes.Length()); + } + +// =========================================================================== +#ifdef __WINS__ // File logging for WINS +// =========================================================================== +#include +#include +#include + +_LIT( KLogFile, "Provisioning.log" ); +_LIT( KLogDirFullName, "c:\\logs\\" ); +_LIT( KLogDir, "Provisioning" ); + +#define FLOG( a ) { FPrint(a); } +#define FTRACE( a ) { a; } + +// Declare the FPrint function +// +inline void FPrint( const TRefByValue aFmt, ... ) + { + VA_LIST list; + VA_START( list, aFmt ); + RFileLogger::WriteFormat( KLogDir, + KLogFile, + EFileLoggingModeAppend, + aFmt, + list ); + } + +// =========================================================================== +#else // RDebug logging for target HW +// =========================================================================== +/*#include + +#define FLOG( a ) { RDebug::Print( a ); } +#define FTRACE( a ) { a; } + +*/ + +//////////////MIKA/////////////// +#include +#include +#include + +_LIT( KLogFile, "Provisioning.log" ); +_LIT( KLogDirFullName, "c:\\logs\\" ); +_LIT( KLogDir, "Provisioning" ); + +#define FLOG( a ) { FPrint(a); } +#define FTRACE( a ) { a; } + +// Declare the FPrint function +// +inline void FPrint( const TRefByValue aFmt, ... ) + { + VA_LIST list; + VA_START( list, aFmt ); + RFileLogger::WriteFormat( KLogDir, + KLogFile, + EFileLoggingModeAppend, + aFmt, + list ); + } + +//////////////MIKA/////////////// + + +#endif //__WINS__ + +// =========================================================================== +#else // // No loggings --> Reduced binary size +// =========================================================================== +#define FLOG( a ) +#define FTRACE( a ) + +#endif // _DEBUG + +///////// Kailash /////////////////////// +inline void LOGX(TInt aSource) + { + HBufC *iMyBufNumber = HBufC::NewLC(255); + TPtr bufNumberPtr(iMyBufNumber->Des()); + bufNumberPtr.FillZ(); + bufNumberPtr.AppendFormat(_L("%d"),aSource); + FLOG(iMyBufNumber->Des()); + CleanupStack::PopAndDestroy(); + } +///////// Kailash /////////////////////// + +#endif // PROVISIONINGDEBUG_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/WPAPAdapter.pan --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/WPAPAdapter.pan Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,40 @@ +/* +* 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: Panic codes for Provisioning accesspoint adapter +* +*/ + + + + + +#ifndef WPAPADAPTER_PAN +#define WPAPADAPTER_PAN + +enum TWPAPAdapterPanicCodes + { + EDebugCode = 1000, + EIllegalCharacteristic, + EIllegalState, + EIndexOutOfBounds, + ENullPointer, + EPreConditionFail, + EPostConditionFail, + ESaveOperationAlreadyActive, + ENoUniqueNameResolved + }; + +GLDEF_C void Panic( TInt aPanic ); + +#endif \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/WPAPDefs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/WPAPDefs.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,223 @@ +/* +* Copyright (c) 2005-2006 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: Definitions to WPAPAdapter +* +*/ + + + + + +#ifndef WPAPDEFS_H +#define WPAPDEFS_H + +#include + +// CONSTANTS + +const TUint32 KMaxWEPKeyLength = 29; +// The maximum WPA Pre-Shared Key length. +const TUint KMaxWpaPskLength = 63; +// same as connection name max length in Prov req. +const TInt KNameMaxLength = 30; +const TInt KTwoNameServersPerNetworkType = 2; +// The maximum length of key data +const TUint KMaxLengthOfKeyData = 58; +const TUint KMaxLengthOfEapList = 50; +const TUint KExpandedEapIdLength = 8; +// Number of keys +const TUint KMaxNumberofKeys = 4; + +const TInt KInitialArraySize = 3; + +const TUint KMaxSubKeyLenght = 255; + +_LIT(KIPV4, "IPV4"); +_LIT(KIPV6, "IPV6"); +_LIT(KCLWSP, "CL-WSP"); +_LIT(KCOWSP, "CO-WSP"); +_LIT(KCLSECWSP, "CL-SEC-WSP"); +_LIT(KCOSECWSP, "CO-SEC-WSP"); +_LIT(K9200, "9200"); +_LIT(K9201, "9201"); +_LIT(K9202, "9202"); +_LIT(K9203, "9203"); +_LIT(K80, "80"); +_LIT(K8080, "8080"); +_LIT(K443, "443"); + +_LIT(KGSMGPRS, "GSM-GPRS"); + +//Characteristic WLAN +_LIT(KWLAN, "WLAN"); +_LIT(PRISSID, "PRI-SSID"); +_LIT(PRIUSSID, "PRI-U-SSID"); +_LIT(PRIHSSID, "PRI-H-SSID"); + +//Characteristic WLAN/SEC-SSID +_LIT(SECSSID, "SEC-SSID"); +_LIT(SSSID, "S-SSID"); +_LIT(SUSSID, "S-U-SSID"); + +_LIT(NETMODE, "NETMODE"); +_LIT(SECMODE, "SECMODE"); + +//Characteristic WLAN/EAP +_LIT(KEAP, "EAP"); +_LIT(EAPTYPE, "EAPTYPE"); +_LIT(EAPUSERNAME, "USERNAME"); +_LIT(EAPPASSWORD, "PASSWORD"); +_LIT(EAPREALM, "REALM"); +_LIT(EAPUSEPSEUD, "USE-PSEUD"); +_LIT(EAPMAXAUTHS, "MAXAUTHS"); +_LIT(EAPENCAPS, "ENCAPS"); +_LIT(EAPVERSERREALM, "VER-SER-REALM"); +_LIT(EAPCLIENTHAUTH, "CLIENTH-AUTH"); +_LIT(EAPSESVALTIME, "SES-VAL-TIME"); +_LIT(EAPCIPSUIT, "CIP-SUIT"); +_LIT(EAPPEAPV0, "PEAP-V0"); +_LIT(EAPPEAPV1, "PEAP-V1"); +_LIT(EAPPEAPV2, "PEAP-V2"); + +//Characteristic WLAN/EAP/CERT +_LIT(KCERT, "CERT"); +_LIT(EAPISSNAME, "ISS-NAME"); +_LIT(EAPSUBNAME, "SUB-NAME"); +_LIT(EAPCERTTYPE, "CERT-TYPE"); +_LIT(EAPSERNUM, "SER-NUM"); +_LIT(EAPSUBKEYID, "SUB-KEY-ID"); +_LIT(EAPTHUMBPRINT, "THUMBPRINT"); + +_LIT(EAPCERTUSER, "USER"); +_LIT(EAPCERTCA, "CA"); + +_LIT(WPAPRESKEYASC, "WPA-PRES-KEY-ASC"); +_LIT(WPAPRESKEYHEX, "WPA-PRES-KEY-HEX"); +_LIT(DEFAULTWEPIND, "WEPKEYIND"); +_LIT(WEPAUTHMODE, "WEPAUTHMODE"); + +//Characteristic WLAN/WEPKEY +_LIT(KWEP, "WEPKEY"); +_LIT(WEPKEYLENGTH, "LENGTH"); +_LIT(WEPKEYINDEX, "INDEX"); +_LIT(WEPKEYDATA, "DATA"); + +_LIT(KPAP, "PAP"); +_LIT(KCHAP, "CHAP"); +_LIT(KMD5, "MD5"); +_LIT(KANALOGMODEM, "ANALOG-MODEM"); +_LIT(KV110, "V.110"); +_LIT(KV120, "V.120"); +_LIT(KAUTOBAUDING, "AUTOBAUDING"); +_LIT(K9600, "9600"); +_LIT(K14400, "14400"); +_LIT(K19200, "19200"); +_LIT(K28800, "28800"); +_LIT(K38400, "38400"); +_LIT(K43200, "43200"); +_LIT(KIPv6, "IPv6"); +_LIT(KIPv4, "IPv4"); +_LIT(KAddrTypeE164, "E164"); +_LIT(KAddrTypeAPN, "APN"); + +_LIT(KADHOC, "ADHOC"); + +_LIT(KWEPSEC, "WEP"); +_LIT(KWPASEC, "WPA"); +_LIT(KWPA2SEC, "WPA2"); +_LIT(K8021XSEC, "8021X"); +_LIT(KWPAPRESSEC, "WPA-PRESHARED-KEY"); +_LIT(KWPA2PRESSEC, "WPA2-PRESHARED-KEY"); + + +_LIT(KEAPSIM, "EAP-SIM"); +_LIT(KEAPAKA, "EAP-AKA"); +_LIT(KEAPTLS, "EAP-TLS"); +_LIT(KEAPPEAP, "EAP-PEAP"); +_LIT(KEAPTTLS, "EAP-TTLS"); +_LIT(KEAPLEAP, "EAP-LEAP"); +_LIT(KEAPMSCHAPV2, "EAP-MSCHAPV2"); +_LIT(KEAPGTC, "EAP-GTC"); +_LIT(KEAPFAST, "EAP-FAST"); + +/* +_LIT8(KEapNone,"0"); +_LIT8(KEapGtc,"6"); +_LIT8(KEapTls, "13"); +_LIT8(KEapLeap,"17"); +_LIT8(KEapSim,"18"); +_LIT8(KEapTtls,"21"); +_LIT8(KEapAka,"23"); +_LIT8(KEapPeap,"25"); +_LIT8(KEapMschapv2,"26"); +_LIT8(KEapSecurid,"32"); +_LIT8(KEapFast,"43"); +*/ +_LIT8(KEapAll,"-017,-018,-023,-013,-025,-021,-043" ); + +const TUint8 KEapNoneId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +const TUint8 KEapTlsTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d}; +const TUint8 KEapGtcTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06}; +const TUint8 KEapLeapTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11}; +const TUint8 KEapSimTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12}; +const TUint8 KEapTtlsTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15}; +const TUint8 KEapAkaTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17}; +const TUint8 KEapPeapTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19}; +const TUint8 KEapMschapv2TypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A}; +const TUint8 KEapSecuridTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20}; +const TUint8 KEapFastTypeId[] = {0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B}; + + +const TUint8 KEapPlus = '+'; + +_LIT(KWEPAUTHMODEOPEN, "OPEN"); +_LIT(KWEPAUTHMODESHARED, "SHARED"); + +enum TWEPAuthentication + { + EAuthOpen, // Open authentication + EAuthShared // Shared authentication + }; + +// DATA TYPES + +/** +* Data structure for storing a WEP key. +*/ +struct TWep + { + /** Specifies which key to add or remove. Range: 0-3 */ + TUint32 KeyIndex; + /** The length of KeyMaterial in bytes. Range: 0-29 */ + TUint32 KeyLength; + /** Array that stores the WEP key. */ + TUint8 KeyMaterial[KMaxWEPKeyLength]; + }; + +/** +* Data structure for storing a WPA Pre-Shared Key. +*/ +struct TWpaPsk + { + /** The length of KeyMaterial in bytes. Range: 0-63 */ + TUint KeyLength; + /** Array of that stores the WPA Pre-Shared Key. */ + TUint8 KeyMaterial[KMaxWpaPskLength]; + }; + + + +#endif // WPAPDEFS_H + +// End of File. diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/WPAPSharedDataKeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/WPAPSharedDataKeys.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,46 @@ +/* +* 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: Shared data keys for operator AP settings +* +*/ + + + + + +#ifndef WPAPSHAREDDATAKEYS_H +#define WPAPSHAREDDATAKEYS_H + +// CONSTANTS + +// ----------------------------------------------------------------------------- +// AP Operator setting 0x101F466B +// ----------------------------------------------------------------------------- + +const TUid KSDUidOperatorSettings = {0x101F466B}; + +/** +* Modification of locked APs via OTA allowed +* +* Possible values: +* 0 (no) +* 1 (yes) +* +* Default value: 0 +**/ +_LIT( KOsOtaModificationAllowed, "A" ); + +#endif // WPAPSharedDataKeys_H + +// End of File \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Inc/WPAPUtil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Inc/WPAPUtil.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,49 @@ +/* +* 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: Class offers common utility methods. +* +*/ + + + + + +#ifndef WPAPUTIL_H +#define WPAPUTIL_H + +// INCLUDES + +#include + +// CLASS DECLARATION + +/** + * WPAPUtil offers common helper methods. + */ +class WPAPUtil + { + public: // New methods + + /** + * Loads a specified resource string from resource file. + * @param aResourceId is of a resource string. + * @return pointer to loaded descriptor. + */ + static HBufC* ReadHBufCL( TInt aResourceId ); + + }; + +#endif // WPAPUTIL_H + +// End of File \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAccesspointItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAccesspointItem.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,320 @@ +/* +* 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: Class stores data for one accesspoint +* +*/ + + + +// INCLUDE FILES + +#include "CWPAPAccesspointItem.h" // Own header + +#include +#include +#include + + +#include +#include // Feature manager +#include // Leave code for protected +#include "CWPAPItemBase.h" +#include "CWPAPNapdef.h" +#include "WPAPAdapter.pan" +#include "ProvisioningDebug.h" +#include +#include +#include +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::NewLC +// ----------------------------------------------------------------------------- +CWPAPAccesspointItem* CWPAPAccesspointItem::NewLC( + const TDesC& aDefaultName, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy, + CWPAPItemBase* aNapdef, + CWPCharacteristic& aCharacteristic ) + { + CWPAPAccesspointItem* self = + new(ELeave) CWPAPAccesspointItem( aDefaultName, + aLogicalProxy, + aPhysicalProxy, + aNapdef, + aCharacteristic ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +CWPAPAccesspointItem::~CWPAPAccesspointItem() + { + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::Name +// ----------------------------------------------------------------------------- +// +const TDesC& CWPAPAccesspointItem::Name() const + { + if ( iLogicalProxy && iLogicalProxy->Name() != KNullDesC ) + { + return iLogicalProxy->Name(); + } + else if( iPhysicalProxy && iPhysicalProxy->Name() != KNullDesC ) + { + return iPhysicalProxy->Name(); + } + else if( iNapdef && iNapdef->Name() != KNullDesC ) + { + return iNapdef->Name(); + } + else + { + return iDefaultName; + } + } +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::NapDef +// ----------------------------------------------------------------------------- +// +CWPAPItemBase* CWPAPAccesspointItem::NapDef() + { + return iNapdef; + } + + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::SetCMManager +// ----------------------------------------------------------------------------- +// +void CWPAPAccesspointItem::SetCMManager( RCmManagerExt* aCm ) + { + iCmManager = aCm; + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::Characteristic +// ----------------------------------------------------------------------------- +// +TInt CWPAPAccesspointItem::Characteristic() + { + return iCharacteristic.Type(); + } + + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::SaveL +// ----------------------------------------------------------------------------- +// +TUint32 CWPAPAccesspointItem::SaveL( CCommsDatabase& aCommsDb ) + { + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::SaveL:" ) ); + + if ( FeatureManager::FeatureSupported( KFeatureIdSettingsProtection ) ) + { + // This protection check is no longer needed since CMManager + // initiates the transactions to the database + /*if( CApProtHandler::IsTableProtectedL( &aCommsDb ) ) + { + // Table protected -> leave with specific code. + User::Leave( EWPAccessPointsProtected ); + }*/ + } + + TUint32 iap = 0; + TRAPD( err,iap = StoreL( aCommsDb ) ); + if( err == KErrLocked ) + { + err = EWPCommsDBLocked; + } + User::LeaveIfError( err ); + return iap; + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::StoreL +// ----------------------------------------------------------------------------- +// +TUint32 CWPAPAccesspointItem::StoreL( CCommsDatabase& aCommsDb ) + { + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL:" ) ); + + // CMManager + // Create the cmIten, give the bearer as parameter if it is available + RCmConnectionMethodExt cmItem; + TBool created = EFalse; + TUint bearer; + TInt err(KErrNone); + + // If the NapDef object exists and the bearer is defined, then we can + // create the connection method using the bearer + if ( iNapdef != NULL ) + { + bearer = static_cast(iNapdef)->Bearer(); + if ( bearer != 0 ) + { + cmItem = iCmManager->CreateConnectionMethodL(bearer); + created = ETrue; + } + } + + // If the bearer id is not known we will use packet data + if ( !created) + { + cmItem = iCmManager->CreateConnectionMethodL(KUidPacketDataBearerType); + } + // Create the connection method into the DB + TRAP( err,cmItem.UpdateL() ); + // Leave if the creation fails for some reason + if(err!=KErrNone) + { + User::Leave(err); + } + + if( iNapdef ) + { + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: napdef" ) ); + + // CMManager + TRAP (err, iNapdef->AddDataL( cmItem )); + TRAP ( err,cmItem.UpdateL() ); + // Leave if the update of the parameters fails + if(err!=KErrNone) + { + User::Leave(err); + } + } + + if( iLogicalProxy ) + { + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: logicalproxy" ) ); + // CMManager + iLogicalProxy->AddDataL( cmItem ); + TRAP( err,cmItem.UpdateL() ); + // Leave if the update of the parameters fails + if(err!=KErrNone) + { + User::Leave(err); + } + } + + if( iPhysicalProxy ) + { + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: physicalproxy" ) ); + // CMManager + iPhysicalProxy->AddDataL( cmItem ); + TRAP( err,cmItem.UpdateL() ); + // Leave if the update of the parameters fails + if(err!=KErrNone) + { + User::Leave(err); + } + } + + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: cmItem.UpdateL" ) ); + + // CMManager + iUid = cmItem.GetIntAttributeL( CMManager::ECmWapId ); + + TInt test( KErrNone ); + // Update parameter data to CM + TRAP( test,cmItem.UpdateL() ); + FTRACE(RDebug::Print(_L("[AccessPointAdapter] CWPAPAccesspointItem::StoreL: UpdateL err: %d"), test )); + + TUint32 cmId = cmItem.GetIntAttributeL( CMManager::ECmId ); + cmItem.Close(); + + if( iNapdef ) + { + iNapdef->UpdateLingerL(iUid()); + } + + + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: SaveWlanDataL" ) ); + if( iNapdef ) + { + // Give CMManager pointer and save WLAN data + static_cast(iNapdef)->SetCMManager( iCmManager ); + iNapdef->SaveWlanDataL( cmId, aCommsDb ); + } + + + TInt i( 0 ); + TPtrC8 data( iCharacteristic.Data(i) ); + while( data != KNullDesC8 ) + { + i++; + data.Set( iCharacteristic.Data(i) ); + } + + iCharacteristic.SetDataL( iUid, i ); + + FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: done" ) ); + return iUid(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::Uid +// ----------------------------------------------------------------------------- +// +const TDesC8& CWPAPAccesspointItem::Uid() const + { + return iUid; + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::DeleteUidData +// ----------------------------------------------------------------------------- +// +void CWPAPAccesspointItem::DeleteUidData() const + { + iCharacteristic.DeleteAllData(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::CWPAPAccesspointItem +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPAccesspointItem::CWPAPAccesspointItem( const TDesC& aDefaultName, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy, + CWPAPItemBase* aNapdef, + CWPCharacteristic& aCharacteristic ) + : iDefaultName( aDefaultName ), + iNapdef( aNapdef ), + iPhysicalProxy( aPhysicalProxy ), + iLogicalProxy( aLogicalProxy ), + iCharacteristic( aCharacteristic ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPAccesspointItem::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPAccesspointItem::ConstructL() + { + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAdapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAdapter.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,452 @@ +/* +* 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: Main class for handling provisioning accesspoint data +* +*/ + + + +// INCLUDE FILES + +#include "CWPAPAdapter.h" // Own header + +#include +#include +#include +#include // Feature manager +#include "WPAPUtil.h" +#include "CWPAPAccesspointItem.h" +#include "CWPAPNapdef.h" +#include "CWPAPLogicalProxy.h" +#include "WPAPAdapter.pan" +#include "CWPLog.h" +#include "ProvisioningDebug.h" +#include "WPAPDefs.h" +#include +#include +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::CWPAPAdapter +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPAdapter::CWPAPAdapter() : CWPAdapter(), + iLinks( KInitialArraySize ), + iDataItems( KInitialArraySize ), + iSaveItems( KInitialArraySize ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::ConstructL() + { + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::ConstructL:" ) ); + + iTitle = WPAPUtil::ReadHBufCL( R_QTN_SM_WML_ACCESSPOINTS ); + iDefaultName = WPAPUtil::ReadHBufCL( R_QTN_SM_WAPAP_NAME ); + + FeatureManager::InitializeLibL(); + + iCmManager = new RCmManagerExt; + iCmManager->OpenL(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWPAPAdapter* CWPAPAdapter::NewL() + { + CWPAPAdapter* self = new(ELeave) CWPAPAdapter; + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +CWPAPAdapter::~CWPAPAdapter() + { + // Contents of iLinks array are not owned + iLinks.Close(); + + iDataItems.ResetAndDestroy(); + iDataItems.Close(); + + iSaveItems.ResetAndDestroy(); + iSaveItems.Close(); + iAPValue.Reset(); + + delete iTitle; + delete iDefaultName; + delete iCommsDb; + + if ( iCmManager != NULL ) + { + iCmManager->Close(); + delete iCmManager; + } + + FeatureManager::UnInitializeLib(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::ItemCount +// ----------------------------------------------------------------------------- +// +TInt CWPAPAdapter::ItemCount() const + { + LOG1("Number of Access points: %d", iSaveItems.Count() ); + return iSaveItems.Count(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::SummaryTitle +// ----------------------------------------------------------------------------- +// +const TDesC16& CWPAPAdapter::SummaryTitle(TInt aIndex) const + { + __ASSERT_DEBUG( aIndex >= 0 && aIndex < iSaveItems.Count(), + Panic( EIndexOutOfBounds )); + // The title is always the same. + return *iTitle; + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::SummaryText +// ----------------------------------------------------------------------------- +// +const TDesC16& CWPAPAdapter::SummaryText(TInt aIndex) const + { + __ASSERT_DEBUG( aIndex >= 0 && aIndex < iSaveItems.Count(), + Panic( EIndexOutOfBounds )); + return iSaveItems[ aIndex ]->Name(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::DetailsL +// ----------------------------------------------------------------------------- +// +TInt CWPAPAdapter::DetailsL( TInt /*aItem*/, MWPPairVisitor& /*aVisitor*/) + { + // Detail view is a feature for later release. + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::SaveL +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::SaveL( TInt aItem ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::SaveL:" ) ); + + __ASSERT_DEBUG(aItem >= 0 && + aItem < iSaveItems.Count(), + Panic( EPreConditionFail )); + + TBool internetparmfound = EFalse; + TInt err1; + + for (TInt i = 0; i < iAPValue.Count(); i++) + { + if (aItem == iAPValue[i]) + { + internetparmfound = ETrue; + break; + } + + } + + // Create the commsdb when the save is initiated first time. + // This stays alive until the adapter is destroyed. + if ( !iCommsDb ) + { + iCommsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); + } + + if( iAlreadySavedOnce && aItem == 0 ) + { + for( TInt i( 0 ); i < iSaveItems.Count(); i++ ) + { + iSaveItems[i]->DeleteUidData(); + } + } + + // ********************************************************************************** // + // ***** check that the napdefs with a certain id are only saved once SKSS-79REKH *** // + // ********************************************************************************** // + TBool found = EFalse; + if (iSaveItems[ aItem ]->Characteristic() == KWPNapDef) + { + + // Get the napdef pointer from the saved items and check that it is not NULL + CWPAPNapdef* napdef = static_cast(iSaveItems[ aItem ]->NapDef()); + + if ( napdef ) + { + // Store the id of the NAP that is being saved now + TBufC napId = napdef->NapId(); + + // check whether napdef with same id has been already saved. + for ( TInt j( 0 ); j < aItem; j++ ) + { + // If a napdef is not in question we can move to the next item + if ( iSaveItems[ j ]->Characteristic() != KWPNapDef) + { + continue; + } + + // Store the pointer to to comparison napdef and make the nap id check if + // the pointer is other than NULL + CWPAPNapdef* tmpNap = static_cast(iSaveItems[ j ]->NapDef()); + + if ( tmpNap != NULL ) + { + // If the id was found, the napdef with this id is already stored + if ( tmpNap->NapId() == napId ) + { + found = ETrue; + break; + } + } + } + } + } + + // if access point is not already stored, then we store it + if ( !found ) + { + TUint32 iap = 0; + if (internetparmfound) + { + // Give pointer to cm manager to access point item + iSaveItems[ aItem ]->SetCMManager(iCmManager); + TRAPD(err,iap = iSaveItems[ aItem ]->SaveL( *iCommsDb)); + if(err!=KErrNone) + { + User::LeaveIfError(err); + } + + TRAP(err1, WPAdapterUtil::SetAPDetailsL(iap)); + if (err1 == KErrNone) + { + iAlreadySavedOnce = ETrue; + } + } + + if (!internetparmfound || (internetparmfound && err1 != KErrNone)) + { + // Give pointer to cm manager to access point item + iSaveItems[ aItem ]->SetCMManager(iCmManager); + TRAPD(err,iap = iSaveItems[ aItem ]->SaveL( *iCommsDb)); + if(err!=KErrNone) + { + User::LeaveIfError(err); + } + iAlreadySavedOnce = ETrue; + } + } + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::SaveL: done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::CanSetAsDefault +// ----------------------------------------------------------------------------- +// +TBool CWPAPAdapter::CanSetAsDefault( TInt /*aItem*/ ) const + { + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::SetAsDefault +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::SetAsDefaultL( TInt /*aItem*/ ) + { + // This shouldn't be called because CanSetAsDefault + // always returns EFalse. + Panic( EPreConditionFail ); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::VisitL( CWPCharacteristic& aCharacteristic ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::VisitL:" ) ); + + TInt type = aCharacteristic.Type(); + + if ( type == KWPApplication ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::VisitL: KWPApplication" ) ); + aCharacteristic.AcceptL( *this ); + } + // Check every NAPDEF characteristic. If it contains INTERNET + // parameter then new access point is created from NAPDEF data. + else if ( type == KWPNapDef && !IsAlreadyLinked( aCharacteristic ) ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::VisitL: KWPNapDef" ) ); + CWPAPNapdef* item = CWPAPNapdef::NewLC( EFalse, + *iDefaultName, + aCharacteristic, + aCharacteristic ); + if( item->AddItemsL( iSaveItems, NULL, NULL ) > 0 ) + { + User::LeaveIfError( iLinks.InsertInAddressOrder( &aCharacteristic ) ); + } + User::LeaveIfError( iDataItems.Append( item ) ); + + + TInt val = item->GetInternetIndicator(); + if (val != -1) + { + iAPValue.Append(val); + } + CleanupStack::Pop( item ); + } + FLOG( _L( "[AccesspointAdapter] CWPAPAdapter::VisitL:done" ) ); + + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::VisitL( CWPParameter& /*aParameter*/ ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::VisitLinkL +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::VisitLinkL( CWPCharacteristic& aCharacteristic ) + { + if( !IsAlreadyLinked( aCharacteristic ) ) + { + switch( aCharacteristic.Type() ) + { + // This is link in APPLICATION characteristic to certain NAPDEF or LOGICAL proxy + case KWPPxLogical: + { + CWPAPLogicalProxy* item = CWPAPLogicalProxy::NewLC( + *iDefaultName, aCharacteristic ); + item->AddItemsL( iSaveItems, NULL, NULL ); + User::LeaveIfError( iLinks.InsertInAddressOrder( &aCharacteristic ) ); + User::LeaveIfError( iDataItems.Append( item ) ); + CleanupStack::Pop( item ); + break; + } + case KWPNapDef: + { + CWPAPNapdef* item = CWPAPNapdef::NewLC( ETrue, + *iDefaultName, + aCharacteristic, + aCharacteristic ); + item->AddItemsL( iSaveItems, NULL, NULL ); + User::LeaveIfError( iLinks.InsertInAddressOrder( &aCharacteristic ) ); + User::LeaveIfError( iDataItems.Append( item ) ); + CleanupStack::Pop( item ); + break; + } + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::ContextExtension +// ----------------------------------------------------------------------------- +// +TInt CWPAPAdapter::ContextExtension( MWPContextExtension*& aContextExtension ) + { + aContextExtension = this; + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::SaveDataL +// ----------------------------------------------------------------------------- +// +const TDesC8& CWPAPAdapter::SaveDataL( TInt aIndex ) const + { + return iSaveItems[ aIndex ]->Uid(); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::DeleteL +// ----------------------------------------------------------------------------- +// +void CWPAPAdapter::DeleteL( const TDesC8& aSaveData ) + { + if ( !iCommsDb ) + { + iCommsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); + } + + TPckgBuf uid; + if( aSaveData.Length() == uid.MaxLength() ) + { + LOG1( "DeleteL: Deleting %08x", uid() ); + uid.Copy( aSaveData ); + + // CMManager + TRAPD( err, iCmManager->ConnectionMethodL( uid()).DeleteL() ); + + LOG1( "DeleteL: Result: %d", err ); + if( err == KErrLocked ) + { + User::Leave( EWPCommsDBLocked ); + } + else if ( err != KErrNone && err != KErrNotFound ) + { + User::Leave( err ); + } + } + + //CleanupStack::PopAndDestroy( dataHandler ); + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::Uid +// ----------------------------------------------------------------------------- +// +TUint32 CWPAPAdapter::Uid() const + { + return iDtor_ID_Key.iUid; + } + +// ----------------------------------------------------------------------------- +// CWPAPAdapter::IsAlreadyLinked +// ----------------------------------------------------------------------------- +// +TBool CWPAPAdapter::IsAlreadyLinked( CWPCharacteristic& aCharacteristic ) + { + return iLinks.FindInAddressOrder( &aCharacteristic ) >= 0; + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPItemBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPItemBase.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,62 @@ +/* +* 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: Defines a base class for all the items in WPAPAdapter +* +*/ + + + + + +// INCLUDE FILES + +#include "CWPAPItemBase.h" +#include "WPAPAdapter.pan" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +CWPAPItemBase::~CWPAPItemBase() + { + } + +// ----------------------------------------------------------------------------- +// C++ constructor +// ----------------------------------------------------------------------------- +CWPAPItemBase::CWPAPItemBase( const TDesC& aDefaultName ) + : iDefaultName( aDefaultName ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPItemBase::MarkReceived +// ----------------------------------------------------------------------------- +// +void CWPAPItemBase::MarkReceived( TMarkedField aField ) + { + iReceivedFieldsFlags |= aField; + } + +// ----------------------------------------------------------------------------- +// CWPAPItemBase::IsReceived +// ----------------------------------------------------------------------------- +// +TBool CWPAPItemBase::IsReceived( TMarkedField aField ) + { + return ( iReceivedFieldsFlags & aField ); + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPLogicalProxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPLogicalProxy.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,269 @@ +/* +* 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: Defines a class, which holds logical proxy information. +* +*/ + + + + + +// INCLUDE FILES + +#include "CWPAPLogicalProxy.h" +#include +#include +#include +#include "CWPLog.h" +#include "CWPAPPhysicalProxy.h" +#include "CWPAPPort.h" +#include "WPAPAdapter.pan" +#include "WPAPDefs.h" +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWPAPLogicalProxy* CWPAPLogicalProxy::NewLC( + const TDesC& aDefaultName, + CWPCharacteristic& aCharacteristic ) + { + CWPAPLogicalProxy* self = new(ELeave) CWPAPLogicalProxy( aCharacteristic, + aDefaultName ); + CleanupStack::PushL( self ); + self->ConstructL(); + aCharacteristic.AcceptL( *self ); + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +CWPAPLogicalProxy::~CWPAPLogicalProxy() + { + delete iPort; + iPhysicalProxies.ResetAndDestroy(); + iPhysicalProxies.Close(); + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::ValidateL +// ----------------------------------------------------------------------------- +// +TBool CWPAPLogicalProxy::ValidateL() + { + // Logical proxy is valid if it contains either one or more + // physical proxies + return iPhysicalProxies.Count() > 0; + } + + + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::AddDataL +// ----------------------------------------------------------------------------- +// +void CWPAPLogicalProxy::AddDataL( RCmConnectionMethodExt& aCmItem ) + { + LOG("--CWPAP CWPAPLogicalProxy::AddDataL begin--"); + // This method is called by child physical proxy. + + // Store name if came along with the document. If missing then access point + // name is used. + if ( iName ) + { + // CMManager + aCmItem.SetStringAttributeL( CMManager::ECmName, iName->Value() ); + } + + // Store homepage if defined. + if ( iHomepage ) + { + // CMManager + TRAPD( err, aCmItem.SetStringAttributeL( CMManager::ECmStartPage, iHomepage->Value() )); + + LOG2("CWPAP EApWapStartPage, value: %S, err: %d", &iHomepage->Value(), err); + User::LeaveIfError( err ); + } + + // Store port data, which overrides the data stored by child physical proxy. + + if ( iPort ) + { + //CMManager + iPort->AddDataL (aCmItem); + + } + LOG("--CWPAP CWPAPLogicalProxy::AddDataL end--"); + } + + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::AddItemsL +// ----------------------------------------------------------------------------- +// +TInt CWPAPLogicalProxy::AddItemsL( RPointerArray& aItems, + CWPAPItemBase* /*aLogicalProxy*/, + CWPAPItemBase* /*aPhysicalProxy*/ ) + { + TInt count( 0 ); + for( TInt i( 0 ); i < iPhysicalProxies.Count(); i++ ) + { + CWPAPPhysicalProxy* pp = iPhysicalProxies[ i ]; + if( pp->ValidateL() ) + { + count += pp->AddItemsL( aItems, this, NULL ); + } + } + + return count; + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::Name +// ----------------------------------------------------------------------------- +// +const TDesC& CWPAPLogicalProxy::Name() + { + if ( iName ) + { + return iName->Value(); + } + else + { + return KNullDesC; + } + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPLogicalProxy::VisitL( CWPCharacteristic& aCharacteristic ) + { + TInt type = aCharacteristic.Type(); + + // KWPPort + + // One valid port is enough for us. + if ( type == KWPPort && !iPort ) + { + CWPAPPort* port = CWPAPPort::NewLC( aCharacteristic ); + + if ( port->ValidateL() ) + { + iPort = port; + CleanupStack::Pop( port ); + } + else // Data not valid. + { + CleanupStack::PopAndDestroy( port ); + } + } + + // KWPPxPhysical + + else if ( type == KWPPxPhysical ) + { + CWPAPPhysicalProxy* physicalProxy = CWPAPPhysicalProxy::NewLC( + iDefaultName, + aCharacteristic, + iCharacteristic, + iPort ); + + if ( physicalProxy->ValidateL() ) + { + User::LeaveIfError( iPhysicalProxies.Append( physicalProxy ) ); + CleanupStack::Pop( physicalProxy ); + } + else // Data not valid. + { + CleanupStack::PopAndDestroy( physicalProxy ); + } + } + else if ( type == KWPPxAuthInfo ) + { + // Not supported + } + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPLogicalProxy::VisitL( CWPParameter& aParameter) + { + TInt id = aParameter.ID(); + const TDesC& value = aParameter.Value(); + + if ( value.Length() == 0 ) + { + // No use process zero length value. + return; + } + + switch ( id ) + { + case EWPParameterStartPage: // iHomepage + { + if ( !iHomepage ) + { + iHomepage = &aParameter; + } + break; + } + case EWPParameterName: + { + if ( !iName ) + { + iName = &aParameter; + } + break; + } + default: + { + // Just let through + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::CWPAPLogicalProxy +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPLogicalProxy::CWPAPLogicalProxy( CWPCharacteristic& aCharacteristic, + const TDesC& aDefaultName ) + : CWPAPItemBase( aDefaultName ), + iPhysicalProxies( KInitialArraySize ), + iCharacteristic( aCharacteristic ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPLogicalProxy::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPLogicalProxy::ConstructL() + { + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPNapdef.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPNapdef.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,2020 @@ +/* +* Copyright (c) 2002-2008 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: Class stores data for one accesspoint +* +*/ + + + + +// INCLUDE FILES + +#include "CWPAPNapdef.h" +#include +#include +#include +#include +#include +#include "CWPAPAccesspointItem.h" +#include "WPAPAdapter.pan" +#include +#include +#include +#include "ProvisioningDebug.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +const TUint KIapColumn = 0x00000100; +const TUint KLingerColumn = 0x00000200; +const TUint KColumnMask = 0xFFFFFF00; +const TUint KRowMask = 0x000000FF; + +// Delay for comms db begintransaction retry (microseconds) +const TInt KBeginTransRetryDelay = 1000000; +// Maximum number of retries +const TInt KBeginTransRetryCount = 7; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::NewLC +// ----------------------------------------------------------------------------- +// +CWPAPNapdef* CWPAPNapdef::NewLC( TBool aFollowingLink, + const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic, + CWPCharacteristic& aLink ) + { + CWPAPNapdef* self = new(ELeave) CWPAPNapdef( aFollowingLink, + aDefaultName, + aLogicalCharacteristic ); + CleanupStack::PushL( self ); + self->ConstructL(); + aLink.AcceptL( *self ); + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +CWPAPNapdef::~CWPAPNapdef() + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::~CWPAPNapdef" ) ); + + iEapTypeArray.ResetAndDestroy(); + iEapTypeArray.Close(); + iSecSSID.ResetAndDestroy(); + iSecSSID.Close(); + iNameServers.Close(); + + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::ValidateL +// ----------------------------------------------------------------------------- +// +TBool CWPAPNapdef::ValidateL() + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL" ) ); + + TBool result( ETrue ); + + if ( iBearer == KUidWlanBearerType ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan" ) ); + if ( iWlanSupported ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan supported" ) ); + return result; + } + else + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ValidateL wlan NOT supported" ) ); + return EFalse; + } + } + + // Received unsupported bearer + if( iBearerUnsupported ) + { + return EFalse; + } + + // Didn't receive a bearer value. + if ( iBearer == 0 ) + { + // Access point address type can also tell the bearer + if( iAccesspointNameType ) + { + TPtrC addrType( iAccesspointNameType->Value() ); + if( addrType == KAddrTypeAPN ) + { + iBearer =KUidPacketDataBearerType; + } + } + + // If still couldn't determine the bearer, default to GPRS + if( iBearer == 0 ) + { + iBearer = KUidPacketDataBearerType; + } + } + + // "NAP-ADDRESS" (Access point name) must be defined + if( iAccesspointName ) + { + if( iAccesspointName->Value() == KNullDesC ) + { + return EFalse; + } + } + else + { + return EFalse; + } + + /* + Combinations of authentication type, username and password and corressponding + value of prompt for password field. AuthType in this table means that provisioning document + contained authtype parameter and it was supported by the implementation. + Provisioning document names are used in table. + x means that value of the specified parameter is received and it was valid. + AuthType received & supported + | AuthName + | | AuthSecret + | | | "Prompt for Password" + no + x no + x no + x x yes + x no + x x yes + x x no + x x x no + */ + + // Set the "prompt password"-value. See the table above. Value is set to true + // only if we have supported authentication type and either username or password + // is empty. + if ( IsReceived( EWPParameterAuthentication_id ) && + ( ( !iPassword && iUserName ) ||( iPassword && !iUserName ) ) ) + { + iPromptPassword = ETrue; + } + + // IFNETWORKS is a list of possible protocols that a GPRS access points can be + // used for. + if( iBearer == KUidPacketDataBearerType && IsReceived( EWPParameterIfNetworks_id ) ) + { + TLex lex( iIfNetworks->Value() ); + lex.Mark(); + do + { + TChar ch( lex.Get() ); + + if( ( !iPdpType && !ch.IsAlphaDigit() ) || ( !iPdpType && lex.Eos() ) ) + { + if(!lex.Eos()) + { + lex.UnGet(); + } + TPtrC value( lex.MarkedToken() ); + if( !lex.Eos() ) + { + lex.Inc(); + } + + if( value == KIPv6 + && FeatureManager::FeatureSupported( KFeatureIdIPv6 ) ) + { + //iPdpType = EIPv6; + // CMManager + iPdpType = RPacketContext::EPdpTypeIPv6; + result = ETrue; + } + else if( value == KIPv6 + && !FeatureManager::FeatureSupported( KFeatureIdIPv6 ) ) + { + result = EFalse; + } + else if( value == KIPv4 ) + { + //iPdpType = EIPv4; + // CMManager + iPdpType = RPacketContext::EPdpTypeIPv4; + result = ETrue; + } + } + } while( !lex.Eos() ); + } + + return result; + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::AddItemsL +// ----------------------------------------------------------------------------- +// +TInt CWPAPNapdef::AddItemsL( RPointerArray& aItems, + CWPAPItemBase* aLogicalProxy, + CWPAPItemBase* aPhysicalProxy ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL" ) ); + + TInt count( 0 ); + + if( ( iFollowingLink || IsReceived( EWPParameterInternet_id ) + || IsReceived( EWPParameterWlan_id ) ) + && ValidateL() ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL append" ) ); + CWPAPAccesspointItem* item = CWPAPAccesspointItem::NewLC( + iDefaultName, + aLogicalProxy, + aPhysicalProxy, + this, + iCharacteristic ); + User::LeaveIfError( aItems.Append( item ) ); + //Internet Parameter is received + if (IsReceived(EWPParameterInternet_id) && !iFollowingLink) + { + SetInternetIndicator(aItems.Count() - 1); + } + + + count++; + CleanupStack::Pop( item ); + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddItemsL append done" ) ); + } + return count; + } + + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::SetInternetIndicator +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::SetInternetIndicator(TInt aValue) + { + iInternetIndicator = aValue; + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::GetInternetIndicator +// ----------------------------------------------------------------------------- +// +TInt CWPAPNapdef::GetInternetIndicator() + { + return iInternetIndicator; + } + + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::AddDataL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::AddDataL( /*CApAccessPointItem& aAPItem*/ RCmConnectionMethodExt& aCmItem ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL" ) ); + + TInt err( KErrNone ); + + if ( iBearer == KUidWlanBearerType ) + { + if ( iWlanSupported ) + { + // CMManager + AddWlanDataL( aCmItem); + } + else + { + // WLAN is disabled (or does not exist) in the device. + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL WLAN disabled." ) ); + User::Leave( KErrNotSupported ); + } + } + else + { + if ( iConnectionName ) + { + // CMManager + aCmItem.SetStringAttributeL( CMManager::ECmName, (iConnectionName->Value().Left( KNameMaxLength ))); + } + else // Use default name + { + // CMManager + aCmItem.SetStringAttributeL( CMManager::ECmName, iDefaultName ); + } + + if ( iAccesspointName ) + { + if ( iBearer == KUidPacketDataBearerType ) + { + // CMManager + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EPacketDataAPName, iAccesspointName->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL value: %S, err: %d"), + &iAccesspointName->Value(), err)); + } + else + { + // CMManager + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialDefaultTelNum, iAccesspointName->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::EApIspDefaultTelNumber value: %S, err: %d"), + &iAccesspointName->Value(), err ) ); + } + } + + TRAP ( err, aCmItem.UpdateL() ); + + if ( iUserName ) + { + // CMManager + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialLoginName, iUserName->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialLoginName value: %S, err: %d"), + &iUserName->Value(), err)); + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialIFAuthName, iUserName->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialIFAuthName value: %S, err: %d"), + &iUserName->Value(), err)); + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIFAuthName, iUserName->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFAuthName value: %S, err: %d"), + &iUserName->Value(), err)); + } + + // CMManager + TRAP ( err, aCmItem.SetBoolAttributeL( CMManager::ECmIFPromptForAuth, iPromptPassword)); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFPromptForAuth value: %d, err: %d"), + iPromptPassword, err )); + + if ( iPassword ) + { + // CMManager + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::EDialLoginPassword, iPassword->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EDialLoginPassword value: %d, err: %d"), + &iPassword->Value(), err ) ); + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIFAuthPass, iPassword->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL ECmIFAuthPass value: %d, err: %d"), + &iPassword->Value(), err ) ); + } + + // CMManager + TRAP ( err, aCmItem.SetBoolAttributeL( CMManager::ECmDisablePlainTextAuth, iSecureAuthentication )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EApEApIspDisablePlainTextAuth value: %d, err: %d"), + iSecureAuthentication, err ) ); + + + // IPv6 APs always have dynamic phone address + //CMManager + if ( iPhoneIPAddress && iPdpType != RPacketContext::EPdpTypeIPv6 ) + { + // CMManager IS CORRECT? + //err = aAPItem.WriteTextL( EApIspIPAddr, iPhoneIPAddress->Value() ); + TRAP ( err, aCmItem.SetStringAttributeL( CMManager::ECmIPAddress, iPhoneIPAddress->Value() )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddDataL EApIspIPAddr value: %S, err: %d"), + &iPhoneIPAddress->Value(), err ) ); + } + + TRAP ( err, aCmItem.UpdateL() ); + for( TInt i( 0 ); i < iNameServers.Count(); i++ ) + { + WriteDNSAddressL( aCmItem, iNameServers[i]->Value() ); + } + TRAP ( err, aCmItem.UpdateL() ); + if( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) + && iPdpType ) + { + // CMManager + TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EPacketDataPDPType, iPdpType )); + } + + if ( err ) err = 0; // prevent compiler warning + } + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddDataL" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::AddWlanDataL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::AddWlanDataL( RCmConnectionMethodExt& aCmItem ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL" ) ); + + if ( !iWlanSupported ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL WLAN NOT supported." ) ); + User::Leave( KErrNotSupported); + } + + TInt err = KErrNone; + + if ( iConnectionName ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName" ) ); + + //Connection name + // CMManager + aCmItem.SetStringAttributeL( CMManager::ECmName, iConnectionName->Value().Left( KNameMaxLength ) ); + + // CMManager + // Network name + aCmItem.SetStringAttributeL( CMManager::EWlanSSID, iConnectionName->Value()); + + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName err (%d) (%S)"), err, &iConnectionName->Value())); + + } + else // Use default name + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL iConnectionName default" ) ); + aCmItem.SetStringAttributeL( CMManager::EWlanSSID, iDefaultName); + } + + //EApWlanNetworkMode Gives network mode, TUint32 + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanNetworkMode" ) ); + // CMManager + TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EWlanConnectionMode, iNetMode )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanNetworkMode err (%d)"), err)); + + //EApWlanSecurityMode The security mode, TUint32 + if ( iSecMode == 0 ) + { + // This is needed if Provisioning message does not contain SECMODE parameter + // AP does not work if secmode is not set + iSecMode = CMManager::EWlanSecModeOpen; + } + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanSecurityMode" ) ); + // CMManager, securitymode causes error -1, this will be set manually in SaveWlanData + //TRAP ( err, aCmItem.SetIntAttributeL( CMManager::EWlanSecurityMode, iSecMode )); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::AddWlanDataL EApWlanSecurityMode err (%d)"), err)); + + if (err) + { + err = KErrNone; + } + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::WriteDNSAddressL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::WriteDNSAddressL( /*CApAccessPointItem& aAPItem*/ RCmConnectionMethodExt& aCmItem, + const TDesC& aValue ) + { + // GPRS access points supports IPv6 only if explicitly stated. + // CMManager + TBool apSupportsIPv6( iPdpType == RPacketContext::EPdpTypeIPv6 | iBearer != KUidPacketDataBearerType ); + + // If IPv6 is supported, write the DNS address as IPv6 if + // bearer supports IPv6 and the address format is IPv6 + if( FeatureManager::FeatureSupported( KFeatureIdIPv6 ) + && apSupportsIPv6 + && WPAdapterUtil::CheckIPv6( aValue ) ) + { + // Two name servers per network type + if( iNumIPv6NameServers < KTwoNameServersPerNetworkType ) + { + // CMManager + TRAPD (err, aCmItem.SetStringAttributeL( CMManager::TConnectionMethodCommonAttributes( + ( CMManager::ECmIP6NameServer1 ) + iNumIPv6NameServers ), aValue ) ); + User::LeaveIfError( err ); + iNumIPv6NameServers++; + } + } + else if( CheckIPv4values( aValue) ) + { + // Two name servers per network type + if( iNumIPv4NameServers < KTwoNameServersPerNetworkType ) + { + // CMManager + TRAPD ( err, aCmItem.SetStringAttributeL( CMManager::TConnectionMethodCommonAttributes( + ( CMManager::ECmIPNameServer1 ) + iNumIPv4NameServers ), aValue ) ); + User::LeaveIfError( err ); + aCmItem.SetBoolAttributeL( CMManager::ECmIPDNSAddrFromServer, EFalse); + iNumIPv4NameServers++; + } + } + } +// ----------------------------------------------------------------------------- +// CWPAPNapdef::CheckAddressPart +// ----------------------------------------------------------------------------- +// + +TBool CWPAPNapdef:: CheckAddressPart( TLex& aLex ) + { + TBool result( aLex.Peek().IsDigit() ); + aLex.Inc(); + if( aLex.Peek().IsDigit() ) + { + aLex.Inc(); + if( aLex.Peek().IsDigit() ) + { + aLex.Inc(); + } + } + + return result; + } + + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::CheckIPv4values +// ----------------------------------------------------------------------------- +// + +TBool CWPAPNapdef::CheckIPv4values( const TDesC& aValue ) +{ + + TLex aLex( aValue ); + return CheckAddressPart( aLex ) + && aLex.Get() == '.' + && CheckAddressPart( aLex ) + && aLex.Get() == '.' + && CheckAddressPart( aLex ) + && aLex.Get() == '.' + && CheckAddressPart( aLex ) + && aLex.Get() == '\0'; + +} +// ----------------------------------------------------------------------------- +// CWPAPNapdef::Name +// ----------------------------------------------------------------------------- +// +const TDesC& CWPAPNapdef::Name() + { + if ( iConnectionName ) + { + return iConnectionName->Value(); + } + else + { + return KNullDesC; + } + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::VisitL( CWPCharacteristic& aCharacteristic ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic)" ) ); + + TInt type = aCharacteristic.Type(); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) type (%d)"), type)); + switch ( type ) + { + case KWPNapAuthInfo: + case KWPValidity: + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) normal" ) ); + aCharacteristic.AcceptL( *this ); + break; + } + case KWPWLAN: + case KWPWepKey: + { + if( iWlanSupported ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) accept WLAN characteristic" ) ); + aCharacteristic.AcceptL( *this ); + } + } + default: + { + if ( ( ( ( aCharacteristic.Name().Compare( KWLAN ) ) == 0 ) || + ( ( aCharacteristic.Name().Compare( SECSSID ) ) == 0 ) || + ( ( aCharacteristic.Name().Compare( KEAP ) ) == 0 ) || + ( ( aCharacteristic.Name().Compare( KCERT ) ) == 0 ) || + ( ( aCharacteristic.Name().Compare( KWEP ) ) == 0 ) ) && iWlanSupported ) + { + if(aCharacteristic.Name().Compare( KEAP ) == 0) + { + CEapTypeElement* newEap = new (ELeave) CEapTypeElement; + newEap->iEAPSettings = new (ELeave) EAPSettings; + newEap->iCertificate = new (ELeave) CertificateEntry; + iEapTypeArray.AppendL(newEap); + } + else if(aCharacteristic.Name().Compare( SECSSID ) == 0) + { + SECssID* newsecSSID = new (ELeave) SECssID; + newsecSSID->iSSSID = NULL; + newsecSSID->iSUSSID = NULL; + iSecSSID.AppendL(newsecSSID); + } + + aCharacteristic.AcceptL( *this ); + } + } + } + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::VisitL(CWPCharacteristic) done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::VisitL( CWPParameter& aParameter ) + { + TInt id = aParameter.ID(); + TPtrC value( aParameter.Value() ); + + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::VisitL(CWPParameter) id: %d value: %S"), id, &value)); + + switch ( id ) + { + case EWPParameterName: + { + if ( !iConnectionName ) + { + iConnectionName = &aParameter; + } + break; + } + case EWPParameterBearer: + { + if ( iBearer != 0 || iBearerUnsupported ) + { + break; // Already received a bearer information + } + + if ( value == KGSMGPRS ) + { + iBearer = KUidPacketDataBearerType; + } + else if ( value == KWLAN && iWlanSupported ) + { + iBearer = KUidWlanBearerType; + MarkReceived( EWPParameterWlan_id ); + } + else + { + // Unsupported bearer type + iBearerUnsupported = ETrue; + } + break; + } + case EWPParameterNapAddress: + { + if ( !iAccesspointName ) + { + iAccesspointName = &aParameter; + } + break; + } + case EWPParameterLinger: + { + iLinger = &aParameter; + UdateligerValueL( iLinger ); + break; + } + case EWPParameterNapAddrType: + { + if ( !iAccesspointNameType ) + { + iAccesspointNameType = &aParameter; + } + break; + } + case EWPParameterAuthName: + { + if ( !iUserName ) + { + iUserName = &aParameter; + } + break; + } + case EWPParameterAuthSecret: + { + if ( !iPassword ) + { + iPassword = &aParameter; + } + break; + } + case EWPParameterAuthType: + { + // If already received don't accept + if (IsReceived(EWPParameterAuthentication_id)) + { + break; + } + + if ( value == KCHAP || value == KMD5 ) + { + iSecureAuthentication = ETrue; + MarkReceived( EWPParameterAuthentication_id ); + } + else if ( value == KPAP ) + { + iSecureAuthentication = EFalse; + MarkReceived( EWPParameterAuthentication_id ); + } + else + { + // Not supported... + } + break; + } + case EWPParameterLocalAddr: // iPhoneIPAddress + { + if ( !iPhoneIPAddress ) + { + iPhoneIPAddress = &aParameter; + } + break; + } + case EWPParameterDNSAddr: + { + // All name servers must be stored, as some of them might + // be IPv6 and some IPv4 + User::LeaveIfError( iNameServers.Append( &aParameter ) ); + break; + } + case EWPParameterIfNetworks: + { + if( !iIfNetworks ) + { + iIfNetworks = &aParameter; + MarkReceived( EWPParameterIfNetworks_id ); + } + break; + } + case EWPParameterInternet: + { + MarkReceived( EWPParameterInternet_id ); + break; + } +//JMan for WLan + case EWPParameterNapID: + { + if ( !iNapID ) + { + iNapID = &aParameter; + } + break; + } + // Here case 0 are handled the WLAN parameters that are extensions + // to OMA Client Provisioning parameter set. + case 0: + { + if( iWlanSupported ) + { + HandleWLanParametersL( aParameter ); + } + break; + } +//JMan for WLan ends + default: + { + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::HandleWLanParametersL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::HandleWLanParametersL( CWPParameter& aParameter ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL" ) ); + + if( !iWlanSupported ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WLAN not supported." ) ); + User::Leave( KErrNotSupported ); + } + + SECssID* scssid = NULL; + if( iSecSSID.Count() ) + { + scssid = iSecSSID[iSecSSID.Count()-1]; + } + + TPtrC value( aParameter.Value() ); + if( ( aParameter.Name().Compare( PRISSID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriSSID" ) ); + if ( !iPriSSID ) + { + iPriSSID = &aParameter; + } + } + else if( ( aParameter.Name().Compare( PRIUSSID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriUSSID" ) ); + if ( !iPriUSSID ) + { + iPriUSSID = &aParameter; + } + }// else if + + else if( ( aParameter.Name().Compare( PRIHSSID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) ); + if ( !iPriHSSID ) + { + iPriHSSID = &aParameter; + } + }// else if + + else if( ( aParameter.Name().Compare( SSSID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) ); + scssid->iSSSID = &aParameter; + + }// else if + + else if( ( aParameter.Name().Compare( SUSSID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL iPriHSSID" ) ); + scssid->iSUSSID = &aParameter; + }// else if + + else if( ( aParameter.Name().Compare( NETMODE ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode" ) ); + if ( value == KADHOC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode adhoc" ) ); + iNetMode = CMManager::EAdhoc; + } + else // default is INFRA + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL netmode infra" ) ); + iNetMode =CMManager::EInfra; + } + } + + else if( ( aParameter.Name().Compare( SECMODE ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode" ) ); + if ( value == KWEPSEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWEPSEC" ) ); + iSecMode = CMManager::EWlanSecModeWep; + } + else if( value == K8021XSEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode K8021XSEC" ) ); + iSecMode = CMManager::EWlanSecMode802_1x; + } + else if( value == KWPASEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPASEC" ) ); + + iSecMode = CMManager::EWlanSecModeWpa; + } + else if( value == KWPA2SEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPA2SEC" ) ); + iSecMode = CMManager::EWlanSecModeWpa2; + } + else if( value == KWPAPRESSEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPAPRESSEC" ) ); + iSecMode = CMManager::EWlanSecModeWpa; + } + else if( value == KWPA2PRESSEC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode KWPA2PRESSEC" ) ); + iSecMode = CMManager::EWlanSecModeWpa2; + } + else + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL secmode open" ) ); + iSecMode = CMManager::EWlanSecModeOpen; + } + } + + else if( ( aParameter.Name().Compare( WPAPRESKEYASC ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WPAPRESKEYASC" ) ); + if ( !iWpaPresKeyAsc ) + { + iWpaPresKeyAsc = &aParameter; + } + }// else if + // indicates the default wepkey index + else if( ( aParameter.Name().Compare( DEFAULTWEPIND ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepind" ) ); + + TLex lex( value ); + lex.Val( iDefaultWepKeyIndex ); + if ( iDefaultWepKeyIndex >= 4 ) + { + iDefaultWepKeyIndex = 0; + } + }// else if + + else if( ( aParameter.Name().Compare( WEPAUTHMODE ) ) == 0 ) + { + if ( value == KWEPAUTHMODEOPEN ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepauthmode OPEN" ) ); + iAuthentication = EAuthOpen; + } + else if ( value == KWEPAUTHMODESHARED ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL wepauthmode SHARED" ) ); + iAuthentication = EAuthShared; + } + }// else if + + else if( ( aParameter.Name().Compare( WEPKEYLENGTH ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYLENGTH" ) ); + if ( !iWepKeyLength ) + { + iWepKeyLength = &aParameter; + } + }// else if + else if( ( aParameter.Name().Compare( WEPKEYINDEX ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYINDEX" ) ); + TLex lex( value ); + lex.Val( iWepInd ); + }// else if + else if( ( aParameter.Name().Compare( WEPKEYDATA ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL WEPKEYDATA" ) ); + + if ( iWepInd < 4 ) + { + const TUint8 K40Bits = 5; + const TUint8 K104Bits = 13; + const TUint8 K232Bits = 29; + + TBuf8 buf8; + StrCopy( buf8, aParameter.Value() ); + + if(buf8.Length() == K232Bits || + buf8.Length() == K104Bits || + buf8.Length() == K40Bits ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL ASCI Wep Key" ) ); + HBufC8* buf8Conv = HBufC8::NewLC( KMaxLengthOfKeyData ); + ConvertAsciiToHex( buf8, buf8Conv ); + iKeyData[iWepInd] = *buf8Conv; + iKeyFormat[iWepInd] = CWPAPNapdef::EAscii; + CleanupStack::PopAndDestroy( buf8Conv ); + } + else if( buf8.Length()==K232Bits*2 || + buf8.Length()== K104Bits*2 || + buf8.Length() == K40Bits*2) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL HEX Wep Key" ) ); + iKeyData[iWepInd] = buf8; + iKeyFormat[iWepInd] = CWPAPNapdef::EHexadecimal; + } + } + + }// else if + + // Handle EAP parameter + HandleEAPParametersCCL( aParameter ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleWLanParametersL done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::HandleEAPParametersL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::HandleEAPParametersCCL( CWPParameter& aParameter ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL" ) ); + + CEapTypeElement* eap = NULL; + if ( iEapTypeArray.Count() ) + { + eap = iEapTypeArray[iEapTypeArray.Count()-1]; + } + + TPtrC value( aParameter.Value() ); + + if( ( aParameter.Name().Compare( EAPTYPE ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPTYPE" ) ); + + ConvertEAPStringToIds( value, eap->iEapTypeString, reinterpret_cast ( eap->iEAPSettings->iEAPType ) ); + + } + else if( ( aParameter.Name().Compare( EAPUSERNAME ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPUSERNAME" ) ); + if ( eap->iEAPSettings->iUsername.Length() == 0 ) + { + eap->iEAPSettings->iUsername = value; + eap->iEAPSettings->iUsernamePresent = ETrue; + } + }// else if + else if( ( aParameter.Name().Compare( EAPPASSWORD ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPASSWORD" ) ); + if ( eap->iEAPSettings->iPassword.Length() == 0 ) + { + eap->iEAPSettings->iPassword = value; + eap->iEAPSettings->iPasswordPresent = ETrue; + } + }// else if + else if( ( aParameter.Name().Compare( EAPREALM ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPREALM" ) ); + + if ( eap->iEAPSettings->iRealm.Length() == 0 ) + { + eap->iEAPSettings->iRealm = value; + eap->iEAPSettings->iRealmPresent = ETrue; + } + }// else if + else if( ( aParameter.Name().Compare( EAPUSEPSEUD ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPUSEPSEUD" ) ); + TInt pseudonyms; + TLex lex( value ); + lex.Val( pseudonyms ); + + eap->iEAPSettings->iUsePseudonymsPresent = ETrue; + if ( pseudonyms == 1 ) + { + eap->iEAPSettings->iUsePseudonyms = ETrue; + } + else + { + eap->iEAPSettings->iUsePseudonyms = EFalse; + } + }// else if + else if( ( aParameter.Name().Compare( EAPMAXAUTHS ) ) == 0 ) + { + // not supported + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPMAXAUTHS" ) ); + }// else if + else if( ( aParameter.Name().Compare( EAPENCAPS ) ) == 0 ) + { + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPENCAPS" ) ); + TUint dummy; + ConvertEAPStringToIds( value, eap->iEncapsulatingExpandedEapId, dummy ); + + }// else if + else if( ( aParameter.Name().Compare( EAPVERSERREALM ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPVERSERREALM" ) ); + + TInt serverRealm; + TLex lex( value ); + lex.Val( serverRealm ); + + eap->iEAPSettings->iVerifyServerRealmPresent = ETrue; + + if ( serverRealm == 1 ) + { + eap->iEAPSettings->iVerifyServerRealm = ETrue; + } + else + { + eap->iEAPSettings->iVerifyServerRealm = EFalse; + } + }// else if + else if( ( aParameter.Name().Compare( EAPCLIENTHAUTH ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCLIENTHAUTH" ) ); + + TInt clientAuthentication; + TLex lex( value ); + lex.Val( clientAuthentication ); + + eap->iEAPSettings->iRequireClientAuthenticationPresent = ETrue; + + if ( clientAuthentication == 1 ) + { + eap->iEAPSettings->iRequireClientAuthentication = ETrue; + } + else + { + eap->iEAPSettings->iRequireClientAuthentication = EFalse; + } + }// else if + else if( ( aParameter.Name().Compare( EAPSESVALTIME ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSESVALTIME" ) ); + + TInt sessionValidityTime; + TLex lex( value ); + lex.Val( sessionValidityTime ); + eap->iEAPSettings->iSessionValidityTime = sessionValidityTime; + eap->iEAPSettings->iSessionValidityTimePresent = ETrue; + + }// else if + else if( ( aParameter.Name().Compare( EAPCIPSUIT ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCIPSUIT" ) ); + + TInt cipherSuites; + TLex lex( value ); + lex.Val( cipherSuites ); + eap->iEAPSettings->iCipherSuites.Append( cipherSuites ); + eap->iEAPSettings->iCipherSuitesPresent = ETrue; + + }// else if + else if( ( aParameter.Name().Compare( EAPPEAPV0 ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV0" ) ); + + TInt peap; + TLex lex( value ); + lex.Val( peap ); + + eap->iEAPSettings->iPEAPVersionsPresent = ETrue; + if ( peap == 1 ) + { + eap->iEAPSettings->iPEAPv0Allowed = ETrue; + } + else + { + eap->iEAPSettings->iPEAPv0Allowed = EFalse; + } + }// else if + else if( ( aParameter.Name().Compare( EAPPEAPV1 ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV1" ) ); + TInt peap; + TLex lex( value ); + lex.Val( peap ); + eap->iEAPSettings->iPEAPVersionsPresent = ETrue; + if ( peap == 1 ) + { + eap->iEAPSettings->iPEAPv1Allowed = ETrue; + } + else + { + eap->iEAPSettings->iPEAPv1Allowed = EFalse; + } + }// else if + else if( ( aParameter.Name().Compare( EAPPEAPV2 ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPPEAPV2" ) ); + TInt peap; + TLex lex( value ); + lex.Val( peap ); + eap->iEAPSettings->iPEAPVersionsPresent = ETrue; + if ( peap == 1 ) + { + eap->iEAPSettings->iPEAPv2Allowed = ETrue; + } + else + { + eap->iEAPSettings->iPEAPv2Allowed = EFalse; + } + }// else if + + else if( ( aParameter.Name().Compare( EAPISSNAME ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPISSNAME" ) ); + + eap->iCertificate->iSubjectName = value; + eap->iCertificate->iSubjectNamePresent = ETrue; + }// else if + + else if( ( aParameter.Name().Compare( EAPSUBNAME ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSUBNAME" ) ); + + eap->iCertificate->iIssuerName = value; + eap->iCertificate->iIssuerNamePresent = ETrue; + + }// else if + + else if( ( aParameter.Name().Compare( EAPCERTTYPE ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPCERTTYPE" ) ); + if ( value == EAPCERTCA ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EEapSim" ) ); + + eap->iCertificate->iCertType = CertificateEntry::ECA; + } + else + { + eap->iCertificate->iCertType = CertificateEntry::EUser; + } + // Certificates must be present since this field was added + eap->iEAPSettings->iCertificatesPresent = ETrue; + + }// else if + else if( ( aParameter.Name().Compare( EAPSERNUM ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSERNUM" ) ); + + eap->iCertificate->iSerialNumber = value; + eap->iCertificate->iSerialNumberPresent = ETrue; + }// else if + + else if( ( aParameter.Name().Compare( EAPSUBKEYID ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPSUBKEYID" ) ); + + _LIT(KHexIdLC, "0x"); + _LIT(KHexIdUC, "0X"); + TBuf<2> HexIdBuf; + TInt keyLen = aParameter.Value().Length(); + + // setting the given key to the key buffer + TBuf origKey; + origKey.SetLength(keyLen); + origKey = aParameter.Value(); + TBuf key; + TLex tmpByte; + TInt err(KErrNone); + TUint16 byte; + + // Remove possible spaces from the beginning + origKey.TrimLeft(); + + // if the key is over two chars long, then we have to check + // whether there is 0x or 0X in the beginning + if (origKey.Length() >= 2) + { + // Copy the two left most characters in to the buffer + HexIdBuf.Copy(origKey.Left(2)); + + // If the first characters are 0x or 0X, then they should be ignored + if (HexIdBuf.Compare(KHexIdLC) == 0 + || HexIdBuf.Compare(KHexIdUC) == 0) + { + // delete two characters + origKey.Delete(0, 2); + } + } + + // looping the subject key through, removing whitespaces + for (TInt i = 0; i < keyLen; i++) + { + // removing white spaces from the left side of the key + origKey.TrimLeft(); + // check that there are characters left + if (origKey.Length() >= 2) + { + // pick the two left most bytes from the key + tmpByte = origKey.Left(2); + // convert byte into binary format + err = tmpByte.Val(byte, EHex); + + // delete two characters from the left side of the character array in the buffer + origKey.Delete(0, 2); + + // check whether conversion to decimal went ok + if (err != KErrNone) + { + // if there are problems, then leave the loop + break; + } + + // store the appended byte into the key variable + key.Append(byte); + } + + else if (origKey.Length() == 1) + { + // pick the left most bytes from the key + tmpByte = origKey.Left(1); + // convert byte into binary format + err = tmpByte.Val(byte, EHex); + + // delete two characters from the left side of the character array in the buffer + origKey.Delete(0, 1); + + // check whether conversion to decimal went ok + if (err != KErrNone) + { + // if there are problems, then leave the loop + break; + } + + // store the appended byte into the key variable + key.Append(byte); + } + else + { + break; + } + } + // store key value only if no errors occurred + if (err == KErrNone) + { + eap->iCertificate->iSubjectKeyID.Copy(key); + eap->iCertificate->iSubjectKeyIDPresent = ETrue; + eap->iEAPSettings->iCertificatesPresent = ETrue; + } + } + + + else if( ( aParameter.Name().Compare( EAPTHUMBPRINT ) ) == 0 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::HandleEAPParametersL EAPTHUMBPRINT" ) ); + eap->iCertificate->iThumbprintPresent = ETrue; + eap->iCertificate->iThumbprint = value; + }// else if + } + + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::CWPAPNapdef +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPNapdef::CWPAPNapdef( TBool aFollowingLink, + const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic ) + : CWPAPItemBase( aDefaultName ), + iCharacteristic( aLogicalCharacteristic ), + iFollowingLink( aFollowingLink ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::ConstructL() + { + iLingerValue = NULL; + iLingerFlag = ETrue; + iInternetIndicator = -1; + //checks if Wlan feature is supported + FeatureManager::InitializeLibL(); + iWlanSupported = FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ); + FeatureManager::UnInitializeLib(); + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::SaveWlanDataL +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::SaveWlanDataL( TUint32 aIapId, CCommsDatabase& aCommsDb ) + { + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL APid: (%d)"), aIapId) ); + + if ( iBearer == KUidWlanBearerType ) + { + CCommsDbTableView* wLanServiceTable; + + // CMManager + // Search the Iap Service Id using the received IapId + RCmConnectionMethodExt cm = iCm->ConnectionMethodL( aIapId ); + TUint32 serviceId = cm.GetIntAttributeL( CMManager::ECmIapServiceId ); + + // The BeginTransaction might fail if someone else has locked CommsDat + TInt dberr = aCommsDb.BeginTransaction(); + if( dberr == KErrLocked ) + { + // Try BeginTransaction again to get lock + TInt retry = KBeginTransRetryCount; + while ( retry > 0 && dberr == KErrLocked ) + { + User::After(KBeginTransRetryDelay); + dberr = aCommsDb.BeginTransaction(); + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL: Database locked. BeginTransaction retry." ) ); + retry--; + } + if(dberr != KErrNone) + { + // Could not get lock to CommsDat at all + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL: BeginTransaction failed completely." ) ); + User::Leave( dberr ); + } + } + + TInt indexToSec = 0; + wLanServiceTable = aCommsDb.OpenViewMatchingUintLC( + TPtrC( WLAN_SERVICE ), TPtrC( WLAN_SERVICE_ID ), serviceId ); + TInt errorCode = wLanServiceTable->GotoFirstRecord(); + + if ( errorCode == KErrNone ) + { + indexToSec = serviceId; + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL updaterecord" ) ); + wLanServiceTable->UpdateRecord(); + } + else + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL insertrecord" ) ); + TUint32 dummyUid( 0 ); + User::LeaveIfError( wLanServiceTable->InsertRecord( dummyUid ) ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_SERVICE_ID" ) ); + // Save link to LAN service + wLanServiceTable->WriteUintL( TPtrC( WLAN_SERVICE_ID ), aIapId ); + indexToSec = aIapId; + } + + // Setting the security mode manually, because CMManager does not do that + wLanServiceTable->WriteUintL( TPtrC( WLAN_SECURITY_MODE ), iSecMode ); + + if( iSecSSID.Count() ) + { + CCommsDbTableView* wLanSecserviceTable; + wLanSecserviceTable = aCommsDb.OpenTableLC( TPtrC( WLAN_SECONDARY_SSID ) ); + //CleanupStack::Pop(wLanSecserviceTable); // wLanSecserviceTable + TBuf<4> blank; + blank.Append(KNullDesC); + + TBool sssid = EFalse; + TBool sussid = EFalse; + + for(TInt i = 0; i < iSecSSID.Count(); i++ ) + { + TUint32 id ; + + + TInt retval = wLanSecserviceTable->InsertRecord(id); + wLanSecserviceTable->WriteUintL(TPtrC(WLAN_SEC_SSID_SERVICE_ID), indexToSec ); + wLanSecserviceTable->WriteUintL(TPtrC(WLAN_SEC_SSID_ID), id ); + + if( iSecSSID[i]->iSSSID != NULL) + sssid = ETrue; + if(iSecSSID[i]->iSUSSID != NULL) + sussid = ETrue; + + if((sssid && iSecSSID[i]->iSSSID->Value() != blank) || (sussid && iSecSSID[i]->iSUSSID->Value() != blank )) + { + if( sssid ) + wLanSecserviceTable->WriteTextL(TPtrC(WLAN_SEC_SSID_SCANNED_SSID), iSecSSID[i]->iSSSID->Value()); + + if(sussid) + wLanSecserviceTable->WriteTextL(TPtrC(WLAN_SEC_SSID_USED_SSID), iSecSSID[i]->iSUSSID->Value()); + + } + wLanSecserviceTable->PutRecordChanges(); + sssid = EFalse; + sussid = EFalse; + } + CleanupStack::PopAndDestroy( wLanSecserviceTable ); + } + + iSecSSID.ResetAndDestroy(); + iSecSSID.Close(); + if ( iPriSSID ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_SSID" ) ); + // Save NU_WLAN_SSID + wLanServiceTable->WriteTextL( TPtrC(NU_WLAN_SSID), iPriSSID->Value() ); + } + if ( iPriUSSID ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_USED_SSID" ) ); + // Save WLAN_USED_SSID + wLanServiceTable->WriteTextL( TPtrC(WLAN_USED_SSID), iPriUSSID->Value() ); + } + if ( iPriHSSID ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_SCAN_SSID" ) ); + // Save WLAN_SCAN_SSID + wLanServiceTable->WriteBoolL( TPtrC(WLAN_SCAN_SSID), ETrue ); + } + else + { + wLanServiceTable->WriteBoolL( TPtrC(WLAN_SCAN_SSID), EFalse ); + } + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WEP_INDEX" ) ); + // Save index of key in use + wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_INDEX ), + (TUint32&) iDefaultWepKeyIndex ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WEP_INDEX: (%d)"), iDefaultWepKeyIndex) ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL NU_WLAN_AUTHENTICATION_MODE" ) ); + // Open / Shared (0/1) + // Save index of key in use + wLanServiceTable->WriteUintL( TPtrC( NU_WLAN_AUTHENTICATION_MODE ), + ( TUint32& ) iAuthentication ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL NU_WLAN_AUTHENTICATION_MODE: (%d)"), iAuthentication) ); + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY1" ) ); + // Save first WEP key + wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY1 ), iKeyData[0] ); + wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY1_FORMAT ), + ( TUint32& ) iKeyFormat[0] ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[0] ) ); + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY2" ) ); + // Save second WEP key + wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY2 ), iKeyData[1] ); + wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY2_FORMAT ), + ( TUint32& ) iKeyFormat[1] ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[1] ) ); + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY3" ) ); + // Save third WEP key + wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY3 ), iKeyData[2] ); + wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY3_FORMAT ), + ( TUint32& ) iKeyFormat[2] ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[2] ) ); + + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL NU_WLAN_WEP_KEY4" ) ); + // Save fourth WEP key + wLanServiceTable->WriteTextL( TPtrC( NU_WLAN_WEP_KEY4 ), iKeyData[3] ); + wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY4_FORMAT ), + ( TUint32& ) iKeyFormat[3] ); + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL (%S)"), &iKeyData[3] ) ); + + + if ( iWpaPresKeyAsc ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL convert WPAKEY to ascii" ) ); + // convert unicode to 8-bit ascii + TBuf8 wpaKey; + StrCopy( wpaKey, iWpaPresKeyAsc->Value() ); + + // Enable WPA Pre Shared key mode + wLanServiceTable->WriteBoolL( TPtrC( WLAN_ENABLE_WPA_PSK ), ETrue ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WPA_PRE_SHARED_KEY" ) ); + // Save PreShared Key + wLanServiceTable->WriteTextL( TPtrC( WLAN_WPA_PRE_SHARED_KEY ), + wpaKey ); + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteUintL WLAN_WPA_KEY_LENGTH" ) ); + // Save PreShared Key Length + wLanServiceTable->WriteUintL( TPtrC( WLAN_WPA_KEY_LENGTH ), + wpaKey.Length() ); + } + + TBuf eapList; + eapList.Copy(KEapAll); + + for (TInt i=0;iiEAPSettings->iCertificatesPresent ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL Certificate was present." ) ); + eap->iEAPSettings->iCertificates.AppendL( *eap->iCertificate ); + } + + // Save EAP list + if ( eap->iEapTypeString.Length() > 0 + && eap->iEncapsulatingExpandedEapId.Length() == 0) // AND method is not encapsulated + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL WriteTextL WLAN_EAPS" ) ); + + TBuf8<3> buf; + _LIT8(KFormat, "%d"); + // pick the last byte from the array + buf.Format(KFormat, eap->iEapTypeString[KExpandedEapIdLength - 1]); + // search for the correct offset for the eap type from the KEapAll literal + TInt index = KEapAll().Find(buf); + + const TUint8 offset = 2; //length = f "-0" string + // Add '+' to the correct offset, so that the eap is repsesented activated in the list + if(index >= offset) + { + eapList[index-offset] = KEapPlus; + } + + } + + // Set iEncapsulatingEapTypes + for ( TInt j = 0; j < iEapTypeArray.Count(); j++ ) + { + // Check if any method has this method as the encapsulating method + if ( eap->iEapTypeString == iEapTypeArray[j]->iEncapsulatingExpandedEapId ) + { + // Append this method to iEncapsulatedEAPType + eap->iEAPSettings->iEncapsulatedEAPTypes.Append( iEapTypeArray[j]->iEAPSettings->iEAPType ); + eap->iEAPSettings->iEncapsulatedEAPTypesPresent = ETrue; + } + } + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings CEapType::NewL" ) ); + CEapType* eapType = NULL; + + TRAPD( error, ( eapType = CEapType::NewL( eap->iEapTypeString, ELan, serviceId ) ) ); + + if ( ( error == KErrNone ) && eapType ) + { + CleanupStack::PushL( eapType ); + + // Check if this type is tunneled + if ( eap->iEncapsulatingExpandedEapId.Length() > 0 ) + { + // It is tunneled. Take the last byte of the expanded id. + eapType->SetTunnelingType( eap->iEncapsulatingExpandedEapId[KExpandedEapIdLength - 1] ); + + } + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings SetConfigurationL" ) ); + TRAP_IGNORE( eapType->SetConfigurationL( *eap->iEAPSettings ) ); + + CleanupStack::PopAndDestroy( eapType ); + + } + else + { + FTRACE(RDebug::Print(_L("[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL CEapType::NewL err: %d"), error ) ); + } + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL save EAP settings done" ) ); + } + + + + // Expanded EAP types in use. Write the eap list to the new columns. + + // generate appropriate entries in the new enabled and disabled list, + // overwriting those values + + // count the + and - signs to determine the size of enabled and + // disabled descriptors + + TLex lex( eapList ); + TInt numPlus = 0; + TInt numMinus = 0; + TChar ch; + while ( !lex.Eos() ) + { + ch = lex.Get(); + if ( ch == '+' ) ++numPlus; + else if ( ch == '-' ) ++numMinus; + } + + // each entry consumes 8 bytes in binary format + HBufC8* enabledEAPPlugin = HBufC8::NewL( 8 * numPlus ); + CleanupStack::PushL( enabledEAPPlugin ); + + HBufC8* disabledEAPPlugin = HBufC8::NewL( 8 * numMinus ); + CleanupStack::PushL( disabledEAPPlugin ); + + lex.Assign( eapList ); + + while ( !lex.Eos() ) + { + // beginning of implementation UID + TInt16 implUid = 0; + + if ( lex.Val( implUid ) != KErrNone || !implUid ) + { + // if the old string is corrupted, null out both lists + enabledEAPPlugin->Des().Zero(); + disabledEAPPlugin->Des().Zero(); + break; + } + + // append it to the appropriate list ('+' enabled, '-' disabled) + _LIT8( KPadding, "\xFE\0\0\0\0\0\0" ); + _LIT8( KMsChapV2Padding, "\xFE\xFF\xFF\xFF\0\0\0"); + const TInt KPlainMsChapV2ImplUid = 99; + + if ( implUid > 0 ) + { + enabledEAPPlugin->Des().Append( + Abs( implUid ) == KPlainMsChapV2ImplUid? + KMsChapV2Padding: KPadding ); + enabledEAPPlugin->Des().Append( Abs( implUid ) ); + } + else if (implUid < 0 ) + { + disabledEAPPlugin->Des().Append( + Abs( implUid ) == KPlainMsChapV2ImplUid? + KMsChapV2Padding: KPadding ); + disabledEAPPlugin->Des().Append( Abs( implUid ) ); + } + + // swallow the delimiter (',') + lex.Get(); + } + + + + wLanServiceTable->WriteTextL( TPtrC( WLAN_ENABLED_EAPS ), + enabledEAPPlugin? + (const TDesC8&)*enabledEAPPlugin: + (const TDesC8&)KNullDesC8 ); + + wLanServiceTable->WriteTextL( TPtrC( WLAN_DISABLED_EAPS ), + disabledEAPPlugin? + (const TDesC8&)*disabledEAPPlugin: + (const TDesC8&)KNullDesC8 ); + CleanupStack::PopAndDestroy( disabledEAPPlugin ); + CleanupStack::PopAndDestroy( enabledEAPPlugin ); + + + + iEapTypeArray.ResetAndDestroy(); + wLanServiceTable->PutRecordChanges(); + + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL PutRecordChanges" ) ); + CleanupStack::PopAndDestroy( wLanServiceTable ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL done" ) ); + aCommsDb.CommitTransaction(); + } + else + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::SaveWlanDataL ignored not a WLAN AP" ) ); + } + + } + +//------------------------------------------------------------------------------ +// CWPAPNapdef::ConvertAsciiToHex +//------------------------------------------------------------------------------ +// +void CWPAPNapdef::ConvertAsciiToHex( const TDesC8& aSource, HBufC8*& aDest ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertAsciiToHex" ) ); + + _LIT( hex, "0123456789ABCDEF" ); + TInt size = aSource.Size(); + TPtr8 ptr = aDest->Des(); + for ( TInt ii = 0; ii < size; ii++ ) + { + TText8 ch = aSource[ii]; + ptr.Append( hex()[(ch/16)&0x0f] ); + ptr.Append( hex()[ch&0x0f] ); + } + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertAsciiToHex Done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::StrCopy +// String copy with lenght check. +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::StrCopy( TDes8& aTarget, const TDesC& aSource ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::StrCopy" ) ); + + TInt len = aTarget.MaxLength(); + if( len < aSource.Length() ) + { + aTarget.Copy( aSource.Left( len ) ); + return; + } + aTarget.Copy( aSource ); + + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::StrCopy Done" ) ); + } + +CEapTypeElement::~CEapTypeElement() + { + delete iEAPSettings; + delete iCertificate; + } + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::UpdateLingerL +// +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::UpdateLingerL(const TUint32 aIapId) +{ + if ( iLinger && ( !iLingerFlag ) ) + { + AddLingerL( aIapId , iLingerValue ); + } + +} + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::UdateligerValueL +// +// ----------------------------------------------------------------------------- +// +void CWPAPNapdef::UdateligerValueL(CWPParameter* aLinger) +{ + TInt err(KErrNone); + const TDesC& value = aLinger->Value(); + if( !Notalpha(value)) + { + TLex lex( value ); + TUint Linger = 0; + TInt lingerint; + err = lex.Val( Linger, EDecimal ); + if( err == KErrNone ) + { + lingerint = Linger; + if( lingerint >= 0 ) + { + iLingerValue = lingerint; + iLingerFlag = EFalse; + } + } + } +} + +// ----------------------------------------------------------------------------- +// CWPAPNapdef::UdateligerValueL +// +// ----------------------------------------------------------------------------- +// +TBool CWPAPNapdef::Notalpha(const TDesC& aValue) +{ + TBool NotAlpha = EFalse; + TChar character; + for(TInt i = 0 ; i < aValue.Length(); i++) + { + character = aValue[i]; + NotAlpha = character.IsAlpha(); + if(NotAlpha) + break; + } + + return NotAlpha; +} + + +// --------------------------------------------------------------------------- +// Adds iapID and linger interval to CentralRepository +// --------------------------------------------------------------------------- +// +void CWPAPNapdef::AddLingerL( const TInt aIapId, const TInt aLingerInterval ) + { + TInt err( KErrNone ); + + // Open repository + CRepository* repository = CRepository::NewLC( KCRUidPDPContextManager ); + + // Find if an entry for "iapId" already exists in CentRep + RArray< TUint32 > foundKeys; + foundKeys.Reset(); + + err = repository->FindEqL( KIapColumn, // partial key + KColumnMask, // key mask + aIapId, // value + foundKeys ); // found keys + + if ( err == KErrNone || err == KErrNotFound ) + { + if ( foundKeys.Count() == 0 ) + { + // Add a new entry + TInt arrayCount( 0 ); + + // Get number of iapId&linger entries in Centrep + err = repository->Get( KPdpContextManagerLingerArrayCount, + arrayCount ); + + if ( err == KErrNone ) + { + arrayCount++; + + err = repository->Create( ( KIapColumn | arrayCount ), aIapId ); + + if ( err == KErrNone ) + { + err = repository->Create( ( KLingerColumn | arrayCount ), + aLingerInterval ); + } + + if ( err == KErrNone ) + { + // Update number of iapId&linger entries in Centrep + err = repository->Set( KPdpContextManagerLingerArrayCount, + arrayCount ); + } + } + } + else + { + // Update existing entry on current row + TInt32 row = foundKeys[ 0 ] & KRowMask; + + err = repository->Set( ( KLingerColumn | row ), aLingerInterval ); + } + } + + foundKeys.Close(); + CleanupStack::PopAndDestroy( repository ); + + User::LeaveIfError( err ); + + } + +void CWPAPNapdef::ConvertEAPStringToIds( const TDesC& aEAPString, TDes8& aExpandedId, TUint& aId) + { + if ( aEAPString == KEAPSIM ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapSim" ) ); + aExpandedId.Copy( KEapSimTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapSim; + } + else if( aEAPString == KEAPAKA ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapAka" ) ); + aExpandedId.Copy( KEapAkaTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapAka; + } + else if( aEAPString == KEAPTLS ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapTls" ) ); + aExpandedId.Copy( KEapTlsTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapTls; + } + else if( aEAPString == KEAPPEAP ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapPeap" ) ); + aExpandedId.Copy( KEapPeapTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapPeap; + } + else if( aEAPString == KEAPTTLS ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapTtls" ) ); + aExpandedId.Copy( KEapTtlsTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapTtls; + } + else if( aEAPString == KEAPLEAP ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapLeap" ) ); + aExpandedId.Copy( KEapLeapTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapLeap; + } + else if( aEAPString == KEAPMSCHAPV2 ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapMschapv2" ) ); + aExpandedId.Copy( KEapMschapv2TypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapMschapv2; + } + else if( aEAPString == KEAPGTC ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapGtc" ) ); + aExpandedId.Copy( KEapGtcTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapGtc; + } + else if( aEAPString == KEAPFAST ) + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapFast" ) ); + aExpandedId.Copy( KEapFastTypeId, KExpandedEapIdLength ); + aId = EAPSettings::EEapFast; + } + + else + { + FLOG( _L( "[AccesspointAdapter] CWPAPNapdef::ConvertEAPStringToIds EEapNone" ) ); + aExpandedId.Copy( KEapNoneId, KExpandedEapIdLength ); + aId = EAPSettings::EEapNone; + } + + } + +// --------------------------------------------------------------------------- +// Returns the NAP-ID +// --------------------------------------------------------------------------- +// +const TDesC& CWPAPNapdef::NapId() + { + return iNapID->Value(); + } + +// --------------------------------------------------------------------------- +// Returns the bearer value +// --------------------------------------------------------------------------- +// +TUint CWPAPNapdef::Bearer() + { + return iBearer; + } + +// --------------------------------------------------------------------------- +// Returns the bearer value +// --------------------------------------------------------------------------- +// +void CWPAPNapdef::SetCMManager( RCmManagerExt* aCm ) + { + iCm = aCm; + } + + + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPPhysicalProxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPPhysicalProxy.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,349 @@ +/* +* 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: Defines a class, which holds physical proxy information. +* +*/ + + + + + +// INCLUDE FILES + +#include "CWPAPPhysicalProxy.h" // Own header +#include +#include +#include +#include +#include "CWPAPLogicalProxy.h" +#include "CWPAPPort.h" +#include "CWPAPNapdef.h" +#include "WPAPAdapter.pan" +#include "CWPLog.h" +#include "WPAPDefs.h" +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWPAPPhysicalProxy* CWPAPPhysicalProxy::NewLC( + const TDesC& aDefaultName, + CWPCharacteristic& aCharacteristic, + CWPCharacteristic& aLogicalCharacteristic, + CWPAPPort*& aPort ) + { + CWPAPPhysicalProxy* self = new(ELeave) CWPAPPhysicalProxy( + aDefaultName, + aLogicalCharacteristic, + aPort ); + CleanupStack::PushL( self ); + self->ConstructL(); + aCharacteristic.AcceptL( *self ); + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +CWPAPPhysicalProxy::~CWPAPPhysicalProxy() + { + delete iPort; + + iNapdefs.ResetAndDestroy(); + iNapdefs.Close(); + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::ValidateL +// ----------------------------------------------------------------------------- +// +TBool CWPAPPhysicalProxy::ValidateL() + { + TBool isValid( EFalse ); + + // We must have proxy address otherwise this proxy isn't valid. + if ( iProxyAddr ) + { + switch ( iPxAddrType ) + { + case EPxAddrTypeIPv4: + { + isValid = WPAdapterUtil::CheckIPv4( iProxyAddr->Value() ); + break; + } + case EPxAddrTypeIPv6: + { + isValid = FeatureManager::FeatureSupported( KFeatureIdIPv6 ) + && WPAdapterUtil::CheckIPv6( iProxyAddr->Value() ); + break; + } + case EPxAddrTypeUnsupported: + { + isValid = EFalse; + break; + } + default: // default value is assumed to be EPxAddrTypeIPv4 + { + isValid = WPAdapterUtil::CheckIPv4( iProxyAddr->Value() ); + } + } + } + return isValid; + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::AddDataL +// ----------------------------------------------------------------------------- +// +void CWPAPPhysicalProxy::AddDataL( RCmConnectionMethodExt& aCmItem ) + { + LOG("--CWPAP CWPAPPhysicalProxy::AddDataL begin--"); + TInt err(KErrNone); + + // CMManager + aCmItem.SetStringAttributeL( CMManager::ECmWapIPGatewayAddress, iProxyAddr->Value()); + LOG2("CWPAP EApWapStartPage, value: %S, err: %d", + &iProxyAddr->Value(), err); + + //CMManager + aCmItem.SetStringAttributeL( CMManager::ECmIPGateway, iProxyAddr->Value()); + LOG2("CWPAP EApIspIPGateway, value: %S, err: %d", + &iProxyAddr->Value(), err); + + //CMManager + aCmItem.SetStringAttributeL( CMManager::ECmProxyServerName, iProxyAddr->Value() ); + LOG2("CWPAP EApProxyServerAddress, value: %S, err: %d", + &iProxyAddr->Value(), err); + + + // Store port data + if ( iPort ) + { + iPort->AddDataL( aCmItem ); + } + + if ( iLogicalPort) + { + iLogicalPort->AddDataL( aCmItem ); + } + if ( err ) err = 0; // prevent compiler warning + + LOG("--CWPAP CWPAPPhysicalProxy::AddDataL end--"); + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::AddItemsL +// ----------------------------------------------------------------------------- +// +TInt CWPAPPhysicalProxy::AddItemsL( RPointerArray& aItems, + CWPAPItemBase* iLogicalProxy, + CWPAPItemBase* /*iPhysicalProxy*/ ) + { + TInt count( 0 ); + for( TInt i( 0 ); i < iNapdefs.Count(); i++ ) + { + CWPAPNapdef* pp = iNapdefs[ i ]; + if( pp->ValidateL() ) + { + count += pp->AddItemsL( aItems, iLogicalProxy, this ); + } + } + + return count; + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::Name +// ----------------------------------------------------------------------------- +// +const TDesC& CWPAPPhysicalProxy::Name() + { + if( iName ) + { + return iName->Value(); + } + else + { + return KNullDesC; + } + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPPhysicalProxy::VisitL( CWPCharacteristic& aCharacteristic ) + { + TInt type = aCharacteristic.Type(); + + // Accept only KWPPort characteristics + // One valid port is enough for us + if ( type == KWPPort && !iPort ) + { + CWPAPPort* port = CWPAPPort::NewLC( aCharacteristic ); + + if ( port->ValidateL() ) + { + iPort = port; + CleanupStack::Pop( port ); + } + else // Data not valid. + { + CleanupStack::PopAndDestroy( port ); + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPPhysicalProxy::VisitL( CWPParameter& aParameter) + { + TInt id = aParameter.ID(); + const TDesC& value = aParameter.Value(); + + if ( value.Length() == 0 ) + { + // No use to store zero length value. + return; + } + + switch ( id ) + { + case EWPParameterPxAddrFQDN: // iGatewayIPAddress + { + // Implementation comments: + // The value of this field is a domain name but we can't + // at the moment resolve this to IP address + // (at least from this adapter). + // Therefore this field can't be used. + // EWPParameterPxAddr is supported + // and should be used. + + /// Validate the domain name + /// Resolve to IP address + + /* // Uncomment if domain name can be validated and IP address resolved + // Add only if we haven't already received this field + if ( !IsReceived( EWPParameterPxAddrFQDN_id )) + { + iGatewayIPAddress = &aParameter; + MarkReceived( EWPParameterPxAddrFQDN_id ); + } + */ + break; + } + case EWPParameterPxAddr: // iGatewayIPAddress + { + // Accept only first occurrence of either PxAddr or PxAddrFQDN + if ( IsReceived( EWPParameterPxAddrFQDN_id ) || + IsReceived( EWPParameterPxAddr_id ) ) + { + return; + } + else + { + // The max allowed lenght for proxy address is 45 bytes. + // Nothing is stored if max lenght is exceeded + if ( aParameter.Value().Length() < 46 ) + { + iProxyAddr = &aParameter; + MarkReceived( EWPParameterPxAddr_id ); + } + } + break; + } + case EWPParameterPxAddrType: + { + if ( !IsReceived( EWPParameterPxAddrType_id ) ) + { + // Only IPv4 addresses are supported. + if ( value == KIPV4 ) + { + iPxAddrType = EPxAddrTypeIPv4; + } + else if( value == KIPV6 ) + { + iPxAddrType = EPxAddrTypeIPv6; + } + else + { + iPxAddrType = EPxAddrTypeUnsupported; + } + MarkReceived( EWPParameterPxAddrType_id ); + } + break; + } + case EWPParameterName: + { + if( !iName ) + { + iName = &aParameter; + } + break; + } + default: + { + // Just let through + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPPhysicalProxy::VisitLinkL( CWPCharacteristic& aLink ) + { + CWPAPNapdef* item = CWPAPNapdef::NewLC( ETrue, + iDefaultName, + iLogicalCharacteristic, + aLink ); + User::LeaveIfError( iNapdefs.Append( item ) ); + CleanupStack::Pop( item ); // item + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::CWPAPPhysicalProxy +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPPhysicalProxy::CWPAPPhysicalProxy( + const TDesC& aDefaultName, + CWPCharacteristic& aLogicalCharacteristic, + CWPAPPort*& aPort ) + : CWPAPItemBase( aDefaultName ), + iLogicalPort( aPort ), + iNapdefs( KInitialArraySize ), + iLogicalCharacteristic( aLogicalCharacteristic ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPPhysicalProxy::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPPhysicalProxy::ConstructL() + { + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPAPPort.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPPort.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,294 @@ +/* +* 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: Defines a class, which holds proxy port information. +* +*/ + + + + + +// INCLUDE FILES + +#include "CWPAPPort.h" // Own header +#include "WPAPAdapter.pan" +#include "CWPLog.h" +#include "WPAPDefs.h" + +#include +#include + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPAPPort::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWPAPPort* CWPAPPort::NewLC( CWPCharacteristic& aCharacteristic ) + { + CWPAPPort* self = new(ELeave) CWPAPPort(); + CleanupStack::PushL( self ); + self->ConstructL(); + aCharacteristic.AcceptL( *self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::CWPAPPort +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPAPPort::CWPAPPort() : CWPAPItemBase( KNullDesC ) + { + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +CWPAPPort::~CWPAPPort() + { + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::Validate +// ----------------------------------------------------------------------------- +// +TBool CWPAPPort::ValidateL() + { + // If we got either service or portnumber and + // Those we successfully interpreted the port + // information is valid. + if ( IsReceived( EWPParameterService_id ) || + IsReceived( EWPParameterPortNbr_id )) + { + return ETrue; + } + LOG("CWPAP ERROR! Port not valid"); + return EFalse; // Nothing received so this is invalid. + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::AddData +// ----------------------------------------------------------------------------- +// +void CWPAPPort::AddDataL( RCmConnectionMethodExt& aCmItem ) + { + LOG("--CWPAP CWPAPPort::AddDataL begin--"); + TInt err(KErrNone); + + // CMManager + TRAP (err, aCmItem.SetBoolAttributeL( CMManager::ECmWapIPSecurity, iConnectionSecurity )); + LOG2("CWPAP EApWapSecurity, value: %d, err: %d", iConnectionSecurity, err); + + // CMManager + TRAP (err, aCmItem.SetIntAttributeL( CMManager::ECmWapIPWSPOption, iSessionMode )); + LOG2("CWPAP EApWapWspOption, value: %d, err: %d", iSessionMode, err); + + if ( iPortNbr ) + { + const TDesC& value = iPortNbr->Value(); + TLex lex( value ); + TUint32 intValue=0; + err = lex.Val( intValue, EDecimal ); + if ( err == KErrNone ) + { + if( intValue > 65535 ) + { + intValue = 0; + } + + // CMManager + TRAP (err, aCmItem.SetIntAttributeL( CMManager::ECmProxyPortNumber, intValue )); + LOG2("CWPAP EApProxyPortNumber, value: %d, err: %d", + intValue, err); + } + } + LOG("--CWPAP CWPAPPort::AddDataL end--"); + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::Name +// ----------------------------------------------------------------------------- +// +const TDesC& CWPAPPort::Name() + { + return KNullDesC; + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::AddItemsL +// ----------------------------------------------------------------------------- +// +TInt CWPAPPort::AddItemsL( RPointerArray& /*aItems*/, + CWPAPItemBase* /*aLogicalProxy*/, + CWPAPItemBase* /*aPhysicalProxy*/ ) + { + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPPort::VisitL( CWPCharacteristic& /*aCharacteristic*/ ) + { + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::VisitL +// ----------------------------------------------------------------------------- +// +void CWPAPPort::VisitL( CWPParameter& aParameter ) + { + TInt id = aParameter.ID(); + const TDesC& value = aParameter.Value(); + + if ( value.Length() == 0 ) + { + // No use of checking the zero legth parameter. + return; + } + + switch ( id ) + { + case EWPParameterService: // iConnectionSecurity and iSessionMode + { + // If EWPParameterService value have already received + // or service type has been solved from EWPParameterPortNbr value + // don't accept this anymore. + if ( IsReceived( EWPParameterService_id ) ) + { + break; + } + + if ( value == KCLWSP) + { + // CMManager + SetValues( EFalse, CMManager::ECmWapWspOptionConnectionless, + EWPParameterPortNbr_id ); + } + else if ( value == KCOWSP) + { + // CMManager + SetValues( EFalse, CMManager::ECmWapWspOptionConnectionOriented, + EWPParameterPortNbr_id ); + + } + else if ( value == KCLSECWSP) + { + // CMManager + SetValues( ETrue, CMManager::ECmWapWspOptionConnectionless, + EWPParameterPortNbr_id ); + } + else if ( value == KCOSECWSP) + { + // CMManager + SetValues( ETrue, CMManager::ECmWapWspOptionConnectionOriented, + EWPParameterPortNbr_id ); + } + else + { + // Not supported... + } + break; + } + case EWPParameterPortNbr: // iConnectionSecurity and iSessionMode + { + // If EWPParameterPortNbr value have already handled + // don't accept it anymore. + if ( IsReceived( EWPParameterPortNbr_id ) ) + { + break; + } + + // Store the pointer to port parameter + iPortNbr = &aParameter; + MarkReceived( EWPParameterPortNbr_id ); + + if ( value == K9200 ) + { + // CMManager + SetValues( EFalse, CMManager::ECmWapWspOptionConnectionless, + EWPParameterPortNbr_id ); + + // Type of service identified. + // No need for Service parameter anymore. + MarkReceived( EWPParameterService_id ); + } + else if ( value == K9201 || value == K80 || value == K8080) + { + // CMManager + SetValues( EFalse, CMManager::ECmWapWspOptionConnectionOriented, + EWPParameterPortNbr_id ); + MarkReceived( EWPParameterService_id ); + } + else if ( value == K9202 ) + { + // CMManager + SetValues( ETrue, CMManager::ECmWapWspOptionConnectionless, + EWPParameterPortNbr_id ); + MarkReceived( EWPParameterService_id ); + } + else if ( value == K9203 || value == K443 ) + { + // CMManager + SetValues( ETrue, CMManager::ECmWapWspOptionConnectionOriented, + EWPParameterPortNbr_id ); + MarkReceived( EWPParameterService_id ); + } + else + { + // Not supported... + } + break; + } + default: + { + // Just let through + } + } + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::SetValues +// ----------------------------------------------------------------------------- +// +void CWPAPPort::SetValues( TBool aConnectionSecurity, + TInt aSessionMode, + TMarkedField aReceivedField ) + { + __ASSERT_DEBUG( aReceivedField == EWPParameterService_id || + aReceivedField == EWPParameterPortNbr_id, + Panic( EPreConditionFail ) ); + + iConnectionSecurity = aConnectionSecurity; + iSessionMode = aSessionMode; + + MarkReceived( aReceivedField ); + } + +// ----------------------------------------------------------------------------- +// CWPAPPort::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPAPPort::ConstructL() + { + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPLog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPLog.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,94 @@ +/* +* 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: Class offers static utility functions for CWmlBMSubItem. +* +*/ + + + + +// INCLUDE FILES + +#include +#include "CWPLog.h" + + +#ifdef ENABLE_LOGGING +#include + +/// Folder where the WMLBC log resides +_LIT( KLogFolder, "ringbc" ); + +/// The name of the log file +_LIT( KLogFileName, "ringbc.txt" ); + +/// The format in which the time is formatted in log +_LIT( KLogTimeFormat, "%02d.%02d:%02d:%06d "); + +/// The length of the string produced by KLogTimeFormat +const TInt KLogTimeFormatLength = 16; + +/// How many characters a log line can contain +const TInt KLogLineLength = 256; + +#endif // ENABLE_LOGGING + +// ================= MEMBER FUNCTIONS ======================= + +#ifdef ENABLE_LOGGING +// --------------------------------------------------------- +// Log() +// +// --------------------------------------------------------- +void Log::DoLog( TRefByValue aText, ... ) + { + VA_LIST args; + VA_START( args, aText ); + + TBuf buf; + buf.FormatList( aText, args ); + +#ifdef _DEBUG +#ifdef LOG_TO_FILE + RFileLogger logger; + TInt ret = logger.Connect(); + if (ret==KErrNone) + { + logger.SetDateAndTime( EFalse,EFalse ); + logger.CreateLog( KLogFolder, KLogFileName, EFileLoggingModeAppend ); + TBuf timeStamp; + TTime now; + now.HomeTime(); + TDateTime dateTime; + dateTime = now.DateTime(); + timeStamp.Format( KLogTimeFormat, + dateTime.Hour(), dateTime.Minute(), + dateTime.Second(), dateTime.MicroSecond() ); + buf.Insert( 0, timeStamp ); + + logger.Write(buf); + } + + logger.Close(); + +#else + RDebug::Print( buf ); +#endif // LOG_TO_FILE +#endif // _DEBUG + VA_END( args ); + } + +#endif // ENABLE_LOGGING + +// End of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPLog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPLog.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,79 @@ +/* +* 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: Logging class +* +*/ + + + + + +#ifndef CWPLOG_H +#define CWPLOG_H + +///////////////////////////////////////////////////////////////////////////// +// #Defines that control printing of additional information to debug stream. +///////////////////////////////////////////////////////////////////////////// + +// INCLUDES + +#include "CWPLogDef.h" +#include + +// DEFINES + +#ifdef ENABLE_LOGGING +#define LOG(s) Log::DoLog(_L(s)) +#define LOG1(s, v) Log::DoLog( _L(s), v ) +#define LOG2(s, v1, v2) Log::DoLog( _L(s), v1, v2 ) +#else +#define LOG(s) +#define LOG1(s, v) +#define LOG2(s, v1, v2) +#endif // ENABLE_LOGGING + +// DATA TYPES + + +// CLASS DECLARATION + +/** +* Class offers logging functionality. +*/ +class Log + { + + public: + + /** + * Log the message. + * @param aText text to be written to log. + */ + static void DoLog( TRefByValue aText, ... ); + + private: // constructor + + /// Prohibited default constructor + Log(); + + /// Prohibited copy constructor + Log( const Log& ); + + /// Prohibited assignment operator + Log& operator=( const Log& ); + }; + +#endif // CWPLOG_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/CWPLogDef.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPLogDef.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,37 @@ +/* +* 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: Logging class definition +* +*/ + + + + + +#ifndef CWPLOGDEF_H +#define CWPLOGDEF_H + +///////////////////////////////////////////////////////////////////////////// +// #Defines that control printing of additional information to debug stream. +///////////////////////////////////////////////////////////////////////////// + +// Defining this enables logging +//#define ENABLE_LOGGING + +// Defining this will direct all messages to a log file +//#define LOG_TO_FILE + +#endif // LOGDEF_H + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/WPAPAdapterGroupProxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/WPAPAdapterGroupProxy.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,46 @@ +/* +* 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: Table of plugins for ECom +* +*/ + + + + + +// INCLUDE FILES +#include +#include +#include "CWPAPAdapter.h" + +// CONSTANTS +const TImplementationProxy KImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(0x101F84D9, CWPAPAdapter::NewL) + }; + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// ----------------------------------------------------------------------------- +// ImplementationGroupProxy +// ----------------------------------------------------------------------------- +// +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(KImplementationTable) / sizeof(TImplementationProxy); + + return KImplementationTable; + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/WPAPAdapterPanics.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/WPAPAdapterPanics.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,35 @@ +/* +* 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: Panic implementation +* +*/ + + + + +// INCLUDES + +#include // for GLDEF_C +#include "WPAPAdapter.pan" + +// CONSTANTS + +_LIT(KWPAPAdapter, "wpapadapter.dll"); + +GLDEF_C void Panic( TInt aPanic ) + { + User::Panic( KWPAPAdapter, aPanic ); + } + +// End of file diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/Src/WPAPUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/Src/WPAPUtil.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,48 @@ +/* +* 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: Class offers common utility methods. +* +*/ + + + + +// INCLUDE FILES + +#include "WPAPUtil.h" // Own header +#include + +// CONSTANTS +// Commented out by JN +//#if ( defined (__WINS__) || defined (__WINSCW) ) // this different on hw + _LIT( KAdapterName, "WPAPAdapterResource" ); +//#else +// _LIT( KAdapterName, "WPAPAdapter" ); +//#endif + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// WPAPUtil::ReadHBufCLC +// ----------------------------------------------------------------------------- +// +HBufC* WPAPUtil::ReadHBufCL( TInt aResourceId ) + { + TFileName fileName; + Dll::FileName( fileName ); + + return WPAdapterUtil::ReadHBufCL( fileName, KAdapterName, aResourceId ); + } + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/group/101F84D8.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/group/101F84D8.rss Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,56 @@ +/* +* 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: Resource file defining the AccesspointAdapter plugin. +* +*/ + + + + +// INCLUDES +#include "registryinfo.rh" + + +// RESOURCE DEFINITIONS +// ----------------------------------------------------------------------------- +// +// theInfo +// Resource defining the ProvisioningAdapter plugin. +// +// ----------------------------------------------------------------------------- +// + +RESOURCE REGISTRY_INFO theInfo + { + dll_uid = 0x101F84D8; + interfaces = + { + INTERFACE_INFO + { + interface_uid = 0x101F84D5; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x101F84D9; + version_no = 1; + display_name = "WAP AP PA"; // Use short name to save RAM and ROM space + default_data = ""; + opaque_data = "0"; + } + }; + } + }; + } + diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/group/WPAPAdapter.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/group/WPAPAdapter.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2002-2006 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: Project definition file for accesspoint adapter. +* +*/ + + + +#include +#include +#include + +TARGET WPAPAdapter.dll +TARGETTYPE PLUGIN +UID 0x10009D8D 0x101F84D8 + + +VENDORID VID_DEFAULT +CAPABILITY CAP_ECOM_PLUGIN + +SOURCEPATH ../Src +SOURCE CWPAPAdapter.cpp +SOURCE CWPAPItemBase.cpp +SOURCE CWPAPAccesspointItem.cpp +SOURCE CWPAPNapdef.cpp +SOURCE CWPAPLogicalProxy.cpp +SOURCE CWPAPPhysicalProxy.cpp +SOURCE CWPAPPort.cpp +SOURCE WPAPUtil.cpp +SOURCE WPAPAdapterPanics.cpp +SOURCE WPAPAdapterGroupProxy.cpp +SOURCE CWPLog.cpp + +SOURCEPATH ../group + +START RESOURCE 101F84D8.rss +TARGET WPAPAdapter.rsc +END + +START RESOURCE WPAPAdapterResource.rss +HEADER +TARGET WPAPAdapterResource.rsc +TARGETPATH RESOURCE_FILES_DIR +LANGUAGE_IDS +END + + +USERINCLUDE ../Inc +MW_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/ecom + +LIBRARY euser.lib +LIBRARY ProvisioningEngine.lib +LIBRARY apengine.lib +LIBRARY commdb.lib +LIBRARY FeatMgr.lib +LIBRARY ecom.lib +LIBRARY centralrepository.lib +LIBRARY cmmanager.lib +DEBUGLIBRARY flogger.lib // Only in debug builds + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/group/WPAPAdapterResource.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/group/WPAPAdapterResource.rss Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,35 @@ +/* +* 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: Resource file. +* +*/ + + + + +// INCLUDES +#include +#include + +// Rich text labels + +RESOURCE LBUF r_qtn_sm_wapap_name + { + txt = qtn_sm_wapap_name; + } + +RESOURCE LBUF r_qtn_sm_wml_accesspoints + { + txt = qtn_sm_wml_accesspoints; + } diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/group/bld.inf Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,36 @@ +/* +* Copyright (c) 2001-2007 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: Build information file for AccesspointAdapter CP adapter +* +*/ + + + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/WPAPAdapter.iby CORE_MW_LAYER_IBY_EXPORT_PATH(WPAPAdapter.iby) +../rom/WPAPAdapterResources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(WPAPAdapterResources.iby) + +// export localised loc file +../loc/WPAPAdapter.loc MW_LAYER_LOC_EXPORT_PATH(wpapadapter.loc) + +PRJ_MMPFILES +WPAPAdapter.mmp + +PRJ_TESTMMPFILES + diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/loc/WPAPAdapter.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/loc/WPAPAdapter.loc Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2002-2004 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: This is a localisation file for AccesspointAdapter +* +*/ + + + + +// LOCALISATION STRINGS + +//d: Summary text for access points +//l: popup_info_list_pane_t2/opt1 +//r: 5.0 + +#define qtn_sm_wml_accesspoints "Access points:" + +//d:This is the default name for new WAP access point. +//l:query_popup_data_pane_t1/opt4 +//r: 5.0 + +#define qtn_sm_wapap_name "WAP access point" + +// End of File diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/rom/WPAPAdapter.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/rom/WPAPAdapter.iby Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,29 @@ +/* +* Copyright (c) 2007 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: Image description file for project wpapadapter +* +*/ + + + + +#ifndef WPAPADAPTER_IBY +#define WPAPADAPTER_IBY + +#include +#include + +ECOM_PLUGIN(WPAPAdapter.dll, WPAPAdapter.rsc) + +#endif // WPAPADAPTER_IBY diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/accesspointadapter/rom/WPAPAdapterResources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/accesspointadapter/rom/WPAPAdapterResources.iby Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,29 @@ +/* +* Copyright (c) 2007 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: Image description file for project wpapadapter +* +*/ + + + + +#ifndef WPAPADAPTERRESOURCES_IBY +#define WPAPADAPTERRESOURCES_IBY + +#include +#include + +data=DATAZ_\RESOURCE_FILES_DIR\WPAPAdapterResource.rsc RESOURCE_FILES_DIR\WPAPAdapterResource.rsc + +#endif // WPAPADAPTERRESOURCES_IBY diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/data/2000b4af.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/data/2000b4af.rss Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,51 @@ +/* +* Copyright (c) 2007 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: Resource definitions for project wpdestinationnwadapter +* +*/ + + + +#include +#include "wpdestinationnwadapteruids.h" + +// --------------------------------------------------------------------------- +// theInfo +// Resource defining the Destination network adapter plugin. +// --------------------------------------------------------------------------- +// +RESOURCE REGISTRY_INFO theInfo + { + resource_format_version = RESOURCE_FORMAT_VERSION_2; + dll_uid = KDestinationNetworkAdapterDllUid3; + interfaces = + { + INTERFACE_INFO + { + interface_uid = KProvisioningAdapterInterface; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = KDestinationNetworkAdapterUid; + version_no = 1; + display_name = "Destination Network Provisioning Adapter||Copyright © 2007 Nokia Corporation."; + default_data = ""; + opaque_data = "10"; + rom_only = 1; + } + }; + } + }; + } diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/data/wpdestinationnwadapter.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/data/wpdestinationnwadapter.rss Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2007 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: Resource definitions for project wpdestinationnwadapter +* +*/ + + + + +#include +#include +#include + +RESOURCE LBUF r_qtn_sm_head_destination_network + { + txt = qtn_sm_head_destination_network; + } + +RESOURCE LBUF r_qtn_sm_default_name_destination_network + { + txt = qtn_sm_default_name_destination_network; + } diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/group/bld.inf Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2007 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: Build information file for wpnwdestinationadapter +* +*/ + + + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/wpdestinationnwadapter.iby CORE_MW_LAYER_IBY_EXPORT_PATH(wpdestinationnwadapter.iby) +../rom/wpdestinationnwadapter_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(wpdestinationnwadapter_resources.iby) + +// export localised loc file +../loc/wpdestinationnwadapter.loc MW_LAYER_LOC_EXPORT_PATH(wpdestinationnwadapter.loc) + + +PRJ_MMPFILES + +./wpdestinationnwadapter.mmp + + +PRJ_TESTMMPFILES + diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/group/wpdestinationnwadapter.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/group/wpdestinationnwadapter.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,61 @@ +/* +* Copyright (c) 2007-2008 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: This file provides the information required for building the +* whole of cwpdestinationnwadapter.dll. +* +*/ + + + +#include +#include + +TARGET wpdestinationnwadapter.dll +TARGETTYPE PLUGIN +UID 0x10009D8D 0x2000B4AF + +OPTION GCC -save-temps + +CAPABILITY CAP_ECOM_PLUGIN +VENDORID VID_DEFAULT + +SOURCEPATH ../src +SOURCE cwpdestinationnwadapter.cpp +SOURCE cwpdestinationnwitem.cpp +SOURCE wpdestinationnwadaptergroupproxy.cpp + +SOURCEPATH ../data + +START RESOURCE 2000b4af.rss +TARGET wpdestinationnwadapter.rsc +END + +START RESOURCE wpdestinationnwadapter.rss +HEADER +TARGETPATH RESOURCE_FILES_DIR +LANGUAGE_IDS +END + +USERINCLUDE . +USERINCLUDE ../inc +MW_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE ../inc +SYSTEMINCLUDE /epoc32/include/ecom + +LIBRARY euser.lib +LIBRARY provisioningengine.lib +LIBRARY charconv.lib +LIBRARY apengine.lib +LIBRARY commdb.lib +LIBRARY cmmanager.lib diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwadapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwadapter.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,283 @@ +/* +* Copyright (c) 2007-2008 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: Handles destination network provisioning. +* +*/ + + + +#ifndef CWPDESTINATIONNWADAPTER_H +#define CWPDESTINATIONNWADAPTER_H + +#include +#include + +#include "cwpdestinationnwitem.h" + +class CWPCharacteristic; + +/** + * Realizes destination network provisioning adapter. + * + * Destination network adapter handles destination network provisioning and + * stores them via Connection Method Manager API. + * + * @lib cwpdestinationnwadapter.lib + * @since S60 v3.2. + */ +class CWPDestinationNwAdapter : public CWPAdapter, public MWPContextExtension + { + /** + * Friend class for unit testing - uncomment when running tests. + */ + //friend class UT_wpdestinationnwadapter; + +public: + + static CWPDestinationNwAdapter* NewL(); + + virtual ~CWPDestinationNwAdapter(); + + /** + * Converts given 8-bit descriptor to TUint32. + * + * @since S60 v3.2. + * @param aDes Descriptor to be converted. + * @return Unsigned 32-bit integer. + */ + TUint32 CWPDestinationNwAdapter::Des8ToUint32L( const TDesC8& aDes ); + +// from base class CWPAdapter + + /** + * From CWPAdapter. + * Checks the number of settings items. + * + * @since S60 v3.2. + * @return Quantity of items (always one). + */ + TInt ItemCount() const; + + /** + * From CWPAdapter. + * Getter for the summary title of Destination network settings. The text + * is shown to the user in an opened configuration message. + * + * @since S60 v3.2. + * @param aIndex Location of the settings item. Not used. + * @return Summary title. + */ + const TDesC16& SummaryTitle( TInt aIndex ) const; + + /** + * From CWPAdapter. + * Getter for the summary text of Destination network settings. The text + * is shown to the user in opened configuration message. + * + * @since S60 v3.2. + * @param aIndex Location of the settings item. + * @return Summary text. + */ + const TDesC16& SummaryText( TInt aIndex ) const; + + /** + * From CWPAdapter. + * Saves a destination network. + * + * @since S60 v3.2. + * @param aIndex Location of the settings item. + */ + void SaveL( TInt aIndex ); + + /** + * From CWPAdapter. + * Returns EFalse since a destination cannot be set as default. + * + * @since S60 v3.2. + * @param aIndex Location of the settings item to be queried. Not used. + * @return Information whether these settings can be set as default. + */ + TBool CanSetAsDefault( TInt /*aIndex*/ ) const; + + /** + * From CWPAdapter. + * Adapter sets the settings as default. Not supported. + * + * @since S60 v3.2. + * @param aIndex Location of the settings item to be set as default. + */ + inline void SetAsDefaultL( TInt /*aIndex*/ ); + + /** + * From CWPAdapter. + * Query for detailed information about the destination network. + * This is not supported feature as in other adapters in the framework. + * Always returns KErrNotSupported. + * + * @since S60 v3.2. + * @param aItem Not used but here because of inheritance. + * @param aVisitor Object for retrieveing details of a setting entry. + * Not used. + * @return KErrNotSupported if not supported. + */ + TInt DetailsL( TInt aItem, MWPPairVisitor& aVisitor ); + + /** + * From CWPAdapter. + * Visit method. Visits the adapter. Adapter checks from + * aCharacteristic if the data is targeted to it and acts according to + * that. + * + * @since S60 v3.2. + * @param aCharacteristic The characteristic found. + */ + void VisitL( CWPCharacteristic& aCharacteristic ); + + /** + * From CWPAdapter. + * Visit method. Visits the adapter. Method sets parameter values to + * destination network settings item. + * + * @since S60 v3.2. + * @param aParameter The parameter found. + */ + void VisitL( CWPParameter& aParameter ); + + /** + * From CWPAdapter. + * Visit method. Used for linking settings to NAPDEF definition. + * + * @since S60 v3.2. + * @param aLink Link to the characteristic. + */ + void VisitLinkL( CWPCharacteristic& aLink ); + + /** + * From CWPAdapter. + * Gets the saving information from the adapter that has saved settings. + * + * @since S60 v3.2. + * @param aIndex Index of the previously saved item. + * @param aSavingInfo Saving info. + */ + void GetSavingInfoL( TInt aIndex, RPointerArray& aSavingInfo ); + + /** + * From CWPAdapter. + * Informs the adapters of the saved settings. + * Not used. + * + * @since S60 v3.2. + * @param aAppIdOfSavingItem UID of the adapter component. + * @param aAppRef APPREF of the saved settings. + * @param aStorageIdValue Value that identifies the settings in its + * storage. + */ + inline void SettingsSavedL( const TDesC8& /*aAppIdOfSavingItem*/, + const TDesC8& /*aAppRef*/, const TDesC8& /*aStorageIdValue*/ ); + + /** + * From CWPAdapter. + * Lets the adapters know when the saving has been finalized in + * viewpoint of the provisioning framework. The adapters can make + * finalization of saving the settings after receiving this call. + * Not used. + * + * @since S60 v3.2. + */ + inline void SavingFinalizedL(); + +// from base class MWPContextExtension + + /** + * From MWPContextExtension. + * Returns a pointer to a context extension. + * + * @since S60 v3.2. + * @param aExtension Contains a pointer to MWPContextExtension if + * supported. + * @return KErrNotSupported if not supported, otherwise KErrNone. + */ + TInt ContextExtension( MWPContextExtension*& aExtension ); + + /** + * From MWPContextExtension. + * Returns the data used for saving. + * + * @since S60 v3.2. + * @param aIndex The index of the data. + * @return The data; ownership is transferred. + */ + const TDesC8& SaveDataL( TInt aIndex ) const; + + /** + * From MWPContextExtension. + * Deletes a saved destination network. + * + * @since S60 v3.2. + * @param aSaveData The data used for saving. + */ + void DeleteL( const TDesC8& aSaveData ); + + /** + * From MWPContextExtension. + * Returns the UID of the adapter. + * + * @since S60 v3.2. + * @return UID of the adapter. + */ + TUint32 Uid() const; + +private: + + CWPDestinationNwAdapter(); + + void ConstructL(); + +private: // data + + /** + * Application ID of the current characteristic. + */ + TPtrC iAppId; + + /** + * Title for destination network. Value read from the resource file + * in initiation phase. + * Own. + */ + HBufC16* iDefaultTitle; + + /** + * Name for destination network. Value read from the resource file + * in initiation phase. + * Own. + */ + HBufC16* iDefaultName; + + /** + * Destination network item. + * Own. + */ + CWPDestinationNwItem* iCurrentItem; + + /** + * Destination Network items. + */ + RPointerArray iItems; + }; + +#include "cwpdestinationnwadapter.inl" + +#endif // CWPDESTINATIONNWADAPTER_H diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwadapter.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwadapter.inl Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2007 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: cwpdestinationnwadapter.h inline functions. +* +*/ + + + +// ----------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SetAsDefaultL +// ----------------------------------------------------------------------------- +// +inline void CWPDestinationNwAdapter::SetAsDefaultL( TInt /*aIndex*/ ) + { + }; + +// ----------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SettingsSavedL +// ----------------------------------------------------------------------------- +// +inline void CWPDestinationNwAdapter::SettingsSavedL( + const TDesC8& /*aAppIdOfSavingItem*/, const TDesC8& /*aAppRef*/, + const TDesC8& /*aStorageIdValue*/ ) + { + }; + +// ----------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SavingFinalizedL +// ----------------------------------------------------------------------------- +// +inline void CWPDestinationNwAdapter::SavingFinalizedL() + { + }; diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwitem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/inc/cwpdestinationnwitem.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,157 @@ +/* +* Copyright (c) 2007 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: Settings item for one destination network. Also handles +* saving destination networks to permanent storage. +* +*/ + + + +#ifndef CWPDESTINATIONNWITEM_H +#define CWPDESTINATIONNWITEM_H + +#include +#include + +class CWPCharacteristic; + +/** + * Destination network settings item. + * + * Destination network item handles saving destination networks via + * Connection Method Manager API. + * + * @lib cwpdestinationnwadapter.lib + * @since S60 v3.2. + */ +class CWPDestinationNwItem : public CBase + { + /** + * Friend classes for unit testing - uncomment when running tests. + */ + //friend class UT_wpdestinationnwadapter; + +public: + + static CWPDestinationNwItem* NewL(); + + virtual ~CWPDestinationNwItem(); + + /** + * Setter for APPREF. + * @since S60 v3.2. + * @param aAPPREF. + */ + void SetAppRefL( const TDesC8& aAppRef ); + + /** + * Setter for user viewable name of the setting. + * @since S60 v3.2. + * @param aNAME. Value is TCP or UDP. + */ + void SetSettingsNameL( const TDesC& aSettingsName ); + + /** + * Setter for NAPDEF (IAP settings). + * @since S60 v3.2. + * @param aNapDef. + */ + void AddNapDefL( CWPCharacteristic* aNapDef ); + + /** + * Getter for APPREF value. + * @since S60 v3.2. + * @return APPREF. + */ + const TDesC8& AppRef() const; + + /** + * Getter for user viewable name of Destination network. + * @since S60 v3.2. + * @return Settings name. + */ + const TDesC& SettingsName() const; + + /** + * Saves the destination network settings. + * @since S60 v3.2. + */ + void SaveL(); + + /** + * Return destination network ID. + * @since S60 v3.2. + * @return ID of the destination network. + */ + const TDesC8& SaveData() const; + +private: + + /** + * Creates a network destination. + * @since S60 v3.2. + * @param aCmManager Connection Method Manager handle. + * @return Network destination. + */ + RCmDestinationExt CreateDestinationL( RCmManagerExt& aCmManager ); + + /** + * Returnes the Iap id that matches the given Wap id. + * @since S60 v3.2.3 + * @param aWapId IAP's Wap Id. + * @return Iap Id. + */ + TUint32 IapIdFromWapIdL( TUint32 aWapId ); + +private: + + void ConstructL(); + CWPDestinationNwItem(); + +private: // data + + /** + * Destination network reference identity in provisioning document. + * Own. + */ + HBufC8* iAppRef; + + /** + * Name of destination network visible to user when viewing the + * provisioning message. + * Own. + */ + HBufC* iSettingsName; + + /** + * Array of NAPDEFs, IAP settings. + * Not own. (Contained pointers are deleted by ProvisioningEngine.) + */ + RPointerArray iNapDefs; + + /** + * ID value of the referred IAP. + */ + TUint32 iIAPId; + + /** + * Destination network ID as a descriptor to be returned by the + * SaveData method to the framework via adapters SaveDataL. + * Own. + */ + HBufC8* iSavedProfileId; + + }; + +#endif // CWPDESTINATIONNWITEM_H diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/inc/wpdestinationnwadapteruids.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/inc/wpdestinationnwadapteruids.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2007 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: Destination network adapter UIDs. +* +*/ + + + +#ifndef WPDESTINATIONNWADAPTERUIDS_H +#define WPDESTINATIONNWADAPTERUIDS_H + +// MACROS + +// ECOM plugin +#define KECOMUid2 0x10009D8D + +// UID2 for the Destination Network adapter. ECOM plug-in. +#define KDestinationNetworkAdapterDllUid2 KECOMUid2 + +// UID3 for the Destination Network adapter DLL. +#define KDestinationNetworkAdapterDllUid3 0x2000B4AF + +// Implementation UID for the Destination Network adapter. +#define KDestinationNetworkAdapterUid 0x2000B4AE + +// Interface UID from Client Provisioning adapter base class. +#define KProvisioningAdapterInterface 0x101F84D5 + +#endif // WPDESTINATIONNWADAPTERUIDS_H diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/inc/wpdestinationnwdebug.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/inc/wpdestinationnwdebug.h Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,36 @@ +/* +* Copyright (c) 2007 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: Enables and disables debug prints. +* +*/ + + + +#ifndef WPDESTINATIONNWDEBUG_H +#define WPDESTINATIONNWDEBUG_H + +#include + +#ifdef _DEBUG +#define DBG_PRINT( p ) RDebug::Print( _L( p ) ) +#define DBG_PRINT_2( p, i ) RDebug::Print( _L( p ), i ) +#define DBG_PRINT_3( p, i, u ) RDebug::Print( _L( p ), i, u ) +#else +#define DBG_PRINT( p ) +#define DBG_PRINT_2( p, i ) +#define DBG_PRINT_3( p, i, u ) +#endif // _DEBUG + + +#endif // WPDESTINATIONNWDEBUG_H diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/loc/wpdestinationnwadapter.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/loc/wpdestinationnwadapter.loc Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,31 @@ +/* +* Copyright (c) 2007 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: Localization strings for project wpdestinationnwadapter +* +*/ + + + + +// d:Summary text for destination network. +// l:msg_body_pane/opt +// r:3.2 +// +#define qtn_sm_default_name_destination_network "Unnamed" + +// d:Summary title for destination network. +// l:msg_body_pane_t1 +// r:3.2 +// +#define qtn_sm_head_destination_network "Destination networks:" diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/rom/wpdestinationnwadapter.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/rom/wpdestinationnwadapter.iby Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,26 @@ +/* +* Copyright (c) 2007 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: wpdestinationnwadapter iby file +* +*/ + + +#ifndef WPDESTINATIONNWADAPTER_IBY +#define WPDESTINATIONNWADAPTER_IBY + +#include + +ECOM_PLUGIN( wpdestinationnwadapter.dll, 2000b4af.rsc ) + +#endif // WPDESTINATIONNWADAPTER_IBY diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/rom/wpdestinationnwadapter_resources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/rom/wpdestinationnwadapter_resources.iby Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2007 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: wpdestinationnwadapter resource iby file +* +*/ + + +#ifndef __WPDESTINATIONNWADAPTER_RESOURCES_IBY__ +#define __WPDESTINATIONNWADAPTER_RESOURCES_IBY__ + + +//Client Provisioning Destination network adapter resources +data=DATAZ_\RESOURCE_FILES_DIR\wpdestinationnwadapter.rsc RESOURCE_FILES_DIR\wpdestinationnwadapter.rsc + + +#endif // __WPDESTINATIONNWADAPTER_RESOURCES_IBY__ diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwadapter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwadapter.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,380 @@ +/* +* Copyright (c) 2007-2008 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: Receives and stores Destination network settings. +* +*/ + + + + +#include +#include +#include +#include +#include +#include +#include // Adapter utils +#include // Unicode conversion +#include +#include +#include +#include + +#include "cwpdestinationnwadapter.h" +#include "wpdestinationnwdebug.h" + +_LIT( KDestinationNwAdapterName, "WPDestinationNwAdapter"); +_LIT( KDestinationNwAppID, "w904C" ); // OMA CP registration document. +_LIT8( KDestinationNwAppID8, "w904C" ); // OMA CP registration document. + + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::CWPDestinationNwAdapter +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter::CWPDestinationNwAdapter() : CWPAdapter() + { + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ConstructL +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::ConstructL() + { + DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - begin" ); + TFileName fileName; + Dll::FileName( fileName ); + // Read settings title from localization file. The title is shown to UI + // when OMA CP message is provisioned using WAPPUSH. + iDefaultTitle = WPAdapterUtil::ReadHBufCL( + fileName, + KDestinationNwAdapterName, + R_QTN_SM_HEAD_DESTINATION_NETWORK ); + // Read default settings name from localization file. + iDefaultName = WPAdapterUtil::ReadHBufCL( + fileName, + KDestinationNwAdapterName, + R_QTN_SM_DEFAULT_NAME_DESTINATION_NETWORK ); + DBG_PRINT( "CWPDestinationNwAdapter::ConstructL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::NewL +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter* CWPDestinationNwAdapter::NewL() + { + CWPDestinationNwAdapter* self = new (ELeave) + CWPDestinationNwAdapter; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::~CWPDestinationNwAdapter +// --------------------------------------------------------------------------- +// +CWPDestinationNwAdapter::~CWPDestinationNwAdapter() + { + DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - begin" ); + delete iDefaultTitle; + delete iDefaultName; + iItems.ResetAndDestroy(); + iItems.Close(); + DBG_PRINT( "CWPDestinationNwAdapter::~CWPDestinationNwAdapter - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::Des8ToUint32L() +// Converts an 8 bit descriptor to TUint32. +// --------------------------------------------------------------------------- +// +TUint32 CWPDestinationNwAdapter::Des8ToUint32L( const TDesC8& aDes ) + { + TLex8 lex( aDes ); + TUint32 value( 0 ); + User::LeaveIfError( lex.Val( value, EDecimal ) ); + return value; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ItemCount +// From class CWPAdapter. +// Checks the number of settings items. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::ItemCount() const + { + return iItems.Count(); + } + +// --------------------------------------------------------------------------- +// From class CWPAdapter. +// CWPDestinationNwAdapter::SummaryTitle +// Returns the summary title. +// --------------------------------------------------------------------------- +// +const TDesC16& CWPDestinationNwAdapter::SummaryTitle( TInt /*aIndex*/ ) const + { + return *iDefaultTitle; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SummaryText +// From class CWPAdapter. +// Returns the summary text of a destination network. +// --------------------------------------------------------------------------- +// +const TDesC16& CWPDestinationNwAdapter::SummaryText( TInt aIndex ) const + { + if ( !iItems[aIndex]->SettingsName().Length() ) + { + return *iDefaultName; + } + return iItems[aIndex]->SettingsName(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SaveL +// From class CWPAdapter. +// Calls settings items saving method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::SaveL( TInt aIndex ) + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + iItems[aIndex]->SaveL(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::CanSetAsDefault +// From class CWPAdapter. +// Not supported; always return EFalse. +// --------------------------------------------------------------------------- +// +TBool CWPDestinationNwAdapter::CanSetAsDefault( TInt /*aIndex*/ ) const + { + return EFalse; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::DetailsL +// From class CWPAdapter. +// Not supported. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::DetailsL( TInt /*aItem*/, + MWPPairVisitor& /*aVisitor */ ) + { + return KErrNotSupported; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitL +// From class CWPAdapter. +// OMA CP characteristics are handled in this method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitL( + CWPCharacteristic& aCharacteristic ) + { + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - begin" ); + switch ( aCharacteristic.Type() ) + { + // This adapter only handles APPLICATION characteristic. + case KWPApplication: + { + iCurrentItem = CWPDestinationNwItem::NewL(); + // Set default name for destination - replaced later if a name + // has been provisioned. + iCurrentItem->SetSettingsNameL( iDefaultName->Des() ); + aCharacteristic.AcceptL( *this ); + + // Settings are for Destination network - append current item to + // item array to be saved later. + if ( 0 == iAppId.Compare( KDestinationNwAppID() ) ) + { + iItems.AppendL( iCurrentItem ); + } + // Settings are not for Destination network. + else + { + delete iCurrentItem; + iCurrentItem = NULL; + } + break; + } + // All other than APPLICATION are ignored. + default: + break; + } + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( characteristic ) - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitL +// From class CWPAdapter. +// Destination network parameters are handled in this method. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitL( CWPParameter& aParameter ) + { + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - begin" ); + // tmpValue holds the value converted from Unicode to UTF8. + HBufC8* tmpValue = HBufC8::NewLC( aParameter.Value().Length() ); // CS:1 + TPtr8 ptrTmpValue( tmpValue->Des() ); + CnvUtfConverter::ConvertFromUnicodeToUtf8( ptrTmpValue, + aParameter.Value() ); + + switch ( aParameter.ID() ) + { + // APPLICATION/APPID + case EWPParameterAppID: + { + iAppId.Set( aParameter.Value() ); + break; + } + + // APPLICATION/NAME + case EWPParameterName: + { + if ( iCurrentItem ) + { + iCurrentItem->SetSettingsNameL( aParameter.Value() ); + } + break; + } + + // APPLICATION/APPREF + case EWPParameterAppRef: + { + if ( iCurrentItem ) + { + iCurrentItem->SetAppRefL( tmpValue->Des() ); + } + break; + } + + // Other settings are ignored. + default: + { + break; + } + } + CleanupStack::PopAndDestroy( tmpValue ); // CS:0 + DBG_PRINT( "CWPDestinationNwAdapter::VisitL( parameter ) - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::VisitLinkL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::VisitLinkL( CWPCharacteristic& aLink ) + { + if ( KWPNapDef == aLink.Type() && iCurrentItem ) + { + iCurrentItem->AddNapDefL( &aLink ); + } + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::GetSavingInfoL +// APPID is set to [0], APPREF to [1] and saving info (storage ID) to [2]. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::GetSavingInfoL( TInt aIndex, + RPointerArray& aSavingInfo ) + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + aSavingInfo.AppendL( KDestinationNwAppID8().AllocL() ); + aSavingInfo.AppendL( iItems[aIndex]->AppRef().AllocL() ); + aSavingInfo.AppendL( iItems[aIndex]->SaveData().AllocL() ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::ContextExtension +// From class MWPContextExtension. +// Returns a pointer to context extension. +// --------------------------------------------------------------------------- +// +TInt CWPDestinationNwAdapter::ContextExtension( + MWPContextExtension*& aExtension ) + { + aExtension = this; + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::SaveDataL +// From class MWPContextExtension. +// Returns ID of saved data. +// --------------------------------------------------------------------------- +// +const TDesC8& CWPDestinationNwAdapter::SaveDataL( TInt aIndex ) const + { + __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iItems.Count(), + User::Leave( KErrArgument ) ); + + return iItems[aIndex]->SaveData(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::DeleteL +// From class MWPContextExtension. +// Deletes a Destination network. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwAdapter::DeleteL( const TDesC8& aSaveData ) + { + DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - begin" ); + RCmManagerExt cmManager; + cmManager.OpenL(); + CleanupClosePushL( cmManager ); // CS:1 + TUint32 destinationId = Des8ToUint32L( aSaveData ); + RCmDestinationExt destination = cmManager.DestinationL( destinationId ); + CleanupClosePushL( destination ); // CS:2 + const TInt cmCount = destination.ConnectionMethodCount(); + // First remove IAPs from destination network because this adapter must + // not delete IAPs. + for ( TInt counter = 0; counter < cmCount; counter++ ) + { + destination.RemoveConnectionMethodL( + destination.ConnectionMethodL( 0 ) ); + destination.UpdateL(); + } + CleanupStack::Pop( &destination ); // CS:1 + destination.DeleteLD(); + CleanupStack::PopAndDestroy( &cmManager ); // CS:0 + DBG_PRINT( "CWPDestinationNwAdapter::DeleteL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwAdapter::Uid +// From class MWPContextExtension. +// Returns the UID of this adapter. +// --------------------------------------------------------------------------- +// +TUint32 CWPDestinationNwAdapter::Uid() const + { + return iDtor_ID_Key.iUid; + } +// End of file. diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/src/cwpdestinationnwitem.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,345 @@ +/* +* Copyright (c) 2007 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: Settings item for one destination network. Also handles +* saving destination networks to permanent storage. +* +*/ + + + + +#include +#include +#include +#include +#include +#include +#include +#include // For WLAN plugin UID, i.e. bearer type. + +#include "cwpdestinationnwitem.h" +#include "wpdestinationnwdebug.h" + +const TInt KMaxCharsInTUint32 = 10; + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::NewL +// +// --------------------------------------------------------------------------- +// +CWPDestinationNwItem* CWPDestinationNwItem::NewL() + { + CWPDestinationNwItem* self = new ( ELeave ) CWPDestinationNwItem(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::CWPDestinationNwItem +// +// --------------------------------------------------------------------------- +// +CWPDestinationNwItem::CWPDestinationNwItem() + { + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::~CWPDestinationNwItem +// +// --------------------------------------------------------------------------- +// +CWPDestinationNwItem::~CWPDestinationNwItem() + { + DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - begin" ); + delete iAppRef; + delete iSettingsName; + iNapDefs.Close(); + delete iSavedProfileId; + DBG_PRINT( "CWPDestinationNwItem::~CWPDestinationNwItem - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::ConstructL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwItem::ConstructL() + { + DBG_PRINT( "CWPDestinationNwItem::ConstructL - begin" ); + iAppRef = HBufC8::NewL( 0 ); + iSettingsName = HBufC::NewL( 0 ); + iSavedProfileId = HBufC8::NewL( KMaxCharsInTUint32 ); + DBG_PRINT( "CWPDestinationNwItem::ConstructL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::SetAppRefL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwItem::SetAppRefL( const TDesC8& aAppRef ) + { + delete iAppRef; + iAppRef = NULL; + iAppRef = aAppRef.AllocL(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::SetSettingsNameL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwItem::SetSettingsNameL( const TDesC& aSettingsName ) + { + delete iSettingsName; + iSettingsName = NULL; + iSettingsName = aSettingsName.AllocL(); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::AddNapDefL +// +// --------------------------------------------------------------------------- +// +void CWPDestinationNwItem::AddNapDefL( CWPCharacteristic* aNapDef ) + { + iNapDefs.AppendL( aNapDef ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::AppRef +// +// --------------------------------------------------------------------------- +// +const TDesC8& CWPDestinationNwItem::AppRef() const + { + return *iAppRef; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::SettingsName +// +// --------------------------------------------------------------------------- +// +const TDesC& CWPDestinationNwItem::SettingsName() const + { + return *iSettingsName; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::SaveL() +// Saves the Destination network using Extended connection settings API. +// --------------------------------------------------------------------------- +// +void CWPDestinationNwItem::SaveL() + { + DBG_PRINT( "CWPDestinationNwItem::SaveL - begin" ); + // Number of IAPs that have been linked to this destination. + const TInt iapCount( iNapDefs.Count() ); + RCmManagerExt cmManager; + cmManager.OpenL(); + CleanupClosePushL( cmManager ); // CS:1 + RCmDestinationExt destination = CreateDestinationL( cmManager ); + CleanupClosePushL( destination ); // CS:2 + RCmConnectionMethodExt tempconn; + + // Add linked IAPs to destination. + for ( TInt counter = 0; counter < iapCount; counter++ ) + { + TPckgBuf apUid; + apUid.Copy( iNapDefs[counter]->Data( 0 ) ); + // The stored id is the wap id. Convert it into the iap id + + TUint32 iapId = IapIdFromWapIdL( apUid() ); + + apUid = NULL; + RCmConnectionMethodExt connection = + cmManager.ConnectionMethodL( iapId ); + CleanupClosePushL( connection ); // CS:5 + + RArray destinationIds; + cmManager.AllDestinationsL( destinationIds ); + CleanupClosePushL( destinationIds ); + + TInt counter2(0); + for ( counter2 = 0; counter2 < destinationIds.Count(); counter2++ ) + { + RCmDestinationExt tempdest = cmManager.DestinationL( + destinationIds[counter2] ); + + TRAPD( err, tempconn = tempdest.ConnectionMethodByIDL( iapId )); + + tempconn.Close(); + tempdest.Close(); + + if ( err != KErrNotFound ) + { + // Found from other destination + break; + } + } + if ( counter2 == destinationIds.Count() ) + { + // Not found in any other destination + destination.AddConnectionMethodL( connection ); + } + else + { + // Found in some other destination -> create copy + destination.AddConnectionMethodL( tempconn = connection.CreateCopyL() ); + tempconn.Close(); + } + CleanupStack::PopAndDestroy( &destinationIds ); + + // Change seamlessness level for linked WLAN IAPs. + TUint32 bearerType = connection.GetIntAttributeL( + CMManager::ECmBearerType ); + if ( KUidWlanBearerType == bearerType ) + { + connection.SetIntAttributeL( CMManager::ECmSeamlessnessLevel, + CMManager::ESeamlessnessShowprogress ); + connection.UpdateL(); + } + + destination.UpdateL(); + CleanupStack::PopAndDestroy( &connection ); // CS:4 + } + destination.UpdateL(); // In case there were no IAP linkages. + // Destination ID is needed as a descriptor (used in linking settings). + TUint32 destinationId = destination.Id(); + iSavedProfileId->Des().Num( destinationId, EDecimal ); + // Pop destination & cmManager. + CleanupStack::PopAndDestroy( 2, &cmManager ); // CS:0 + DBG_PRINT( "CWPDestinationNwItem::SaveL - end" ); + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::SaveData +// +// --------------------------------------------------------------------------- +// +const TDesC8& CWPDestinationNwItem::SaveData() const + { + return *iSavedProfileId; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::CreateDestinationL +// Checks that settings name if unique, renames if necessary, and creates +// a destination network. +// --------------------------------------------------------------------------- +// +RCmDestinationExt CWPDestinationNwItem::CreateDestinationL( + RCmManagerExt& aCmManager ) + { + DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - begin" ); + RArray destinationIds; + // Get destination ID's for checking if name to be set is reserved. + CleanupClosePushL( destinationIds ); // CS:1 + aCmManager.AllDestinationsL( destinationIds ); + const TInt destinationCount = destinationIds.Count(); + // Destination's name to actually be used. + HBufC* newName = HBufC::NewLC( + iSettingsName->Des().Length() + KMaxCharsInTUint32 ); // CS:2 + newName->Des().Copy( iSettingsName->Des() ); + + // Check names from all existing destinations. + for ( TInt counter = 0; counter < destinationCount; counter++ ) + { + RCmDestinationExt destination = aCmManager.DestinationL( + destinationIds[counter] ); + CleanupClosePushL( destination ); // CS:3 + HBufC* settingsName = destination.NameLC(); // CS:4 + // If destination exists, return it. + if ( 0 == newName->Des().Compare( settingsName->Des() ) ) + { + // Pop settingsName & destination & newName + CleanupStack::PopAndDestroy( 3, &destination ); // CS:1 + + RCmDestinationExt dest2 = aCmManager.DestinationL( + destinationIds[counter] ); + + CleanupStack::PopAndDestroy( &destinationIds ); // CS:0 + DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" ); + return dest2; + } + // Pop settingsName & destination. + CleanupStack::PopAndDestroy( 2, &destination ); // CS:2 + } + + // Create new a destination and return it. + RCmDestinationExt destination = aCmManager.CreateDestinationL( *newName ); + // Pop newName & destinationIds + CleanupStack::PopAndDestroy( 2, &destinationIds ); // CS:0 + DBG_PRINT( "CWPDestinationNwItem::CreateDestinationL - end" ); + return destination; + } + +// --------------------------------------------------------------------------- +// CWPDestinationNwItem::IapIdFromWapId +// Returns IAP ID from WAP ID. +// --------------------------------------------------------------------------- +// +TUint32 CWPDestinationNwItem::IapIdFromWapIdL( TUint32 aWapId ) + { + RCmManagerExt cmManager; + cmManager.OpenLC(); // CS:1 + RArray iapIds; + TUint32 iapId( 0 ); + + // First get all free IAP ID's. + cmManager.ConnectionMethodL( iapIds ); + CleanupClosePushL( iapIds ); // CS:2 + + // Then get IAP ID's from all destinations. + RArray destIds; + cmManager.AllDestinationsL( destIds ); + CleanupClosePushL( destIds ); // CS:3 + TInt destCount = destIds.Count(); + for ( TInt destIndex = 0; destIndex < destCount; destIndex++ ) + { + RCmDestinationExt dest = cmManager.DestinationL( + destIds[destIndex] ); + CleanupClosePushL( dest ); // CS:4 + TInt cmCount = dest.ConnectionMethodCount(); + for ( TInt cmIndex = 0; cmIndex < cmCount; cmIndex++ ) + { + TUint32 apId = dest.ConnectionMethodL( + cmIndex ).GetIntAttributeL( CMManager::ECmIapId ); + iapIds.AppendL( apId ); + } + CleanupStack::PopAndDestroy( &dest ); // CS:3 + } + // Finally, go through all connection methods and find correct IAP ID. + const TInt cmCount = iapIds.Count(); + for ( TInt counter = 0; counter < cmCount; counter++ ) + { + TUint32 id = cmManager.GetConnectionMethodInfoIntL( + iapIds[counter], CMManager::ECmWapId ); + if ( id == aWapId ) + { + iapId = iapIds[counter]; + // No need to go through rest of IAPs. + break; + } + } + // PopAndDestroy destIds, iapIds, cmManager. + CleanupStack::PopAndDestroy( 3, &cmManager ); // CS:0 + return iapId; + } + + +// End of file. diff -r b497e44ab2fc -r a9c0ce913924 omaprovisioning/provisioning/cpdestinationnwadapter/src/wpdestinationnwadaptergroupproxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/cpdestinationnwadapter/src/wpdestinationnwadaptergroupproxy.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -0,0 +1,47 @@ +/* +* Copyright (c) 2007 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: Destination network adapter implementation group proxy +* +*/ + + + + +// INCLUDE FILES +#include +#include +#include "wpdestinationnwadapteruids.h" +#include "cwpdestinationnwadapter.h" + +// CONSTANTS +const TImplementationProxy KImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY( KDestinationNetworkAdapterUid, + CWPDestinationNwAdapter::NewL ) + }; + +// ----------------------------------------------------------------------------- +// ImplementationGroupProxy +// Returns: TImplementationProxy*: pointer to TImplementationProxy +// ----------------------------------------------------------------------------- +// +EXPORT_C const TImplementationProxy* ImplementationGroupProxy( + TInt& aTableCount ) + { + aTableCount = sizeof( KImplementationTable ) / + sizeof( TImplementationProxy ); + return KImplementationTable; + } + +// End of file. diff -r b497e44ab2fc -r a9c0ce913924 policymanagement/policyengine/group/PolicyEngineServer.mmp --- a/policymanagement/policyengine/group/PolicyEngineServer.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/policymanagement/policyengine/group/PolicyEngineServer.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -52,6 +52,7 @@ USERINCLUDE ../../../inc // domain private headers MW_LAYER_SYSTEMINCLUDE +APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE /epoc32/include/xml SYSTEMINCLUDE /epoc32/include/comms-infras/commdb/protection #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS diff -r b497e44ab2fc -r a9c0ce913924 policymanagement/policyengine/policyengineserver/inc/OperationParser.h --- a/policymanagement/policyengine/policyengineserver/inc/OperationParser.h Thu Dec 17 09:07:52 2009 +0200 +++ b/policymanagement/policyengine/policyengineserver/inc/OperationParser.h Thu Jan 07 13:15:03 2010 +0200 @@ -27,10 +27,10 @@ #include "PolicyEngineClientServer.h" #include -#include -#include +#include +#include #include -#include +#include // CONSTANTS // MACROS diff -r b497e44ab2fc -r a9c0ce913924 policymanagement/policyengine/policyengineserver/inc/PolicyParser.h --- a/policymanagement/policyengine/policyengineserver/inc/PolicyParser.h Thu Dec 17 09:07:52 2009 +0200 +++ b/policymanagement/policyengine/policyengineserver/inc/PolicyParser.h Thu Jan 07 13:15:03 2010 +0200 @@ -26,10 +26,10 @@ #include "PolicyEngineClientServer.h" #include -#include -#include +#include +#include #include -#include +#include // CONSTANTS diff -r b497e44ab2fc -r a9c0ce913924 syncmlfw/common/http/inc/nsmlhttp.h --- a/syncmlfw/common/http/inc/nsmlhttp.h Thu Dec 17 09:07:52 2009 +0200 +++ b/syncmlfw/common/http/inc/nsmlhttp.h Thu Jan 07 13:15:03 2010 +0200 @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include #include diff -r b497e44ab2fc -r a9c0ce913924 syncmlfw/common/syncagent/src/NSmlAgentBase.cpp --- a/syncmlfw/common/syncagent/src/NSmlAgentBase.cpp Thu Dec 17 09:07:52 2009 +0200 +++ b/syncmlfw/common/syncagent/src/NSmlAgentBase.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include "nsmlprivatepskeys.h" #include "nsmlcliagconstants.h" #include "NSmlAgentBase.h" diff -r b497e44ab2fc -r a9c0ce913924 syncmlfw/dm/wappushalert/src/nsmldmwappushalert.cpp --- a/syncmlfw/dm/wappushalert/src/nsmldmwappushalert.cpp Thu Dec 17 09:07:52 2009 +0200 +++ b/syncmlfw/dm/wappushalert/src/nsmldmwappushalert.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -23,7 +23,7 @@ #include #include #include -#include +//#include #include #include // For TImplementationProxy definition #include diff -r b497e44ab2fc -r a9c0ce913924 syncmlfw/ds/wappushalert/src/nsmldswappushalert.cpp --- a/syncmlfw/ds/wappushalert/src/nsmldswappushalert.cpp Thu Dec 17 09:07:52 2009 +0200 +++ b/syncmlfw/ds/wappushalert/src/nsmldswappushalert.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -23,7 +23,7 @@ #include #include #include -#include +//#include #include #include // For TImplementationProxy definition diff -r b497e44ab2fc -r a9c0ce913924 syncmlfw/rom/NSmlDMSync.iby --- a/syncmlfw/rom/NSmlDMSync.iby Thu Dec 17 09:07:52 2009 +0200 +++ b/syncmlfw/rom/NSmlDMSync.iby Thu Jan 07 13:15:03 2010 +0200 @@ -97,6 +97,24 @@ REM wappushalert ECOM_PLUGIN(nsmldmwappushalert.dll,101F6DE3.rsc) +#ifdef FF_DM_CONNMO_ADAPTER +// old internet adapter is not used in that case for access point provisioning. +ECOM_PLUGIN(connmoadapter.dll,connmoadapter.rsc) +#else +ECOM_PLUGIN(nsmlinternetadapter.dll,nsmlinternetadapter.rsc) +#endif FF_DM_CONNMO_ADAPTER + +#ifdef __SYNCML_DM_WLAN +ECOM_PLUGIN(globalwlanadapter.dll,globalwlanadapter.rsc) +#endif // __SYNCML_DM_WLAN + +#ifdef __ALWAYS_ONLINE_PDPCONTEXT2 +ECOM_PLUGIN( nsmldmalwaysonadapter.dll, nsmldmalwaysonadapter.rsc ) +#endif // __ALWAYS_ONLINE_PDPCONTEXT2 + +ECOM_PLUGIN( nsmldmbmadapter.dll, nsmldmbmadapter.rsc ) +ECOM_PLUGIN(wlanctrldcmoadapter.dll,wlanctrldcmoadapter.rsc) + #ifdef __SYNCML_DM_OTA REM DM OMA provisioning ECOM_PLUGIN(wpdm.dll,wpdm.rsc) diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/DmEventNotifier/group/DmEventNotifier.mmp --- a/terminalsecurity/SCP/DmEventNotifier/group/DmEventNotifier.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/DmEventNotifier/group/DmEventNotifier.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -63,3 +63,5 @@ //Added for SCPEventHandler dll LIBRARY scpeventhandler.lib LIBRARY flogger.lib + +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPClient/group/SCPClient.mmp --- a/terminalsecurity/SCP/SCPClient/group/SCPClient.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPClient/group/SCPClient.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -67,5 +67,7 @@ LIBRARY aknnotify.lib LIBRARY estor.lib +SMPSAFE + // End of file diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPClient/src/SCPClient.cpp --- a/terminalsecurity/SCP/SCPClient/src/SCPClient.cpp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPClient/src/SCPClient.cpp Thu Jan 07 13:15:03 2010 +0200 @@ -1198,42 +1198,54 @@ TSCPButtonConfig aButtonsShown, TBool aECSSupport, TInt aFlags, TInt& aResFileSCP, TInt& aResFileSecUi) { Dprint((_L("[RSCPClient]-> SetSecurityCodeL() >>>"))); Dprint((_L("[RSCPClient]-> input params - aButtonsShown=%d, aECSSupport=%d"), aButtonsShown, aECSSupport)); - + if(EFalse == isFlagEnabled) { (void)aPassword; Dprint((_L("[RSCPClient]-> ERROR: Function not supported in this variant"))); User :: Invariant(); return KErrNotSupported; } + TInt lRet = LoadResources(aResFileSCP, aResFileSecUi); + if(lRet != KErrNone) { return lRet; } + TInt lDefCode = 0; CRepository* lRepository = CRepository :: NewLC(KCRUidSCPLockCode); lRet = lRepository->Get(KSCPLockCodeDefaultLockCode, lDefCode); + if(lRet != KErrNone) { Dprint(_L("[RSCPClient]-> ERROR: Unable to perform get on CenRep, lErr=%d"), lRet); CleanupStack :: PopAndDestroy(lRepository); return lRet; } + HBufC* codeHBuf = HBufC :: NewLC(KSCPPasscodeMaxLength + 1); HBufC8* addParamsHBuf = HBufC8 :: NewLC(KSCPMaxTARMNotifParamLen); TPtr codeBuffer = codeHBuf->Des(); TPtr8 addParams = addParamsHBuf->Des(); + if(lDefCode == 0) { Dprint(_L("[RSCPClient]-> INFO: Default lock code has been set already by the user...")); + lRet = RunDialogL(codeBuffer, aButtonsShown, KSCPPasscodeMinLength, KSCPPasscodeMaxLength, R_SECUI_TEXT_ENTER_SEC_CODE, NULL, aECSSupport); + if((lRet) && (lRet != ESecUiEmergencyCall) && (lRet != EAknSoftkeyEmergencyCall)) { Dprint(_L("[RSCPClient]-> INFO: User has updated the lock code...")); + lRet = SendReceive( ESCPServAuthenticateS60, TIpcArgs( &codeBuffer, &aPassword, &addParams, aFlags)); + Dprint((_L("[RSCPClient]-> INFO: addParams.Length()=%d")), addParams.Length()); Dprint((_L("[RSCPClient]-> INFO: lRet=%d")), lRet); } else { switch(lRet) { case 0: + lRet = KErrCancel; + break; case EAknSoftkeyEmergencyCall: //lRet = KErrCancel; break; @@ -1251,7 +1263,7 @@ HBufC* msgConfirmSave = NULL; CAknGlobalConfirmationQuery* query = CAknGlobalConfirmationQuery :: NewLC(); - + if(aButtonsShown == SCP_OK || aButtonsShown == SCP_OK_ETEL) { //msgConfirmSave = CEikonEnv :: Static()->AllocReadResourceLC(R_SET_SEC_CODE_STARTUP_QUERY); msgConfirmSave = CEikonEnv :: Static()->AllocReadResourceLC(R_SET_SEC_CODE); @@ -1259,31 +1271,31 @@ } else { msgConfirmSave = CEikonEnv :: Static()->AllocReadResourceLC(R_SET_SEC_CODE); - query->ShowConfirmationQueryL(statusSave, *msgConfirmSave, R_AVKON_SOFTKEYS_YES_NO__YES, R_QGN_NOTE_QUERY_ANIM); + query->ShowConfirmationQueryL(statusSave, *msgConfirmSave, R_AVKON_SOFTKEYS_YES_NO__YES, R_QGN_NOTE_QUERY_ANIM); } - + User :: WaitForRequest(statusSave); CleanupStack :: PopAndDestroy(2); // msgConfirmSave query if((statusSave == EAknSoftkeyYes) || (statusSave == EAknSoftkeyOk)) { Dprint(_L("[RSCPClient]-> INFO: calling GetNewCodeAndChange() ...")); - + TBufC<10> NBuf(KSCPDefaultEnchSecCode); TPtr codeBuf = NBuf.Des(); - + TSCPSecCode lNewSecCode; TInt lButtonCfg = (aButtonsShown == SCP_OK || aButtonsShown == SCP_OK_ETEL) ? KSCPForcedChange : KSCPNormalChange; HBufC* lNewLkCodeBuf = NULL; lRet = GetNewCodeAndChange(codeBuf, lButtonCfg, &lNewSecCode, &lNewLkCodeBuf); - + Dprint(_L("[RSCPClient]-> INFO: GetNewCodeAndChange() complete, err=%d"), lRet); - + if(KErrNone == lRet) { - /* This is being called as a workaround for a freezing issue with SecUI. This is in place + /* This is being called as a workaround for a freezing issue with SecUI. This is in place * as a temporary measure until the source is identified. */ TInt lTmpRet = SendReceive(ESCPServAuthenticateS60, TIpcArgs(&lNewLkCodeBuf->Des(), &aPassword, &addParams, aFlags)); - + Dprint(_L("[RSCPClient]-> INFO: lTmpRet from SendReceive()=%d"), lTmpRet); if(KErrNone == lRet) { Dprint(_L("[RSCPClient]-> INFO: updating CenRep ...")); @@ -1291,7 +1303,7 @@ Dprint(_L("[RSCPClient]-> INFO: User updated lock code for the first time...err= %d"), lRet); } } - + if(lNewLkCodeBuf) { delete lNewLkCodeBuf; } @@ -1300,52 +1312,56 @@ Dprint(_L("[RSCPClient]-> INFO: Returning KErrCancel")); lRet = KErrCancel; } - + if(KErrAbort == lRet) { Dprint(_L("[RSCPClient]-> INFO: Returning KErrCancel")); lRet = KErrCancel; } } - + if(addParams.Length() > 0) { - CSCPParamObject* tmp = CSCPParamObject :: NewLC(); + CSCPParamObject* tmp = CSCPParamObject :: NewLC(); TInt lTempRet = tmp->Parse(addParams); - + if(lTempRet == KErrNone) { lTempRet = tmp->Set(KSCPParamPassword, codeBuffer); } - + if(lTempRet == KErrNone) { addParams.Zero(); HBufC8* tmpBuf; lTempRet = tmp->GetBuffer(tmpBuf); - + if(lTempRet == KErrNone) { addParams.Copy(tmpBuf->Des()); delete tmpBuf; } } - + if(lTempRet == KErrNone) { CSCPParamObject* outParams = NULL; ProcessServerCommandsL(addParams, &outParams); - + if(outParams != NULL) { TSCPSecCode newSecCode; if(outParams->Get(KSCPParamPassword, newSecCode) == KErrNone) { Dprint((_L("[RSCPClient]-> INFO: Updating encoded password received from the server into aPassword..."))); aPassword.Copy(newSecCode); } + delete outParams; } } + CleanupStack :: PopAndDestroy(tmp); } + CleanupStack :: PopAndDestroy(3); // repository, addParamsHBuf, codeHBuf Dprint(_L("[RSCPClient]-> SetSecurityCodeL() <<< lRet=%d"), lRet); return lRet; } + //#endif // __SAP_DEVICE_LOCK_ENHANCEMENTS // <<-- *********** Device lock new features ************* diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPDatabase/group/SCPDatabase.mmp --- a/terminalsecurity/SCP/SCPDatabase/group/SCPDatabase.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPDatabase/group/SCPDatabase.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -44,4 +44,6 @@ LIBRARY apgrfx.lib LIBRARY apparc.lib +SMPSAFE + //End of file diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPEventHandler/group/SCPEventHandler.mmp --- a/terminalsecurity/SCP/SCPEventHandler/group/SCPEventHandler.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPEventHandler/group/SCPEventHandler.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -51,4 +51,5 @@ LIBRARY siscontroller.lib //LIBRARY javaregistryclient.lib +SMPSAFE diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPHistoryPlugin/group/SCPHistoryPlugin.mmp --- a/terminalsecurity/SCP/SCPHistoryPlugin/group/SCPHistoryPlugin.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPHistoryPlugin/group/SCPHistoryPlugin.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -68,4 +68,7 @@ LIBRARY efsrv.lib // FileServer LIBRARY flogger.lib LIBRARY featmgr.lib + +SMPSAFE + // End of File diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPPatternPlugin/group/SCPPatternPlugin.mmp --- a/terminalsecurity/SCP/SCPPatternPlugin/group/SCPPatternPlugin.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPPatternPlugin/group/SCPPatternPlugin.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -68,4 +68,7 @@ LIBRARY efsrv.lib // FileServer LIBRARY flogger.lib LIBRARY featmgr.lib + +SMPSAFE + // End of File diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPServer/group/SCPServer.mmp --- a/terminalsecurity/SCP/SCPServer/group/SCPServer.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPServer/group/SCPServer.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -97,6 +97,9 @@ LIBRARY estor.lib LIBRARY charconv.lib LIBRARY devenccommonutils.lib //Device encryption utility + +SMPSAFE + // End of file diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/SCP/SCPTimestampPlugin/group/SCPTimestampPlugin.mmp --- a/terminalsecurity/SCP/SCPTimestampPlugin/group/SCPTimestampPlugin.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/SCP/SCPTimestampPlugin/group/SCPTimestampPlugin.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -73,4 +73,6 @@ LIBRARY platformenv.lib #endif +SMPSAFE + // End of File diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/client/group/TerminalControlClient.mmp --- a/terminalsecurity/client/group/TerminalControlClient.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/client/group/TerminalControlClient.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -38,4 +38,4 @@ LIBRARY euser.lib LIBRARY flogger.lib - +SMPSAFE diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/server/group/TerminalControlServer.mmp --- a/terminalsecurity/server/group/TerminalControlServer.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/server/group/TerminalControlServer.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -57,3 +57,5 @@ LIBRARY flogger.lib LIBRARY featmgr.lib LIBRARY devenccommonutils.lib // Device encryption utility + +SMPSAFE \ No newline at end of file diff -r b497e44ab2fc -r a9c0ce913924 terminalsecurity/tcadapter/bld/tcadapter.mmp --- a/terminalsecurity/tcadapter/bld/tcadapter.mmp Thu Dec 17 09:07:52 2009 +0200 +++ b/terminalsecurity/tcadapter/bld/tcadapter.mmp Thu Jan 07 13:15:03 2010 +0200 @@ -53,6 +53,8 @@ LANGUAGE_IDS END +SMPSAFE + LIBRARY euser.lib LIBRARY ecom.lib LIBRARY efsrv.lib