--- a/hotspotfw/hsserver/src/hssiapsettingshandler.cpp Tue Aug 31 16:18:40 2010 +0300
+++ b/hotspotfw/hsserver/src/hssiapsettingshandler.cpp Wed Sep 01 12:20:32 2010 +0100
@@ -23,10 +23,10 @@
#include "am_debug.h"
#include <es_enum.h>
-#include <cmconnectionmethod.h>
+#include <cmconnectionmethodext.h>
#include <cmconnectionmethoddef.h>
-#include <cmdestination.h>
-#include <cmmanager.h>
+#include <cmdestinationext.h>
+#include <cmmanagerext.h>
using namespace CMManager;
@@ -82,7 +82,7 @@
{
DEBUG("CHssIapSettingsHandler::CreateClientIapL");
- RCmManager cmManager;
+ RCmManagerExt cmManager;
cmManager.OpenL();
CleanupClosePushL( cmManager );
@@ -91,7 +91,7 @@
CleanupClosePushL( destinations );
cmManager.AllDestinationsL( destinations );
- RCmDestination destination;
+ RCmDestinationExt destination;
// Loop through each destination
for( TInt i = 0; i < destinations.Count(); i++ )
{
@@ -99,9 +99,10 @@
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)
+ if ( destination.MetadataL( CMManager::ESnapMetadataPurpose ) ==
+ CMManager::ESnapPurposeInternet )
{
- RCmConnectionMethod plugin = cmManager.CreateConnectionMethodL( KUidWlanBearerType );
+ RCmConnectionMethodExt plugin = cmManager.CreateConnectionMethodL( KUidWlanBearerType );
CleanupClosePushL( plugin );
plugin.SetStringAttributeL( ECmName, aIapName );
@@ -125,6 +126,111 @@
}
// -----------------------------------------------------------------------------
+// CreateIapL
+// -----------------------------------------------------------------------------
+//
+TInt CHssIapSettingsHandler::CreateIapL( TBool aHotspot )
+ {
+ DEBUG("CHssIapSettingsHandler::CreateIapL");
+ TInt ret ( KErrNone );
+ RCmManagerExt cmManager;
+ cmManager.OpenL();
+ CleanupClosePushL( cmManager );
+
+ // Read all destination(SNAP) settings into an array
+ RArray<TUint32> destinations;
+ CleanupClosePushL( destinations );
+
+ cmManager.AllDestinationsL( destinations );
+ RCmDestinationExt destination;
+ // Loop through each destination
+ for( TInt i = 0; i < destinations.Count(); i++ )
+ {
+ destination = cmManager.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 )
+ {
+ CWlanMgmtClient* wlanMgmtClient = CWlanMgmtClient::NewL();
+ CleanupStack::PushL( wlanMgmtClient );
+
+ TWlanConnectionMode connMode;
+ User::LeaveIfError(
+ wlanMgmtClient->GetConnectionMode( connMode ) );
+
+ TWlanConnectionSecurityMode secMode;
+ User::LeaveIfError(
+ wlanMgmtClient->GetConnectionSecurityMode( secMode ) );
+
+ HBufC* ssid( NULL );
+ TWlanSsid ssidConn;
+
+ User::LeaveIfError(
+ wlanMgmtClient->GetConnectionSsid( ssidConn ) );
+ ssid = HBufC::NewLC( ssidConn.Length() );
+ ssid->Des().Copy( ssidConn );
+
+ TUint32 serviceId(0);
+ TUint32 easyWlanIapId(0);
+ easyWlanIapId = cmManager.EasyWlanIdL();
+
+ RCmConnectionMethodExt easyWlanPlugin;
+ easyWlanPlugin = cmManager.ConnectionMethodL( easyWlanIapId );
+ CleanupClosePushL( easyWlanPlugin );
+ TBool scanSsid = easyWlanPlugin.GetBoolAttributeL( EWlanScanSSID );
+ TUint32 easyWlanServiceId =
+ easyWlanPlugin.GetIntAttributeL( EWlanServiceId );
+ CleanupStack::PopAndDestroy(); // easyWlanPlugin;
+
+ RCmConnectionMethodExt plugin =
+ cmManager.CreateConnectionMethodL( KUidWlanBearerType );
+ CleanupClosePushL( plugin );
+ plugin.SetStringAttributeL( ECmName, *ssid );
+ plugin.SetStringAttributeL( EWlanSSID, *ssid );
+ plugin.SetIntAttributeL( CMManager::EWlanSecurityMode,
+ ConvertConnectionSecurityModeToSecModeL( secMode ));
+ plugin.SetIntAttributeL( EWlanConnectionMode,
+ ConvertConnectionModeToNetModeL( connMode ) );
+ plugin.SetBoolAttributeL( EWlanScanSSID, scanSsid );
+
+ if ( aHotspot )
+ {
+ // A hotspot IAP. Mark it so it can be deleted after the use.
+ plugin.SetStringAttributeL( ECmConfigDaemonManagerName,
+ KHotSpotPlugin );
+ }
+
+ destination.AddConnectionMethodL( plugin );
+ destination.UpdateL();
+ serviceId = plugin.GetIntAttributeL( EWlanServiceId );
+ ret = plugin.GetIntAttributeL( ECmIapId );
+ CleanupStack::PopAndDestroy( &plugin );
+ if ( secMode == EWlanConnectionSecurityWep )
+ {
+ SaveWEPKeyL( easyWlanServiceId, serviceId );
+ }
+
+ if ( secMode == EWlanConnectionSecurityWpaPsk )
+ {
+ SaveWPAKeyL( easyWlanServiceId, serviceId );
+ }
+
+ CleanupStack::PopAndDestroy( ssid );
+ CleanupStack::PopAndDestroy( wlanMgmtClient );
+ }
+ CleanupStack::PopAndDestroy( &destination );
+ }
+ CleanupStack::PopAndDestroy( &destinations );
+ CleanupStack::PopAndDestroy( &cmManager );
+
+ DEBUG1("CHssIapSettingsHandler::CreateIapL Done iapId: %d", ret);
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
// DeleteIapL
// -----------------------------------------------------------------------------
//
@@ -132,11 +238,11 @@
{
DEBUG1("CHssIapSettingsHandler:::DeleteIapL aIapId=%d ", aIapId);
- RCmManager cmManager;
+ RCmManagerExt cmManager;
cmManager.OpenL();
CleanupClosePushL( cmManager );
- RCmConnectionMethod plugin = cmManager.ConnectionMethodL( aIapId );
+ RCmConnectionMethodExt plugin = cmManager.ConnectionMethodL( aIapId );
CleanupClosePushL( plugin );
cmManager.RemoveAllReferencesL( plugin );
@@ -148,6 +254,50 @@
}
// ---------------------------------------------------------
+// MoveIapL()
+// ---------------------------------------------------------
+//
+void CHssIapSettingsHandler::MoveIapL( const TUint aIapId )
+ {
+ DEBUG1("CHssIapSettingsHandler::MoveIapL aIapId=%d ", aIapId);
+ // Now move to Internet SNAP
+ RCmManagerExt cmManager;
+ cmManager.OpenL();
+ CleanupClosePushL( cmManager );
+
+ // Read all destination(SNAP) settings into an array
+ RArray<TUint32> destinations;
+ CleanupClosePushL( destinations );
+
+ cmManager.AllDestinationsL( destinations );
+ RCmDestinationExt destination;
+ // Loop through each destination
+ for( TInt i = 0; i < destinations.Count(); i++ )
+ {
+ destination = cmManager.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 = cmManager.ConnectionMethodL( aIapId );
+ CleanupClosePushL( iap );
+ iap.SetStringAttributeL( ECmConfigDaemonManagerName, KHotSpotPlugin );
+ destination.AddConnectionMethodL( iap );
+ CleanupStack::PopAndDestroy( &iap );
+ destination.UpdateL();
+ }
+ CleanupStack::PopAndDestroy( &destination );
+ }
+ CleanupStack::PopAndDestroy( &destinations );
+ CleanupStack::PopAndDestroy( &cmManager );
+
+ DEBUG( "CHssIapSettingsHandler::MoveIapL Done" );
+ }
+
+// ---------------------------------------------------------
// SaveWEPKeyL()
// ---------------------------------------------------------
//