--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilscmmwrapper_s60.cpp Fri Apr 16 16:07:56 2010 +0300
@@ -0,0 +1,388 @@
+/*
+ * Copyright (c) 2009 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 source file for CmmWrapperPrivate class.
+ */
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <cmmanagerdef.h>
+#include <cmconnectionmethodext.h>
+#include <cmdestinationext.h>
+#include <cmpluginwlandef.h>
+#include "wlanqtutilscommon.h"
+#include "wlanqtutilsiap.h"
+#include "wlanqtutilswlanap.h"
+#include "wlanqtutilswlaniap.h"
+#include "wlanqtutilscmmwrapper.h"
+#include "wlanqtutilscmmwrapper_s60_p.h"
+
+#ifdef WLANQTUTILS_NO_OST_TRACES_FLAG
+#include <opensystemtrace.h>
+#else
+#include "OstTraceDefinitions.h"
+#endif
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "wlanqtutilscmmwrapper_s60Traces.h"
+#endif
+
+
+// =========== PRIVATE CLASS MEMBER FUNCTIONS ===============
+//
+// ---------------------------------------------------------
+// CmmWrapperPrivate::CmmWrapperPrivate()
+// Constructor
+// ---------------------------------------------------------
+//
+CmmWrapperPrivate::CmmWrapperPrivate(CmmWrapper *wrapper) :
+ q_ptr(wrapper)
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_CMMWRAPPERPRIVATE_ENTRY, this );
+
+ TRAPD(err, iCmManagerExt.OpenL());
+ if (err != KErrNone) {
+ // todo
+ }
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_CMMWRAPPERPRIVATE_EXIT, this );
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::CmmWrapperPrivate()
+// Destructor
+// ---------------------------------------------------------
+//
+CmmWrapperPrivate::~CmmWrapperPrivate()
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_CMMWRAPPERPRIVATEDESTR_ENTRY, this );
+
+ iCmManagerExt.Close();
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_CMMWRAPPERPRIVATEDESTR_EXIT, this );
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::fetchIaps()
+// ---------------------------------------------------------
+//
+int CmmWrapperPrivate::fetchIaps(QList<WlanQtUtilsIap*>& iapList)
+ {
+ TRAPD(err, fetchIapsL(iapList));
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::fetchIapsL()
+// ---------------------------------------------------------
+//
+void CmmWrapperPrivate::fetchIapsL(QList<WlanQtUtilsIap*>& iapList)
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_FETCHIAPSL_ENTRY, this );
+
+ // reset the list, just in case
+ iapList.clear();
+
+ //Array granularity 10
+ RArray<TUint32> destinationIdArray = RArray<TUint32> (10);
+
+ destinationIdArray.Reset();
+ iCmManagerExt.AllDestinationsL(destinationIdArray);
+
+ // looping all the SNAPs through
+ QList<WlanQtUtilsIap*> snapsIapList;
+ for (TInt i = 0; i < destinationIdArray.Count(); i++)
+ {
+ snapsIapList.clear();
+ RCmDestinationExt dest;
+ dest = iCmManagerExt.DestinationL(destinationIdArray[i]);
+ TUint32 id = dest.Id();
+
+ if (getIapListFromSnap(id, snapsIapList) == KErrNone)
+ {
+ iapList.append(snapsIapList);
+ }
+ }
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_FETCHIAPSL_EXIT, this );
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::createWlanIap()
+// Creates a new WLAN IAP
+// ---------------------------------------------------------
+//
+WlanQtUtilsWlanIap *CmmWrapperPrivate::createWlanIap(const WlanQtUtilsWlanAp *aWlanAp)
+ {
+ WlanQtUtilsWlanIap *iap = NULL;
+
+ TRAPD(err, iap = createWlanIapL(aWlanAp));
+
+ if (err != KErrNone)
+ {
+ // Todo: trace
+ }
+ return iap;
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::createWlanIapL()
+// Creates a new WLAN IAP
+// ---------------------------------------------------------
+//
+WlanQtUtilsWlanIap *CmmWrapperPrivate::createWlanIapL(const WlanQtUtilsWlanAp *aWlanAp)
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_CREATEWLANIAPL_ENTRY, this );
+
+ // Create the new IAP
+ RCmConnectionMethodExt plugin = iCmManagerExt.CreateConnectionMethodL(
+ KUidWlanBearerType);
+ CleanupClosePushL(plugin);
+
+ // Convert QString to Symbian buffer
+ TBufC<KMaxSsidLen> buffer(aWlanAp->ssid().utf16());
+
+ WlanQtUtilsWlanSecMode secMode = aWlanAp->securityMode();
+ int cmManagersSecMode = wlanQtUtils2CmmSecModeMap(secMode);
+
+ plugin.SetStringAttributeL(CMManager::ECmName, buffer);
+ plugin.SetStringAttributeL(CMManager::EWlanSSID, buffer);
+ plugin.SetIntAttributeL(CMManager::EWlanSecurityMode, cmManagersSecMode);
+ // Todo: other parameters such as security keys
+#if 0
+ // TODO the security settings API plugin needs to be initialized here
+ // with the iap id.
+ // Check if the key value has been given
+ QString key = aWlanAp->securityKey();
+ if ( key.length() > 0 )
+ {
+ // Set the security key values here
+ if ( secMode == CMManager::EWlanSecModeWpa ||
+ secMode == CMManager::EWlanSecModeWpa2 )
+ {
+ // Store the WPA key to the database using the security settings API
+ TBufC<KMaxWEPKeyLen> bufKey(key.utf16());
+ plugin.SetStringAttributeL( CMManager::EWlanWpaPreSharedKey, bufKey );
+
+ }
+ else if ( secMode == CMManager::EWlanSecModeWep )
+ {
+ // Store the WPA key to the database using the security settings API
+ TBufC<KMaxWPAKeyLen> bufKey(key.utf16());
+ plugin.SetStringAttributeL( CMManager::EWlanWepKey1, bufKey );
+ }
+ }
+#endif
+
+ plugin.UpdateL();
+
+ TInt iapId = plugin.GetIntAttributeL(CMManager::ECmIapId);
+
+ CleanupStack::PopAndDestroy(&plugin); // Close() called on "plugin"
+
+ // Read details of the new IAP and create the WLAN IAP class
+ RCmConnectionMethodExt connectionMethod = iCmManagerExt.ConnectionMethodL( iapId );
+ WlanQtUtilsIap *newIap = getIapInfoL(connectionMethod);
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_CREATEWLANIAPL_EXIT, this );
+ return qobject_cast<WlanQtUtilsWlanIap *>(newIap);
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::moveIapToInternetSnap()
+// ---------------------------------------------------------
+//
+void CmmWrapperPrivate::moveIapToInternetSnap( TInt32 aIapId )
+ {
+ TRAPD( err, moveIapToInternetSnapL( aIapId ) );
+ if (err != KErrNone)
+ {
+ // todo: add trace
+ }
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::moveIapToInternetSnapL()
+// ---------------------------------------------------------
+//
+void CmmWrapperPrivate::moveIapToInternetSnapL( TInt32 aIapId )
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_MOVEIAPTOINTERNETSNAPL_ENTRY, this );
+
+ // Read all destination(SNAP) settings into an array
+ RArray<TUint32> destinations;
+ CleanupClosePushL(destinations);
+ iCmManagerExt.AllDestinationsL(destinations);
+ RCmDestinationExt destination;
+ // Loop through each destination
+ for(TInt i = 0; i < destinations.Count(); i++)
+ {
+ destination = iCmManagerExt.DestinationL(destinations[i]);
+ CleanupClosePushL(destination);
+ // Internet destination will always exist in the system.
+ // Internet destination will have ESnapPurposeInternet set in its metadata.
+ if (destination.MetadataL(CMManager::ESnapMetadataPurpose) == CMManager::ESnapPurposeInternet)
+ {
+ RCmConnectionMethodExt iap = iCmManagerExt.ConnectionMethodL( aIapId );
+ CleanupClosePushL( iap );
+ destination.AddConnectionMethodL( iap );
+ destination.UpdateL();
+ CleanupStack::PopAndDestroy(); // iap
+ }
+ CleanupStack::PopAndDestroy(); // destination
+ }
+ CleanupStack::PopAndDestroy(); // destinations
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_MOVEIAPTOINTERNETSNAPL_EXIT, this );
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::getIapListFromSnap()
+// ---------------------------------------------------------
+//
+int CmmWrapperPrivate::getIapListFromSnap(TUint32 aDestId,
+ QList<WlanQtUtilsIap*>& iapList)
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_GETIAPLISTFROMSNAP_ENTRY, this );
+
+ RCmDestinationExt dest;
+ TRAPD(err, dest = iCmManagerExt.DestinationL(aDestId));
+ if (err != KErrNone)
+ {
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_GETIAPLISTFROMSNAP_EXIT, this );
+ return err;
+ }
+
+ // Copy IAPs from the SNAP into iapList.
+ int destIapCount = dest.ConnectionMethodCount();
+ for (TInt i = 0; i < destIapCount; i++)
+ {
+ WlanQtUtilsIap* iap = NULL;
+ TRAP(err, iap = getIapInfoL(dest.ConnectionMethodL(i)));
+
+ if (err == KErrNone)
+ {
+ iapList.append(iap);
+ }
+ }
+
+ OstTraceFunctionExit1( DUP1_CMMWRAPPERPRIVATE_GETIAPLISTFROMSNAP_EXIT, this );
+ return err;
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::getIapInfoL()
+// ---------------------------------------------------------
+//
+WlanQtUtilsIap *CmmWrapperPrivate::getIapInfoL(
+ RCmConnectionMethodExt aConnectionMethod)
+ {
+ OstTraceFunctionEntry1( CMMWRAPPERPRIVATE_GETIAPINFOL_ENTRY, this );
+
+ TUint iapId = aConnectionMethod.GetIntAttributeL(CMManager::ECmIapId);
+
+ TUint netId = aConnectionMethod.GetIntAttributeL(CMManager::ECmNetworkId);
+
+ HBufC* iapName = aConnectionMethod.GetStringAttributeL(CMManager::ECmName);
+
+ TUint iapBearerType = aConnectionMethod.GetIntAttributeL(CMManager::ECmBearerType);
+
+ QString name = QString::fromUtf16(iapName->Ptr(), iapName->Length());
+ WlanQtUtilsBearerType bearer;
+
+ WlanQtUtilsIap* newIap = NULL;
+ if (iapBearerType == KUidPacketDataBearerType)
+ {
+ bearer = WlanQtUtilsBearerTypeCellular;
+ newIap = new WlanQtUtilsIap(iapId, netId, name, bearer);
+ }
+ else
+ {
+ TInt secModeFromCmManager =
+ aConnectionMethod.GetIntAttributeL(CMManager::EWlanSecurityMode);
+ WlanQtUtilsWlanSecMode secMode = cmm2WlanQtUtilsSecModeMap(secModeFromCmManager);
+ bearer = WlanQtUtilsBearerTypeWlan;
+ //Note ssid is set same as iap name
+ WlanQtUtilsWlanIap* wlanIap =
+ new WlanQtUtilsWlanIap(iapId, netId, name, bearer, name, secMode);
+ newIap = wlanIap;
+ }
+
+ OstTraceFunctionExit1( CMMWRAPPERPRIVATE_GETIAPINFOL_EXIT, this );
+ return newIap;
+ }
+
+// ---------------------------------------------------------
+// CmmWrapperPrivate::cmm2WlanQtUtilsSecModeMap()
+// Maps CMManager's WLAN security mode into WlanQtUtilsWlanSecMode.
+// CMManager uses sec mode type TConnMonSecurityMode defined
+// in rconnmon.h.
+// ---------------------------------------------------------
+//
+WlanQtUtilsWlanSecMode CmmWrapperPrivate::cmm2WlanQtUtilsSecModeMap(int aSecModeFromCmManager)
+ {
+ WlanQtUtilsWlanSecMode ret;
+ switch (aSecModeFromCmManager)
+ {
+ case CMManager::EWlanSecModeWep:
+ ret = WlanQtUtilsWlanSecModeWep;
+ break;
+ case CMManager::EWlanSecMode802_1x:
+ ret = WlanQtUtilsWlanSecMode802_1x;
+ break;
+ case CMManager::EWlanSecModeWpa:
+ ret = WlanQtUtilsWlanSecModeWpa;
+ break;
+ case CMManager::EWlanSecModeWpa2:
+ ret = WlanQtUtilsWlanSecModeWpa2;
+ break;
+ default:
+ ret = WlanQtUtilsWlanSecModeOpen;
+ break;
+ }
+
+ return ret;
+ }
+
+// ---------------------------------------------------------
+// Maps WlanQtUtilsWlanSecMode into CMManager's WLAN security mode
+// (TWlanSecMode, defined in cmpluginwlandef.h).
+// ---------------------------------------------------------
+//
+int CmmWrapperPrivate::wlanQtUtils2CmmSecModeMap(WlanQtUtilsWlanSecMode aWlanQtUtilsSecMode)
+ {
+ int ret;
+ switch (aWlanQtUtilsSecMode)
+ {
+ case WlanQtUtilsWlanSecModeWep:
+ ret = CMManager::EWlanSecModeWep;
+ break;
+ case WlanQtUtilsWlanSecMode802_1x:
+ ret = CMManager::EWlanSecMode802_1x;
+ break;
+ case WlanQtUtilsWlanSecModeWpa:
+ ret = CMManager::EWlanSecModeWpa;
+ break;
+ case WlanQtUtilsWlanSecModeWpa2:
+ ret = CMManager::EWlanSecModeWpa2;
+ break;
+ default:
+ ret = CMManager::EWlanSecModeOpen;
+ break;
+ }
+
+ return ret;
+ }
+
+//end of file
+