Subversion Repositories NaviCtrl

Rev

Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 ingob 1
#ifndef __GPSUART_H
2
#define __GPSUART_H
3
 
4
struct str_ubx_nav_sol
5
{
6
    u16  Header;                  // 0xB5  0x62
7
        u16  ID;                          // 0x01  0x06
8
        u16  Length;         // 58 Bytes (+ Header - ohne ChkSum)       Total: 60 Bytes
9
  // ----- start of data ----- 
10
    u32  GPS_time;      
11
    s32  Time2;
12
    s16  GPS_week;
13
    u8   Nav_mode;        // 0x00=no fix, 0x03=3d fix
14
    u8   Flags;           // 0x01=GPS_ok
15
    s32  X_Pos;           // in cm  (ECEF frame)
16
    s32  Y_Pos;
17
    s32  Z_Pos;
18
    u32  Pos_Accuracy;
19
    s32  X_Speed;           // in cm/s  
20
    s32  Y_Speed;
21
    s32  Z_Speed;
22
    u32  Speed_Accuracy;
23
        u16  PDOP;                              // Scaling: 0.01
24
        u8   Reserved1;
25
        u8   Number_SV;
26
        u32  Reserved2;
27
  // ------ end of data -------
28
        u8   CK_A;
29
    u8   CK_B;
30
} __attribute__((packed));
31
 
32
 
33
struct str_ubx_nav_velned
34
{
35
    u16  Header;                  // 0xB5  0x62
36
        u16  ID;                          // 0x01  0x12
37
        u16  Length;          // 42 Bytes (+ Header  - ohne ChkSum) Total: 44 Bytes
38
  // ----- start of data ----- 
39
        u32  GPS_time;                 
40
        s32      N_Speed;              
41
        s32      E_Speed;              
42
        s32      DownSpeed;    
43
        u32      Speed3D;              
44
        u32      GroundSpeed;  
45
        s32      Heading;          
46
        u32      SpeedAccuracy;
47
        u32      HeadingAccuracy;
48
  // ------ end of data -------
49
        u8   CK_A;
50
    u8   CK_B;
51
} __attribute__((packed));
52
 
53
struct str_ubx_nav_posllh
54
{
55
    u16  Header;                  // 0xB5  0x62
56
        u16  ID;                          // 0x01  0x02
57
        u16  Length;          // 42 Bytes (+ Header  - ohne ChkSum) Total: 44 Bytes
58
  // ----- start of data ----- 
59
    u32  GPS_time;             
60
        s32      Longitude;       // 1e-07 deg Longitude
61
        s32      Latitude;        // 1e-07 deg Latitude
62
    s32  Height;          // mm Height
63
        s32      HeightSL;        // mm Height above mean sea level
64
    u32  HorizontalAccuracy; // mm Horizontal Accuracy Estimate
65
    u32  VerticalAccuracy;   // mm Vertical Accuracy Estimate
66
  // ------ end of data -------
67
        u8   CK_A;
68
    u8   CK_B;
69
} __attribute__((packed));
70
 
71
struct str_ubx_nav_posutm
72
{
73
    u16  Header;                  // 0xB5  0x62
74
        u16  ID;                          // 0x01  0x08
75
        u16  Length;          // 18 Bytes (+ Header  - ohne ChkSum) 
76
  // ----- start of data ----- 
77
        u32  GPS_time;                 
78
        s32      East;                        // in cm                
79
        s32      North;                           // in cm
80
        s32      Altitude;                // in cm
81
        s16      UTM_ZoneNumber;               
82
        s16      HemisphereSector;        // 0 = North, 1 = South
83
  // ------ end of data -------
84
        u8   CK_A;
85
    u8   CK_B;
86
} __attribute__((packed));
87
 
88
 
89
struct str_gps_nav_data
90
{
91
        s32                     Longitude;             
92
        s32                     Latitude;              
93
        s32                     TargetLongitude;               
94
        s32                     TargetLatitude;                
95
        s32                     HomeLongitude;         
96
        s32                     HomeLatitude;          
97
        s32         North2Target;
98
        s32         East2Target;
99
        s32         Distance2Target;
100
        s32         Angle2Target;
101
        s32                     Height;
102
        s32                     HeightSL;              
103
        s32         DownSpeed; 
104
        u32                     GPS_time;
105
    u16         GPS_week;
106
        s32                     North;         
107
        s32                     East;          
108
        s32                     N_Speed;               
109
        s32                     E_Speed;        
110
        s32                     SpeedAccuracy; 
111
        u32                     HorizontalAccuracy;
112
        u32                     VerticalAccuracy;
113
    u8              Flags;           // 0x01=GPS_ok
114
        s32         DataPerSecond;
115
        s32         Altitude;
116
        u8          Used_Sat;
117
} __attribute__((packed));
118
 
119
 
120
#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)
121
 
122
// ----------------------------------------------------------------
123
extern u8 NewGPSDataAvail;
124
extern u8 NewPCTargetGPSPosition;
125
extern struct str_gps_nav_data   GPS_Data;
126
 
127
extern void GPS_UART0_Init (void);
128
 
129
#endif
130