Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 740 → Rev 741

/tags/V2.14a/gpspos.h
0,0 → 1,48
#ifndef _GPS_POS_H
#define _GPS_POS_H
 
#define INVALID 0x00
#define NEWDATA 0x01
#define PROCESSED 0x02
#define SIMULATION 0x03
 
typedef struct
{
s32 Longitude; // in 1E-7 deg
s32 Latitude; // in 1E-7 deg
s32 Altitude; // in mm
u8 Status; // validity of data
} __attribute__((packed)) GPS_Pos_t;
 
typedef struct
{
u8 Status; // invalid, newdata, processed
s32 North; // in cm deviation from target
s32 East; // in cm deviation from target
s32 Bearing; // in deg to target
s32 Distance_cm; // in cm to target
} __attribute__((packed)) GPS_Pos_Deviation_t;
 
/*
// transform the integer 1E-7 deg into float radians
float GPSPos_ToRadians(s32 deg);
// transform the integer 1E-7 deg into float deg
float GPSPos_ToDeg(s32 deg);
*/
// clear GPS position data
u8 GPSPos_Clear(GPS_Pos_t* pGPSPos);
// copy GPS position from source position to target position
u8 GPSPos_Copy(GPS_Pos_t* pGPSPosSrc, GPS_Pos_t* pGPSPosTgt);
// calculate the deviation from the source position to the target position
u8 GPSPos_Deviation(GPS_Pos_t* pReferencePos, GPS_Pos_t* pTargetPos, GPS_Pos_Deviation_t* pDeviation);
// clear position deviation
u8 GPSPos_Deviation_Clear(GPS_Pos_Deviation_t* pDeviation);
// Move the gps position according to north and east shift in cm
u8 GPSPos_ShiftCartesian(GPS_Pos_t* pGPSPos, s32 NorthShift, s32 EastShift);
// Move the gps position according to the direction of bearing in deg by the given distance in cm
u8 GPSPos_ShiftGeodetic(GPS_Pos_t* pGPSPos, s32 Bearing, s32 Distance);
// Move Pos so that distance to ReferencePos is limited to MaxDistance in cm
// returns 1 if Pos has been moved to fit the limit
u8 GPSPos_CatchDistance(GPS_Pos_t* pPos, GPS_Pos_t* pReferencePos, s32 MaxDistance);
 
#endif //_GPS_POS_H