Subversion Repositories NaviCtrl

Rev

Rev 247 | Rev 322 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 247 Rev 263
1
#ifndef __UBX_H
1
#ifndef __UBX_H
2
#define __UBX_H
2
#define __UBX_H
3
#include "buffer.h"
3
#include "buffer.h"
4
 
4
 
5
// Satfix types for GPSData.SatFix
5
// Satfix types for GPSData.SatFix
6
#define SATFIX_NONE                             0x00
6
#define SATFIX_NONE                             0x00
7
#define SATFIX_DEADRECKOING             0x01
7
#define SATFIX_DEADRECKOING             0x01
8
#define SATFIX_2D                               0x02
8
#define SATFIX_2D                               0x02
9
#define SATFIX_3D                               0x03
9
#define SATFIX_3D                               0x03
10
#define SATFIX_GPS_DEADRECKOING 0x04
10
#define SATFIX_GPS_DEADRECKOING 0x04
11
#define SATFIX_TIMEONLY                 0x05
11
#define SATFIX_TIMEONLY                 0x05
12
// Flags for interpretation of the GPSData.Flags
12
// Flags for interpretation of the GPSData.Flags
13
#define FLAG_GPSFIXOK                   0x01 // (i.e. within DOP & ACC Masks)
13
#define FLAG_GPSFIXOK                   0x01 // (i.e. within DOP & ACC Masks)
14
#define FLAG_DIFFSOLN                   0x02 // (is DGPS used)
14
#define FLAG_DIFFSOLN                   0x02 // (is DGPS used)
15
#define FLAG_WKNSET                             0x04 // (is Week Number valid)
15
#define FLAG_WKNSET                             0x04 // (is Week Number valid)
16
#define FLAG_TOWSET                             0x08 // (is Time of Week valid)
16
#define FLAG_TOWSET                             0x08 // (is Time of Week valid)
17
 
17
 
18
#define INVALID         0x00
18
#define INVALID         0x00
19
#define NEWDATA         0x01
19
#define NEWDATA         0x01
20
#define PROCESSED       0x02
20
#define PROCESSED       0x02
21
 
21
 
22
typedef struct
22
typedef struct
23
{
23
{
24
        s32 Longitude;  // in 1E-7 deg
24
        s32 Longitude;  // in 1E-7 deg
25
        s32 Latitude;   // in 1E-7 deg
25
        s32 Latitude;   // in 1E-7 deg
26
        s32 Altitude;   // in mm
26
        s32 Altitude;   // in mm
27
        u8 Status;// validity of data
27
        u8 Status;// validity of data
28
} __attribute__((packed)) GPS_Pos_t;
28
} __attribute__((packed)) GPS_Pos_t;
29
 
29
 
30
 
30
 
31
typedef struct
31
typedef struct
32
{
32
{
33
        u16                     MsgCycleTime;   // time in ms since last gps data
33
        u16                     MsgCycleTime;   // time in ms since last gps data
34
        GPS_Pos_t       Position;       // Lat/Lon/Alt
34
        GPS_Pos_t       Position;       // Lat/Lon/Alt
35
        u8                      Flags;                  // Status Flags
35
        u8                      Flags;                  // Status Flags
36
        u8                      NumOfSats;              // number of satelites
36
        u8                      NumOfSats;              // number of satelites
37
        u8                      SatFix;                 // type of satfix
37
        u8                      SatFix;                 // type of satfix
38
        u32             Position_Accuracy;      // in cm 3d position accuracy
38
        u32             Position_Accuracy;      // in cm 3d position accuracy
39
        s32                     Speed_North;    // in cm/s
39
        s32                     Speed_North;    // in cm/s
40
        s32                     Speed_East;             // in cm/s
40
        s32                     Speed_East;             // in cm/s
41
        s32                     Speed_Top;              // in cm/s
41
        s32                     Speed_Top;              // in cm/s
42
        u32                     Speed_Ground;   // 2D ground speed in cm/s
42
        u32                     Speed_Ground;   // 2D ground speed in cm/s
43
        s32                     Heading;                // 1e-05 deg  Heading 2-D (current flight direction)
43
        s32                     Heading;                // 1e-05 deg  Heading 2-D (current flight direction)
44
        u32                     Speed_Accuracy; // in cm/s 3d velocity accuracy
44
        u32                     Speed_Accuracy; // in cm/s 3d velocity accuracy
45
        u8                      Status;                 // status of data
45
        u8                      Status;                 // status of data
46
} __attribute__((packed)) gps_data_t;
46
} __attribute__((packed)) gps_data_t;
47
 
47
 
48
// The data are valid if the GPSData.Status is NEWDATA or PROCESSED.
48
// The data are valid if the GPSData.Status is NEWDATA or PROCESSED.
49
// To achieve new data after reading the GPSData.Status should be set to PROCESSED.
49
// To achieve new data after reading the GPSData.Status should be set to PROCESSED.
50
extern gps_data_t  GPSData;
50
extern gps_data_t  GPSData;
51
 
51
 
52
 
52
 
53
#define UBX_CLASS_CFG   0x06
53
#define UBX_CLASS_CFG   0x06
54
#define UBX_CLASS_ACK   0x05
54
#define UBX_CLASS_ACK   0x05
55
 
55
 
56
typedef struct
56
typedef struct
57
{
57
{
58
        u8 Class;
58
        u8 Class;
59
        u8 Id;
59
        u8 Id;
60
        u16 Length;
60
        u16 Length;
61
}  __attribute__((packed)) ubxmsghdr_t;
61
}  __attribute__((packed)) ubxmsghdr_t;
-
 
62
 
62
 
63
#define UBX_MSG_DATA_SIZE 200
63
typedef struct
64
typedef struct
64
{
65
{
65
        u8 ClassMask;
66
        u8 ClassMask;
66
        u8 IdMask;
67
        u8 IdMask;
67
        ubxmsghdr_t Hdr;
68
        ubxmsghdr_t Hdr;
68
        u8 Data[100];
69
        u8 Data[UBX_MSG_DATA_SIZE];
69
        u8 Status;
70
        u8 Status;
70
} __attribute__((packed)) ubxmsg_t;
71
} __attribute__((packed)) ubxmsg_t;
71
// msg obj to reveive
72
// msg obj to reveive
72
// set Class and Id and correspoinding masks of a message that should be received
73
// set Class and Id and correspoinding masks of a message that should be received
73
extern volatile ubxmsg_t UbxMsg;
74
extern ubxmsg_t UbxMsg;
74
 
75
 
75
 
76
 
76
extern u32 UBX_Timeout;
77
extern u32 UBX_Timeout;
77
 
78
 
78
void UBX_Init(void);
79
void UBX_Init(void);
79
void UBX_RxParser(u8 c);
80
void UBX_RxParser(u8 c);
80
u8 UBX_CreateMsg(Buffer_t* pBuff, u8* pData, u16 Len);
81
u8 UBX_CreateMsg(Buffer_t* pBuff, u8* pData, u16 Len);
81
 
82
 
82
 
83
 
83
#endif // __UBX_H
84
#endif // __UBX_H
84
 
85