sl@0: /*
sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
sl@0: * All rights reserved.
sl@0: * This component and the accompanying materials are made available
sl@0: * under the terms of "Eclipse Public License v1.0"
sl@0: * which accompanies this distribution, and is available
sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: *
sl@0: * Initial Contributors:
sl@0: * Nokia Corporation - initial contribution.
sl@0: *
sl@0: * Contributors:
sl@0: *
sl@0: * Description:
sl@0: *
sl@0: */
sl@0: 
sl@0: 
sl@0: #if (!defined __DATA_WRAPPER_BASE__)
sl@0: #define __DATA_WRAPPER_BASE__
sl@0: 
sl@0: //	EPOC includes
sl@0: #include <datawrapper.h>
sl@0: #define SECS_TO_MS(x)  (x*1000000)
sl@0: 
sl@0: typedef TBuf<KTEFMaxNameLength>	TIniDataName;
sl@0: 
sl@0: _LIT(KConsname,				"Test Console");
sl@0: 
sl@0: #define	GETFROMCONFIGOPTIONAL(aType, aSectName, aKeyName, aResult, aLogMessage)	\
sl@0: 		if ( !Get##aType##FromConfig(aSectName, aKeyName, aResult) )	\
sl@0: 			{															\
sl@0: 			WARN_PRINTF3(aLogMessage, &aKeyName, aResult);				\
sl@0: 			}
sl@0: 
sl@0: #define	GETFROMCONFIGMANDATORY(aType, aSectName, aKeyName, aResult, aLogMessage, aDataOk)	\
sl@0: 		if ( !Get##aType##FromConfig(aSectName, aKeyName, aResult) )	\
sl@0: 			{															\
sl@0: 			ERR_PRINTF2(aLogMessage, &aKeyName);						\
sl@0: 			SetBlockResult(EFail);										\
sl@0: 			aDataOk=EFalse;												\
sl@0: 			}
sl@0: 
sl@0: #define	GETSTRINGFROMCONFIGOPTIONAL(aSectName, aKeyName, aResult, aLogMessage)	\
sl@0: 		if ( !GetStringFromConfig(aSectName, aKeyName, aResult) )		\
sl@0: 			{															\
sl@0: 			WARN_PRINTF3(aLogMessage, &aKeyName, &aResult);				\
sl@0: 			}
sl@0: 
sl@0: #define	GETSTRINGFROMCONFIGMANDATORY(aSectName, aKeyName, aResult, aLogMessage, aDataOk)	\
sl@0: 		if ( !GetStringFromConfig(aSectName, aKeyName, aResult) )		\
sl@0: 			{															\
sl@0: 			ERR_PRINTF2(aLogMessage, &aKeyName);						\
sl@0: 			SetBlockResult(EFail);										\
sl@0: 			aDataOk=EFalse;												\
sl@0: 			}
sl@0: 
sl@0: class CDataWrapperBase : public CDataWrapper
sl@0: 	{
sl@0: public:
sl@0: 	class TEnumEntryTable
sl@0: 		{
sl@0: 	public:
sl@0: 		const TDesC&	iString;
sl@0: 		TInt			iValue;
sl@0: 		};
sl@0: 
sl@0: public:
sl@0: 	TBool					GetBoolFromConfig(const TDesC& aSectName,const TDesC& aKeyName,TBool& aResult);
sl@0: 	TBool					GetIntFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TInt& aResult);
sl@0: 	TBool					GetStringFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TPtrC& aResult);
sl@0: 	TBool					GetHexFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TInt& aResult);
sl@0: 	TBool					GetUintFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUint& aResult);
sl@0: 	TBool					GetPointFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TPoint& aResult);
sl@0: 	TBool					GetRectFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TRect& aResult);
sl@0: 	TBool					GetSizeFromConfig(const TDesC& aSectName, const TDesC& aKeyName, TSize& aResult);
sl@0: 	TBool					GetEnumFromConfig(const TDesC& aSectName, const TDesC& aKeyName, const TEnumEntryTable* aTable, TInt& aResult);
sl@0: 	TBool					GetOrFromConfig(const TDesC& aSectName, const TDesC& aKeyName, const TEnumEntryTable* aTable, TUint& aResult);
sl@0: 	TBool 					GetUint8FromConfig(const TDesC& aSectName, const TDesC& aKeyName, TUint8& aResult);
sl@0: 	void 					Timedelay(TInt aTimeoutInSecs);
sl@0: 	virtual void			InitialiseL();
sl@0: 	inline RFs&				FileServer();
sl@0: 	inline CConsoleBase*	GetConsoleL();
sl@0: 	TBool					TranslateEnumToString(CDataWrapper& aDataWrapper, const TDesC& aEnum, const TInt aValue, TDesC& aTrasnaltion);
sl@0: 	TBool					TranslateNumberToEnumStringL(CDataWrapper& aDataWrapper, const TDesC& aSection, const TInt aValue, TDes& aTranslation);
sl@0: 	void 					PromptMessageL(const TDesC& aMsg,const TInt aDelayMiliSec,TKeyCode& aKeyCode);
sl@0: 	virtual TBool			DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex);
sl@0: 
sl@0: protected:
sl@0: 	CDataWrapperBase();
sl@0: 	virtual ~CDataWrapperBase();
sl@0: 
sl@0: 	TBool	GetCommandStringParameter(const TDesC& aParameterName, const TDesC& aSection, TPtrC& aResult, TText8 *aFileName, TInt aLine, TBool aMandatory);
sl@0: 	TBool	GetCommandIntParameter(const TDesC& aParameterName, const TDesC& aSection, TInt& aResult, TText8 *aFileName, TInt aLine, TBool aMandatory);
sl@0: 	TBool	GetCommandBoolParameter(const TDesC& aParameterName, const TDesC& aSection, TBool& aResult, TText8 *aFileName, TInt aLine, TBool aMandatory);
sl@0: 
sl@0: private:
sl@0: 	TBool	ProcessString(const TDesC& aStr, TUint& aResult, const TEnumEntryTable* aTable);
sl@0: 	TBool	ProcessEntry(const TDesC& aStr, TUint& aResult, const TEnumEntryTable* aTable);
sl@0: 	TBool 	ProcessEnumList(CDataWrapper& aDataWrapper,	const TDesC& aStr, const TDesC& aEnum, const TUint& aValue, TDes& aTranslation);
sl@0: 	TBool	GetCommandStringParameterL(const TDesC& aSectName, const TDesC& aKeyName, TPtrC& aResult);
sl@0: 	TBool 	KeyCheck();
sl@0: 	void 	DoCmdUtilityPromptMessageL(const TDesC& aSection);
sl@0: 
sl@0: private:
sl@0: 	// Included ini files
sl@0: 	RPointerArray<CIniData>	iInclude;
sl@0: 	RPointerArray<HBufC>	iBuffer;
sl@0: 	RFs                     iFs;
sl@0: 	RTimer					iTimer;
sl@0: 	};
sl@0: 
sl@0: #include "DataWrapperBase.inl"
sl@0: 
sl@0: #endif /* __DATA_WRAPPER_BASE__ */