datasourcemodules/simulationpositioningmodule/inc/EPos_TPosDataSimulator.h
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datasourcemodules/simulationpositioningmodule/inc/EPos_TPosDataSimulator.h	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,229 @@
+/*
+* Copyright (c) 2005-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:
+*
+*/
+
+
+
+#ifndef TPOSDATASIMULATOR_H
+#define TPOSDATASIMULATOR_H
+
+// INCLUDES
+#include <badesca.h>
+
+// FORWARD DECLARATIONS
+class TDesTokeniser;
+class TPositionInfo;
+
+// CLASS DECLARATION
+
+/**
+ * A helper class for simulation of position info.
+ */
+class TPosDataSimulator
+    {
+
+    public:  // Constructor
+
+        /**
+        * C++ default constructor.
+        */
+        TPosDataSimulator();
+
+    public:  // New functions
+
+        /**
+        * Computes a new position..
+        *
+        * @param aPosition reference to a position pointer.
+        * @param aRequestStartTime the request start-time
+        * @param aLastRequestTime the last request time
+        *
+        * @return KErrNone if the new position computed successfully,
+        *         otherwise another of the system-wide error codes.
+        */
+        TInt ComputeNewPositionL(
+        /* OUT    */    TPosition&  aPosition,
+        /* IN     */    const TTime& aRequestStartTime,
+        /* IN     */    const TTime& aLastRequestTime
+        );
+
+        /**
+        * Parses and creates a position object.
+        *
+        * @param aPosition reference to a position pointer. This
+        *                  pointer must be in scope until the request
+        *                  has completed.
+        * @param aDataArray an array containing simulation data
+        *
+        */
+        void ParseAndCreatePosObjectL(
+        /* OUT */   TPosition&  aPosition,
+        /* IN  */   const CDesC8Array* aDataArray
+        );
+
+        /**
+        * Computes a delay based on the request start time, min TTF and max TTF.
+        *
+        * @param aRequstStartTime the request start time.
+        *
+        * @return time to wait in microseconds.
+        */
+        TTimeIntervalMicroSeconds TimeToWait(
+        /* IN */ const TTime& aRequestStartTime
+        );
+
+        /**
+        * Checks if the request should fail or not.
+        *
+        * @param aNumberOfRequests the number of requests received so far.
+        * @return KErrNone if function executed successfully,
+        * KErrGeneral otherwise.
+        */
+        TInt FailThisRequest(
+        /* IN */ TInt aNumberOfRequests
+        );
+
+        /**
+        * Computes the power-up time.
+        * @return TTimeIntervalMicroSeconds The powerup time.
+        */
+        TTimeIntervalMicroSeconds PowerupTime();
+
+    private: // New functions
+
+        /**
+         * Calculates a random error.
+         *
+         * @return the calculated random error
+         */
+        TReal GetRandomError();
+
+        /**
+         * Adds random error to latitude, longitude, and altitude.
+         */
+        void ComputeNewErrorForLatLonAltL(
+        /* IN */   TReal& aFromLatitude,
+        /* IN */   TReal& aFromLongitude,
+        /* OUT */   TReal& aToLatitude,
+        /* OUT */   TReal& aToLongitude
+        );
+
+        /**
+         * Converts a descriptor to an int.
+         *
+         * @param  the descriptor to convert
+         * @return the TInt
+         */
+        TInt DesToIntL(const TDesC8& aDes);
+
+        /**
+         * Converts a descriptor to a real number.
+         *
+         * @param  aDes the descriptor to convert
+         * @return the real number
+         */
+        TReal DesToRealL(const TDesC8& aDes);
+
+        /**
+         * Converts a descriptor to a real 32 bit number.
+         *
+         * @param  aDes the descriptor to convert
+         * @return the real 32 bit number
+         */
+        TReal32 DesToFloatL(const TDesC8& aDes);
+
+        /**
+         * Checks if a int value is negative. If the value is
+         * negative the function will leave.
+         *
+         * @param  aDes the descriptor to check
+         */
+        void LeaveIfNegativeIntL(const TDesC8& aDes);
+
+        /**
+         * Checks if a real value is negative. If the value is
+         * negative the function will leave.
+         *
+         * @param  aDes the descriptor to check
+         */
+        void LeaveIfNegativeRealL(const TDesC8& aDes);
+
+        /**
+         * Checks whether the supplied latitude/longitude is correct.
+         * The latitude should be between -aMinMaxValue and aMinMaxValue
+         *
+         * @param  aDes the descriptor to check
+         */
+        void CheckLatLonBoundariesL(const TDesC8& aDes, TReal aMinMaxValue);
+
+        /**
+         * Checks whether the supplied lexer is End of Stream or not.
+         *
+         * @param  aLexer the lexer to check
+         */
+        void CheckEosL(TLex8& aLexer);
+
+        /**
+         * Checks whether the supplied course is correct.
+         * The latitude should be between 0 and 360
+         *
+         * @param  aDes the descriptor to check
+         */
+        void CheckCourseBoundariesL(const TDesC8& aDes);
+
+        /**
+         * Checks if the argument is a value between -1 and +1.
+         *
+         * @param aCosArg the argument of the arccos function
+         */
+        void ModifyCosArgIfNeeded(TReal& aCosArg);
+
+        /**
+         * Checks that the longitude is between 0 and 360.
+         *
+         * @param aLong The longitude to check
+         */
+        void LongitudeBoundsCheck(TReal& aLong);
+
+    private:
+        TReal32             iHAcc;
+        TReal32             iVAcc;
+
+        TReal               iLonErrorRadius;
+        TReal               iLatErrorRadius;
+        TReal               iErrorAngle;
+        TReal32             iSpeed;
+        TReal32             iTrueCourse;
+
+        TReal               iOrigLatitude;
+        TReal               iOrigLongitude;
+        TReal               iLatitude;
+        TReal               iLongitude;
+
+        TReal32             iAltError;
+
+        TInt                iPowerupTime;
+        TBool               iRandomMode;
+        TInt                iTTFMin;
+        TInt                iTTFMax;
+        TInt                iFailFrequency;
+        TInt                iRandomTTF;
+        TInt64              iSeed;
+    };
+
+#endif      // TPOSDATASIMULATOR_H
+
+// End of File