32 #ifndef __OEM7_MESSAGES_H_ 33 #define __OEM7_MESSAGES_H_ 38 #define ASSERT_MSG "Consult Oem7 manual" 47 static_assert(
sizeof(oem7_char_t) == 1,
ASSERT_MSG);
48 static_assert(
sizeof(
double) == 8,
ASSERT_MSG);
52 Oem7MessageCommonHeaderMem
58 uint8_t message_length;
69 uint8_t header_length;
73 uint16_t message_length;
78 int32_t gps_milliseconds;
79 uint32_t recevier_status;
81 uint16_t recevier_version;
85 Oem7MessgeShortHeaderMem
91 uint8_t message_length;
94 int32_t gps_milliseconds;
101 oem7_enum_t sol_stat;
102 oem7_enum_t pos_type;
107 oem7_enum_t datum_id;
111 oem7_char_t stn_id[4];
116 uint8_t num_sol_l1_svs;
117 uint8_t num_sol_multi_svs;
119 oem7_hex_t ext_sol_stat;
120 uint8_t galileo_beidou_sig_mask;
121 uint8_t gps_glonass_sig_mask;
123 static_assert(
sizeof(BESTPOSMem) == 72,
ASSERT_MSG);
138 static_assert(
sizeof(BESTVELMem) == 44,
ASSERT_MSG);
149 double north_velocity;
150 double east_velocity;
157 static_assert(
sizeof(INSPVASmem) == 88,
ASSERT_MSG);
162 uint32_t imu_data_count;
167 double longitudinal_acc;
172 static_assert(
sizeof(CORRIMUSMem) == 60,
ASSERT_MSG);
183 double longitudinal_acc;
186 static_assert(
sizeof(IMURATECORRIMUSMem) == 60,
ASSERT_MSG);
191 float latitude_stdev;
192 float longitude_stdev;
194 float north_velocity_stdev;
195 float east_velocity_stdev;
196 float up_velocity_stdev;
200 uint32_t ext_sol_status;
201 uint16_t time_since_last_update;
206 static_assert(
sizeof(INSSTDEVMem) == 52,
ASSERT_MSG);
212 oem7_enum_t imu_type;
214 uint8_t initial_alignment_velocity;
215 uint16_t heave_window;
217 oem7_hex_t enabled_updates[4];
218 oem7_enum_t alignment_mode;
219 oem7_enum_t relative_ins_output_frame;
220 oem7_bool_t relative_ins_output_direction;
221 oem7_hex_t ins_receiver_status[4];
222 uint8_t ins_seed_enabled;
223 uint8_t ins_seed_validation;
232 static_assert(
sizeof(INSCONFIG_FixedMem) == 60,
ASSERT_MSG);
235 INSCONFIG_TranslationMem
237 uint32_t translation;
245 uint32_t translation_source;
250 INSCONFIG_RotationMem
257 float x_rotation_stdev;
258 float y_rotation_stdev;
259 float z_rotation_stdev;
260 uint32_t rotation_source;
267 oem7_enum_t ins_status;
268 oem7_enum_t pos_type;
273 double north_velocity;
274 double east_velocity;
279 float latitude_stdev;
280 float longitude_stdev;
282 float north_velocity_stdev;
283 float east_velocity_stdev;
284 float up_velocity_stdev;
288 uint32_t extended_status;
289 uint16_t time_since_update;
291 static_assert(
sizeof(INSPVAXMem) == 126,
ASSERT_MSG);
296 oem7_enum_t sol_status;
297 oem7_enum_t pos_type;
304 oem7_char_t rover_stn_id[4];
305 oem7_char_t master_stn_id[4];
306 uint8_t num_sv_tracked;
307 uint8_t num_sv_in_sol;
309 uint8_t num_sv_multi;
311 uint8_t ext_sol_status;
312 uint8_t galileo_beidou_sig_mask;
313 uint8_t gps_glonass_sig_mask;
315 static_assert(
sizeof(HEADING2Mem) == 48,
ASSERT_MSG);
320 oem7_enum_t sol_stat;
321 oem7_enum_t pos_type;
322 uint32_t lon_zone_number;
323 uint32_t lat_zone_letter;
329 float northing_stddev;
330 float easting_stddev;
337 uint8_t num_sol_ggl1_svs;
338 uint8_t num_sol_multi_svs;
340 uint8_t ext_sol_stat;
341 uint8_t galileo_beidou_sig_mask;
342 uint8_t gps_glonass_sig_mask;
344 static_assert(
sizeof(BESTUTMMem) == 80,
ASSERT_MSG);
350 uint32_t num_status_codes;
352 uint32_t rxstat_pri_mask;
353 uint32_t rxstat_set_mask;
354 uint32_t rxstat_clr_mask;
356 uint32_t aux1_stat_pri;
357 uint32_t aux1_stat_set;
358 uint32_t aux1_stat_clr;
360 uint32_t aux2_stat_pri;
361 uint32_t aux2_stat_set;
362 uint32_t aux2_stat_clr;
364 uint32_t aux3_stat_pri;
365 uint32_t aux3_stat_set;
366 uint32_t aux3_stat_clr;
368 uint32_t aux4_stat_pri;
369 uint32_t aux4_stat_set;
370 uint32_t aux4_stat_clr;
372 static_assert(
sizeof(RXSTATUSMem) == 88,
ASSERT_MSG);
378 uint32_t clock_status;
390 static_assert(
sizeof(TIMEMem) == 44,
ASSERT_MSG);
401 static_assert(
sizeof(PSRDOP2_FixedMem) == 16,
ASSERT_MSG);
const std::size_t OEM7_BINARY_MSG_SHORT_HDR_LEN
struct __attribute__((packed)) Oem7MessageCommonHeaderMem
TF2SIMD_FORCE_INLINE tf2Scalar length(const Quaternion &q)
const std::size_t OEM7_BINARY_MSG_HDR_LEN