00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __LBSPOSITION_H__
00022 #define __LBSPOSITION_H__
00023
00024 #include <e32std.h>
00025
00035 typedef TUid TPositionDatumId;
00036
00040 const TPositionDatumId KPositionDatumWgs84 = {0x101FAA29};
00041
00042
00047 class TCoordinate
00048 {
00049 public:
00050
00055 IMPORT_C TCoordinate();
00056
00064 IMPORT_C TCoordinate(const TReal64& aLatitude,
00065 const TReal64& aLongitude);
00066
00075 IMPORT_C TCoordinate(const TReal64& aLatitude,
00076 const TReal64& aLongitude,
00077 TReal32 aAltitude);
00078
00085 IMPORT_C void SetCoordinate(const TReal64& aLatitude,
00086 const TReal64& aLongitude);
00087
00094 IMPORT_C void SetCoordinate(const TReal64& aLatitude,
00095 const TReal64& aLongitude,
00096 TReal32 aAltitude);
00097
00102 IMPORT_C void SetDatum(TPositionDatumId aDatum);
00103
00108 IMPORT_C TReal64 Latitude() const;
00109
00114 IMPORT_C TReal64 Longitude() const;
00115
00120 IMPORT_C TReal32 Altitude() const;
00121
00126 IMPORT_C TPositionDatumId Datum() const;
00127
00128
00140 IMPORT_C TInt Distance(const TCoordinate& aCoordinate,
00141 TReal32& aDistance) const;
00142
00157 IMPORT_C TInt BearingTo(const TCoordinate& aTargetCoordinate,
00158 TReal32& aBearing) const;
00159
00171 IMPORT_C TInt Move(TReal32 aBearing, TReal32 aDistance);
00172
00173 private:
00177 void NormalizeCoordinate();
00178
00179 protected:
00181 TReal64 iLatitude;
00183 TReal64 iLongitude;
00185 TReal32 iAltitude;
00187 TPositionDatumId iDatum;
00189 TUint8 iReserved[4];
00190 };
00191
00192
00199 class TLocality : public TCoordinate
00200 {
00201 public:
00206 IMPORT_C TLocality();
00207
00218 IMPORT_C TLocality(const TCoordinate& aCoordinate,
00219 TReal32 aHorizontalAccuracy);
00220
00233 IMPORT_C TLocality(const TCoordinate& aCoordinate,
00234 TReal32 aHorizontalAccuracy,
00235 TReal32 aVerticalAccuracy);
00236
00244 IMPORT_C void SetHorizontalAccuracy(TReal32 aHorizontalAccuracy);
00245
00253 IMPORT_C void SetVerticalAccuracy(TReal32 aVerticalAccuracy);
00254
00263 IMPORT_C void SetAccuracy(TReal32 aHorizontalAccuracy,
00264 TReal32 aVerticalAccuracy);
00265
00270 IMPORT_C TReal32 HorizontalAccuracy() const;
00271
00276 IMPORT_C TReal32 VerticalAccuracy() const;
00277
00289 IMPORT_C TInt Distance(const TCoordinate& aCoordinate,
00290 TReal32& aDistance) const;
00291
00308 IMPORT_C TInt Distance(const TLocality& aLocality,
00309 TReal32& aDistance,
00310 TReal32& aDelta) const;
00311
00326 IMPORT_C TInt BearingTo(const TCoordinate& aTargetCoordinate,
00327 TReal32& aBearing) const;
00328
00351 IMPORT_C TInt BearingTo(const TLocality& aTargetLocality,
00352 TReal32& aBearing,
00353 TReal32& aDelta) const;
00354
00355 protected:
00357 TReal32 iHorizontalAccuracy;
00359 TReal32 iVerticalAccuracy;
00360
00361 private:
00363 TUint8 iReserved[16];
00364 };
00365
00366
00380 class TPosition : public TLocality
00381 {
00382 public:
00387 IMPORT_C TPosition();
00388
00396 IMPORT_C TPosition(const TLocality& aLocality,
00397 TTime aTime);
00398
00403 IMPORT_C void SetTime(TTime aTime);
00404
00409 IMPORT_C void SetCurrentTime();
00410
00416 IMPORT_C TTime Time() const;
00417
00433 IMPORT_C TInt Speed(const TPosition& aPosition,
00434 TReal32& aSpeed) const;
00455 IMPORT_C TInt Speed(const TPosition& aPosition,
00456 TReal32& aSpeed,
00457 TReal32& aDelta) const;
00458
00459 protected:
00462 TTime iTime;
00463
00464 private:
00466 TUint8 iReserved[16];
00467 };
00468
00469
00476 class TCourse
00477 {
00478 public:
00483 IMPORT_C TCourse();
00484
00489 IMPORT_C TReal32 Speed() const;
00490
00495 IMPORT_C TReal32 Heading() const;
00496
00501 IMPORT_C TReal32 Course() const;
00502
00507 IMPORT_C TReal32 SpeedAccuracy() const;
00508
00513 IMPORT_C TReal32 HeadingAccuracy() const;
00514
00519 IMPORT_C TReal32 CourseAccuracy() const;
00520
00525 IMPORT_C void SetSpeed(TReal32 aSpeed);
00526
00531 IMPORT_C void SetHeading(TReal32 aHeading);
00532
00538 IMPORT_C void SetSpeedAccuracy(TReal32 aSpeedAccuracy);
00539
00545 IMPORT_C void SetHeadingAccuracy(TReal32 aHeadingAccuracy);
00546
00551 IMPORT_C void SetCourse(TReal32 aCourse);
00552
00558 IMPORT_C void SetCourseAccuracy(TReal32 aCourseAccuracy);
00559
00560 protected:
00562 TReal32 iSpeed;
00564 TReal32 iHeading;
00566 TReal32 iSpeedAccuracy;
00568 TReal32 iHeadingAccuracy;
00570 TReal32 iCourse;
00572 TReal32 iCourseAccuracy;
00573
00574 private:
00576 TUint8 iReserved[16];
00577 };
00578
00579
00580 #endif