--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lbstest/lbstestproduct/lbssimulationpsy/src/ctlbssimulationpsypostp254.cpp Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,390 @@
+// 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 "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:
+//
+
+
+
+// INCLUDES
+#include "ctlbssimulationpsypostp254.h"
+#include "ctlbssimulationpsypostp242constants.h"
+
+// CONSTANTS
+_LIT(KServiceName, "TP254");
+
+#ifdef __WINS__
+ _LIT(KNmeaFile, "z:\\system\\test\\testdata\\tp242.nme"); // Full fix
+ _LIT(KPartialNmeaFile, "z:\\system\\test\\testdata\\TP254Partial.nme"); // Missing longitude
+ _LIT(KPartialNmeaFile2, "z:\\system\\test\\testdata\\TP254Partial2.nme"); // Missing latitude
+ _LIT(KPartialNmeaFile3, "z:\\system\\test\\testdata\\TP254Partial3.nme"); // Full fix
+ _LIT(KPartialNmeaFile4, "z:\\system\\test\\testdata\\TP254Partial4.nme"); // Missing longitude and latitude
+ _LIT(KPartialNmeaFile5, "z:\\system\\test\\testdata\\TP254Partial5.nme"); // Missing longitude, latitude
+ // Contains 8 locations fixes:
+ // 1-full, 2-partial, 3-full, 4-partial, 5-partial(missing GGA), 6-full, 7-partial(missing GGA), 8-full
+ _LIT(KPartialNmeaFile6, "z:\\system\\test\\testdata\\TP254Partial6.nme");
+
+#else
+ _LIT(KNmeaFile, "c:\\system\\test\\testdata\\tp242.nme");
+ _LIT(KPartialNmeaFile, "c:\\system\\test\\testdata\\TP254Partial.nme");
+ _LIT(KPartialNmeaFile2, "c:\\system\\test\\testdata\\TP254Partial2.nme");
+ _LIT(KPartialNmeaFile3, "c:\\system\\test\\testdata\\TP254Partial3.nme");
+ _LIT(KPartialNmeaFile4, "c:\\system\\test\\testdata\\TP254Partial4.nme");
+ _LIT(KPartialNmeaFile5, "c:\\system\\test\\testdata\\TP254Partial5.nme");
+ _LIT(KPartialNmeaFile6, "c:\\system\\test\\testdata\\TP254Partial6.nme");
+
+#endif
+
+const TInt KTimeOut = 3000000;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// Constructor.
+// ---------------------------------------------------------
+CT_LbsSimulationPSYPosTp254::CT_LbsSimulationPSYPosTp254(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent)
+ {
+ _LIT(KTestName, "TP254 - Partial update");
+ SetTestStepName(KTestName);
+ }
+
+// ---------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------
+CT_LbsSimulationPSYPosTp254::~CT_LbsSimulationPSYPosTp254()
+ {
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::StartL
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::StartL()
+ {
+ _LIT(KConnectErr, "Error when connecting to Position Server, %d");
+ _LIT(KNotifyErr, "NotifyPositionUpdate returns err %d when expected KErrNone");
+ _LIT(KPartialErr, "NotifyPositionUpdate returns err %d when expected KPositionPartialUpdate");
+ _LIT(KTimedOutErr, "NotifyPositionUpdate returns err %d when expected KErrTimedOut");
+
+ TInt err = iPosServer.Connect();
+ AssertTrueL(err == KErrNone, KConnectErr, err);
+
+ SetupPsyL(iUidSimulationPsy);
+ TPositionInfo posInfo;
+
+
+ SetFileInUseL(KPartialNmeaFile, EFalse);
+ SetUpdateTimeOutL(KTimeOut);
+
+ err = Request(posInfo);
+ AssertTrueL(err == KErrTimedOut, KTimedOutErr, err); // Since partial not accepted
+
+ SetFileInUseL(KNmeaFile);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ SetFileInUseL(KPartialNmeaFile);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELongitude);
+
+ SetFileInUseL(KPartialNmeaFile2);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude);
+
+ SetFileInUseL(KPartialNmeaFile3);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ SetFileInUseL(KPartialNmeaFile4);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELongitude | ELatitude | ETimeStamp);
+
+ SetFileInUseL(KPartialNmeaFile5);
+ posInfo = TPositionInfo();
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELongitude | ELatitude | ETimeStamp);
+
+ SetFileInUseL(KPartialNmeaFile6);
+ SetUpdateTimeOutL(KTimeOut);
+ posInfo = TPositionInfo();
+
+ // 1
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 2
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELongitude);
+
+ // 3
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 4
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude);
+
+ // 5
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude | ELongitude | ETimeStamp | EAltitude);
+
+ // 6
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 7
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude | ELongitude | ETimeStamp | EAltitude);
+
+ // 8
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 9 The NMEA file is parsed from the beginning
+ SetPartialUpdateL(EFalse);
+
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone, KNotifyErr, err);
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 10 - skipped by PSY since partial and partial not allowed
+ // 11
+ err = Request(posInfo);
+ AssertTrueL(err == KErrNone,KNotifyErr, err); // Since partial not accepted
+ CheckTPositionInfoL(posInfo, ENone);
+
+ // 12
+ SetPartialUpdateL(ETrue);
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude);
+
+ // 13
+ err = Request(posInfo);
+ AssertTrueL(err == KPositionPartialUpdate, KPartialErr, err);
+ CheckTPositionInfoL(posInfo, ELatitude | ELongitude | ETimeStamp | EAltitude);
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::CloseTest()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::CloseTest()
+ {
+ iPositioner.Close();
+ iPosServer.Close();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::RequestL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CT_LbsSimulationPSYPosTp254::Request(TPositionInfoBase& aPositionInfo)
+ {
+ _LIT(KFunctionName, "We are inside Request()");
+ INFO_PRINTF1(KFunctionName);
+ iPositioner.NotifyPositionUpdate(aPositionInfo, iStatus);
+ User::WaitForRequest(iStatus);
+
+ return iStatus.Int();
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::CheckTPositionInfo()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::CheckTPositionInfoL(const TPositionInfo& aPosInfo, TMissingPositionData aMissingData)
+ {
+ _LIT(KLongitudeErr, "Longitude is incorrect in TPositionInfo");
+ _LIT(KLatitudeErr, "Latitude is incorrect in TPositionInfo");
+ _LIT(KHorizontalErr, "Horizontal Accuracy is incorrect in TPositionInfo");
+ _LIT(KVerticalErr, "Vertical Accuracy is incorrect in TPositionInfo");
+ _LIT(KAltitudeErr, "Altitude is incorrect in TPositionInfo");
+ _LIT(KTimeErr, "Time is incorrect in TPositionInfo");
+
+ TPosition pos;
+ aPosInfo.GetPosition(pos);
+ TBool fullFix = ETrue;
+
+ if (aMissingData & ELongitude)
+ {
+ AssertTrueL(Math::IsNaN(pos.Longitude()), KLongitudeErr, KErrGeneral);
+ fullFix = EFalse;
+ }
+ else
+ {
+ AssertTrueL(pos.Longitude() == KLongitude, KLongitudeErr, KErrGeneral);
+ }
+ if (aMissingData & ELatitude)
+ {
+ AssertTrueL(Math::IsNaN(pos.Latitude()), KLatitudeErr, KErrGeneral);
+ fullFix = EFalse;
+ }
+ else
+ {
+ AssertTrueL(pos.Latitude() == KLatitude, KLatitudeErr, KErrGeneral);
+ }
+ if (aMissingData & ETimeStamp)
+ {
+ AssertTrueL(pos.Time().Int64() == 0, KTimeErr, KErrGeneral);
+ fullFix = EFalse;
+ }
+
+ if (aMissingData & EAltitude)
+ {
+ AssertTrueL(Math::IsNaN(pos.Altitude()), KAltitudeErr, KErrGeneral);
+ _LIT(KIsNaN, "Altitude IsNaN");
+ INFO_PRINTF1(KIsNaN);
+ fullFix = EFalse;
+ }
+ else
+ {
+ AssertTrueL(pos.Altitude() == KAltitude, KAltitudeErr, KErrGeneral);
+ }
+
+ AssertTrueL(pos.HorizontalAccuracy() == KHorizontalAcc, KHorizontalErr, KErrGeneral);
+ AssertTrueL(pos.VerticalAccuracy() == KVerticalAcc, KVerticalErr, KErrGeneral);
+
+ if (fullFix)
+ {
+ _LIT(KFullFix, "Read fullFix");
+ INFO_PRINTF1(KFullFix);
+ }
+ else
+ {
+ _LIT(KPartialUpdate, "Read partial update");
+ INFO_PRINTF1(KPartialUpdate);
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::SetFileInUse()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::SetFileInUseL(const TDesC& aFileName, TBool aPartial)
+ {
+ _LIT(KOpenErr, "Error when opening positioner, %d");
+ _LIT(KSetUpdateOptionsErr, "Error %d when setting update options");
+
+ iPositioner.Close();
+ SetSimDataFileL(aFileName);
+
+ TInt err;
+ err = iPositioner.Open(iPosServer, iUidSimulationPsy);
+ AssertTrueL(err == KErrNone, KOpenErr, err);
+
+ iPositioner.SetRequestor(CRequestor::ERequestorService,
+ CRequestor::EFormatApplication, KServiceName);
+
+ TPositionUpdateOptions posOption;
+ posOption.SetAcceptPartialUpdates(aPartial);
+
+ err = iPositioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KSetUpdateOptionsErr, err);
+
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::SetPartialUpdateL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::SetPartialUpdateL(TBool aPartial)
+ {
+ _LIT(KSetUpdateOptionsErr, "Error %d when setting update options");
+
+ TPositionUpdateOptions posOption;
+ iPositioner.GetUpdateOptions(posOption);
+
+ posOption.SetAcceptPartialUpdates(aPartial);
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KSetUpdateOptionsErr, err);
+ }
+
+// ---------------------------------------------------------
+// CT_LbsSimulationPSYPosTp254::SetUpdateTimeOutL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::SetUpdateTimeOutL(const TInt& aInterval)
+ {
+ _LIT(KSetUpdateOptionsErr, "Error %d when setting update options");
+
+ TPositionUpdateOptions posOption;
+ iPositioner.GetUpdateOptions(posOption);
+
+ posOption.SetUpdateTimeOut(TTimeIntervalMicroSeconds(aInterval));
+
+ TInt err = iPositioner.SetUpdateOptions(posOption);
+ AssertTrueL(err == KErrNone, KSetUpdateOptionsErr, err);
+ }
+
+// ---------------------------------------------------------
+// TNmeaSentenceParser::PrintChecksum
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CT_LbsSimulationPSYPosTp254::PrintChecksum(const TDesC8& aSentence)
+ {
+ TUint8 checksum = 0;
+
+ TInt i;
+ for (i = 1; i < aSentence.Length() && aSentence[i] != '*'; i++)
+ {
+ checksum ^= aSentence[i];
+ }
+
+ TUint8 lsb = (TUint8)(checksum & 0x0f);
+ TUint8 msb = (TUint8)(checksum >> 4);
+
+ _LIT(KStatus, "Checksum field = %x%x");
+ TBuf<32> info;
+ info.Format(KStatus, msb, lsb);
+ RDebug::Print(info);
+ }
+
+// End of File