diff -r d1f0fe5eccbe -r 1ff9bf2737cf wlanapitest/wlanhaitest/wlan/src/T_RSocketServData.cpp --- a/wlanapitest/wlanhaitest/wlan/src/T_RSocketServData.cpp Fri Jun 18 16:16:46 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,431 +0,0 @@ -/* -* Copyright (c) 2005-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: -* -*/ - - - -#include "t_rsocketservdata.h" -#include -#include -#include -#include -#include -#include -/*@{*/ -//LIT's params fron the ini file -_LIT(KWlanIap, "WLANIAP"); -_LIT(KWlanSsid, "DEFAULT_SSID"); -_LIT(KCommsDbTableView, "commsdbtableview"); -_LIT(KCommsDatabase, "commsdatabase"); -/*@}*/ - -/*@{*/ -//LIT's commands -_LIT(KCmdSetOutgoingIap, "SetOutgoingIap"); -_LIT(KCmdConnect, "Connect"); -_LIT(KCmdClose, "Close"); -/*@}*/ - - -/** - * Two phase constructor - * - * @leave system wide error - */ -CT_RSocketServData* CT_RSocketServData::NewL() - { - CT_RSocketServData * ret = new (ELeave) CT_RSocketServData(); - CleanupStack::PushL(ret); - ret->ConstructL(); - CleanupStack::Pop(ret); - return ret; - } - -/* - * public destructor - */ -CT_RSocketServData::~CT_RSocketServData() - { - if(iSocketServConnected) - { - Close(); - } - if(iSocketServ) - { - delete iSocketServ; - iSocketServ = NULL; - } - } - -/** - * Private constructor. First phase construction - */ -CT_RSocketServData::CT_RSocketServData() -: iSocketServ(NULL), - iSocketServConnected(EFalse), - iIapID(0) - { - } - -/** - * Second phase construction - * - * @internalComponent - * - * @return N/A - * - * @pre None - * @post None - * - * @leave system wide error - */ -void CT_RSocketServData::ConstructL() - { - iSocketServ = new (ELeave)RSocketServ(); - } - - -/** - * Return a pointer to the object that the data wraps - * - * @return pointer to the object that the data wraps - */ -TAny* CT_RSocketServData::GetObject() - { - return iSocketServ; - } - -void CT_RSocketServData::SetIapID(TUint32 aIapID) - { - iIapID = aIapID; - } - -/** - * Process a command read from the Ini file - * @param aCommand The command to process - * @param aSection The section get from the *.ini file of the project T_Wlan - * @param aAsyncErrorIndex Command index dor async calls to returns errors to - * @return TBool ETrue if the command is process - * @leave system wide error - */ -TBool CT_RSocketServData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/) - { - TBool ret = ETrue; - - if(aCommand == KCmdSetOutgoingIap) - { - DoCmdSetOutgoingIap(aSection); - } - else if(aCommand == KCmdConnect) - { - DoCmdConnect(); - } - else if(aCommand == KCmdClose) - { - DoCmdClose(); - } - else - { - ERR_PRINTF1(_L("Unknown command.")); - ret = EFalse; - } - return ret; - } - - -/** - * Get IAP, matching the name given (KWlanIap parameter read from the ini file). Set SSID of the - * IAP to the given value (KWlanSsid parameter read from the ini file). - * Store the ID of the IAP locally to allow using the IAP for connecting. - * If there are errors, are management for SetBlockResult() and SetError() - * @param aSection Section to review in the ini file for this command - * @return void - */ -void CT_RSocketServData::DoCmdSetOutgoingIap(const TTEFSectionName& aSection) - { - INFO_PRINTF1(_L("*START* CT_RSocketServData::DoCmdSetOutgoingIap")); - TBool dataOk = ETrue; - - TPtrC aIapName; - if(!GetStringFromConfig(aSection, KWlanIap, aIapName)) - { - ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KWlanIap); - SetBlockResult(EFail); - dataOk = EFalse; - } - - TPtrC aSsid; - if(!GetStringFromConfig(aSection, KWlanSsid, aSsid)) - { - ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KWlanSsid); - SetBlockResult(EFail); - dataOk = EFalse; - } - - TPtrC commsdbtableName; - if(!GetStringFromConfig(aSection, KCommsDbTableView, commsdbtableName)) - { - ERR_PRINTF2(_L("Error in getting parameter %S from INI file"),&KCommsDbTableView); - SetBlockResult(EFail); - dataOk = EFalse; - } - - TPtrC commsdbName; - if(!GetStringFromConfig(aSection, KCommsDatabase, commsdbName)) - { - ERR_PRINTF2(_L("Error in getting parameter %S from INI file"),&KCommsDatabase); - SetBlockResult(EFail); - dataOk = EFalse; - } - - if (dataOk) - { - // reset IAP id - SetIapID(0); - - TBool apFound = EFalse; - // Open view to IAP table, select all outgoing IAPs. - CCommsDbTableView* searchView = static_cast(GetDataObjectL(commsdbtableName)); - CCommsDatabase* commsDatabase = static_cast(GetDataObjectL(commsdbName)); - - // Make sure the view was available. - if( searchView != NULL && commsDatabase != NULL ) - { - CleanupStack::PushL(searchView); - INFO_PRINTF1(_L("Start browsing through the IAPs.")); - TInt error = searchView->GotoFirstRecord(); - - if( error == KErrNone ) - { - // Buffer for reading IAP names from CommsDat. Buffer size is set to - // maximum readable value from CommsDat. - TBuf iapName; - TUint32 iapID = 0; - INFO_PRINTF1(_L("CT_RSocketServData: CommsDat ready for searching, going through all outgoing IAPs")); - TUint32 iapservice = 0; - - TBool failed = EFalse; - - // Go through all IAPs. - while( error == KErrNone ) - { - iapName.FillZ(); - - // Read IAP ID and name from IAP table in CommsDat. - TRAPD(err, searchView->ReadTextL( TPtrC( COMMDB_NAME ), iapName )); - - if(err == KErrNone) - { - TRAP(err, searchView->ReadUintL( TPtrC( COMMDB_ID ), iapID )); - - if(err == KErrNone) - { - INFO_PRINTF3(_L("CT_RSocketServData: IAP (ID = [%d]): %S"), iapID, &iapName ); - - // Try to match the name with user input in the ini file. - if( iapName.Match( aIapName ) == KErrNone ) - { - INFO_PRINTF2(_L("CT_RSocketServData: Matching IAP name found with IAP ID = [%d]"), iapID ); - - apFound = ETrue; - - // Return the found IAP ID - SetIapID(iapID); - - // Read IAP service from IAP table in CommsDat. - TRAPD(err, searchView->ReadUintL( TPtrC( IAP_SERVICE ), iapservice )); - - if(err == KErrNone) - { - INFO_PRINTF2(_L("Service of the AP: %d"),iapservice); - - // Write the ssid given as a parameter in WLANServiceTable in CommsDat - INFO_PRINTF1(_L("CT_RSocketServData: Get WlanSettings from WLANServiceTable")); - CWLanSettings* wlanset = new (ELeave) CWLanSettings(); - CleanupStack::PushL( wlanset ); - - // Connect to CommsDat - err = wlanset->Connect(); - - if( err == KErrNone ) - { - // Get wlan settings corresponding IAP service info from IAP table - SWLANSettings wlanSettings; - err = wlanset->GetWlanSettings( iapservice, wlanSettings ); - - if( err == KErrNone ) - { - INFO_PRINTF2(_L("CT_RSocketServData: CommsDat: wlanSettings.Name = %S"), &wlanSettings.Name ); - INFO_PRINTF2(_L("CT_RSocketServData: CommsDat: wlanSettings.SSID = %S"), &wlanSettings.SSID ); - - // Set the new ssid from the ini file - wlanSettings.SSID = aSsid; - INFO_PRINTF2(_L("CT_RSocketServData: New value for wlanSettings.SSID = %S"), &wlanSettings.SSID ); - - // Write the new settings in CommsDat - err = wlanset->WriteWlanSettings(wlanSettings ); - - if( err == KErrNone ) - { - INFO_PRINTF1(_L("CT_RSocketServData: WlanSettings saved in CommsDat")); - wlanset->Disconnect(); - CleanupStack::PopAndDestroy( wlanset ); - } - else - { - ERR_PRINTF2(_L("CT_RSocketServData: WriteWlanSettings error: [%d]"), err ); - SetError(err); - failed = ETrue; - break; - } - } - else - { - ERR_PRINTF2(_L("CT_RSocketServData: Get WlanSettings error: [%d]"), err ); - SetError(err); - failed = ETrue; - break; - } - } - else - { - ERR_PRINTF2(_L("CT_RSocketServData: WLanSettings connect failed! [%d]"), err ); - SetError(err); - failed = ETrue; - break; - } - } - else - { - ERR_PRINTF2(_L("searchView->ReadUintL left with error %d"), err); - SetError(err); - failed = ETrue; - break; - } - } - - error = searchView->GotoNextRecord(); - if(error == KErrNotFound) - { - INFO_PRINTF2(_L("searchView->GotoNextRecord() not found [%d]"), error); - INFO_PRINTF1(_L("No more records to look for")); - } - else if(error != KErrNone) - { - ERR_PRINTF2(_L("searchView->GotoNextRecord() Failed with error = %d"),error); - SetError(err); - failed = ETrue; - break; - } - } - else - { - ERR_PRINTF2(_L("searchView->ReadUintL left with error %d"), err); - SetError(err); - failed = ETrue; - break; - } - } - else - { - ERR_PRINTF2(_L("searchView->ReadTextL left with error %d"), err); - SetError(err); - failed = ETrue; - break; - } - } - - CleanupStack::Pop( searchView ); - - //if( !failed && GetIapID() == 0 ) - // { - // ERR_PRINTF1(_L("No valid IAP found")); - // SetBlockResult(EFail); - // } - } - else - { - INFO_PRINTF2(_L("CT_RSocketServData: No IAPs found [%d]"), error ); - } - - if(apFound == EFalse) - { - CApAccessPointItem *wlan = CApAccessPointItem::NewLC(); - wlan->SetNamesL(aIapName); - wlan->SetBearerTypeL(EApBearerTypeWLAN); - wlan->WriteTextL(EApWlanNetworkName, aSsid); - CApDataHandler *handler = CApDataHandler::NewLC(*commsDatabase); - TUint32 apId = handler->CreateFromDataL(*wlan); - INFO_PRINTF4(_L("Add new IAP ID: %d, name:%S, SSID: %S"), apId,&aIapName,&aSsid); - SetIapID(apId); - CleanupStack::PopAndDestroy(2); - } - } - else - { - ERR_PRINTF1(_L("CT_RSocketServData: No IAPs found")); - ERR_PRINTF1(_L("CommsDat, no view and database were available.")); - SetBlockResult(EFail); - } - } - - INFO_PRINTF1(_L("*END* CT_RSocketServData::DoCmdSetOutgoingIap")); - } - -/** - * Command to calls RSocketServ::Connect. The error is management for SetError() helper - * @param - * @return - */ -void CT_RSocketServData::DoCmdConnect() - { - INFO_PRINTF1(_L("*START* CT_RSocketServData::DoCmdConnect")); - - TInt err = iSocketServ->Connect(); - if(err != KErrNone) - { - ERR_PRINTF1(_L("iSocketServ->Connect() Fail")); - SetError(err); - } - else - { - iSocketServConnected = ETrue; - } - - INFO_PRINTF1(_L("*END* CT_RSocketServData::DoCmdConnect")); - } -/** - * Command to close RSocketServ instance - * @param - * @return - */ -void CT_RSocketServData::DoCmdClose() - { - INFO_PRINTF1(_L("*START* CT_RSocketServData::DoCmdClose")); - Close(); - INFO_PRINTF1(_L("*END* CT_RSocketServData::DoCmdClose")); - } - -/** - * Helper for the command DoCmdCloseSocketServ: RSocketServ::Close - * @param - * @return - */ -void CT_RSocketServData::Close() - { - iSocketServ->Close(); - iSocketServConnected = EFalse; - }