graphics/wserv/src/T_DataAnimForMClass.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphics/wserv/src/T_DataAnimForMClass.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,2331 @@
+/*
+* 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 the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "T_DataAnimForMClass.h"
+#include "T_GraphicsUtil.h"
+#include "T_AnimDef.h"
+#include "../AnimPlugin/inc/T_AnimDef.h"
+#include <w32adll.h>
+#include <e32keys.h>
+#include "w32std.h" 
+#define KMaxBufSize 250
+
+/*@{*/
+_LIT(KDataClassname,							"RAnimForMClass");
+
+///	Fields
+
+_LIT(KFldWin, 									"win");
+_LIT(KFldWingrp, 								"wingrp");
+_LIT(KFldSprite, 								"sprite");
+_LIT(KFldType, 									"type");
+
+
+_LIT(KFldOpcode, 								"opcode");
+
+
+_LIT(KFldExpected, 								"expected");
+_LIT(KFldRect, 									"rect");
+_LIT(KFldState, 								"state");
+_LIT(KFldWs, 									"ws");
+_LIT(KFldWingrpId, 								"windowgroupid");
+_LIT(KFldOrdinalPosition, 						"pos");
+_LIT(KFldOrdinalPriority, 						"ordinalpriority");
+_LIT(KFldScreenNumb, 							"screennumber");
+_LIT(KFldFullOrdinPostn, 						"fullpos");
+_LIT(KFldExpectedPoint, 						"expectedpoint");
+_LIT(KFldGetEvent, 								"getevent");
+_LIT(KFldInterface, 							"interface");
+_LIT(KFldPostRawEvent, 							"rawevent");
+
+
+
+
+_LIT(KFldSyncMode, 								"animsync");
+_LIT(KFldInterval, 								"interval");
+_LIT(KFldNotifications, 						"notification");
+_LIT(KFldMessage, 								"message");
+_LIT(KFldHandleBitmap, 							"bitmap");
+_LIT(KFldHandleFont, 							"font");
+_LIT(KFldMemberIndex, 							"member_index");
+_LIT(KFldIsFullUpdate, 							"isfullupdate");
+_LIT(KFldIsActivate, 							"isactivate");
+_LIT(KFldSetReplyBufHandle1, 					"slot2");
+_LIT(KFldSetReplyBufHandle2, 					"slot3");
+_LIT(KFldPointPosition,							"pos");
+_LIT(KFldRAnim,						        	"anim");
+
+_LIT(KESyncNone , 								"ESyncNone");
+_LIT(KESyncFlash, 								"ESyncFlash");
+_LIT(KESyncSecond, 								"ESyncSecond");
+_LIT(KESyncMinute, 								"ESyncMinute");
+_LIT(KESyncDay, 								"ESyncDay");
+
+_LIT(KENone, 									"ENone");
+_LIT(KEPointerMove, 							"EPointerMove");
+_LIT(KEPointerSwitchOn, 						"EPointerSwitchOn");
+_LIT(KEKeyDown, 								"EKeyDown");
+_LIT(KEKeyUp, 									"EKeyUp");
+_LIT(KERedraw, 									"ERedraw");
+_LIT(KESwitchOn, 								"ESwitchOn");
+_LIT(KEActive, 								    "EActive");
+_LIT(KEInactive,                                "EInactive");
+_LIT(KEUpdateModifiers,                         "EUpdateModifiers");
+_LIT(KEButton1Down,                             "EButton1Down");
+_LIT(KEButton1Up,                               "EButton1Up");
+_LIT(KEButton2Down,                             "EButton2Down");
+_LIT(KEButton2Up,                               "EButton2Up");
+_LIT(KEButton3Down,                             "EButton3Down");
+_LIT(KEButton3Up,                               "EButton3Up");
+_LIT(KESwitchOff,                               "ESwitchOff");
+_LIT(KEKeyRepeat,                               "EKeyRepeat");
+_LIT(KECaseOpen,                                "ECaseOpen");
+_LIT(KECaseClose,                               "ECaseClose");
+_LIT(KERestartSystem,                           "ERestartSystem");
+
+
+
+///	Commands
+_LIT(KCmdnew, 									"new");
+_LIT(KCmdDestructorGeneral, 					"~");
+_LIT(KCmdDestructor, 							"~RAnimForMClass");
+_LIT(KCmdConstruct, 							"Construct");
+_LIT(KCmdCommandReply, 							"CommandReply");
+_LIT(KCmdDestroy, 								"Destroy");
+_LIT(KCmdClose, 								"Close");
+
+///	Logging
+_LIT(KLogErrMissingPara, "Missing parameter '%S'");
+
+
+_LIT(KLogErrConstruct, "Construct return err = %d");
+_LIT(KLogInfoCmdConstruct1, "execute RAnimForMClass::Construct(const RWindowBase &, TInt, const TDesC8 &)");
+
+_LIT(KLogInfoCmdConstruct3, "execute RAnimForMClass::Construct(const RWsSprite &, TInt, const TDesC8 &)");
+
+_LIT(KLogErrCommandReply, "CommandReply return err = %d");
+_LIT(KLogInfoCmdCommandReply1, "execute RAnimForMClass::CommandReply(TInt),opcode=%d");
+
+_LIT(KLogInfoCmdCommandReply3, "execute RAnimForMClass::CommandReply(TInt, const TDesC8 &, const TIpcArgs &),opcode=%d");
+
+_LIT(KLogInfoCmdDestroy, "execute RAnimForMClass::Destroy()");
+_LIT(KLogInfoCmdDestructor1, "execute ~RAnimForMClass()");
+_LIT(KLogMissingParameter, "Missing parameter '%S'");
+_LIT(KlogDateTime, "DateTime");
+/*@}*/
+
+CT_DataAnimForMClass* CT_DataAnimForMClass::NewL()
+	{
+	CT_DataAnimForMClass*	ret = new (ELeave) CT_DataAnimForMClass();
+	CleanupStack::PushL(ret);
+	ret->ConstructL();
+	CleanupStack::Pop(ret);
+	return ret;
+	}
+
+CT_DataAnimForMClass::CT_DataAnimForMClass()
+:	iActiveCallback(NULL)
+	,iAnim(NULL)
+	{
+	}
+
+void CT_DataAnimForMClass::ConstructL()
+	{
+	iSendBuf.CreateL(KMaxBufSize);
+	iSendBuf.FillZ(1);
+	
+	for (TInt i=0;i<KIpcArgNum;i++)	
+		iIpcBuf[i].CreateL(KMaxBufSize);
+	}
+
+CT_DataAnimForMClass::~CT_DataAnimForMClass()
+	{
+	INFO_PRINTF1(KLogInfoCmdDestructor1);
+	DestroyData();
+	iSendBuf.Close();
+	
+	for (TInt i=0;i<KIpcArgNum;i++)	
+		iIpcBuf[i].Close();	
+	}
+
+TAny* CT_DataAnimForMClass::GetObject()
+	{
+    return iAnim;
+	}
+
+void CT_DataAnimForMClass::SetObjectL(TAny* aAny)
+	{
+	DestroyData();
+    iAnim = static_cast<T_RAnimChild*> (aAny);
+	}
+
+void CT_DataAnimForMClass::DisownObjectL()
+	{
+    iAnim = NULL;
+	}
+
+void CT_DataAnimForMClass::DestroyData()
+	{
+	DoCmdDestroy();
+	}
+
+/**
+* Process a command read from the ini file
+*
+* @param aCommand			the command to process
+* @param aSection			the entry in the ini file requiring the command to be processed
+* @return ETrue if the command is processed
+*/
+TBool CT_DataAnimForMClass::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection,const TInt)
+	{
+	TBool	ret = ETrue;
+
+	if ( aCommand==KCmdDestructorGeneral || aCommand==KCmdDestructor )
+		{
+		DoCmdDestructor();
+		}
+	else if ( aCommand==KCmdnew || aCommand==KDataClassname )
+		{
+		DoCmdnewL(aSection);
+		}
+	else if ( aCommand==KCmdConstruct )
+		{
+		DoCmdConstructL(aSection);
+		}
+	else if ( aCommand==KCmdCommandReply )
+		{
+		DoCmdCommandReplyL(aSection);
+		}
+	else if ( aCommand==KCmdDestroy )
+		{
+		DoCmdDestroy();
+		}
+	else if ( aCommand==KCmdClose )
+		{
+		DoCmdClose();
+		}
+	else
+		{
+		ret=EFalse;
+		}
+
+	return ret;
+	}
+
+void CT_DataAnimForMClass::DoCmdnewL(const TDesC& aSection)
+	{
+	DestroyData();
+	TPtrC  datRAnimName ; 
+	if ( GetStringFromConfig(aSection, KFldRAnim, datRAnimName))
+		{
+		iAnim = static_cast<T_RAnimChild*>(GetDataObjectL(datRAnimName));
+		}
+	else 
+		ERR_PRINTF2(KLogErrMissingPara, &KFldWin);
+	}
+
+void CT_DataAnimForMClass::ResetIpcArg()
+	{
+	for (TInt i=0; i<KIpcArgNum; i++)
+		{
+		iIpcArgs.Set(i, TIpcArgs::ENothing);
+		}
+	}
+
+void CT_DataAnimForMClass::DoCmdConstructL(const TDesC& aSection)
+	{
+	TInt err = KErrNone;
+	
+	// Get test data for command input parameter(s)
+	TBool dataOk = ETrue;
+
+	// Get "const RWindowBase &aDevice" or "const RWsSprite &aDevice"
+	TPtrC        datWinName;
+	RWindowBase* win = NULL;
+	TPtrC        datSpriteName;
+	RWsSprite*   sprite = NULL;
+	if ( GetStringFromConfig(aSection, KFldWin, datWinName))
+		{
+		win = static_cast<RWindowBase*>(GetDataObjectL(datWinName));
+		}
+	else if ( GetStringFromConfig(aSection, KFldSprite, datSpriteName))
+		{
+		sprite = static_cast<RWsSprite*>(GetDataObjectL(datSpriteName));
+		}
+	if (!win && !sprite )
+		{
+		dataOk = EFalse;
+		ERR_PRINTF2(KLogErrMissingPara, &KFldWin);
+		ERR_PRINTF2(KLogErrMissingPara, &KFldSprite);
+		}
+	
+	//Get "TInt aType"
+	TInt datType;
+	if ( !CT_GraphicsUtil::ReadAnimType(*this,aSection, KFldType, datType))
+		{
+		dataOk = EFalse;
+		ERR_PRINTF2(KLogErrMissingPara, &KFldType);
+		}
+	
+	// Get "const TDesC8 &aArgs"
+	TPtrC 	inputStr;
+	
+	// get "const TIpcArgs &aIpcArgs"
+	
+	if ( !dataOk )
+		{
+		SetBlockResult(EFail);
+		}
+	else
+		{	
+		// Execute command and log parameters
+		if (win)
+			{
+				INFO_PRINTF1(KLogInfoCmdConstruct1);
+				if (iAnim != NULL)
+				     err = iAnim->Construct(*win, datType, iSendBuf);	
+			}
+
+		else
+			{
+				INFO_PRINTF1(KLogInfoCmdConstruct3);
+				if (iAnim != NULL)
+				    err = iAnim->Construct(*sprite, datType, iSendBuf);				
+			}
+		
+		// Check the command return code
+		if(err != KErrNone)
+			{
+			ERR_PRINTF2(KLogErrConstruct, err);
+			SetError(err);
+			}
+		}
+	}
+
+void CT_DataAnimForMClass::DoCmdCommandReplyL(const TDesC& aSection)
+	{
+	
+	// Get test data for command input parameter(s)
+	TBool dataOk = ETrue;
+
+	// Get "TInt aOpcode"
+	TInt datOpcode;
+	if ( !CT_GraphicsUtil::ReadAnimCommand(*this, aSection, KFldOpcode,
+			datOpcode))//ReadAnimCommand():Convert datOpcode from string type to Int type
+		{
+		dataOk = EFalse;
+		ERR_PRINTF2(KLogErrMissingPara, &KFldOpcode);
+		}
+
+	if (!dataOk)
+		{
+		_LIT(KFailed, "Can not read the Operation code from the config file. Failed. ");
+		INFO_PRINTF1(KFailed);
+		SetBlockResult(EFail);
+		}
+	switch (datOpcode)
+		{
+			//Util
+		case ECmdRetrieveResult:
+			DoCmdRetrieveResult(aSection, datOpcode);
+			break;
+		case ECmdUtilEatupMemory:
+			DoCmdEatupMemory(datOpcode);
+			break;
+		case ECmdUtilFreeEatenMemory:
+			DoCmdFreeEatenMemory(datOpcode);
+			break;
+			// The MAnimGeneralFunctioins
+		case ECmdGeneralAnimate:
+			DoCmdGeneralAnimate(aSection, datOpcode);
+			break;
+		case ECmdGeneralClient:
+			DoCmdGeneralClient(aSection, datOpcode);
+			break;
+		case ECmdGeneralFlashStateOn:
+			DoCmdGeneralFlashStateOn(aSection, datOpcode);
+			break;
+		case ECmdGeneralPanic:
+			DoCmdGeneralPanic(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralScreenDevice:
+			DoCmdGeneralScreenDevice(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralExtendedInterface:
+			DoCmdGeneralExtendedInterface(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralWindowExtension:
+			DoCmdGeneralWindowExtension(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralNumOfExtInterfaces:
+			DoCmdGeneralNumOfExtInterfaces(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralEventExtension:
+			DoCmdGeneralEventExtension(aSection, datOpcode) ;
+			break;
+		case ECmdGeneralGetRawEvents:
+			DoCmdGeneralGetRawEvents(aSection, datOpcode);
+			break;
+		case ECmdGeneralPostRawEvent:
+			DoCmdGeneralPostRawEvent(aSection, datOpcode);
+			break;
+		case ECmdGeneralPostKeyEvent:
+			DoCmdGeneralPostKeyEventL(aSection, datOpcode);
+			break;
+		case ECmdGeneralSetSync:
+			DoCmdGeneralSetSync(aSection, datOpcode);
+			break;
+		case ECmdGeneralSync:
+			DoCmdGeneralSync(aSection, datOpcode);
+			break;
+		case ECmdGeneralSetInterval:
+			DoCmdGeneralSetInterval(aSection, datOpcode);
+			break;
+		case ECmdGeneralSetNextInterval:
+			DoCmdGeneralSetNextInterval(aSection, datOpcode);
+			break;
+		case ECmdGeneralSystemTime:
+			DoCmdGeneralSystemTime(aSection, datOpcode);
+			break;
+		case ECmdGeneralRegisterForNotis:
+			DoCmdGeneralRegisterForNotis(aSection, datOpcode);
+			break;
+		case ECmdGeneralMessage:
+			DoCmdGeneralMessage(aSection, datOpcode);
+			break;
+		case ECmdGeneralDuplicateBitmapL:
+			DoCmdGeneralDuplicateBitmapL(aSection, datOpcode);
+			break;
+		case ECmdGeneralDuplicateFontL:
+			DoCmdGeneralDuplicateFontL(aSection, datOpcode);
+			break;
+		case ECmdGeneralCloseFont:
+			DoCmdGeneralCloseFontL(aSection, datOpcode);
+			break;
+		case ECmdGeneralReplyBuf8:
+			DoCmdGeneralReplyBuf8(aSection, datOpcode);
+			break;
+		case ECmdGeneralReplyBuf16:
+			DoCmdGeneralReplyBuf16(aSection, datOpcode);
+			break;
+			// the MAnimSpriteFunctioins 
+		case ECmdSpriteGetSpriteMember:
+			DoCmdSpriteGetSpriteMember(aSection, datOpcode);
+			break;
+		case ECmdSpriteUpdateMember:
+			DoCmdSpriteUpdateMember(aSection, datOpcode) ;
+			break;
+		case ECmdSpriteActivate:
+			DoCmdSpriteActivate(aSection, datOpcode) ;
+			break;
+		case ECmdSpriteSpriteCanBeSeen:
+			DoCmdSpriteSpriteCanBeSeen(aSection, datOpcode) ;
+			break;
+		case ECmdSpriteSizeChangedL:
+			DoCmdSpriteSizeChangedL(aSection, datOpcode) ;
+			break;
+		case ECmdSpriteSetPosition:
+			DoCmdSpriteSetPosition(aSection, datOpcode) ;
+			break;
+			//MAnimWindowFunctions
+		case ECmdWindowActivateGc:
+			{
+			DoWindowActivateGc(datOpcode);
+			break;
+			}
+		case ECmdWindowSetRect:
+		case ECmdWindowIsStarted:
+			{
+			DoWindowSetRect(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowWindowSize:
+			{
+			DoWindowWindowSizeL(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowIsHidden:
+			{
+			DoWindowIsHidden(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowSetVisible:
+			{
+			DoWindowSetVisible(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowInvalidate:
+			{
+			DoWindowInvalidate(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowParameters:
+			{
+			DoWindowParametersL(datOpcode, aSection);
+			break;
+			}
+		case ECmdWindowVisibleRegion:
+			{
+			DoWindowVisibleRegion(datOpcode, aSection);
+			break;
+
+			}
+			//MAnimGeneralFunctionsWindowExtension
+		case ECmdGfweScreens:
+			{
+			DoGeneralExtScreensL(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweFocusScreens:
+			{
+			DoGeneralExtFocusScreensL(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweSetFocusScreen:
+			{
+			DoGeneralExtSetFocusScreen(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweWindowGroups:
+			{
+			DoGeneralExtWindowGroupsL(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweWindowGroupInfo:
+			{
+			DoGeneralExtWindowGroupInfoL(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweWindowGroupName:
+			{
+			DoGeneralExtWindowGroupNameL(datOpcode, aSection);
+			break;
+			}
+		case ECmdGfweSetOrdinalPosition:
+			{
+			DoGeneralExtSetOrdinalPositionL(datOpcode, aSection);
+			break;
+			}
+			//MAnimFreeTimerWindowFunctions
+		case ECmdFreeTimerWinDeactivateGc:
+			{
+			DoFreeTimerWinDeactivateGc(datOpcode);
+			break;
+			}
+		case ECmdFreeTimerWinUpdate:
+			{
+			DoFreeTimerWinUpdate(datOpcode);
+			break;
+			}
+		default:
+			{
+			_LIT(KFailed2, "Unsupported operation code. ");
+			INFO_PRINTF1(KFailed2);
+			break;
+			}
+		}
+	}
+
+void CT_DataAnimForMClass::DoCmdClose()
+	{
+	iAnim  = NULL ;
+	}
+
+void CT_DataAnimForMClass::DoCmdDestroy()
+	{
+	INFO_PRINTF1(KLogInfoCmdDestroy);
+	iAnim  = NULL ;
+	}
+
+void CT_DataAnimForMClass::DoCmdDestructor()
+	{
+	// Execute command and log parameters
+	INFO_PRINTF1(KLogInfoCmdDestructor1);
+	iAnim = NULL;
+	}
+
+//*************************MAnimWindowFunctions verifying********************************
+void CT_DataAnimForMClass::DoWindowActivateGc(TInt aOpcode)
+	{
+	INFO_PRINTF2(KLogInfoCmdCommandReply1, aOpcode);
+	TInt err=iAnim->CommandReply(aOpcode);
+	INFO_PRINTF2(KLogErrCommandReply, err);
+
+	if (err != KErrNone)
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetError(err);
+		}
+	}
+
+void CT_DataAnimForMClass::DoWindowSetRect(TInt aOpcode, const TDesC& aSection)
+	{
+	switch (aOpcode)
+		{
+		case ECmdWindowSetRect:
+			{
+			TPtrC8 ptr;
+			TRect sendRect;
+			if (!GetRectFromConfig(aSection, KFldRect, sendRect))
+				{
+				ERR_PRINTF2(KLogErrMissingPara, &KFldRect());
+				SetBlockResult(EFail);
+				}
+			TPckgBuf<TRect> sendVal(sendRect);
+			iIpcArgs.Set(0, TIpcArgs::ENothing);
+			iIpcArgs.Set(1, &sendVal);
+
+			INFO_PRINTF2(KLogInfoCmdCommandReply3, aOpcode);
+			TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+			INFO_PRINTF2(KLogErrCommandReply, err);
+
+			if (err != KErrNone)
+				{
+				ERR_PRINTF2(KLogErrCommandReply, err);
+				SetError(err);
+				}
+			ResetIpcArg();
+			break;
+			}
+		case ECmdWindowIsStarted:
+			{
+			INFO_PRINTF2(KLogInfoCmdCommandReply1, aOpcode);
+			TInt err=iAnim->CommandReply(aOpcode);
+			INFO_PRINTF2(KLogErrCommandReply, err);
+			if (err != KErrNone)
+				{
+				ERR_PRINTF2(KLogErrCommandReply, err);
+				SetError(err);
+				}
+			break;
+			}
+		}
+	}
+
+void CT_DataAnimForMClass::DoWindowWindowSizeL(TInt aOpcode,const TDesC& aSection)
+	{
+	TPtrC8 ptr;
+	TPtrC datWinName;
+	RWindowBase* win= NULL;
+	if (GetStringFromConfig(aSection, KFldWin, datWinName))
+		{
+		win = static_cast<RWindowBase*>(GetDataObjectL(datWinName));
+		}
+	TSize expected=win->Size();
+	TSize resultBuf;
+	TPckgBuf<TSize> retrndPck(expected);
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &retrndPck);
+	INFO_PRINTF2(KLogInfoCmdCommandReply3, aOpcode);
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, err);
+
+	resultBuf=retrndPck();
+	if (expected!=resultBuf)
+		{
+		ERR_PRINTF5(_L("The returned value is not as expected, expected: (%d,%d), actual: (%d,%d)"), expected.iWidth,expected.iHeight, resultBuf.iWidth,resultBuf.iHeight);
+		SetBlockResult(EFail);
+		}
+	ResetIpcArg();
+	} 
+
+void CT_DataAnimForMClass::DoWindowIsHidden(TInt aOpcode,const TDesC& aSection)
+	{
+	TBool expectedVal;
+
+	if (!GetBoolFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldExpected());
+		SetBlockResult(EFail);
+		}
+	else
+		{
+		INFO_PRINTF2(KLogInfoCmdCommandReply1, aOpcode);
+		TInt actual=iAnim->CommandReply(aOpcode);
+		INFO_PRINTF2(KLogErrCommandReply, actual);
+		if (actual!=expectedVal)
+			{
+			ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, actual);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+void CT_DataAnimForMClass::DoWindowSetVisible(TInt aOpcode,const TDesC& aSection)
+	{
+	TBool setVisible;
+	TPtrC8 ptr;
+
+	if (!GetBoolFromConfig(aSection, KFldState, setVisible))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldState());
+		SetBlockResult(EFail);
+		}
+
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TBool> setVisiblePck(setVisible);
+	iIpcArgs.Set(1, &setVisiblePck);
+	INFO_PRINTF2(KLogInfoCmdCommandReply3, aOpcode);
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, err);
+	if (err != KErrNone)
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetError(err);
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoWindowInvalidate(TInt aOpcode,const TDesC& aSection)
+	{
+	TPtrC datWinName;
+	TPtrC8 ptr;
+	TRect rectVal;
+	if (!GetRectFromConfig(aSection, KFldRect, rectVal))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldRect());
+		SetBlockResult(EFail);
+		}
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TRect> rectValPck(rectVal);
+	iIpcArgs.Set(1, &rectValPck);
+	INFO_PRINTF2(KLogInfoCmdCommandReply3, aOpcode);
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, err);
+	if (err != KErrNone)
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetError(err);
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoWindowParametersL(TInt aOpcode,const TDesC& aSection)
+	{
+	RWindowBase* win= NULL;
+	TSize expectedSize;
+	TInt expectedDisplyMd;
+	TPtrC val;
+	TPtrC8 ptr;
+	TPtrC datWinName;
+	TPckgBuf<TRect> retrndWindowPostn;
+	TPckgBuf<TInt> retrndDisplyMd;
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &retrndWindowPostn);
+	iIpcArgs.Set(2, &retrndDisplyMd);
+
+	//Send command to server
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, err);
+	if (err != KErrNone)
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetError(err);
+		}
+	else
+		{
+		//Get the window's Size and Displaymode
+		if (GetStringFromConfig(aSection, KFldWin, datWinName))
+			{
+			win = static_cast<RWindowBase*>(GetDataObjectL(datWinName));
+			}
+		expectedSize=win->Size();
+		expectedDisplyMd=win->DisplayMode();
+
+		TRect retrndWinInf=retrndWindowPostn();
+		TSize retrndSize=retrndWinInf.Size();
+		TInt retrndDisplyM=retrndDisplyMd();
+
+		if (retrndSize!=expectedSize)
+			{
+			ERR_PRINTF5(_L("The value is not as expected! expected: (%d,%d), actual: (%d,%d)"), expectedSize.iWidth,expectedSize.iHeight, retrndSize.iWidth,retrndSize.iHeight);
+			SetBlockResult(EFail);
+			}
+		if (retrndDisplyM!=expectedDisplyMd)
+			{
+			ERR_PRINTF3(_L("The value is not as expected! expected: %d, actual: %d"), expectedDisplyMd, retrndDisplyM);
+			SetBlockResult(EFail);
+			}
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoWindowVisibleRegion(TInt aOpcode,const TDesC& aSection)
+	{
+	TInt expecteValue;
+	TInt actual;
+
+	if (!GetIntFromConfig(aSection, KFldExpected, expecteValue))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldExpected());
+		SetBlockResult(EFail);
+		}
+	else
+		{
+		actual=iAnim->CommandReply(aOpcode);
+		INFO_PRINTF2(KLogErrCommandReply, actual);
+		if (actual!=expecteValue)
+			{
+			ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expecteValue, actual);
+			SetBlockResult(EFail);
+			}
+		}
+	}
+
+//****************MAnimGeneralFunctionsWindowExtension verifying*******************************
+
+void CT_DataAnimForMClass::DoGeneralExtScreensL(TInt aOpcode,const TDesC& aSection)
+	{
+	RWsSession* ws;
+	TPtrC datWsName;
+	if (GetStringFromConfig(aSection, KFldWs, datWsName))
+		{
+		ws = static_cast<RWsSession*>(GetDataObjectL(datWsName));
+		}
+	TInt actualScreenNumb=iAnim->CommandReply(aOpcode);
+	INFO_PRINTF2(KLogErrCommandReply, actualScreenNumb);
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtFocusScreensL(TInt aOpcode,const TDesC& aSection)
+	{
+	RWsSession* ws;
+	TPtrC datWsName;
+	TInt expectedVal;
+
+	TInt actual=iAnim->CommandReply(aOpcode);
+	INFO_PRINTF2(_L("FocuseScreens is %d"),actual);
+
+	//If there is no expected value set in ini file, get the focus screen; 
+	if (!GetIntFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		if (GetStringFromConfig(aSection, KFldWs, datWsName))
+			{
+			ws = static_cast<RWsSession*>(GetDataObjectL(datWsName));
+			}
+
+		expectedVal=ws->GetFocusScreen();
+		}
+
+	if (actual!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, actual);
+		SetBlockResult(EFail);
+		}
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtSetFocusScreen(TInt aOpcode,const TDesC& aSection)
+	{
+	TInt screenNo;
+	TPtrC8 ptr;
+	TPtrC datWsName;
+
+	if (!GetIntFromConfig(aSection, KFldScreenNumb, screenNo))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldScreenNumb());
+		SetBlockResult(EFail);
+		}
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> screenNoPck(screenNo);
+	iIpcArgs.Set(1, &screenNoPck);
+	TInt actual=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, actual);
+
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtWindowGroupsL(TInt aOpcode,const TDesC& aSection)
+	{
+	TPtrC8 ptr;
+	TInt screenNo;
+	TPtrC datWsName;
+	RWsSession* ws;
+	if (!GetIntFromConfig(aSection, KFldScreenNumb, screenNo))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldScreenNumb());
+		SetBlockResult(EFail);
+		}
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> screenNoPck(screenNo);
+	iIpcArgs.Set(1, &screenNoPck);
+	TInt actual=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, actual);
+
+	if (!GetStringFromConfig(aSection, KFldWs, datWsName))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldWs());
+		SetBlockResult(EFail);
+		}
+	ws = static_cast<RWsSession*>(GetDataObjectL(datWsName));
+	TInt expectedVal=ws->NumWindowGroups();
+
+	if (actual!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, actual);
+		SetBlockResult(EFail);
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtWindowGroupInfoL(TInt aOpcode,const TDesC& aSection)
+	{
+	TInt screenNo;
+	TPtrC8 ptr;
+	TPtrC datWingrpName;
+	TInt retrnPck;
+	TInt expectedGrpInfo;
+	RWindowGroup* wingrp;
+	//Get window group object in order to verify the window group's name's existance.
+	if (!GetStringFromConfig(aSection, KFldWingrp, datWingrpName))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldWingrp());
+		SetBlockResult(EFail);
+		}
+	wingrp = static_cast<RWindowGroup*>(GetDataObjectL(datWingrpName));
+
+	//Get screen number from ini file and set to IPC slot 1.
+	if (!GetIntFromConfig(aSection, KFldScreenNumb, screenNo))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldScreenNumb());
+		SetBlockResult(EFail);
+		}
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> screenNoPck(screenNo);
+	iIpcArgs.Set(1, &screenNoPck);
+
+	//Get fullOrdipostion from ini or by using FullOrdinalPosition method and set to IPC slot 2.
+	TInt fullOrdiPostion;
+	if (!GetIntFromConfig(aSection, KFldFullOrdinPostn, fullOrdiPostion))
+		{
+		fullOrdiPostion=wingrp->FullOrdinalPosition();
+		}
+	TPckgBuf<TInt> fullOrdiPostionPck(fullOrdiPostion);
+	iIpcArgs.Set(2, &fullOrdiPostionPck);
+
+	//Set IPC slot 3 to receive ID of the TWindowGroupInfo.
+	TPckgBuf<TInt> retrnWinGrpInfo;
+	iIpcArgs.Set(3, &retrnWinGrpInfo);
+
+	TInt actual=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, actual);
+	TBool expectedVal;
+	if (!GetBoolFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldExpected);
+		SetBlockResult(EFail);
+		}
+	if (actual!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, actual);
+		SetBlockResult(EFail);
+		}
+	if (actual!=EFalse)
+		{
+		retrnPck=retrnWinGrpInfo();//Get returned window group ID
+
+		expectedGrpInfo=wingrp->WindowGroupId();
+		if (retrnPck!=expectedGrpInfo)
+			{
+			ERR_PRINTF3(
+			_L("The returned value is not as expected, expected: %d, actual: %d"),
+			expectedGrpInfo, retrnPck);
+			SetBlockResult(EFail);
+			}
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtWindowGroupNameL(TInt aOpcode,const TDesC& aSection)
+	{
+	TBuf<32> getWindowName;
+	TBool expectedVal;
+	TInt screenNo;
+	TInt fullOrdiPostion;
+	//Get Screen number from ini and set to IPC slot 1.
+	if (!GetIntFromConfig(aSection, KFldScreenNumb, screenNo))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldScreenNumb);
+		SetBlockResult(EFail);
+		}
+	TPtrC8 ptr;
+	TPckgBuf<TInt> screenNoPck(screenNo);
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &screenNoPck);
+
+	TPtrC datWingrpName;
+	RWindowGroup* wingrp;
+	//Get window group object
+	if (!GetStringFromConfig(aSection, KFldWingrp, datWingrpName))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldWingrp());
+		SetBlockResult(EFail);
+		}
+	wingrp = static_cast<RWindowGroup*>(GetDataObjectL(datWingrpName));
+	//Get fullOrdinary position and set to IPC slot 2.
+	if (!GetIntFromConfig(aSection, KFldFullOrdinPostn, fullOrdiPostion))
+		{
+		fullOrdiPostion=wingrp->FullOrdinalPosition();
+		}
+
+	TPckgBuf<TInt> fullOrdiPostionPck(fullOrdiPostion);
+	iIpcArgs.Set(2, &fullOrdiPostionPck);
+	//Set IPC slot 3 to receive the window name returned from server side.
+	TBuf<32> retrnWindowName;
+	iIpcArgs.Set(3, &retrnWindowName);
+
+	TInt actual=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	INFO_PRINTF2(KLogErrCommandReply, actual);
+	if (!GetBoolFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldExpected);
+		SetBlockResult(EFail);
+		}
+	if (actual!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, actual);
+		SetBlockResult(EFail);
+		}
+	//If commandreply returns ETrue then check the window group's name.
+	if (actual)
+		{
+		TInt result=wingrp->Name(getWindowName);
+		if (result!=KErrNone)
+			{
+			ERR_PRINTF1(_L("Failed to get the window group's name!"));
+			SetError(result);
+			}
+		INFO_PRINTF3(_L("Check the group name is expected. expected: %d,actual: %d"),&getWindowName,&retrnWindowName);
+		if (getWindowName!=retrnWindowName)
+			{
+			ERR_PRINTF1(_L("The returned window group name is not expected"));
+			SetBlockResult(EFail);
+			}
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtSetOrdinalPositionL(TInt aOpcode,const TDesC& aSection)
+	{
+	TInt expectedVal;
+	TPtrC8 ptr;
+	TInt wingrpid;
+	TInt newOrdinPrio;
+	TInt newOrdinaPostn;
+	TPtrC datWingrpName;
+	RWindowGroup* wingrp;
+	if (GetStringFromConfig(aSection, KFldWingrp, datWingrpName))
+		{
+		wingrp = static_cast<RWindowGroup*>(GetDataObjectL(datWingrpName));
+		}
+	//Before sending command, get window group ID from wrapper or ini as arg(IPC slot 1)
+	if (!GetIntFromConfig(aSection, KFldWingrpId, wingrpid))
+		{
+		wingrpid=wingrp->WindowGroupId();
+		INFO_PRINTF2(_L("RWindowTreeNode::WindowGroupId	= %d"), wingrpid);
+		}
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> wingrpidPck(wingrpid);
+	iIpcArgs.Set(1, &wingrpidPck);
+
+	//Get Group Id from wrapper or ini and send to server as IPC slot2
+	if (!GetIntFromConfig(aSection, KFldOrdinalPosition, newOrdinaPostn))
+		{
+		newOrdinaPostn = wingrp->OrdinalPosition();
+		INFO_PRINTF2(_L("RWindowTreeNode::FullOrdinalPosition	= %d"), newOrdinaPostn);
+		}
+	TPckgBuf<TInt> newOrdinaPostnPck(newOrdinaPostn);
+	iIpcArgs.Set(2, &newOrdinaPostnPck);
+
+	//Get new ordinal priority of the window as arg(IPC slot 3) from ini file;
+	if (!GetIntFromConfig(aSection, KFldOrdinalPriority, newOrdinPrio))
+		{
+		newOrdinPrio = wingrp->OrdinalPriority();
+		INFO_PRINTF2(_L("RWindowTreeNode::FullOrdinalPriority	= %d"), newOrdinPrio);
+		}
+	TPckgBuf<TInt> newOrdinPrioPck(newOrdinPrio);
+	iIpcArgs.Set(3, &newOrdinPrioPck);
+
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	if (!GetIntFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldExpected);
+		SetBlockResult(EFail);
+		}
+
+	if (err!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, err);
+		SetBlockResult(EFail);
+		}
+	//Get the new OrdinalPostion and Priority using window group methods;
+	if (err!=KErrNotFound)
+		{
+		TInt retrnOrdinPostn=wingrp->OrdinalPosition();
+		TInt retrnOrdinPrio=wingrp->OrdinalPriority();
+
+		if (retrnOrdinPostn!=newOrdinaPostn)
+			{
+			ERR_PRINTF3(
+			_L("The returned ordinalposition is not as expected, expected: %d, actual: %d"),
+			newOrdinaPostn, retrnOrdinPostn);
+			SetBlockResult(EFail);
+			}
+
+		if (retrnOrdinPrio!=newOrdinPrio)
+			{
+			ERR_PRINTF3(
+			_L("The returned ordinalpriority is not as expected, expected: %d, actual: %d"),
+			newOrdinPrio, retrnOrdinPrio);
+			SetBlockResult(EFail);
+			}
+		}
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoGeneralExtIsFocusableL(TInt aOpcode, const TDesC& aSection)
+	{
+	TInt screenNub;
+	TBool expectedVal;
+	TInt sendFullOrdinPstn;
+	if (!GetIntFromConfig(aSection, KFldScreenNumb, screenNub))
+		{
+		ERR_PRINTF2(KLogErrMissingPara, &KFldScreenNumb);
+		}
+	TPtrC8 ptr;
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> screenNubPck(screenNub);
+	iIpcArgs.Set(1, &screenNubPck);
+
+	TPtrC datWingrpName;
+	RWindowGroup* wingrp;
+	if (GetStringFromConfig(aSection, KFldWingrp, datWingrpName))
+		{
+		wingrp = static_cast<RWindowGroup*>(GetDataObjectL(datWingrpName));
+		}
+
+	//Get animation window's FullOrdinalPosition as arg(IPC slot 2)
+
+	sendFullOrdinPstn = wingrp->FullOrdinalPosition();
+	INFO_PRINTF2(_L("RWindowTreeNode::FullOrdinalPosition	= %d"), sendFullOrdinPstn);
+	TPckgBuf<TInt> sendFullOrdinPstnPck(sendFullOrdinPstn);
+	iIpcArgs.Set(2, &sendFullOrdinPstnPck);
+
+	//Check the CommandReply return value
+	TInt err=iAnim->CommandReply(aOpcode, ptr, iIpcArgs);
+	if (!GetBoolFromConfig(aSection, KFldExpected, expectedVal))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldExpected);
+		SetBlockResult(EFail);
+		}
+
+	if (err!=expectedVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectedVal, err);
+		SetBlockResult(EFail);
+		}
+	ResetIpcArg();
+	}
+
+//*******************MAnimFreeTimerWindowFunction verifying*******************************
+void CT_DataAnimForMClass::DoFreeTimerWinDeactivateGc(TInt aOpcode)
+	{
+	INFO_PRINTF2(_L("Excute %d"), aOpcode);
+	TPtrC8 ptr;
+	TInt err=iAnim->CommandReply(aOpcode, ptr);
+	if (err != KErrNone)
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetError(err);
+		}
+	}
+
+void CT_DataAnimForMClass::DoFreeTimerWinUpdate(TInt aOpcode)
+	{
+	INFO_PRINTF1(KLogInfoCmdCommandReply1);
+	
+	TInt err=iAnim->CommandReply(aOpcode);
+	
+	if(err!=KErrNone)
+		{
+		ERR_PRINTF2(_L("CommandReply failed with error %d"), err);
+		SetError(err);
+		}
+	}
+
+//------------------------------------------------------------------------------------
+void CT_DataAnimForMClass::DoCmdRetrieveResult(const TDesC& aSectName , const TInt& datOpcode)
+	{
+	TInt result = iAnim->CommandReply(datOpcode);
+	TBool expectdVal;
+    //Get  expected value from ini file.
+	if(!GetBoolFromConfig(aSectName,KFldExpected,expectdVal))
+		{
+		if ( result != KErrNone)
+		   ERR_PRINTF2( KLogErrCommandReply, result);	 	
+		else // success
+		   { 
+		   INFO_PRINTF1(_L("Retrieve Result event return ETrue"));
+		   }
+		}
+	if(result!=expectdVal)
+		{
+		ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expectdVal, result);
+		SetBlockResult (EFail);
+		}
+	else   
+		{
+		INFO_PRINTF1(_L("Retrieve Result equals to the expected value"));
+		}
+	} 
+
+void CT_DataAnimForMClass::DoCmdGeneralAnimate(const TDesC& aSectName,  const TInt& datOpcode )
+    {
+    //Get the datetime from the ini file
+    TDateTime dateTime ;
+	if(!GetDateTimeFromConfig(aSectName,  dateTime))
+	  	{
+	 	ERR_PRINTF2(KLogMissingParameter , &KlogDateTime);
+	 	SetBlockResult(EFail);  
+	  	}	
+	TPckgBuf<TDateTime> sendPckg(dateTime);
+	iIpcArgs.Set(0,TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &sendPckg);
+	 
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	// Send the command to notify the server
+	TInt ret = iAnim->CommandReply(datOpcode, iSendBuf, iIpcArgs); 
+	 
+	// Check the command return code 
+	if(ret == KErrNone)   
+    	{
+	    ERR_PRINTF2( KLogErrCommandReply, ret);	 
+        SetBlockResult (EFail);          
+		}
+	else
+		{
+		INFO_PRINTF1(_L("General Animate invoked succesffully and return successfully "));
+		}
+	ResetIpcArg();
+    }
+
+
+void CT_DataAnimForMClass::DoCmdGeneralClient(const TDesC& /*aSectName*/,  const TInt& datOpcode )
+    {
+    // Send the command to notify the server
+    INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    TInt ret =	iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	
+	// Check the return thread id equals to the client thread or not.
+	TInt clientThreadId = RThread().Id().Id();
+	
+	if ( ret == clientThreadId )
+		{
+		INFO_PRINTF1(_L("General client invoked succesffully"));
+		}
+	else 
+		{
+		ERR_PRINTF2( KLogErrCommandReply, ret);	 
+	    SetBlockResult (EFail);     
+		}
+    }
+   
+
+void CT_DataAnimForMClass::DoCmdGeneralFlashStateOn(const TDesC& aSectName,  const TInt& datOpcode )
+    {
+    // Send the command to notify the server. 
+    INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    TBool expected(EFalse);
+    TInt ret = -1 ;
+    
+    if ( !GetBoolFromConfig(aSectName,KFldExpected, expected) )
+		{
+	    ERR_PRINTF2(KLogMissingParameter , &KFldExpected);
+		SetBlockResult(EFail); 
+		} 
+   
+    ret = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);	
+    //If ret return -1, the result value can not be trusted(Please refer to the code in AnimPlugin::WinAnim).
+    //So it need another calling untill the ret return a ETrue or EFalse.
+    while(ret == -1)
+    	{
+    	User::After(100000);
+    	ret = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);	
+    	}
+    
+   
+    // Check if the return is ETrue (1) or EFalse(0)
+    if ( ret == static_cast<TInt>(expected) )
+	   { 
+       INFO_PRINTF1(_L("GeneralFlashStateOn invoked succesffully. Return code equals to expected vaule "));						 			
+	   }
+   else 
+	   {
+	   ERR_PRINTF2( KLogErrCommandReply, ret);	 	
+       SetBlockResult (EFail); 
+	   }
+    }
+
+void CT_DataAnimForMClass::DoCmdGeneralPanic(const TDesC& /*aSectName*/ , const TInt& datOpcode)
+    {
+	//Send the command to notify the server.
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt err = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+								
+	//The client will be paniced by the server
+	INFO_PRINTF1(_L("GeneralPanic invoked successfully"));	 	 				 		 			
+	}
+
+void CT_DataAnimForMClass::DoCmdGeneralScreenDevice(const TDesC& /*aSectName*/ , const TInt& datOpcode )
+    {
+	//Send the command to notify the server .
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt ret = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+									 
+	//Check if the return code is 0(Success) or not.
+	if ( ret == KErrNone ) 
+	    { 
+	    INFO_PRINTF1(_L("GeneralScreenDevice invoked succesffully."));						 			
+	    }
+	else 
+	    {
+	    ERR_PRINTF2( KLogErrCommandReply, ret);	 	
+	    SetBlockResult (EFail); 
+	    }
+	}
+
+void CT_DataAnimForMClass::DoCmdGeneralWindowExtension(const TDesC& /*aSectName*/, const TInt& datOpcode)
+	{
+	// Send the command to notify the server .
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt ret = iAnim->CommandReply(datOpcode, iSendBuf, iIpcArgs);
+
+	// Check if the return code is 0(Success) or not.
+	if (ret == KErrNone)
+		{
+		INFO_PRINTF1(_L("GeneralWindowExtension invoked succesffully."));
+		}
+	else
+		{
+		ERR_PRINTF2( KLogErrCommandReply, ret);
+		SetBlockResult(EFail);
+		}
+	}
+
+void CT_DataAnimForMClass::DoCmdGeneralEventExtension( const TDesC& /*aSectName*/,const TInt& datOpcode)
+	{
+	// Send the command to notify the server .
+    INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt ret = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+
+	// Check if the return code is 0(Success) or not.
+	if ( ret == KErrNone )
+		{
+		INFO_PRINTF1(_L("GeneralEventExtension invoked succesffully."));
+		}
+	else
+		{
+		ERR_PRINTF2( KLogErrCommandReply, ret);
+		SetBlockResult (EFail);
+		}
+	}
+
+ void CT_DataAnimForMClass::DoCmdGeneralExtendedInterface(const TDesC& aSectName , const TInt& datOpcode )  
+    {
+    TInt interface ;
+    //Get interface from ini file and set it as IpcArgs 1. 
+	if ( !GetIntFromConfig(aSectName,KFldInterface, interface) )
+	 	 {
+	 	 ERR_PRINTF2(KLogMissingParameter , &KFldInterface);
+	 	 SetBlockResult (EFail); 
+	 	 }
+    TPckgBuf<TInt> sendPckg(interface);
+	iIpcArgs.Set(0,TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &sendPckg);
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    //Send the command to notify the server .
+	TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+										 
+	//  Check the command return code 
+	if ( interface == 0 )
+	   {
+	   TInt expected ;
+
+	   if ( !GetIntFromConfig(aSectName,KFldExpected, expected) )
+		   {
+		   ERR_PRINTF2(KLogMissingParameter , &KFldInterface);
+		   SetBlockResult (EFail); 
+		   }
+	   if ( result != expected ) /*so far, the expected value is 2.*/
+           { 
+	       ERR_PRINTF2( KLogErrCommandReply, result);	 	
+	       SetBlockResult (EFail); 
+           }
+	   else 
+	       {
+           INFO_PRINTF1(_L("extended interface return is okay when the input paramter is 0"));
+	       }
+	   }
+	else if( interface == 1 )
+	   {
+	   if ( result == 0) // server return 0 stands for okay.
+		   { 
+		   INFO_PRINTF1(_L("extended interface return is okay when the input paramter is 1")); 
+		   }
+	   else 
+		   { 
+		   ERR_PRINTF2( KLogErrCommandReply, result);	 	
+		   SetBlockResult (EFail); 
+	       } 
+	   }
+    else if( interface == 2 )
+	   {
+	   if ( result == 0) // server return 0 stands for okay.
+		   { 
+		   INFO_PRINTF1(_L("extended interface return is okay when the input paramter is 2")); 
+		   }
+	   else 
+		   { 
+		   ERR_PRINTF2( KLogErrCommandReply, result);	 	
+		   SetBlockResult (EFail); 
+		   } 
+	   }  
+	else 
+	   {
+	   if ( result == 0) // server return 0 stands for okay.
+		   { 
+		   INFO_PRINTF1(_L("extended interface return is a NULL pointer when the input paramter is OUT of 0~2")); 
+		   }
+	   else 
+		   { 
+		   ERR_PRINTF2( KLogErrCommandReply, result);	 	
+		   SetBlockResult (EFail); 
+	       } 
+	   }
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoCmdGeneralNumOfExtInterfaces(const TDesC& aSectName,const TInt& datOpcode)
+    {
+    // Send the command to notify the server.
+    INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs);
+
+	INFO_PRINTF2(KLogErrCommandReply, result);
+
+	// Check the return code 
+	TInt expected;
+	if ( !GetIntFromConfig(aSectName,KFldExpected, expected) )
+		{
+		ERR_PRINTF2(KLogMissingParameter , &KFldInterface);
+		SetBlockResult (EFail);
+		}
+	if (result != expected) // so far ,the expected value is 2. 
+		{
+		ERR_PRINTF2( KLogErrCommandReply, result);
+		SetBlockResult (EFail);
+		}
+	else
+		{
+		INFO_PRINTF1(_L("NumberofExtendedInterfaces return is okay when the input paramter is 0"));
+		}
+	}
+ 
+
+ void CT_DataAnimForMClass::DoCmdGeneralGetRawEvents(const TDesC& aSectName , const TInt& datOpcode)
+    {
+    TBool bGetEvent;
+    //Get the rawevent parameter from ini file and set it as the IpcArgs 1 . 
+    if ( !GetBoolFromConfig(aSectName,KFldGetEvent ,bGetEvent))
+		{
+		ERR_PRINTF2(KLogMissingParameter , &KFldGetEvent);
+		SetBlockResult(EFail);
+		}
+	iIpcArgs.Set(0,TIpcArgs::ENothing);
+	TPckgBuf<TBool> sendPckg(bGetEvent);
+	iIpcArgs.Set(1, &sendPckg);
+
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    // Send the command to notify the server .
+    TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+
+	//Check the result is 0(Success) or not.
+	if (result != KErrNone )
+		{
+		ERR_PRINTF2( KLogErrCommandReply, result);
+		SetBlockResult (EFail);
+		}
+	else
+		{
+		INFO_PRINTF1(_L("GetRawEvents return is okay "));
+		}
+	}
+ 
+ void CT_DataAnimForMClass::DoCmdGeneralPostRawEvent(const TDesC& aSectName , const TInt& datOpcode)
+	{
+	TRawEvent rawEvent;
+	TPtrC str;
+    //Get the post rawevent parameter from ini file and set it as the IpcArgs 1 . 
+	if (!GetStringFromConfig(aSectName,KFldPostRawEvent,str))
+	    {
+	    ERR_PRINTF2(KLogMissingParameter , &KFldPostRawEvent);
+	    SetBlockResult(EFail);
+	    }
+    TRawEvent::TType type;
+    if ( str == KENone )
+        type = TRawEvent::ENone;
+    else if ( str == KEPointerMove )
+        type = TRawEvent::EPointerMove;
+    else if ( str == KEPointerSwitchOn)
+        type = TRawEvent::EPointerSwitchOn;
+    else if ( str == KEKeyDown )
+        type = TRawEvent::EKeyDown;
+    else if ( str == KEKeyUp )
+        type = TRawEvent::EKeyUp;
+    else if ( str == KERedraw)
+        type = TRawEvent::ERedraw;
+    else if ( str == KESwitchOn )
+        type = TRawEvent::ESwitchOn;
+    else if ( str == KEActive)
+        type = TRawEvent::EActive;
+    else if ( str == KEInactive)
+        type = TRawEvent::EInactive;
+    else if ( str == KEUpdateModifiers)
+        type = TRawEvent::EUpdateModifiers;
+    else if ( str == KEButton1Down)
+        type = TRawEvent::EButton1Down;
+    else if ( str == KEButton1Up)
+        type = TRawEvent::EButton1Up;
+    else if ( str == KEButton2Down)
+        type = TRawEvent::EButton2Down;
+    else if ( str == KEButton2Up)
+        type = TRawEvent::EButton2Up;
+    else if ( str == KEButton3Down)
+        type = TRawEvent::EButton3Down;
+    else if ( str == KEButton3Up)
+        type = TRawEvent::EButton3Up;
+    else if ( str == KESwitchOff)
+        type = TRawEvent::ESwitchOff;
+    else if ( str == KEKeyRepeat)
+        type = TRawEvent::EKeyRepeat;
+    else if ( str == KECaseOpen)
+        type = TRawEvent::ECaseOpen;
+    else if ( str == KECaseClose)
+        type = TRawEvent::ECaseClose;
+    else if ( str == KERestartSystem)
+        type = TRawEvent::ERestartSystem;
+
+    rawEvent.Set(type);
+    TPckgBuf<TRawEvent> sendPckg(rawEvent);
+    
+    iIpcArgs.Set(0,TIpcArgs::ENothing);
+    iIpcArgs.Set(1, &sendPckg);
+
+    INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    //Send the command to notify the server .
+	TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+
+    //Check the result is 0(Success) or not.
+    if (result != KErrNone )
+	   {
+	   ERR_PRINTF2(KLogErrCommandReply, result);
+       SetBlockResult (EFail);
+	   }
+    else
+	   {
+	   INFO_PRINTF1(_L("PostRawEvent return is okay "));
+	   }
+    }  
+ 
+
+ void CT_DataAnimForMClass::DoCmdGeneralPostKeyEventL(const TDesC& aSectName ,  const TInt& datOpcode)
+	{
+	/*
+	* 1.Use WinAnim plugin dll to post a key event. 
+	* 2.Use an RWindowGroup object to capture the key event.
+	* */
+
+	TKeyEvent keyEvent;
+	TKeyCode aKeyCode;
+	_LIT( KCode , "Code"); 
+    //Get the keycode from the ini file. 
+	if (!CT_GraphicsUtil::ReadKeyCode(*this, aSectName, KCode , aKeyCode))
+		{
+		ERR_PRINTF2(KLogMissingParameter , &KCode);
+		SetBlockResult(EFail);
+		}
+    // The keyEvent will be set as the IpcArg 1 .    
+	TInt captureKey = aKeyCode;
+	keyEvent.iCode = aKeyCode;
+	keyEvent.iScanCode =aKeyCode;
+	keyEvent.iModifiers = 0;
+	keyEvent.iRepeats = 0;
+		   
+	_LIT(KWindowGroup, "windowgroup");
+	_LIT(KWsSession, "session");
+	RWindowGroup* group = NULL;
+	RWsSession* session = NULL;
+	TPtrC datName;
+	if ( GetStringFromConfig(aSectName, KWindowGroup , datName) )
+		{
+		group = static_cast<RWindowGroup*>(GetDataObjectL(datName));
+		}
+	
+   	if ( GetStringFromConfig(aSectName, KWsSession , datName) )
+   		{
+	    session = static_cast<RWsSession*>(GetDataObjectL(datName));
+   		}
+   	group->CaptureKey(captureKey, 0, 0);	
+	TPckgBuf<TKeyEvent> sendPckg(keyEvent);
+	iIpcArgs.Set(0,TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &sendPckg);   
+	TInt err = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+	 
+	//Check the result is 0(Success) or not.
+	if (err != KErrNone )  
+		{
+		ERR_PRINTF2(KLogErrCommandReply, err);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("PostKeyEvent return is okay "));
+		}  	
+	TRequestStatus myStatus;
+	session->EventReady(&myStatus);
+	TBool bStop = ETrue;
+	TWsEvent we;
+	while(bStop)
+		{
+    	User::WaitForRequest(myStatus);
+    	session->GetEvent(we);
+    	if(we.Type() == EEventKey)
+    		{
+    		bStop = EFalse;
+    	    TInt rst = we.Key()->iCode;    		
+    	    if(rst != captureKey)
+    	    	{
+    	        ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), captureKey, rst);
+    	        SetBlockResult(EFail);
+    	        }
+    	     else
+    	    	{
+    	    	_LIT(KSuccess, "PostKeyEvent successfully");   
+    	        INFO_PRINTF1(KSuccess);
+    	        }
+    		}
+    	else
+    		{
+    		session->EventReady(&myStatus);
+    		}
+		}//end while	
+	}  
+ 
+ void CT_DataAnimForMClass::DoCmdGeneralSetSync(const TDesC& aSectName ,  const TInt& datOpcode )
+   {
+   MAnimGeneralFunctions::TAnimSync  syncmode ;
+   TPtrC	str;
+   // Get the syncmode to be set from ini file and set it as IpcArg 1. 
+   if ( !GetStringFromConfig(aSectName,KFldSyncMode ,str))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter , &KFldSyncMode);
+	  SetBlockResult (EFail); 		
+	  }
+   if (str  ==  KESyncNone )
+	  syncmode = MAnimGeneralFunctions::ESyncNone ;
+   else if ( str ==  KESyncFlash)
+	  syncmode = MAnimGeneralFunctions::ESyncFlash ;
+   else if ( str == KESyncSecond)
+	  syncmode = MAnimGeneralFunctions::ESyncSecond ;
+   else if ( str == KESyncMinute)
+	  syncmode = MAnimGeneralFunctions::ESyncMinute ;
+   else if ( str == KESyncDay)
+	  syncmode = MAnimGeneralFunctions::ESyncDay ;
+   iIpcArgs.Set(0,TIpcArgs::ENothing);
+   TPckgBuf<MAnimGeneralFunctions::TAnimSync> sendPckg(syncmode);
+   iIpcArgs.Set(1, &sendPckg);
+	   
+   INFO_PRINTF1(KLogInfoCmdCommandReply3) ;
+   //Send the command to notify the server .
+   TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+										 
+   //Check the result is 0(Success) or not.
+   if (result != KErrNone )  
+	  {
+	  ERR_PRINTF2(KLogErrCommandReply, result);
+	  SetBlockResult (EFail); 
+	  }			
+   else 
+	  {
+	  INFO_PRINTF1(_L("SetSync return is okay "));
+	  }						 			
+   }
+ 
+ void CT_DataAnimForMClass::DoCmdGeneralSync(const TDesC& aSectName , const TInt& datOpcode )
+   {
+   TInt  expectedsyncmode ;
+   TPtrC	str;
+   // Get the expected syncmode  from ini file. 
+   if ( !GetStringFromConfig(aSectName,KFldExpected ,str))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter , &KFldExpected);
+	  SetBlockResult(EFail);		
+	  } 
+   if (str  ==  KESyncNone )
+	  expectedsyncmode = MAnimGeneralFunctions::ESyncNone ;
+   else if ( str ==  KESyncFlash)
+	  expectedsyncmode = MAnimGeneralFunctions::ESyncFlash ;
+   else if ( str == KESyncSecond)
+	  expectedsyncmode = MAnimGeneralFunctions::ESyncSecond ;
+   else if ( str == KESyncMinute)
+	  expectedsyncmode = MAnimGeneralFunctions::ESyncMinute ;
+   else if ( str == KESyncDay)
+	  expectedsyncmode = MAnimGeneralFunctions::ESyncDay ;
+	  
+   iIpcArgs.Set( 0, TIpcArgs::ENothing);
+   INFO_PRINTF1(KLogInfoCmdCommandReply3) ;
+   //Send the command to notify the server .
+   TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+										 
+   //Check the command return code  . 
+   if ( result != expectedsyncmode )
+	   {
+	   ERR_PRINTF2( KLogErrCommandReply, result);	
+	   SetBlockResult(EFail); 
+	   }
+   else
+	   {
+	   INFO_PRINTF1(_L("GeneralSync invoked successfully"));	 
+	   }
+   }
+ 
+ void CT_DataAnimForMClass::DoCmdGeneralSetInterval(const TDesC& aSectName ,  const TInt& datOpcode)
+   {
+   // Get the interval from ini file and set it as IpcArg 1. 
+   TInt  interval  ;
+   if ( !GetIntFromConfig(aSectName,KFldInterval ,interval))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter , &KFldInterval);
+	  SetBlockResult(EFail);		
+	  }
+   iIpcArgs.Set(0,TIpcArgs::ENothing);
+   TPckgBuf<TInt> sendPckg(interval) ;
+   iIpcArgs.Set(1, &sendPckg );		  
+   INFO_PRINTF1(KLogInfoCmdCommandReply3) ;
+   //Send the command to notify the server .
+   TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+		  
+   //Check the result is 0(Success) or not.
+   if ( result != KErrNone )
+	  {
+	  ERR_PRINTF2( KLogErrCommandReply, result);	
+	  SetBlockResult(EFail); 
+	  }
+   else
+	  {
+	  INFO_PRINTF1(_L("GeneralSetInterval invoked successfully"));
+	  }
+   }	
+  
+ void CT_DataAnimForMClass::DoCmdGeneralSetNextInterval(const TDesC& aSectName , const TInt& datOpcode)
+   {
+   //Read the interval from ini file
+   TInt  interval;
+   if ( !GetIntFromConfig(aSectName,KFldInterval ,interval))
+   {
+   ERR_PRINTF2(KLogMissingParameter , &KFldInterval);
+   return;
+   } 
+   TPckgBuf<TInt> sendPckg1(interval);
+   
+   TInt  nextinterval  ;
+   _LIT( KNextInterval , "nextinterval"); 
+   //Read the next interval from ini file		
+   if ( !GetIntFromConfig(aSectName,KNextInterval ,nextinterval))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter , &KNextInterval);
+	  SetBlockResult(EFail);
+	  } 
+   TPckgBuf<TInt> sendPckg2(nextinterval) ;
+   iIpcArgs.Set(0,TIpcArgs::ENothing);   
+   iIpcArgs.Set(1, &sendPckg1);
+   iIpcArgs.Set(2, &sendPckg2);
+   INFO_PRINTF1(KLogInfoCmdCommandReply3) ;
+   //Send the command to notify the server.
+   TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+   
+   //Check the result is 0(Success) or not.
+   if ( result != KErrNone )
+	  {
+	  ERR_PRINTF2( KLogErrCommandReply, result);	
+	  SetBlockResult(EFail); 
+	  }
+   else
+	  {
+	  INFO_PRINTF1(_L("GeneralSetNextInterval invoked successfully"));
+	  }
+   }	
+   
+   
+ void CT_DataAnimForMClass::DoCmdGeneralSystemTime(const TDesC& aSectName , const TInt& datOpcode)
+   {
+   MAnimGeneralFunctions::TAnimSync syncmode;
+   TPtrC str;
+   _LIT(KExpected , "expected");
+   _LIT( KSyncMode , "animsync");
+   // Get the syncmode from ini file and set it as IpcArg 1.
+   if ( !GetStringFromConfig(aSectName,KSyncMode ,str))
+	   {
+	   ERR_PRINTF2(KLogMissingParameter , &KSyncMode);
+	   SetBlockResult(EFail);
+	   }
+   if (str == KESyncNone )
+	   syncmode = MAnimGeneralFunctions::ESyncNone;
+   else if ( str == KESyncFlash)
+	   syncmode = MAnimGeneralFunctions::ESyncFlash;
+   else if ( str == KESyncSecond)
+	   syncmode = MAnimGeneralFunctions::ESyncSecond;
+   else if ( str == KESyncMinute)
+	   syncmode = MAnimGeneralFunctions::ESyncMinute;
+   else if ( str == KESyncDay)
+	   syncmode = MAnimGeneralFunctions::ESyncDay;
+   iIpcArgs.Set(0,TIpcArgs::ENothing);
+   TPckgBuf<MAnimGeneralFunctions::TAnimSync> sendPckg(syncmode);
+   iIpcArgs.Set(1, &sendPckg);
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   TInt result = iAnim->CommandReply(datOpcode, iSendBuf , iIpcArgs );
+   TBool expected;
+   if ( !GetBoolFromConfig(aSectName,KExpected ,expected))
+	   {
+	   ERR_PRINTF2(KLogMissingParameter , &KExpected);
+	   return;
+	   }
+   if(result != static_cast<TInt>(expected))
+	   {
+	   ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expected, result);
+	   SetBlockResult (EFail);
+	   }
+   else
+	   {
+	   INFO_PRINTF1(_L("GeneralSystemTime invoked is okay."));
+	   }
+   }	 
+   
+void CT_DataAnimForMClass::DoCmdGeneralRegisterForNotis(const TDesC& aSectName , const TInt& datOpcode)
+   {
+   TInt notifications;
+   TEventCode expectedCode;
+   // Get the notifications value from ini file and set it as IpcArg 1. 
+   if ( !GetIntFromConfig(aSectName,KFldNotifications ,notifications))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter, &KFldNotifications);
+	  SetBlockResult(EFail);
+	  }
+	
+   if(!CT_GraphicsUtil::ReadEventCode(*this, aSectName, KFldExpected, expectedCode))
+	  {
+	  ERR_PRINTF2(KLogMissingParameter , &KFldExpected);
+	  return;
+	  }
+	
+   TPckgBuf<TInt> sendPckg(notifications);
+   TPckgBuf<TEventCode> sendPckg2(expectedCode);
+   iIpcArgs.Set(0, TIpcArgs::ENothing );
+   iIpcArgs.Set(1, &sendPckg );
+   iIpcArgs.Set(2, &sendPckg2);
+	
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   //Send the command to notify the server .
+   TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	
+   //Check the result is 0(Success) or not.
+   if ( result != KErrNone )
+	  {
+	  ERR_PRINTF2( KLogErrCommandReply, result);
+	  SetBlockResult(EFail);
+	  }
+   else
+	  {
+	  INFO_PRINTF1(_L("RegisterForNotis invoked successfully"));
+	  }
+   }	 
+   
+   
+void CT_DataAnimForMClass::DoCmdGeneralMessage(const TDesC& aSectName ,const TInt& datOpcode)
+   {
+   TPtrC	str , expectedStr;
+   TBuf<100>  returnStr;
+   // Get the  sending message  value from ini file and set it as IpcArg 1. 
+   if ( !GetStringFromConfig(aSectName,KFldMessage ,str))
+ 	   {
+ 	   ERR_PRINTF2(KLogMissingParameter , &KFldMessage);
+ 	   SetBlockResult(EFail);	
+ 	   } 
+   // Get the  expected message  value from ini file .     
+   if ( !GetStringFromConfig(aSectName,KFldExpected ,expectedStr))
+ 	   {
+ 	   ERR_PRINTF2(KLogMissingParameter , &KFldExpected);
+ 	   SetBlockResult(EFail);		
+ 	   } 
+   iIpcArgs.Set(0, TIpcArgs::ENothing );
+   iIpcArgs.Set(1, &str);
+   iIpcArgs.Set(2, &returnStr);
+	    
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   //Send the command to notify the server .
+   TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	  
+   if(expectedStr.Compare(returnStr)) 
+	   {
+	   ERR_PRINTF3(_L("The returned value is not as expected, expected: %S, actual: %S"), &expectedStr, &returnStr);
+	   SetBlockResult (EFail);
+	   }
+   else 
+	   {
+	   INFO_PRINTF1(_L("GeneralMessage invoked successfully"));
+	   }
+   ResetIpcArg();
+   }	
+ 	 
+  
+void CT_DataAnimForMClass::DoCmdGeneralDuplicateBitmapL(const TDesC& aSectName , const TInt& datOpcode)
+   {
+   TPtrC str ;
+   TInt bmHandle;
+   CFbsBitmap* bmp;
+   // Get the object name of CFbsBitmap from ini file.
+   if ( !GetStringFromConfig(aSectName,KFldHandleBitmap,str))
+		{
+	 	//giving a non-existed value to take the nagative case.
+	 	bmHandle = 9999; 
+	 	} 
+   else
+		{
+		bmp =  static_cast<CFbsBitmap*>(GetDataObjectL(str));
+		bmHandle = bmp->Handle();	
+		}
+	 		    
+   iIpcArgs.Set(0, TIpcArgs::ENothing );
+   TPckgBuf<TInt> sendPckg(bmHandle);
+   iIpcArgs.Set(1, &sendPckg ); 
+   //Send the command to notify the server 	    
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	 
+   //Print info
+   _LIT(KSuccess,"GeneralDuplicateBitmapL invoked successfully");   
+   INFO_PRINTF1(KSuccess);	
+   ResetIpcArg();
+   }	
+ 	 
+ 	 
+void CT_DataAnimForMClass::DoCmdGeneralDuplicateFontL(const TDesC& aSectName ,  const TInt& datOpcode)
+   {
+   TPtrC str;
+   TInt fntHandle;
+   CFbsFont* fnt;
+   TInt typeId;
+   // Get the object name of CFbsFont from ini file.
+   if ( !GetStringFromConfig(aSectName,KFldHandleFont,str))
+	   {
+	   //giving a non-existed value to take the nagative case.
+	   fntHandle = 9999;
+	   }
+   else
+	   {
+	   fnt = static_cast<CFbsFont*>(GetDataObjectL(str));
+	   typeId = fnt->TypeUid().iUid; //this is the expected value.
+	   fntHandle = fnt->Handle();
+	   }
+   TInt result = 0;
+   TPckgBuf<TInt> sendPckg(fntHandle);
+   TPckgBuf<TInt> getPckg(result);
+
+   iIpcArgs.Set(0, TIpcArgs::ENothing );
+   iIpcArgs.Set(1, &sendPckg);
+   iIpcArgs.Set(2, &getPckg);
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   //Send the command to notify the server .
+   iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+   result = getPckg();
+	
+   //Check the result 
+   if(result == typeId)
+	   {
+	   INFO_PRINTF1(_L("GeneralDuplicateFontL invoked successfully"));
+	   }
+   else
+	   {
+	   ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), typeId, result);
+	   SetError(KErrNoMemory);
+	   }
+   ResetIpcArg();
+   }		 
+  
+  
+void CT_DataAnimForMClass::DoCmdGeneralCloseFontL(const TDesC& aSectName , const TInt& datOpcode)
+   {
+   TPtrC str ;
+   // Get the object name of CFbsFont from ini file.
+   if ( !GetStringFromConfig(aSectName,KFldHandleFont,str))
+	   {
+	   ERR_PRINTF2(KLogMissingParameter , &KFldHandleFont);
+	   SetBlockResult(EFail);		
+	   } 
+   CFbsFont* fnt =  static_cast<CFbsFont*>(GetDataObjectL(str));
+   TInt typeId = fnt->TypeUid().iUid; //this is the expected value .
+   TInt fntHandle = fnt->Handle();
+   TInt result = 0;
+   TPckgBuf<TInt> sendPckg(fntHandle); 
+   TPckgBuf<TInt> getPckg(result);
+		  
+   iIpcArgs.Set(0, TIpcArgs::ENothing );
+   iIpcArgs.Set(1, &sendPckg ); 
+   iIpcArgs.Set(2, &getPckg);
+   INFO_PRINTF1(KLogInfoCmdCommandReply3);
+   iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+   result = getPckg();
+   if(result == typeId)
+	   {
+	   _LIT(KSuccess,"GeneralDuplicateFontL invoked successfully");   
+	   INFO_PRINTF1(KSuccess);
+	   }
+   else
+	   {
+	   ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), typeId, result);
+	   SetBlockResult (EFail);
+	   }
+   ResetIpcArg();
+   } 
+
+void CT_DataAnimForMClass::DoCmdGeneralReplyBuf8(const TDesC& aSectName, const TInt& datOpcode)
+   {
+   TPtrC str2;
+
+	 if ( !GetStringFromConfig(aSectName,KFldSetReplyBufHandle1,str2))
+	 	 {
+	 	 ERR_PRINTF2(KLogMissingParameter , &KFldSetReplyBufHandle1);
+	 	 SetBlockResult(EFail);		
+	 	 } 
+	 TBuf8<100> slot2;
+	 slot2.Append(str2);
+	 
+	 TPtrC str3;
+
+	 if ( !GetStringFromConfig(aSectName,KFldSetReplyBufHandle2,str3))
+	 	 {
+	 	 ERR_PRINTF2(KLogMissingParameter , &KFldSetReplyBufHandle2);
+	     return ;				
+	 	 } 
+	 TBuf8<100> slot3;
+	 slot3.Append(str3);
+	 
+	 TBuf8<100> result;
+	 	  
+	 iIpcArgs.Set(0, TIpcArgs::ENothing );
+	 iIpcArgs.Set(1, &result); 
+	 iIpcArgs.Set(2, &slot2);
+	 iIpcArgs.Set(3, &slot3);
+	 INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	 iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	 
+	 if(!result.Compare(slot3) && result.Compare(slot2))
+		 {
+		 _LIT(KSuccess,"GeneralDuplicateFontL invoked successfully");   
+		 INFO_PRINTF1(KSuccess);
+		 }
+	 else
+		 {
+		 ERR_PRINTF2(_L("The returned value is not as expected, result: %S"), &result);
+		 SetBlockResult (EFail);
+		 }
+	 ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoCmdGeneralReplyBuf16(const TDesC& aSectName, const TInt& datOpcode)
+	{
+	TPtrC str2;
+
+	if ( !GetStringFromConfig(aSectName,KFldSetReplyBufHandle1,str2))
+		 {
+	 	 ERR_PRINTF2(KLogMissingParameter , &KFldSetReplyBufHandle1);
+	 	 SetBlockResult(EFail);			
+	 	 } 
+	TBuf16<100> slot2(str2);
+	 
+	TPtrC str3;
+
+	if ( !GetStringFromConfig(aSectName,KFldSetReplyBufHandle2,str3))
+		 {
+	 	 ERR_PRINTF2(KLogMissingParameter , &KFldSetReplyBufHandle2);
+	     return ;				
+	 	 } 
+	TBuf16<100> slot3(str3);
+	 
+	TBuf16<100> result;
+	 	  
+	iIpcArgs.Set(0, TIpcArgs::ENothing );
+	iIpcArgs.Set(1, &result); 
+	iIpcArgs.Set(2, &slot2);
+	iIpcArgs.Set(3, &slot3);
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	 
+	if(!result.Compare(slot3) && result.Compare(slot2))
+		{
+		_LIT(KSuccess,"GeneralDuplicateFontL invoked successfully");   
+		INFO_PRINTF1(KSuccess);
+		}
+	else
+		{
+		ERR_PRINTF2(_L("The returned value is not as expected, result: %S"), &result);
+		SetBlockResult (EFail);
+		}
+	ResetIpcArg();
+	}
+//-------------------------------------------------The MAnimSpriteFunctions ----------------------------------------
+void CT_DataAnimForMClass::DoCmdSpriteGetSpriteMember(const TDesC& aSectName , const TInt& datOpcode)
+	{
+	TInt memberindex ;
+    // Get the sprite member index from ini file and set it as IpcArg 1 .
+	if ( !GetIntFromConfig(aSectName,KFldMemberIndex ,memberindex))
+		{
+		ERR_PRINTF2(KLogMissingParameter , &KFldMemberIndex);
+		SetBlockResult(EFail);	
+		} 
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	TPckgBuf<TInt> pckg(memberindex);
+	TPckgBuf<TPoint> returnPckg;
+	iIpcArgs.Set(1,&pckg);
+	iIpcArgs.Set(2,&returnPckg);
+	
+	// Send the command to notify the server .
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+		  
+    TPoint result=returnPckg();
+	// Verify the result and the expected .
+    TPtrC		spritename;
+    TPoint  expectedPoint;
+    // Get the expected point value from ini file.
+    if ( !GetPointFromConfig(aSectName, KFldExpectedPoint, expectedPoint))
+		{
+		ERR_PRINTF2(KLogMissingParameter, &KFldExpectedPoint);
+		return;
+		}
+    
+	if ( result !=  expectedPoint)
+	    { 	   
+        ERR_PRINTF3(_L("The returned value is not as expected, expected.x: %d, expect.y: %d"), expectedPoint.iX , expectedPoint.iY);        
+	    ERR_PRINTF3(_L("The returned value is not as expected, result.x: %d, result.y: %d"), result.iX , result.iY); 
+        SetBlockResult (EFail);
+	    }  
+	else 
+	    { 
+	    INFO_PRINTF1(_L("Get Sprite Member successfully"));
+	    } 
+	ResetIpcArg();
+    } 
+
+void CT_DataAnimForMClass::DoCmdSpriteUpdateMember(const TDesC& aSectName , const TInt& datOpcode)
+	{ 
+    TInt memberindex ;
+	TRect rect ;
+	TBool isfullupdate ;
+    //Get the sprite member index from ini file and set it as IpcArg 1.  
+	if ( ! GetIntFromConfig(aSectName,KFldMemberIndex ,memberindex))
+		 {
+		 ERR_PRINTF2(KLogMissingParameter , &KFldMemberIndex);
+		 SetBlockResult(EFail);		
+		 }
+    //Get the  rect value from ini file and set it as IpcArg 2.  
+	if ( ! GetRectFromConfig(aSectName,KFldRect ,rect))
+		 {
+		 ERR_PRINTF2(KLogMissingParameter , &KFldRect);
+		 SetBlockResult(EFail);			
+		 }
+    //Get the  isfullupdate flag from ini file and set it as IpcArg 3.  
+	if ( ! GetBoolFromConfig(aSectName,KFldIsFullUpdate ,isfullupdate))
+		 {
+		 ERR_PRINTF2(KLogMissingParameter , &KFldIsFullUpdate);
+		 SetBlockResult(EFail);		
+		 }
+	
+	TPckgBuf<TInt> memberPckg(memberindex);
+	TPckgBuf<TRect> rectPckg(rect);
+	TPckgBuf<TBool> updatePckg(isfullupdate);
+	
+	
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &memberPckg);
+	iIpcArgs.Set(2, &rectPckg);
+	iIpcArgs.Set(3, &updatePckg);
+		    
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    //Send the command to notify the server .
+	TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+		  
+	//Check the result is 0(Success) or not.
+	if (result != KErrNone )  
+		{
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("UpdateSpriteMember return is okay "));
+		}
+	}
+   
+
+void CT_DataAnimForMClass::DoCmdSpriteActivate(const TDesC& aSectName , const TInt& datOpcode)
+	{
+	TBool isactive;
+	// Get the isactive flag from ini file and set as IpcArg 1. 
+	if ( !GetBoolFromConfig(aSectName,KFldIsActivate ,isactive))
+		{
+		ERR_PRINTF2(KLogMissingParameter , &KFldIsActivate);
+		SetBlockResult(EFail);		
+		}
+	TPckgBuf<TBool> sendPkg(isactive) ;	  
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1,&sendPkg);
+		    
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    //Send the command to notify the server .
+	TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+		  
+	//Check the result is 0(Success) or not.
+	if (result != KErrNone )  
+	    {
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("SpriteActive return is okay "));
+		}
+	}
+   
+void CT_DataAnimForMClass::DoCmdSpriteSpriteCanBeSeen(const TDesC& aSectName , const TInt& datOpcode)
+	{
+	TBool expected;
+	// Get the expected boolean value from the ini file.
+	if ( !GetBoolFromConfig(aSectName, KFldExpected, expected))
+		 {
+		 ERR_PRINTF2(KLogMissingParameter , &KFldExpected);
+		 SetBlockResult(EFail);			
+		 } 
+	TPckgBuf<TBool> resultPkg(EFalse) ;
+		  
+		  
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1,&resultPkg);
+		    
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	//Send the command to notify the server .
+	iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+		  
+	//Verify the result and the expected 
+	TBool result = resultPkg() ; 
+		  
+	if ( result != expected )
+	  {
+	  ERR_PRINTF3(_L("The returned value is not as expected, expected: %d, actual: %d"), expected, (TInt)result);
+      SetBlockResult (EFail);
+	  }
+	else 
+	  {
+	  INFO_PRINTF1(_L("SpriteCanBeSeen return is okay "));
+	  }
+	ResetIpcArg();
+	}
+
+void CT_DataAnimForMClass::DoCmdSpriteSizeChangedL(const TDesC& /*aSectName*/ ,  const TInt& datOpcode)
+	{
+	//Send the command to notify the server .
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+		  
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+	TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+	
+	//Check the result is 0(Success) or not.
+	if (result != KErrNone )  
+	    {
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("SpriteSizeChangedL return is okay"));
+		}	
+	}
+   
+void CT_DataAnimForMClass::DoCmdSpriteSetPosition(const TDesC& aSectName ,  const TInt& datOpcode)
+	{
+    // Get the point value from ini file and set as IpcArg 1. 
+	TPoint point ;
+	if ( !GetPointFromConfig(aSectName, KFldPointPosition, point))
+		 {
+		 ERR_PRINTF2(KLogMissingParameter , &KFldPointPosition);
+		 SetBlockResult(EFail);
+		 }
+	TPckgBuf<TPoint> pkg(point) ;
+	iIpcArgs.Set(0, TIpcArgs::ENothing);
+	iIpcArgs.Set(1, &pkg) ;  
+	INFO_PRINTF1(KLogInfoCmdCommandReply3);
+    //Send the command to notify the server .
+	TInt result = iAnim->CommandReply(datOpcode,iSendBuf,iIpcArgs);
+		  
+	//Check the result is 0(Success) or not.
+	if (result != KErrNone )  
+	    {
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("SpriteSetPosition return is okay"));
+		}
+	}      
+
+void CT_DataAnimForMClass::DoCmdEatupMemory(const TInt& datOpcode)
+	{
+	TInt result = iAnim->CommandReply(datOpcode);
+	if (result != KErrNone )  
+		{
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("EatupMemory return is okay"));
+		}
+	}
+
+void CT_DataAnimForMClass::DoCmdFreeEatenMemory(const TInt& datOpcode)
+	{
+	TInt result = iAnim->CommandReply(datOpcode);
+	if (result != KErrNone )  
+		{
+		ERR_PRINTF2(KLogErrCommandReply, result);
+		SetBlockResult (EFail); 
+		}			
+	else 
+		{
+		INFO_PRINTF1(_L("FreeEatenMemory return is okay"));
+		}
+	}
+