Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 22 → Rev 23

/tags/V0.1/GPSUart.h
0,0 → 1,130
#ifndef __GPSUART_H
#define __GPSUART_H
 
struct str_ubx_nav_sol
{
u16 Header; // 0xB5 0x62
u16 ID; // 0x01 0x06
u16 Length; // 58 Bytes (+ Header - ohne ChkSum) Total: 60 Bytes
// ----- start of data -----
u32 GPS_time;
s32 Time2;
s16 GPS_week;
u8 Nav_mode; // 0x00=no fix, 0x03=3d fix
u8 Flags; // 0x01=GPS_ok
s32 X_Pos; // in cm (ECEF frame)
s32 Y_Pos;
s32 Z_Pos;
u32 Pos_Accuracy;
s32 X_Speed; // in cm/s
s32 Y_Speed;
s32 Z_Speed;
u32 Speed_Accuracy;
u16 PDOP; // Scaling: 0.01
u8 Reserved1;
u8 Number_SV;
u32 Reserved2;
// ------ end of data -------
u8 CK_A;
u8 CK_B;
} __attribute__((packed));
 
 
struct str_ubx_nav_velned
{
u16 Header; // 0xB5 0x62
u16 ID; // 0x01 0x12
u16 Length; // 42 Bytes (+ Header - ohne ChkSum) Total: 44 Bytes
// ----- start of data -----
u32 GPS_time;
s32 N_Speed;
s32 E_Speed;
s32 DownSpeed;
u32 Speed3D;
u32 GroundSpeed;
s32 Heading;
u32 SpeedAccuracy;
u32 HeadingAccuracy;
// ------ end of data -------
u8 CK_A;
u8 CK_B;
} __attribute__((packed));
 
struct str_ubx_nav_posllh
{
u16 Header; // 0xB5 0x62
u16 ID; // 0x01 0x02
u16 Length; // 42 Bytes (+ Header - ohne ChkSum) Total: 44 Bytes
// ----- start of data -----
u32 GPS_time;
s32 Longitude; // 1e-07 deg Longitude
s32 Latitude; // 1e-07 deg Latitude
s32 Height; // mm Height
s32 HeightSL; // mm Height above mean sea level
u32 HorizontalAccuracy; // mm Horizontal Accuracy Estimate
u32 VerticalAccuracy; // mm Vertical Accuracy Estimate
// ------ end of data -------
u8 CK_A;
u8 CK_B;
} __attribute__((packed));
 
struct str_ubx_nav_posutm
{
u16 Header; // 0xB5 0x62
u16 ID; // 0x01 0x08
u16 Length; // 18 Bytes (+ Header - ohne ChkSum)
// ----- start of data -----
u32 GPS_time;
s32 East; // in cm
s32 North; // in cm
s32 Altitude; // in cm
s16 UTM_ZoneNumber;
s16 HemisphereSector; // 0 = North, 1 = South
// ------ end of data -------
u8 CK_A;
u8 CK_B;
} __attribute__((packed));
 
 
struct str_gps_nav_data
{
s32 Longitude;
s32 Latitude;
s32 TargetLongitude;
s32 TargetLatitude;
s32 HomeLongitude;
s32 HomeLatitude;
s32 North2Target;
s32 East2Target;
s32 Distance2Target;
s32 Angle2Target;
s32 Height;
s32 HeightSL;
s32 DownSpeed;
u32 GPS_time;
u16 GPS_week;
s32 North;
s32 East;
s32 N_Speed;
s32 E_Speed;
s32 SpeedAccuracy;
u32 HorizontalAccuracy;
u32 VerticalAccuracy;
u8 Flags; // 0x01=GPS_ok
s32 DataPerSecond;
s32 Altitude;
u8 Used_Sat;
} __attribute__((packed));
 
 
#define GPS_RX_SIZE (sizeof(struct str_ubx_nav_velned) + sizeof(struct str_ubx_nav_posutm) + sizeof(struct str_ubx_nav_sol) + sizeof(struct str_ubx_nav_posllh) + 10)
 
// ----------------------------------------------------------------
extern u8 NewGPSDataAvail;
extern u8 NewPCTargetGPSPosition;
extern struct str_gps_nav_data GPS_Data;
 
extern void GPS_UART0_Init (void);
 
#endif