diff -r 000000000000 -r c40eb8fe8501 wlanapitest/wlanhaitest/wlan/src/T_RFileData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanapitest/wlanhaitest/wlan/src/T_RFileData.cpp Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,192 @@ +/* +* 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_rfiledata.h" + +/*@{*/ +//LIT for the command DoCmdGenerateFile +_LIT(KCmdGenerateFile, "GenerateFile"); +/*@}*/ + +/*@{*/ +//LITs for param reads from the ini file +_LIT(KFile, "File"); +_LIT(KSize, "Size"); +/*@}*/ + + +/** + * Two phase constructor + * + * @leave system wide error + */ +CT_RFileData* CT_RFileData::NewL() + { + CT_RFileData* ret = new (ELeave) CT_RFileData(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +/** + * Public destructor + */ +CT_RFileData::~CT_RFileData() + { + iFs.Close(); + + if (iFile) + { + delete iFile; + iFile = NULL; + } + } + +/** + * Private constructor. First phase construction + */ +CT_RFileData::CT_RFileData() +: iFile(NULL), + iFs() + { + } + +/** + * Second phase construction + * + * @internalComponent + * + * @return N/A + * + * @pre None + * @post None + * + * @leave system wide error + */ +void CT_RFileData::ConstructL() + { + iFile = new (ELeave)RFile(); + } + +/** + * Return a pointer to the object that the data wraps + * + * @return pointer to the object that the data wraps + */ +TAny* CT_RFileData::GetObject() + { + return iFile; + } + +/** + * 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_RFileData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/) + { + TBool ret =ETrue; + if(aCommand == KCmdGenerateFile()) + { + DoCmdGenerateFile(aSection); + } + else + { + ERR_PRINTF1(_L("Unknown command.")); + ret = EFalse; + } + return ret; + } + + +/** + * Command to generate a file for uploading in a host. If there are errors, SetBlockResult() and SetError() + * are used for management. + * @param aSection Section in the ini file for this command + * @return + */ +void CT_RFileData::DoCmdGenerateFile(const TTEFSectionName& aSection) + { + INFO_PRINTF1(_L("*START* CT_RFileData::DoCmdGenerateFile")); + + TBool dataOk = ETrue; + + TPtrC file; + if(!GetStringFromConfig(aSection, KFile, file)) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KFile); + SetBlockResult(EFail); + dataOk = EFalse; + } + + TInt size; + if(!GetIntFromConfig(aSection, KSize, size)) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KSize); + SetBlockResult(EFail); + dataOk = EFalse; + } + + if (dataOk) + { + INFO_PRINTF1(_L("Connect RFs")); + + CleanupClosePushL( iFs ); + CleanupClosePushL( *iFile ); + + TInt err = iFs.Connect(); + if(err == KErrNone) + { + INFO_PRINTF1(_L("Replace file")); + err = iFile->Replace( iFs, file, EFileShareAny|EFileWrite ); + if(err == KErrNone) + { + INFO_PRINTF1(_L("Set file size")); + err = iFile->SetSize( size ); + if(err != KErrNone) + { + ERR_PRINTF2(_L("CT_RFileData::DoCmdGenerateFile: file.SetSize(...) Failed with error %d"), err); + SetError(err); + } + } + else + { + ERR_PRINTF2(_L("CT_RFileData::DoCmdGenerateFile: file.Replace(...) Failed with error %d"), err); + SetError(err); + } + } + else + { + ERR_PRINTF2(_L("CT_RFileData::DoCmdGenerateFile: fs.Connect() Failed with error %d"), err); + SetError(err); + } + + INFO_PRINTF1(_L("Close RFile handle")); + CleanupStack::PopAndDestroy( iFile ); + INFO_PRINTF1(_L("Close RFs handle")); + CleanupStack::PopAndDestroy( &iFs ); + } + + INFO_PRINTF1(_L("*END* CT_RFileData::DoCmdGenerateFile")); + }