common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp1.cpp
changeset 748 e13acd883fbe
child 872 17498133d9ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/lbs/lbsclient/src/ctlbsclientpostp1.cpp	Tue Nov 10 13:50:58 2009 +0000
@@ -0,0 +1,265 @@
+// Copyright (c) 2001-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:
+//
+
+
+
+//  INCLUDES
+#include "ctlbsclientpostp1.h"
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+#include <LbsSatellite.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp1::CT_LbsClientPosTp1(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+	{  
+	_LIT(KTestName, "TP1 - Request location from default PSY");
+	SetTestStepName(KTestName); 
+	}
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsClientPosTp1::~CT_LbsClientPosTp1()
+	{
+	}
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::CloseTest
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::CloseTest()
+    {
+    ClosePositioner();
+    Disconnect();
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::StartL()
+    {
+    ConnectL();
+    
+    CPosModules* db = CPosModules::OpenL();
+    CleanupStack::PushL(db); 
+
+    SetupPsyL(iUidMultiPsy);
+
+    _LIT(KSetupPSY, "TP1: Has Setup Multi PSY");
+    INFO_PRINTF1(KSetupPSY);
+    
+    //setting priority
+	TPositionModuleInfo moduleInfoHp;//Hp - high prio;
+	TPositionModuleInfo moduleInfoLp;//Lp - low prio;
+
+    CPosModuleIdList* prioList = db->ModuleIdListLC();	
+    db->GetModuleInfoL(prioList->At(0), moduleInfoHp);
+
+    CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC();
+    moduleUpdate->SetUpdateAvailability(ETrue);
+
+    if (iUidMultiPsy.iUid == moduleInfoHp.ModuleId().iUid)
+		{
+		// Case when Multi PSY has highest prio: 
+		// Ensuring it is enabled
+	    _LIT(KMultiHighest, "TP1: Case when Multi PSY has highest prio");
+	    INFO_PRINTF1(KMultiHighest);	    
+		db->UpdateModuleL((*prioList)[0], *moduleUpdate);
+		}
+	else
+		{
+		// Case when Multi PSY has not highest prio: 
+		// 
+	    _LIT(KMultiNotHighest, "TP1: Case when Multi PSY has NOT highest prio");	    
+	    INFO_PRINTF1(KMultiNotHighest);	    
+        db->GetModuleInfoL(iUidMultiPsy, moduleInfoLp);
+		// Ensuring it is enabled
+		db->UpdateModuleL(iUidMultiPsy, *moduleUpdate);
+
+		TUint hp = db->PriorityL(moduleInfoHp.ModuleId());
+		TUint lp = db->PriorityL(moduleInfoLp.ModuleId());
+
+		// Changing prio of highest prio PSY and Multi PSY.
+		// Setting Multi PSY to highest prio
+		db->SetModulePriorityL(iUidMultiPsy, hp);
+        db->SetModulePriorityL((*prioList)[0], lp); 
+		}
+
+	_LIT(KTestPSY1On, "TP1: Enabling Test PSY 1");
+    INFO_PRINTF1(KTestPSY1On);	    
+	db -> UpdateModuleL(iUidTestPsy1, *moduleUpdate);
+	_LIT(KTestPSY2On, "TP1: Enabling Test PSY 2");
+    INFO_PRINTF1(KTestPSY2On);
+	db -> UpdateModuleL(iUidTestPsy2, *moduleUpdate);
+    
+	CleanupStack::PopAndDestroy(moduleUpdate);
+	CleanupStack::PopAndDestroy(2, db); // db, prioList
+
+    User::LeaveIfError(OpenPositioner());
+
+    // Request data from default psy should be Multi psy
+    _LIT(KService, "service");
+    TPositionInfo posInfo = TPositionInfo();
+    TInt err = PerformSyncRequest(KService, &posInfo);
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "The request was not completed with KErrNone");
+        LogErrorAndLeaveL(KErrorRequest, err);
+        }
+	
+    if (iUidMultiPsy.iUid != posInfo.ModuleId().iUid)
+		{
+		_LIT(KIncorrectPsyError, "TP1. Position from wrong PSY received");
+		LogErrorAndLeaveL(KIncorrectPsyError);
+		}
+
+	HPositionGenericInfo* genericInfo = HPositionGenericInfo::NewLC();
+	err = PerformSyncRequest(KService, &(*genericInfo));
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "The request was not completed with KErrNone");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+
+	 if (iUidMultiPsy.iUid != (genericInfo -> ModuleId()).iUid)
+		{
+		_LIT(KIncorrectPsyError,
+           "TP1. Position from wrong PSY received");
+		LogErrorAndLeaveL(KIncorrectPsyError);
+		}
+
+	TPositionCourseInfo courseInfo = TPositionCourseInfo();
+	err = PerformSyncRequest(KService, &courseInfo);
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "Course info supported by default, but request failed");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+
+	TPositionSatelliteInfo satelliteInfo = TPositionSatelliteInfo();
+	err = PerformSyncRequest(KService, &satelliteInfo);
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "Satellite info supported by default, but request failed");
+        LogErrorAndLeaveL(KErrorRequest);
+        }	
+
+    //Changing the priority and verifiy that it still possilbe
+    //to request updated from a psy if basic position information
+    //is used and that it is not possilbe to request sat or cource
+    //any more.
+    SetupPsyL(iUidTestPsy2);
+    User::After(3000000);
+
+    // Request data from default psy should be test psy 2 now
+    err = PerformSyncRequest(KService, &posInfo);
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "The request was not completed with KErrNone");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+	
+    if (iUidTestPsy2.iUid != posInfo.ModuleId().iUid)
+		{
+		_LIT(KIncorrectPsyError,
+           "TP1. Position from wrong PSY received");
+		LogErrorAndLeaveL(KIncorrectPsyError);
+		}
+
+	err = PerformSyncRequest(KService, &(*genericInfo));
+    if (err != KErrNone)
+        {
+        _LIT(KErrorRequest, "The request was not completed with KErrNone");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+
+	 if (iUidTestPsy2.iUid != (genericInfo -> ModuleId()).iUid)
+		{
+		_LIT(KIncorrectPsyError,
+           "TP1. Position from wrong PSY received");
+		LogErrorAndLeaveL(KIncorrectPsyError);
+        }
+
+    err = PerformSyncRequest(KService, &courseInfo);
+    if (err != KErrArgument)
+        {
+        _LIT(KErrorRequest, "Course info not supported by default, KErrArgument not returned");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+
+
+	err = PerformSyncRequest(KService, &satelliteInfo);
+    if (err != KErrArgument)
+        {
+        _LIT(KErrorRequest, "Satellite info not supported by default, KErrArgument not returned");
+        LogErrorAndLeaveL(KErrorRequest);
+        }
+
+    //check that it is possilbe to change the different
+    //type of class info during periodic request and
+    //that the periodic update will fail if the class
+    //type is incorrect.
+    TTimeIntervalMicroSeconds interval = TTimeIntervalMicroSeconds(1000000);
+    TPositionUpdateOptions posOption;
+	posOption.SetUpdateInterval(interval);
+	_LIT(KUpdateErr, "Error when setting update interval,  %d");
+	err = iPositioner.SetUpdateOptions(posOption);
+    AssertTrueL(err == KErrNone, KUpdateErr, err);
+
+    _LIT(KErrPeriodic, "The periodic request did not return KErrNone, %d");
+    err = PerformSyncRequest(KService, &posInfo);
+    AssertTrueL(err == KErrNone , KErrPeriodic, err);
+    
+    _LIT(KErrPeriodicArr, "The periodic request did not return KErrArgument, %d");
+    err = PerformSyncRequest(KService, &satelliteInfo);
+    AssertTrueL(err == KErrArgument , KErrPeriodicArr, err);
+    SetupPsyL(iUidMultiPsy);
+    User::After(3000000);
+    err = PerformSyncRequest(KService, &satelliteInfo);
+    AssertTrueL(err == KErrNone , KErrPeriodic, err);
+
+    CleanupStack::PopAndDestroy(genericInfo);
+    ClosePositioner();
+    Disconnect();
+    }
+
+// ---------------------------------------------------------
+// CT_LbsClientPosTp1::AssertTrueSecL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsClientPosTp1::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode)
+    {
+  	if (!aCondition)
+		{
+		TBuf<100> buf;
+		buf.Format(aErrorMsg, aErrorCode);
+		LogErrorAndLeaveL(buf);
+		}
+    }
+