Larus glider flight sensor system 3.9.2024
Software-In-The-Loop test and validation system
Loading...
Searching...
No Matches
GNSS.h
Go to the documentation of this file.
1/***********************************************************************/
25#ifndef DRIVER_GPS_H_
26#define DRIVER_GPS_H_
27
29#include "float3vector.h"
30#include "embedded_memory.h"
31
32extern int64_t FAT_time;
33
34extern bool GNSS_new_data_ready;
35extern bool D_GNSS_new_data_ready;
36
38typedef struct
39{
40 uint32_t iTOW; // time of week
47 uint8_t valid; // bits MSB -> LSB mag-decl tim-res time data
48 uint32_t tAcc; // timing accuracy
49 int32_t nano; // time fraction, signed
54 int32_t longitude; // 10^-7 deg
56 int32_t height_ellip; // WGS84 height / mm
57 int32_t height; // MSL height / mm
58 uint32_t hAcc; // horizontal accuracy / mm
59 uint32_t vAcc; // vertical accuracy / mm
60 int32_t velocity[3]; // NED velocity mm/s
61 uint32_t gSpeed; // Ground speed / mm/s
62 uint32_t gTrack; // track direction / 10^-5 deg
63 uint32_t sAcc; // speed accuracy mm/s
64 uint32_t headAcc; // heading accuracy 10^-5 deg
65 uint16_t pDOP; // 0.01 units
66 uint8_t reserved[14]; // useless
67} uBlox_pvt;
68
70typedef struct
71{
72 uint8_t version; // =0x01
73 uint8_t dummy; // reserved
74 uint16_t ref_ID; // ref station ID=0..4095
75 uint32_t TOW; // time of week
76 int32_t relPosN; // rel pos N / cm
77 int32_t relPosE; // rel pos E / cm
78 int32_t relPosD; // rel pos D / cm
79 int32_t relPoslength; // rel pos length / cm
80 int32_t relPosheading;// rel pos heading / 1E⁻5 degrees
81 uint32_t dummy1; // reserved
82 int8_t relPosHP_N; // high precision north component / 0.1mm
83 int8_t relPosHP_E; // high precision east component / 0.1mm
84 int8_t relPosHP_D; // high precision down component / 0.1mm
85 int8_t relPosHP_len; // high precision length / 0.1mm
86 uint32_t accN; // accuracy north / 0.1mm
87 uint32_t accE; // accuracy north / 0.1mm
88 uint32_t accD; // accuracy north / 0.1mm
89 uint32_t acc_len; // accuracy length / 0.1mm
90 uint32_t acc_heading; // accuracy heading / 1e-5 degrees
91 uint32_t dummy2; // reserved
92 uint32_t flags; // 0b1100110111 if optimal result
94
97
98#define SAT_FIX_NONE 0
99#define SAT_FIX 1 // bits within sat_fix
100#define SAT_HEADING 2
101
133
136{
137public:
139 GNSS_Result update( const uint8_t * data);
142
143 void reset_reference( void)
144 {
145 fix_type = FIX_none;
146 latitude_reference = 0; // will be updated on next fix
147 }
148
150 {
151 return fix_type;
152 }
153 uint8_t get_num_SV( void) const
154 {
155 return num_SV;
156 }
158 {
159 return FAT_time;
160 }
162 {
163 coordinates.sat_fix_type = SAT_FIX_NONE;
164 }
165
166private:
167 coordinates_t &coordinates;
168 FIX_TYPE fix_type;
169 inline bool checkSumCheck ( const uint8_t *buffer, uint8_t length)
170 {
171 if( (buffer[2] != length) && (buffer[3] !=0))
172 return false;
173
174 //Checksum A and B
175 uint8_t CK_A = 0, CK_B = 0;
176 for (int i = 0; i < (length + 4); i++)
177 {
178 CK_A = CK_A + buffer[i];
179 CK_B = CK_B + CK_A;
180 }
181 return ((CK_A == buffer[length + 4]) && (CK_B == buffer[length + 5]));
182 }
183
184 uint8_t num_SV;
185 int32_t latitude_reference;
186 int32_t longitude_reference;
187 float latitude_scale;
188 unsigned old_timestamp_ms;
189};
190
191extern GNSS_type GNSS;
192
193#endif /* DRIVER_GPS_H_ */
bool D_GNSS_new_data_ready
bool GNSS_new_data_ready
GNSS_Result
Definition GNSS.h:96
@ GNSS_HAVE_FIX
Definition GNSS.h:96
@ GNSS_ERROR
Definition GNSS.h:96
@ GNSS_NO_FIX
Definition GNSS.h:96
#define SAT_FIX_NONE
Definition GNSS.h:98
FIX_TYPE
Definition GNSS.h:95
@ FIX_none
Definition GNSS.h:95
@ FIX_2d
Definition GNSS.h:95
@ FIX_dead
Definition GNSS.h:95
@ FIX_3d
Definition GNSS.h:95
int64_t FAT_time
DOS FAT time for file usage.
GNSS_type GNSS
Organizing the data transfer from a uBlox-GNSS receiver.
Definition GNSS.h:136
GNSS_type(coordinates_t &coo)
int64_t get_FAT_time(void) const
Definition GNSS.h:157
GNSS_Result update_delta(const uint8_t *data)
uint8_t get_num_SV(void) const
Definition GNSS.h:153
GNSS_Result update(const uint8_t *data)
void clear_sat_fix_type(void)
Definition GNSS.h:161
void reset_reference(void)
Definition GNSS.h:143
FIX_TYPE get_fix_type(void) const
Definition GNSS.h:149
GNSS_Result update_combined(uint8_t *data)
mathematical vector of arbitrary type and size
Definition vector.h:40
settings to allow compiling embedded software on a PC target
Contains all important data from the GNSS.
Definition GNSS.h:104
float heading_motion
ground track in degrees
Definition GNSS.h:108
float speed_motion
ground speed m/s
Definition GNSS.h:109
uint8_t second
Definition GNSS.h:122
uint8_t day
Definition GNSS.h:118
uint8_t hour
Definition GNSS.h:119
float3vector position
NED / meters.
Definition GNSS.h:105
uint8_t SATS_number
number of tracked satellites
Definition GNSS.h:123
float3vector relPosNED
vector from primary to secondary GNSS antenna
Definition GNSS.h:110
uint16_t dummy
Definition GNSS.h:131
float speed_acc
speed accuracy m/s
Definition GNSS.h:112
float3vector velocity
NED / m/s.
Definition GNSS.h:106
float3vector acceleration
NED / m/s^2 (from GNSS velocity derivative)
Definition GNSS.h:107
float relPosHeading
heading from D-GNSS
Definition GNSS.h:111
uint8_t year
Definition GNSS.h:116
double latitude
latitude / degrees
Definition GNSS.h:113
int16_t geo_sep_dm
(WGS ellipsoid height - elevation MSL) in 0.1m units
Definition GNSS.h:130
uint8_t month
Definition GNSS.h:117
double longitude
longitude / degrees
Definition GNSS.h:114
uint8_t sat_fix_type
bit 0: SAT FIX, bit 1: SAT HEADING availale
Definition GNSS.h:124
uint8_t minute
Definition GNSS.h:121
binary data stream coming from the Ublox GNSS receiver
Definition GNSS.h:39
uint32_t sAcc
Definition GNSS.h:63
int32_t height
Definition GNSS.h:57
uint8_t reserved1
Definition GNSS.h:52
uint8_t num_SV
Definition GNSS.h:53
uint8_t fix_type
Definition GNSS.h:50
uint32_t headAcc
Definition GNSS.h:64
uint32_t iTOW
Definition GNSS.h:40
int8_t minute
Definition GNSS.h:45
int32_t nano
Definition GNSS.h:49
uint32_t hAcc
Definition GNSS.h:58
int8_t hour
Definition GNSS.h:44
uint32_t vAcc
Definition GNSS.h:59
int32_t latitude
Definition GNSS.h:55
uint16_t year
Definition GNSS.h:41
uint32_t gSpeed
Definition GNSS.h:61
int32_t longitude
Definition GNSS.h:54
int32_t height_ellip
Definition GNSS.h:56
uint32_t gTrack
Definition GNSS.h:62
uint8_t valid
Definition GNSS.h:47
uint8_t day
Definition GNSS.h:43
uint8_t fix_flags
Definition GNSS.h:51
int8_t second
Definition GNSS.h:46
uint32_t tAcc
Definition GNSS.h:48
uint16_t pDOP
Definition GNSS.h:65
uint8_t month
Definition GNSS.h:42
binary data stream coming from the Ublox D-GNSS receiver
Definition GNSS.h:71
uint32_t acc_heading
Definition GNSS.h:90
uint32_t flags
Definition GNSS.h:92
int8_t relPosHP_E
Definition GNSS.h:83
uint32_t dummy2
Definition GNSS.h:91
int32_t relPosN
Definition GNSS.h:76
uint8_t version
Definition GNSS.h:72
uint8_t dummy
Definition GNSS.h:73
uint32_t acc_len
Definition GNSS.h:89
int8_t relPosHP_N
Definition GNSS.h:82
uint16_t ref_ID
Definition GNSS.h:74
uint32_t TOW
Definition GNSS.h:75
uint32_t accN
Definition GNSS.h:86
uint32_t dummy1
Definition GNSS.h:81
int8_t relPosHP_D
Definition GNSS.h:84
int32_t relPoslength
Definition GNSS.h:79
int32_t relPosD
Definition GNSS.h:78
int32_t relPosheading
Definition GNSS.h:80
int8_t relPosHP_len
Definition GNSS.h:85
uint32_t accE
Definition GNSS.h:87
int32_t relPosE
Definition GNSS.h:77
uint32_t accD
Definition GNSS.h:88
collection of system tuning parameters