serviceapifw_plat/liw_criteria_api/tsrc/src/liwtestcasesasync.cpp
changeset 0 99ef825efeca
child 27 bcef26ca2be3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceapifw_plat/liw_criteria_api/tsrc/src/liwtestcasesasync.cpp	Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,649 @@
+/*
+* Copyright (c) 2002-2006 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 "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 FILES
+#include  <aknviewappui.h>
+#include  <liwservicehandler.h>
+#include  "liw_async_testcase.h"
+//#include  "liwtestapp.hrh"
+//#include  <liwtestapp.rsg>
+
+TInt success;
+
+using namespace LIW;
+
+//_LIT8(KAsyncService,"S60.MultiMetaData");
+//_LIT8(KSyncService,"S60.SyncServices");
+//_LIT8(KInvalidService,"S60.InvalidService");
+//_LIT8(KSecurityService,"S60.SecurityServices");
+//_LIT8(KInvalidSecurityService,"S60.InvalidSecurityServices");
+
+_LIT8(KAsyncSrv,"Test.AsyncServices");
+_LIT8(KAsyncContent,"Test/Data");
+
+//_LIT8(KTestPARAMNanmeTC2,"TestResult");
+//_LIT8(KSecurityParameter,"SecurityParam");
+
+//_LIT8(KResult_Pass, "Test Provider replied with <tt>EGenericParamError = KErrorNone</tt>");
+//_LIT8(KResult_Fail,"Test Provider replied with Error : <tt>KErrNotFound</tt>");
+
+//_LIT8(KAsyn_TestCmt, "These Test cases are designed to test LIW support for Asynchronous Invocation.\
+                          <br><br><b>Test:-<b></br>\
+                          <li>Attaching and Detaching service providers through string based service command</li>\
+                          <li>Execute the service with callback</li>\
+                          <li>After checking the event state, next Test Case is invoked</li>\
+                          <br><b>Check - </b></br> \
+                          Appropriate State of the event in the HandleNotify Method");
+       
+TInt IncomingEventCmdID=1000;
+TInt XmlDataReaderCmdID=2000;
+
+const TInt32 LIWASYNC001=100;
+//const TInt32 LIWASYNC002=200;
+const TInt32 LIWASYNC003=300;
+const TInt32 LIWASYNC004=400;
+//const TInt32 LIWASYNC005=500;
+//const TInt32 LIWASYNC006=600;
+
+const TInt32 KAsyncMaxCount=10;
+
+const TUid KViewId4 = {4};
+
+// ---------------------------------------------------------
+// TUid CLiwtcbase::Id()
+// ?implementation_description
+// ---------------------------------------------------------
+//
+TUid CLiw_AsyncTC::Id() const
+    {
+    return KViewId4;
+    }
+
+//Async event states. New state could be added
+enum TAsyncState
+{
+	eAsyncStarted=0,
+	eAsyncStopped
+};
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CLiw_AsyncTC::CLiw_AsyncTC
+// Description: CLiw_AsyncTC constructer
+// -----------------------------------------------------------------------------
+//
+CLiw_AsyncTC::CLiw_AsyncTC( CLiwServiceHandler *aServiceHandler, TRequestType aRequest, TInt aPriority): CActive(aPriority)
+    {
+    iCount = 0;
+    iResult = 1;
+    iIncrementCount = 1; 
+    iRequest = aRequest;
+    iServiceHandler = aServiceHandler;
+    iAsyncCount = 0;
+    tcNo = -1;
+    CActiveScheduler::Add( this );
+    }
+
+TInt CLiw_AsyncTC::AsyncCase(TInt aTcNo)
+{
+    tcNo = aTcNo;
+    //setactive, user::requestcomplete
+        
+     SetActive();
+    
+     iStatus=KRequestPending;
+     TRequestStatus* temp=&iStatus;
+     User::RequestComplete(temp,KErrNone);
+     
+     //wait
+     CActiveScheduler::Start();
+     
+     return iResult;
+}
+
+//
+//-----------------------------------------------------------------------------
+// CLiw_AsyncTC::RequestFunction
+// Description: Request Function for CLiw_AsyncTC
+// ----------------------------------------------------------------------------
+//
+void CLiw_AsyncTC::RequestFunction( TRequestType aRequest )
+{
+ iRequest = aRequest;
+ iStatus = KRequestPending;
+ if( !IsActive() )
+    SetActive();
+}
+
+//
+//-----------------------------------------------------------------------------
+// CLiw_AsyncTC::ReadyToGo
+// Description: This calls CLiw_AsyncTC's RunL
+//-----------------------------------------------------------------------------
+//
+void CLiw_AsyncTC::ReadyToGo()
+{
+ TRequestStatus* status = &iStatus;
+ User::RequestComplete( status, KErrNone );
+}
+
+
+//
+//-----------------------------------------------------------------------------
+// CLiw_AsyncTC::DoCancel
+// Description: This calls CActive's Cancel
+//-----------------------------------------------------------------------------
+//
+void CLiw_AsyncTC::DoCancel()
+{
+}
+
+//
+//-----------------------------------------------------------------------------
+// CLiw_AsyncTC::SetIncrementCounter
+// Description: Sets Increment Counter of CLiw_AsyncTC
+//-----------------------------------------------------------------------------
+//
+void CLiw_AsyncTC::SetIncrementCounter( TInt aCount)
+{
+iIncrementCount = aCount;
+}
+
+//
+//-----------------------------------------------------------------------------
+// CLiw_AsyncTC::CountValue
+// Description: Returns Count Value of CLiw_AsyncTC
+//-----------------------------------------------------------------------------
+//
+TUint CLiw_AsyncTC::CountValue () const
+{
+return iCount;
+}
+
+// ---------------------------------------------------------
+// CLiw_AsyncTC::ConstructL(const TRect& aRect)
+// EPOC two-phased constructor
+// ---------------------------------------------------------
+//
+/*void CLiw_AsyncTC::ConstructL(CLiwTestLogHandler& aLogger, CLiwTestAppContainer& aContainer)
+    {
+     iLogger = &aLogger;
+    iContainer = &aContainer;
+    
+    // Create service handler instance.   
+    CLiwServiceHandler* serviceHandler = CLiwServiceHandler::NewLC(); 
+    iServiceHandler = serviceHandler;    
+    CleanupStack::Pop(serviceHandler);
+    }
+*/
+
+// ---------------------------------------------------------
+// CLiw_AsyncTC::~CLiw_AsyncTC()
+// ?implementation_description
+// ---------------------------------------------------------
+//
+CLiw_AsyncTC::~CLiw_AsyncTC()
+    {
+    delete iServiceHandler;
+    iServiceHandler = NULL;
+    
+    Cancel();
+    }
+
+void CLiw_AsyncTC::RunL()
+    {
+        switch(tcNo)
+        {
+        case 1:
+            LIW_ASYNC_001();
+            break;
+        case 2:
+            LIW_ASYNC_002();
+            break;
+        case 3:
+            LIW_ASYNC_003();
+            break;
+        case 4:
+            LIW_ASYNC_004();
+            break;
+        default:
+            break;
+        }
+    }
+
+
+// ---------------------------------------------------------
+// CLiw_AsyncTC::HandleCommandL
+// From MLiwNotifyCallback
+// ---------------------------------------------------------
+//   
+TInt CLiw_AsyncTC::HandleNotifyL(
+    TInt aCmdId,
+    TInt aEventId,
+    CLiwGenericParamList& /*aEventParamList*/,
+    const CLiwGenericParamList& /*aInParamList*/)
+    {
+    
+    if(LIWASYNC001==aCmdId)
+    {
+    	if( (KLiwEventCompleted==aEventId) || 
+    		(KLiwEventCanceled==aEventId) || 
+    		(KLiwEventStopped==aEventId) ||
+    		(KLiwEventError==aEventId) )
+    	{
+	    	//_LIT8(testCmt,"<b>LIW_ASYNC_001:</b> <br> Create a CLiwCriteriaItem with string command \
+	    	    The provider with the same command must be attached with LIW FW.\
+	            and call <tt>ExecuteServiceCmdL</tt>.</br>\
+	            <br><b>Test -</b></br> <li>Attaching provider Programmatically</li> <li>string based serviceName</li>\
+	            <br><b>Check - </b></br> Provider returns asynchronously : <tt>LiwEventCompleted</tt>");
+	
+			if(KLiwEventCompleted==aEventId)
+			{
+			    iResult = 0;
+	            //iLogger->AddTestItem(testCmt,KResult_Pass,ETrue, EFalse);
+			    //Venkat : return true as testcase passed
+	        }
+			else
+            {
+                iResult = 1;
+                //iLogger->AddTestItem(testCmt,KResult_Fail,ETrue, EFalse);
+                //Venkat : Test fails
+    		}
+
+            CActiveScheduler::Stop();
+			//LIW_ASYNC_002();
+    	}
+    }
+    else if(LIWASYNC003==aCmdId)
+    {
+    	//if the counter reaches 
+    	//event notification should be cancelled
+    	++iAsyncCount;
+    	
+    	if( (KLiwEventCompleted==aEventId) || 
+    		(KLiwEventCanceled==aEventId) || 
+    		(KLiwEventStopped==aEventId) ||
+    		(KLiwEventError==aEventId) )
+    	{
+    		//_LIT8(testCmt,"<b>LIW_ASYNC_003:</b> <br> Create a CLiwCriteriaItem with string command \
+                The provider with the same command must be attached with LIW FW.\
+                and call <tt>ExecuteServiceCmdL</tt>.</br>\
+                <br><b>Test -</b></br> <li>Attaching provider Programmatically</li> <li>string based serviceName</li>\
+                <br><b>Check - </b></br> Provider returns asynchronously : <tt>LiwEventStopped</tt>");
+  
+    		if(KLiwEventStopped==aEventId)
+    		{
+    		    iResult = 0;
+                //iLogger->AddTestItem(testCmt,KResult_Pass,ETrue, EFalse);
+            }
+            else
+            {
+                iResult = 1;
+                //iLogger->AddTestItem(testCmt,KResult_Fail,EFalse, EFalse);
+    		}
+    			
+    		//LIW_ASYNC_003((TInt32)eAsyncStopped);
+    		iAsyncCount=0;    		
+    		iTransID=0;
+    		
+    		return KErrNone;
+    	}
+    	    	
+    	if(iAsyncCount >= KAsyncMaxCount)
+    	{
+    		LIW_ASYNC_003((TInt32)eAsyncStopped);
+    		iAsyncCount=0;
+    		iTransID=0;
+    		//LIW_ASYNC_004();
+
+            CActiveScheduler::Stop();
+    	}
+    }
+    else if(LIWASYNC004==aCmdId)
+    {
+    	if( (KLiwEventCanceled==aEventId) || 
+    		(KLiwEventStopped==aEventId) ||
+    		(KLiwEventError==aEventId) )
+    	{
+	    	//_LIT8(testCmt,"<b>LIW_ASYNC_004:</b> <br> Create a CLiwCriteriaItem with string command \
+	            The provider with the same command must be attached with LIW FW.\
+	            and call <tt>ExecuteServiceCmdL</tt>.</br>\
+	            <br><b>Test -</b></br> <li>Attaching provider Programmatically</li> <li>string based serviceName</li>\
+	            <br><b>Check - </b></br> Provider returns asynchronously : <tt>LiwEventError</tt>");
+	    	
+	    	if(KLiwEventError==aEventId)
+			{
+			    iResult = 0;
+				//iLogger->AddTestItem(testCmt,KResult_Pass,ETrue, EFalse);
+			}
+	    	else
+	    	{
+	    	    iResult = 1;
+		        //iLogger->AddTestItem(testCmt,KResult_Fail,EFalse, EFalse);
+	    	}
+
+            CActiveScheduler::Stop();
+    	}
+    }
+    return KErrNone;    
+    }
+
+// ---------------------------------------------------------
+/*LIW Asynchronous service Test Cases are Defined here*/
+// ---------------------------------------------------------
+
+void CLiw_AsyncTC::LIW_ASYNC_004()
+{
+
+	/*Detached all the service provider and reset all the Entries of previous test case*/
+    iServiceHandler->Reset();
+    
+    RCriteriaArray interest;
+    CleanupClosePushL(interest);
+    
+    const TDesC8* cmd = &KAsyncSrv;
+    
+    //Define Criteria Item Dynamically with string based command 
+    CLiwCriteriaItem* criteria1 = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+    criteria1->SetServiceClass(TUid::Uid(KLiwClassBase));
+    interest.AppendL(criteria1);
+   
+    /*Attach the base provider*/
+	iServiceHandler->AttachL(interest);
+	CleanupStack::PopAndDestroy(criteria1);
+    CleanupStack::PopAndDestroy(&interest);
+
+	TLiwGenericParam asyncSrvCmdIDParam;
+	TLiwGenericParam asyncStateParam;
+	TLiwGenericParam asyncTransIDParam;
+	TLiwGenericParam testCaseIDParam;
+
+	_LIT8(KAsyncCmdID, "AsyncCmdID");
+//	_LIT8(KAsyncCmdName, "IncomingEvents");
+	_LIT8(KAsyncEventState, "AsyncEventState");
+	//_LIT8(KAsyncTransID, "TransactionID");
+	_LIT8(KTestCaseID, "TestCaseID");
+	
+	//_LIT8(KLIW_ASYNC_001, "LIW_ASYNC_001");
+	TInt32 testCaseID=LIWASYNC004;
+
+	CLiwGenericParamList* inps = &(iServiceHandler->InParamListL());
+	inps->Reset();
+
+	asyncSrvCmdIDParam.SetNameAndValueL(KAsyncCmdID, TLiwVariant((TInt32)XmlDataReaderCmdID));
+	asyncStateParam.SetNameAndValueL(KAsyncEventState, TLiwVariant((TInt32)eAsyncStarted));
+	testCaseIDParam.SetNameAndValueL(KTestCaseID, TLiwVariant((TInt32)testCaseID));
+		
+	inps->AppendL(asyncSrvCmdIDParam);
+	inps->AppendL(asyncStateParam);	            		  		
+	inps->AppendL(testCaseIDParam);
+	      		
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	CLiwGenericParamList* outps = &(iServiceHandler->OutParamListL());
+
+	iServiceHandler->ExecuteServiceCmdL(*crit, *inps, *outps,KLiwOptASyncronous,this); 
+	
+	asyncSrvCmdIDParam.Reset();
+	asyncStateParam.Reset();
+	asyncTransIDParam.Reset();
+	testCaseIDParam.Reset();
+	CleanupStack::PopAndDestroy(crit); // crit
+}
+
+void CLiw_AsyncTC::LIW_ASYNC_003(TInt aEventState)
+{
+
+	const TDesC8* cmd = &KAsyncSrv;
+
+	if(eAsyncStarted==aEventState)
+	{
+		/*Detached all the service provider and reset all the Entries of previous test case*/
+	    iServiceHandler->Reset();
+	    
+	    RCriteriaArray interest;
+	    CleanupClosePushL(interest);
+	    
+	    
+	    
+	    //Define Criteria Item Dynamically with string based command 
+	    CLiwCriteriaItem* criteria1 = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+	    criteria1->SetServiceClass(TUid::Uid(KLiwClassBase));
+	    interest.AppendL(criteria1);
+	   
+	    /*Attach the base provider*/
+		iServiceHandler->AttachL(interest);
+		CleanupStack::PopAndDestroy(criteria1);
+	    CleanupStack::PopAndDestroy(&interest);
+	}
+	
+
+	TLiwGenericParam asyncSrvCmdIDParam;
+	TLiwGenericParam asyncStateParam;
+	TLiwGenericParam asyncTransIDParam;
+	TLiwGenericParam testCaseIDParam;
+
+	_LIT8(KAsyncCmdID, "AsyncCmdID");
+//	_LIT8(KAsyncCmdName, "IncomingEvents");
+	_LIT8(KAsyncEventState, "AsyncEventState");
+	//_LIT8(KAsyncTransID, "TransactionID");
+	_LIT8(KTestCaseID, "TestCaseID");
+	
+	TInt32 testCaseID=LIWASYNC003;
+
+	CLiwGenericParamList* inps = &(iServiceHandler->InParamListL());
+	inps->Reset();
+
+	asyncSrvCmdIDParam.SetNameAndValueL(KAsyncCmdID, TLiwVariant((TInt32)IncomingEventCmdID));
+	asyncStateParam.SetNameAndValueL(KAsyncEventState, TLiwVariant((TInt32)aEventState));
+	testCaseIDParam.SetNameAndValueL(KTestCaseID, TLiwVariant((TInt32)testCaseID));
+		
+	inps->AppendL(asyncSrvCmdIDParam);
+	inps->AppendL(asyncStateParam);	            		  		
+	inps->AppendL(testCaseIDParam);
+
+	if(eAsyncStopped==aEventState)
+	{
+		TLiwGenericParam asyncTransIDParam;					
+		_LIT8(KAsyncTransID, "TransactionID");
+		asyncTransIDParam.SetNameAndValueL(KAsyncTransID, TLiwVariant((TInt32)iTransID));					
+		inps->AppendL(asyncTransIDParam);
+		asyncTransIDParam.Reset();
+	}
+	      		
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	CLiwGenericParamList* outps = &(iServiceHandler->OutParamListL());
+
+	iServiceHandler->ExecuteServiceCmdL(*crit, *inps, *outps,KLiwOptASyncronous,this); 
+	
+	asyncSrvCmdIDParam.Reset();
+	asyncStateParam.Reset();
+	asyncTransIDParam.Reset();
+	testCaseIDParam.Reset();
+	CleanupStack::PopAndDestroy(crit); // crit
+	
+	if(eAsyncStarted==aEventState)
+	{
+		TInt pos = 0;
+		_LIT8(KAsyncTransID, "TransactionID");
+		outps->FindFirst(pos, KAsyncTransID);
+
+		TLiwGenericParam transIDParam = outps->operator[](pos);
+		iTransID = transIDParam.Value().AsTInt32();
+	}
+
+	//LIW_ASYNC_004();
+}
+
+void CLiw_AsyncTC::LIW_ASYNC_002()
+{
+
+	/*Detached all the service provider and reset all the Entries of previous test case*/
+    iServiceHandler->Reset();
+    
+    RCriteriaArray interest;
+    CleanupClosePushL(interest);
+    
+    const TDesC8* cmd = &KAsyncSrv;
+    
+    //Define Criteria Item Dynamically with string based command 
+    CLiwCriteriaItem* criteria1 = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+    criteria1->SetServiceClass(TUid::Uid(KLiwClassBase));
+    interest.AppendL(criteria1);
+   
+    /*Attach the base provider*/
+	iServiceHandler->AttachL(interest);
+	CleanupStack::PopAndDestroy(criteria1);
+    CleanupStack::PopAndDestroy(&interest);
+
+	TLiwGenericParam asyncSrvCmdIDParam;
+	TLiwGenericParam asyncStateParam;
+	TLiwGenericParam asyncTransIDParam;
+	TLiwGenericParam testCaseIDParam;
+
+	_LIT8(KAsyncCmdID, "AsyncCmdID");
+//	_LIT8(KAsyncCmdName, "IncomingEvents");
+	_LIT8(KAsyncEventState, "AsyncEventState");
+	//_LIT8(KAsyncTransID, "TransactionID");
+	_LIT8(KTestCaseID, "TestCaseID");
+	
+	//_LIT8(KLIW_ASYNC_001, "LIW_ASYNC_001");
+	TInt32 testCaseID=LIWASYNC001;
+
+	CLiwGenericParamList* inps = &(iServiceHandler->InParamListL());
+	inps->Reset();
+
+	asyncSrvCmdIDParam.SetNameAndValueL(KAsyncCmdID, TLiwVariant((TInt32)XmlDataReaderCmdID));
+	asyncStateParam.SetNameAndValueL(KAsyncEventState, TLiwVariant((TInt32)eAsyncStarted));
+	testCaseIDParam.SetNameAndValueL(KTestCaseID, TLiwVariant((TInt32)testCaseID));
+		
+	inps->AppendL(asyncSrvCmdIDParam);
+	inps->AppendL(asyncStateParam);	            		  		
+	inps->AppendL(testCaseIDParam);
+	      		
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewLC(1, *cmd, KAsyncContent);
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	CLiwGenericParamList* outps = &(iServiceHandler->OutParamListL());
+
+	iServiceHandler->ExecuteServiceCmdL(*crit, *inps, *outps,KLiwOptASyncronous); 
+	
+	//Since there is no callback, the control returns here
+	//Checking for the success of this testcase
+	
+	TInt pos=0;
+	
+	outps->FindFirst(pos, EGenericParamError);
+	    
+    if(pos != KErrNotFound)
+    {
+		//_LIT8(testCmt,"<b>LIW_ASYNC_001:</b> <br> Create a CLiwCriteriaItem with string command \
+	    The provider with the same command must be attached with LIW FW.\
+        and call <tt>ExecuteServiceCmdL</tt>.</br>\
+        <br><b>Test -</b></br> <li>Attaching provider Programmatically</li> <li>string based serviceName</li>\
+        <li>No CallBack is mentioned</li><br><b>Check - </b></br>\
+        Provider returns control immediately (Synchronous) <tt>EGenericParamError = KErrCancel</tt>");
+
+		if ((*outps)[pos].Value().AsTInt32() == KErrCancel)
+		{
+		    iResult = 0;
+		    //iLogger->AddTestItem(testCmt,KResult_Pass,ETrue, EFalse);	            
+        }
+		else
+        {
+            iResult = 1;
+            //iLogger->AddTestItem(testCmt,KResult_Fail,ETrue, EFalse);
+		}	
+	}	
+	asyncSrvCmdIDParam.Reset();
+	asyncStateParam.Reset();
+	asyncTransIDParam.Reset();
+	testCaseIDParam.Reset();
+	CleanupStack::PopAndDestroy(crit); // crit
+	
+	CActiveScheduler::Stop();
+	//LIW_ASYNC_003();
+}
+
+
+void CLiw_AsyncTC::LIW_ASYNC_001()
+{
+    /*Detached all the service provider and reset all the Entries of previous test case*/
+    iServiceHandler->Reset();
+    
+    RCriteriaArray interest;
+    CleanupClosePushL(interest);
+    
+    //Define Criteria Item Dynamically with string based command 
+    CLiwCriteriaItem* criteria1 = CLiwCriteriaItem::NewLC(1, KAsyncSrv, KAsyncContent);
+    criteria1->SetServiceClass(TUid::Uid(KLiwClassBase));
+    interest.AppendL(criteria1);
+    
+    /*Attach the base provider*/
+    TInt status = iServiceHandler->AttachL(interest);
+    CleanupStack::PopAndDestroy(criteria1);
+    CleanupStack::PopAndDestroy(&interest);
+    
+    TLiwGenericParam asyncSrvCmdIDParam;
+    TLiwGenericParam asyncStateParam;
+    TLiwGenericParam asyncTransIDParam;
+    TLiwGenericParam testCaseIDParam;
+    
+    _LIT8(KAsyncCmdID, "AsyncCmdID");
+    //_LIT8(KAsyncCmdName, "IncomingEvents");
+    _LIT8(KAsyncEventState, "AsyncEventState");
+    //_LIT8(KAsyncTransID, "TransactionID");
+    _LIT8(KTestCaseID, "TestCaseID");
+    
+    //_LIT8(KLIW_ASYNC_001, "LIW_ASYNC_001");
+    TInt32 testCaseID=LIWASYNC001;
+    
+    CLiwGenericParamList* inps = &(iServiceHandler->InParamListL());
+    inps->Reset();
+    
+    asyncSrvCmdIDParam.SetNameAndValueL(KAsyncCmdID, TLiwVariant((TInt32)XmlDataReaderCmdID));
+    asyncStateParam.SetNameAndValueL(KAsyncEventState, TLiwVariant((TInt32)eAsyncStarted));
+    testCaseIDParam.SetNameAndValueL(KTestCaseID, TLiwVariant((TInt32)testCaseID));
+        
+    inps->AppendL(asyncSrvCmdIDParam);
+    inps->AppendL(asyncStateParam);                             
+    inps->AppendL(testCaseIDParam);
+                
+    CLiwCriteriaItem* crit = CLiwCriteriaItem::NewLC(1, KAsyncSrv, KAsyncContent);
+    crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+    
+    CLiwGenericParamList* outps = &(iServiceHandler->OutParamListL());
+    
+    iServiceHandler->ExecuteServiceCmdL(*crit, *inps, *outps,KLiwOptASyncronous,this); 
+    
+    asyncSrvCmdIDParam.Reset();
+    asyncStateParam.Reset();
+    asyncTransIDParam.Reset();
+    testCaseIDParam.Reset();
+    
+    CleanupStack::PopAndDestroy(crit); // crit
+}