diff -r 000000000000 -r 9cfd9a3ee49c lbstest/lbstestproduct/lbssimulationpsy/src/ctlbssimulationpsypostp242.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbstest/lbstestproduct/lbssimulationpsy/src/ctlbssimulationpsypostp242.cpp Tue Feb 02 01:50:39 2010 +0200 @@ -0,0 +1,613 @@ +// 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 "ctlbssimulationpsypostp242.h" +#include "ctlbssimulationpsypostp242constants.h" + +// CONSTANTS +_LIT(KServiceName, "TP242"); + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// Constructor. +// --------------------------------------------------------- +CT_LbsSimulationPSYPosTp242::CT_LbsSimulationPSYPosTp242(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent) + { + _LIT(KTestName, "TP242 - NMEA Satellite support"); + SetTestStepName(KTestName); + } + +// --------------------------------------------------------- +// Destructor. +// --------------------------------------------------------- +CT_LbsSimulationPSYPosTp242::~CT_LbsSimulationPSYPosTp242() + { + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::StartL() + { + _LIT(KConnectErr, "Error when connecing to Position Server, %d"); + +#ifdef __WINS__ + _LIT(KNmeaFile, "z:\\system\\test\\testdata\\tp242.nme"); + _LIT(KNmeaFile2, "z:\\system\\test\\testdata\\tp242_East.nme"); + _LIT(KNmeaFileMissingPDoP, "z:\\system\\test\\testdata\\tp242MissingPDoP.nme"); + _LIT(KNmeaFileEmptySpeed, "z:\\system\\test\\testdata\\tp242EmptySpeed.nme"); +#else + _LIT(KNmeaFile, "c:\\system\\test\\testdata\\tp242.nme"); + _LIT(KNmeaFile2, "c:\\system\\test\\testdata\\tp242_East.nme"); + _LIT(KNmeaFileEmptySpeed, "c:\\system\\test\\testdata\\tp242EmptySpeed.nme"); + _LIT(KNmeaFileMissingPDoP, "c:\\system\\test\\testdata\\tp242MissingPDoP.nme"); +#endif + + TInt err = iPosServer.Connect(); + AssertTrueL(err == KErrNone, KConnectErr, err); + + SetFileInUseL(KNmeaFile); + + TPositionSatelliteInfo satInfo; + // TSatelliteInfo + + RequestL(satInfo); + CheckTPositionSatelliteInfoL(satInfo); + CheckTPositionCourseInfoL(satInfo); + CheckTPositionInfo(satInfo); + + // TCourseInfo + TPositionCourseInfo courseInfo; + RequestL(courseInfo); + CheckTPositionCourseInfoL(courseInfo); + CheckTPositionInfo(courseInfo); + + HPositionGenericInfo* genericInfo = HPositionGenericInfo::NewLC(); + + // Satellite generic info + SetSatelliteRequestedFields(*genericInfo); + RequestL(*genericInfo); + CheckSatelliteGenericInfoL(*genericInfo); + CheckTPositionInfo(*genericInfo); + + // Speed generic info + SetSpeedRequestedFields(*genericInfo); + RequestL(*genericInfo); + CheckSpeedGenericInfoL(*genericInfo); + CheckTPositionInfo(*genericInfo); + + // Compass generic info + SetCompassRequestedFields(*genericInfo); + RequestL(*genericInfo); + CheckCompassGenericInfoL(*genericInfo); + CheckTPositionInfo(*genericInfo); + + SetFileInUseL(KNmeaFile2); + // Test that EPositionFieldMagneticCourse is calculated as: + //True Course + magnetic variation where magnetic variation is subtracted if westerly and + // added if easterly + SetCompassRequestedFields(*genericInfo); + RequestL(*genericInfo); + CheckCompassGenericInfoL(*genericInfo, EFalse); + CheckTPositionInfo(*genericInfo); + + // Test that speed in course info is NaN + SetFileInUseL(KNmeaFileEmptySpeed); + RequestL(courseInfo); + CheckTPositionCourseInfoEmptySpeedL(courseInfo); + + CheckSupportedNMEAFiles(); + + //Test that missing PDOP is calculated according sqrt(HDpP^2 +VDoP^2) + SetFileInUseL(KNmeaFileMissingPDoP); + SetSatelliteRequestedFields(*genericInfo); + RequestL(*genericInfo); + CheckSatelliteGenericInfoL(*genericInfo, ETrue); + + CleanupStack::PopAndDestroy(genericInfo); + + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::CloseTest() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CloseTest() + { + iPositioner.Close(); + iPosServer.Close(); + } + +void CT_LbsSimulationPSYPosTp242::RequestL(TPositionInfoBase& aPositionInfo) + { + _LIT(KNotifyErr, + "NotifyPositionUpdate returns status %d when should return status 0"); + + iPositioner.NotifyPositionUpdate(aPositionInfo, iStatus); + User::WaitForRequest(iStatus); + AssertTrueL(iStatus.Int() == KErrNone, KNotifyErr, iStatus.Int()); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::CheckTPositionInfo() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckTPositionInfo(const TPositionInfo& aTPositionInfo) + { + _LIT(KLongitudeErr, "Longitude is incorrect in TPositionInfo"); + _LIT(KLatitudeErr, "Latitude is incorrect in TPositionInfo"); + _LIT(KHorizontalErr, "Latitude is incorrect in TPositionInfo"); + _LIT(KAltitudeErr, "Latitude is incorrect in TPositionInfo"); + _LIT(KAltitudeErrErr, "Latitude is incorrect in TPositionInfo"); + + TPosition pos; + aTPositionInfo.GetPosition(pos); + + AssertTrueL(pos.Longitude() == KLongitude, KLongitudeErr, KErrGeneral); + AssertTrueL(pos.Latitude() == KLatitude, KLatitudeErr, KErrGeneral); + AssertTrueL(pos.Altitude() == KAltitude, KAltitudeErr, KErrGeneral); + AssertTrueL(pos.HorizontalAccuracy() == KHorizontalAcc, KHorizontalErr, KErrGeneral); + AssertTrueL(pos.VerticalAccuracy() == KVerticalAcc, KAltitudeErrErr, KErrGeneral); + + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::CheckTPositionSatelliteInfo() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckTPositionSatelliteInfoL(const TPositionSatelliteInfo& aSatelliteInfo) + { + _LIT(KNoUsedErr, "Number of used satellites is incorrect in GenericInfo"); + _LIT(KHorizontalDoPErr, "HorizontalDoP is incorrect in TPositionSatelliteInfo"); + _LIT(KVerticalDoPErr, "VerticalDoP is incorrect in GenericInfo"); + _LIT(KTimeDoPErr, "TimeDoP is incorrect in TPositionSatelliteInfo"); + _LIT(KSatTimeErr, "Satellite time is incorrect in TPositionSatelliteInfo"); + _LIT(KSatIdErr, "Satellite Id is incorrect in TPositionSatelliteInfo satellite %d"); + _LIT(KSatElevationErr, "Satellite Elevation is incorrect in TPositionSatelliteInfo satellite %d"); + _LIT(KSatAzimuthErr, "Satellite Azimuth is incorrect in TPositionSatelliteInfo satellite %d"); + _LIT(KSatSignalStrengthErr, "Satellite SignalStrength is incorrect in TPositionSatelliteInfo satellite %d"); + _LIT(KSatIsUsedErr, "Satellite IsUsed is incorrect in TPositionSatelliteInfo satellite %d"); + + TTime satTime; + GetCorrectSatelliteTime(satTime); + + AssertTrueL(aSatelliteInfo.SatelliteTime() == satTime, KSatTimeErr, KErrGeneral); + AssertTrueL(aSatelliteInfo.HorizontalDoP() == KSatelliteHorizontalDoP, KHorizontalDoPErr, KErrGeneral); + AssertTrueL(aSatelliteInfo.VerticalDoP() == KSatelliteVerticalDoP, KVerticalDoPErr, KErrGeneral); + AssertTrueL(Math::IsNaN(aSatelliteInfo.TimeDoP()), KTimeDoPErr, KErrGeneral); + + AssertTrueL(aSatelliteInfo.NumSatellitesInView() == KSatelliteNumInView, KNoUsedErr, KErrGeneral); + + for (TInt i = 1; i <= aSatelliteInfo.NumSatellitesInView(); i++) + { + TSatelliteData satellite; + aSatelliteInfo.GetSatelliteData(i-1, satellite); + AssertTrueL(satellite.SatelliteId() == i, KSatIdErr, i); + switch(i) + { + case 1: + AssertTrueL(satellite.Elevation() == KElevation1, KSatElevationErr, i); + AssertTrueL(satellite.Azimuth() == KAzimuth1, KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength1, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed1, KSatIsUsedErr, i); + break; + case 2: + AssertTrueL(Math::IsNaN(satellite.Elevation()), KSatElevationErr, i); + AssertTrueL(satellite.Azimuth() == KAzimuth2, KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength2, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed2, KSatIsUsedErr, i); + break; + case 3: + AssertTrueL(satellite.Elevation() == KElevation3, KSatElevationErr, i); + AssertTrueL(Math::IsNaN(satellite.Azimuth()), KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength3, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed3, KSatIsUsedErr, i); + break; + case 4: + AssertTrueL(satellite.Elevation() == KElevation4, KSatElevationErr, i); + AssertTrueL(satellite.Azimuth() == KAzimuth4, KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength4, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed4, KSatIsUsedErr, i); + break; + case 5: + AssertTrueL(satellite.Elevation() == KElevation5, KSatElevationErr, i); + AssertTrueL(satellite.Azimuth() == KAzimuth5, KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength5, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed5, KSatIsUsedErr, i); + break; + case 6: + AssertTrueL(satellite.Elevation() == KElevation6, KSatElevationErr, i); + AssertTrueL(satellite.Azimuth() == KAzimuth6, KSatAzimuthErr, i); + AssertTrueL(satellite.SignalStrength() == KSignalStrength6, KSatSignalStrengthErr, i); + AssertTrueL(satellite.IsUsed() == KIsUsed6, KSatIsUsedErr, i); + break; + } + } + } + +// --------------------------------------------------------- +// CTestPsyBase::CheckTPositionCourseInfoL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckTPositionCourseInfoL(const TPositionCourseInfo& aCourseInfo) + { + _LIT(KHeadingErr,"Heading is incorrect in TPositionCourseInfo"); + _LIT(KSpeedErr, "Speed is incorrect in TPositionCourseInfo"); + _LIT(KSpeedAccuracyErr, "Speed accuracy is incorrect in TPositionCourseInfo"); + _LIT(KHeadingAccuracyErr, "Heading accuracy is incorrect in TPositionCourseInfo"); + + TCourse course; + aCourseInfo.GetCourse(course); + + AssertTrueL(course.Speed() == KHorizontalSpeed, KSpeedErr, KErrGeneral); + AssertTrueL(course.Heading() == KHeading, KHeadingErr, KErrGeneral); + AssertTrueL(Math::IsNaN(course.SpeedAccuracy()), KSpeedAccuracyErr, KErrGeneral); + AssertTrueL(Math::IsNaN(course.HeadingAccuracy()), KHeadingAccuracyErr, KErrGeneral); + + } +// --------------------------------------------------------- +// CTestPsyBase::CheckTPositionCourseInfoEmptySpeedL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckTPositionCourseInfoEmptySpeedL(const TPositionCourseInfo& aCourseInfo) + { + _LIT(KSpeedErr, "Speed is incorrect in TPositionCourseInfo"); + + TCourse course; + aCourseInfo.GetCourse(course); + + AssertTrueL(Math::IsNaN(course.Speed()), KSpeedErr, KErrGeneral); + } + +// --------------------------------------------------------- +// CTestPsyBase::CheckCourseGenericInfoL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckSpeedGenericInfoL(const HPositionGenericInfo& aGenericInfo) + { + _LIT(KSpeedErr, "Speed is incorrect in GenericInfo"); + _LIT(KHorizontalSpeedErrorErr, "Horizontal speed error could not be set in GenericInfo"); + _LIT(KVerticalSpeedErrorErr, "Vertical speed error could not be available in GenericInfo"); + _LIT(KVerticalSpeedErr, "Vertical speed could not be set in GenericInfo"); + + TReal32 speed; + aGenericInfo.GetValue(EPositionFieldHorizontalSpeed, speed); + AssertTrueL(KHorizontalSpeed==speed, KSpeedErr, KErrGeneral); + + TInt err; + TReal32 tmp; + + err = aGenericInfo.GetValue(EPositionFieldVerticalSpeed, tmp); + AssertTrueL(err == KErrNotFound, KVerticalSpeedErr, KErrGeneral); + + err = aGenericInfo.GetValue(EPositionFieldHorizontalSpeedError, tmp); + AssertTrueL(err == KErrNotFound, KHorizontalSpeedErrorErr, KErrGeneral); + + err = aGenericInfo.GetValue(EPositionFieldVerticalSpeedError, tmp); + AssertTrueL(err == KErrNotFound, KVerticalSpeedErrorErr, KErrGeneral); + + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::SetSatelliteGenericInfoL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckSatelliteGenericInfoL(const HPositionGenericInfo& aGenericInfo, TBool aCalculatedPDoP) + { + _LIT(KNoSatErr, "Number of satellites in view is incorrect in GenericInfo"); + _LIT(KNoUsedErr, "Number of used satellites is incorrect in GenericInfo"); + _LIT(KHorizontalDoPErr, "HorizontalDoP is incorrect in GenericInfo"); + _LIT(KVerticalDoPErr, "VerticalDoP is incorrect in GenericInfo"); + _LIT(KTimeDoPErr, "TimeDoP could not be set in GenericInfo"); + _LIT(KPosDoPErr, "PositionDoP is incorrect in GenericInfo"); + _LIT(KAltitudeErr, "SatelliteSeaLevelAltitude is incorrect in GenericInfo"); + _LIT(KGeoidalSeparationErr, "SatelliteGeoidalSeparation is incorrect in GenericInfo"); + _LIT(KSatTimeErr, "Satellite time is incorrect in GenericInfo"); + + TInt8 satelliteNumInView; + aGenericInfo.GetValue(EPositionFieldSatelliteNumInView, satelliteNumInView); + AssertTrueL(KSatelliteNumInView == satelliteNumInView, KNoSatErr, KErrGeneral); + + TInt8 satelliteNumUsed; + aGenericInfo.GetValue(EPositionFieldSatelliteNumUsed, satelliteNumUsed); + AssertTrueL(KSatelliteNumUsed == satelliteNumUsed, KNoUsedErr, KErrGeneral); + + TTime satTime; + GetCorrectSatelliteTime(satTime); + + TTime time; + aGenericInfo.GetValue(EPositionFieldSatelliteTime, time); + AssertTrueL(time == satTime, KSatTimeErr, KErrGeneral); + + TReal32 satelliteHorizontalDoP; + aGenericInfo.GetValue(EPositionFieldSatelliteHorizontalDoP, satelliteHorizontalDoP); + AssertTrueL(KSatelliteHorizontalDoP == satelliteHorizontalDoP, KHorizontalDoPErr, KErrGeneral); + + TReal32 satellitePositionDoP; + aGenericInfo.GetValue(EPositionFieldSatellitePositionDoP, satellitePositionDoP); + + TReal32 satelliteVerticalDoP; + aGenericInfo.GetValue(EPositionFieldSatelliteVerticalDoP, satelliteVerticalDoP); + + if (aCalculatedPDoP) + { + _LIT(KPosDopCalculated, "The value of PDoP is not calulated if missing %d"); + AssertTrueL(KSatelliteCalPositionDoP == satellitePositionDoP, KPosDopCalculated, KErrGeneral); + AssertTrueL(KSatelliteCalVerticalDoP == satelliteVerticalDoP, KVerticalDoPErr, KErrGeneral); + } + else + { + AssertTrueL(KSatellitePositionDoP == satellitePositionDoP, KPosDoPErr, KErrGeneral); + AssertTrueL(KSatelliteVerticalDoP == satelliteVerticalDoP, KVerticalDoPErr, KErrGeneral); + } + + TInt err; + TReal32 satelliteTimeDoP; + err = aGenericInfo.GetValue(EPositionFieldSatelliteTimeDoP, satelliteTimeDoP); + AssertTrueL(err == KErrNotFound, KTimeDoPErr, KErrGeneral); + + TReal32 satelliteAltitude; + aGenericInfo.GetValue(EPositionFieldSatelliteSeaLevelAltitude, satelliteAltitude); + AssertTrueL(KSatelliteAltitude == satelliteAltitude, KAltitudeErr, KErrGeneral); + + TReal32 satelliteGeoidalSeparation; + aGenericInfo.GetValue(EPositionFieldSatelliteGeoidalSeparation, satelliteGeoidalSeparation); + AssertTrueL(KSatelliteGeoidalSeparation == satelliteGeoidalSeparation, KGeoidalSeparationErr, KErrGeneral); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::CheckCompassGenericInfoL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckCompassGenericInfoL(const HPositionGenericInfo& aGenericInfo, TBool aWest) + { + _LIT(KTrueCourseErr, "True Course is incorrect in GenericInfo"); + _LIT(KTrueCourseErrorErr, "True course errror could not be set in GenericInfo"); + _LIT(KMagneticCourseErr, "Magnetic Course could not be set GenericInfo"); + _LIT(KMagneticCourseErrEast, "Incorrect EPositionFieldMagneticCourse value when east"); + _LIT(KMagneticCourseErrWest, "Incorrect EPositionFieldMagneticCourse value when weast"); + + TReal32 trueCourse; + aGenericInfo.GetValue(EPositionFieldTrueCourse, trueCourse); + AssertTrueL(KTrueCourse == trueCourse, KTrueCourseErr, KErrGeneral); + + TInt err; + TReal tmp; + err = aGenericInfo.GetValue(EPositionFieldTrueCourseError, tmp); + AssertTrueL(err == KErrNotFound, KTrueCourseErrorErr, KErrGeneral); + TReal32 magneticCourse; + err = aGenericInfo.GetValue(EPositionFieldMagneticCourse, magneticCourse); + AssertTrueL(err == KErrNone, KMagneticCourseErr, KErrGeneral); + if (aWest) + { + AssertTrueL(magneticCourse == (KTrueCourse+KMagneticVariation), KMagneticCourseErrWest, KErrGeneral); + } + else + { + AssertTrueL(magneticCourse == (KTrueCourse-KMagneticVariation), KMagneticCourseErrEast, KErrGeneral); + } + + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::CheckSupportedNMEAFiles +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::CheckSupportedNMEAFiles() + { + +#ifdef __WINS__ + _LIT(KMagellanGPS315, "z:\\system\\test\\testdata\\MagellanGPS315.nme"); + _LIT(KFix10MagellanGPS315, "z:\\system\\test\\testdata\\Fix10MagellanGPS315.nme"); + _LIT(KMagellanTracker, "z:\\system\\test\\testdata\\MagellanTracker.nme"); + _LIT(KGarmin12cx, "z:\\system\\test\\testdata\\garmin12cx.nme"); + _LIT(KGarmin3plus, "z:\\system\\test\\testdata\\garmin3plus.nme"); + _LIT(KGarminetrexlegend, "z:\\system\\test\\testdata\\garminetrexlegend.nme"); + _LIT(KMagellanMeridian, "z:\\system\\test\\testdata\\magellanmeridianplatinum.nme"); +#else + _LIT(KMagellanGPS315, "c:\\system\\test\\testdata\\MagellanGPS315.nme"); + _LIT(KFix10MagellanGPS315, "c:\\system\\test\\testdata\\Fix10MagellanGPS315.nme"); + _LIT(KMagellanTracker, "c:\\system\\test\\testdata\\MagellanTracker.nme"); + _LIT(KGarmin12cx, "c:\\system\\test\\testdata\\garmin12cx.nme"); + _LIT(KGarmin3plus, "c:\\system\\test\\testdata\\garmin3plus.nme"); + _LIT(KGarminetrexlegend, "c:\\system\\test\\testdata\\garminetrexlegend.nme"); + _LIT(KMagellanMeridian, "c:\\system\\test\\testdata\\magellanmeridianplatinum.nme"); +#endif + + _LIT(KVerticalDoPErr, "KVerticalDoP should be NaN in TPositionSatelliteInfo when empty value in NMEA GSA"); + + for (TInt i=1; i <= 7; i++) + { + TPositionCourseInfo courseInfo; + TPositionSatelliteInfo satInfo; + + switch (i) + { + case 1: + SetFileInUseL(KMagellanGPS315); + break; + case 2: + SetFileInUseL(KFix10MagellanGPS315); + break; + case 3: + SetFileInUseL(KMagellanTracker); + AssertTrueL(Math::IsNaN(satInfo.VerticalDoP()), KVerticalDoPErr, KErrGeneral); + break; + case 4: + SetFileInUseL(KGarmin12cx); + break; + case 5: + SetFileInUseL(KGarmin3plus); + break; + case 6: + SetFileInUseL(KGarminetrexlegend); + break; + case 7: + SetFileInUseL(KMagellanMeridian); + break; + } + RequestL(courseInfo); + RequestL(satInfo); + } + } + + + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::GetCorrectSatelliteTime +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::GetCorrectSatelliteTime(TTime& aTime) + { + TInt hh = (static_cast(KSatelliteTime)/10000); + TInt mm = (static_cast(KSatelliteTime)/100)%100; + TInt ss = static_cast(KSatelliteTime)%100; + + TReal frac=0; + Math::Frac(frac, KSatelliteTime); + TInt us = static_cast(frac * 1000000); + + TInt day = (KSatelliteDate/10000); + TInt month = (KSatelliteDate/100)%100; + TInt year = KSatelliteDate%100 + 2000; + + TDateTime dateTime = TDateTime(year, static_cast(month - 1), day, hh, mm, ss, us); + aTime = TTime(dateTime); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::SetSatelliteRequestedFields() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::SetSatelliteRequestedFields(HPositionGenericInfo& aGenericInfo) + { + aGenericInfo.SetRequestedField(EPositionFieldSatelliteNumInView); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteNumUsed); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteTime); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteHorizontalDoP); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteVerticalDoP); + aGenericInfo.SetRequestedField(EPositionFieldSatellitePositionDoP); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteTimeDoP); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteSeaLevelAltitude); + aGenericInfo.SetRequestedField(EPositionFieldSatelliteGeoidalSeparation); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::SetSpeedRequestedFields() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::SetSpeedRequestedFields(HPositionGenericInfo& aGenericInfo) + { + aGenericInfo.SetRequestedField(EPositionFieldHorizontalSpeed); + aGenericInfo.SetRequestedField(EPositionFieldHorizontalSpeedError); + aGenericInfo.SetRequestedField(EPositionFieldVerticalSpeedError); + aGenericInfo.SetRequestedField(EPositionFieldVerticalSpeed); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::SetCompassRequestedFields() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::SetCompassRequestedFields(HPositionGenericInfo& aGenericInfo) + { + aGenericInfo.SetRequestedField(EPositionFieldTrueCourse); + aGenericInfo.SetRequestedField(EPositionFieldTrueCourseError); + aGenericInfo.SetRequestedField(EPositionFieldMagneticCourse); + } + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::SetFileInUseL() +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::SetFileInUseL(const TDesC& aFileName) + { + _LIT(KOpenErr, "Error when opening positioner, %d"); + + iPositioner.Close(); + SetSimDataFileL(aFileName); + + TInt err; + err = iPositioner.Open(iPosServer, iUidSimulationPsy); + AssertTrueL(err == KErrNone, KOpenErr, err); + + iPositioner.SetRequestor(CRequestor::ERequestorService, + CRequestor::EFormatApplication, KServiceName); + + } + + +// --------------------------------------------------------- +// CT_LbsSimulationPSYPosTp242::PrintChecksum +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsSimulationPSYPosTp242::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); + INFO_PRINTF1(info); + } + + +// End of File