--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/location/tsrc/vipertestpsy/src/vipertestpsy.cpp Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,221 @@
+/*
+* Copyright (c) 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 <e32base.h>
+#include <Lbs.h>
+#include <LbsSatellite.h>
+#include <ImplementationProxy.h>
+#include "ViperTestPsy.hrh"
+#include "EPos_CPositioner.h"
+
+// CONSTANTS
+const TReal32 KHorizontalAcc = 40;
+const TReal32 KVerticalAcc = 40;
+
+const TReal64 KLatitude = 2;
+const TReal64 KLongitude = 3;
+const TReal32 KAltitude = 200;
+
+_LIT(KPositionTime, "20801027:161600");//YYYYMMDD:HHMMSS.MMMMMM
+
+const TReal32 KSpeed = 20;
+const TReal32 KHeading = 30;
+const TReal32 KSpeedAcc = 2;
+const TReal32 KHeadingAcc = 3;
+
+const TInt KSatelliteId = 30;
+const TReal32 KAzimuth = 30;
+const TReal32 KElevation = 30;
+const TBool KIsUsed = ETrue;
+const TInt KSignalStrength = 10;
+
+const TReal32 KAzimuthOdd = 35;
+const TReal32 KElevationOdd = 35;
+const TBool KIsUsedOdd = EFalse;
+const TInt KSignalStrengthOdd = 5;
+
+const TUint KNumberOfSatellitesInView = 12;
+const TUint KNumberOfSatellitesUsed = 6;
+_LIT(KSatelliteTime, "20021027:161600");
+const TReal32 KHorizontalDoPValue = 1;
+const TReal32 KVerticalDoPValue = 2;
+const TReal32 KTimeDoPValue = 20;
+_LIT(KModuleName, "ViperTest PSY");
+
+// CLASS DECLARATION
+
+class CViperTestPsy: public CPositioner
+{
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CViperTestPsy* NewL(TAny* aConstructionParameters);
+
+ /**
+ * Destructor.
+ */
+ ~CViperTestPsy();
+
+protected:
+ // Functions from base classes
+
+ /**
+ * From CPositioner. Requests position info asynchronously.
+ *
+ * @param aPosInfo A reference to a position info object. This object
+ * must be in scope until the request has completed.
+ * @param aStatus The request status
+ */
+ void NotifyPositionUpdate(
+ /* IN/OUT */TPositionInfoBase& aPosInfo,
+ /* OUT */TRequestStatus& aStatus);
+
+ /**
+ * From CPositioner. Cancels position info request.
+ */
+ void CancelNotifyPositionUpdate();
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CViperTestPsy();
+
+ /**
+ * By default EPOC constructor is private.
+ */
+ void ConstructL(TAny* aConstructionParameters);
+
+ void SetTPositionInfo(TPositionInfo& aInfo);
+ void SetTPositionCourseInfo(TPositionCourseInfo& aCourseInfo);
+ void SetTPositionSatelliteInfo(TPositionSatelliteInfo& aSatelliteInfo);
+ void SetHPositionGenericInfo(HPositionGenericInfo& aGenericInfo);
+
+ // By default, prohibit copy constructor
+ CViperTestPsy(const CViperTestPsy&);
+ // Prohibit assigment operator
+ CViperTestPsy& operator=(const CViperTestPsy&);
+
+};
+
+// ================= OTHER EXPORTED FUNCTIONS ==============
+
+const TImplementationProxy KFactoryPtr = IMPLEMENTATION_PROXY_ENTRY(
+ KPosImplementationUid, CViperTestPsy::NewL);
+
+//
+// ---------------------------------------------------------
+// ImplementationGroupProxy
+// Required PSY interface.
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ TInt& aTableCount)
+{
+ aTableCount = 1;
+ return &KFactoryPtr;
+}
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CViperTestPsy::CViperTestPsy()
+{
+}
+
+// EPOC default constructor can leave.
+void CViperTestPsy::ConstructL(TAny* aConstructionParameters)
+{
+ BaseConstructL(aConstructionParameters);
+}
+
+// Two-phased constructor.
+CViperTestPsy* CViperTestPsy::NewL(TAny* aConstructionParameters)
+{
+ CViperTestPsy* self = new(ELeave) CViperTestPsy;
+ CleanupStack::PushL(self);
+ self->ConstructL(aConstructionParameters);
+ CleanupStack::Pop();
+ return self;
+}
+
+// Destructor
+CViperTestPsy::~CViperTestPsy()
+{
+}
+
+void CViperTestPsy::NotifyPositionUpdate(TPositionInfoBase& aPosInfo,
+ TRequestStatus& aStatus)
+{
+ TRequestStatus* status = &aStatus;
+
+ TUid implUid =
+ { KPosImplementationUid };
+ aPosInfo.SetModuleId(implUid);
+ TUint32 classType = aPosInfo.PositionClassType();
+
+ if (classType == (classType & EPositionInfoClass))
+ {
+ TPositionInfo* position = static_cast<TPositionInfo*>(&aPosInfo);
+ SetTPositionInfo(*position);
+ }
+ else if (classType & EPositionGenericInfoClass)
+ {
+ HPositionGenericInfo& generic =
+ static_cast<HPositionGenericInfo&>(aPosInfo);
+ SetHPositionGenericInfo(generic);
+ }
+ else
+ {
+ User::RequestComplete(status, KErrGeneral);
+ return;
+ }
+
+ User::RequestComplete(status, KErrNone);
+}
+
+void CViperTestPsy::CancelNotifyPositionUpdate()
+{
+}
+
+void CViperTestPsy::SetTPositionInfo(TPositionInfo& aInfo)
+{
+ TCoordinate coor(KLatitude, KLongitude, KAltitude);
+ TLocality loc(coor, KHorizontalAcc, KVerticalAcc);
+ TTime now;
+ now.UniversalTime();
+ TPosition pos(loc, now);
+ aInfo.SetPosition(pos);
+}
+
+void CViperTestPsy::SetHPositionGenericInfo(HPositionGenericInfo& aGenericInfo)
+{
+ SetTPositionInfo(aGenericInfo);
+ if (aGenericInfo.IsRequestedField(EPositionFieldHorizontalSpeed))
+ {
+ aGenericInfo.SetValue(EPositionFieldHorizontalSpeed, KSpeed);
+ }
+ if (aGenericInfo.IsRequestedField(EPositionFieldHeading))
+ {
+ aGenericInfo.SetValue(EPositionFieldHeading, KHeading);
+ }
+}
+
+// End of File