0.2.0
Loading...
Searching...
No Matches
VectorNavTypes.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
13
14#pragma once
15
16#include <cstdint>
17#include <vector>
18#include <iostream>
19#include <fmt/format.h>
20#include <fmt/ostream.h>
21#include <vn/vector.h>
22#include <vn/matrix.h>
23#include <vn/types.h>
24
25namespace NAV::vendor::vectornav
26{
34{
35 public:
38 explicit TimeStatus(uint8_t status) : _status(status) {}
39
42 TimeStatus& operator=(const uint8_t& status)
43 {
44 _status = status;
45 return *this;
46 }
47
49 TimeStatus() = default;
50
52 [[nodiscard]] constexpr uint8_t& status()
53 {
54 return _status;
55 }
56
58 [[nodiscard]] constexpr uint8_t timeOk() const
59 {
60 return ((_status & (1U << 0U)) >> 0U);
61 }
63 [[nodiscard]] constexpr uint8_t dateOk() const
64 {
65 return ((_status & (1U << 1U)) >> 1U); // NOLINT
66 }
68 [[nodiscard]] constexpr uint8_t utcTimeValid() const
69 {
70 return ((_status & (1U << 2U)) >> 2U); // NOLINT
71 }
72
73 private:
75 uint8_t _status;
76};
77
79struct UTC
80{
81 int8_t year{};
82 uint8_t month{};
83 uint8_t day{};
84 uint8_t hour{};
85 uint8_t min{};
86 uint8_t sec{};
87 uint16_t ms{};
88};
89
101
104{
116 int8_t leapSeconds{};
117};
118
120struct DOP
121{
122 float gDop{};
123 float pDop{};
124 float tDop{};
125 float vDop{};
126 float hDop{};
127 float nDop{};
128 float eDop{};
129};
130
132enum class SatSys : uint8_t
133{
134 GPS = 0,
135 SBAS = 1,
136 Galileo = 2,
137 BeiDou = 3,
138 IMES = 4,
139 QZSS = 5,
140 GLONASS = 6,
141};
142
147std::ostream& operator<<(std::ostream& os, const SatSys& satSys);
148
156{
159 {
161 enum class Flags : uint8_t
162 {
163 None = 0,
164 Healthy = 1 << 0,
165 Almanac = 1 << 1,
166 Ephemeris = 1 << 2,
167 DifferentialCorrection = 1 << 3,
168 UsedForNavigation = 1 << 4,
169 AzimuthElevationValid = 1 << 5,
170 UsedForRTK = 1 << 6,
171 };
172
177 friend Flags operator|(Flags lhs, Flags rhs)
178 {
179 return Flags(int(lhs) | int(rhs));
180 }
181
194
196 SatInfoElement() = default;
197
206 SatInfoElement(uint8_t sys, uint8_t svId, uint8_t flags, uint8_t cno, uint8_t qi, int8_t el, int16_t az)
207 : sys(static_cast<SatSys>(sys)), svId(svId), flags(static_cast<Flags>(flags)), cno(cno), qi(static_cast<QualityIndicator>(qi)), el(el), az(az) {}
208
223 SatInfoElement(uint8_t sys, uint8_t svId,
224 uint8_t healthy, uint8_t almanac, uint8_t ephemeris, uint8_t differentialCorrection, uint8_t usedForNavigation, uint8_t azimuthElevationValid, uint8_t usedForRTK,
225 uint8_t cno, uint8_t qi, int8_t el, int16_t az)
226 : sys(static_cast<SatSys>(sys)), svId(svId), flags((healthy ? Flags::Healthy : Flags::None) | (almanac ? Flags::Almanac : Flags::None) | (ephemeris ? Flags::Ephemeris : Flags::None) | (differentialCorrection ? Flags::DifferentialCorrection : Flags::None) | (usedForNavigation ? Flags::UsedForNavigation : Flags::None) | (azimuthElevationValid ? Flags::AzimuthElevationValid : Flags::None) | (usedForRTK ? Flags::UsedForRTK : Flags::None)), cno(cno), qi(static_cast<QualityIndicator>(qi)), el(el), az(az) {}
227
229 uint8_t svId{};
231 uint8_t cno{};
233 int8_t el{};
234 int16_t az{};
235 };
236
238 uint8_t numSats{};
240 std::vector<SatInfoElement> satellites;
241};
242
252
255{
258 {
260 enum class Flags : uint16_t
261 {
262 None = 0,
263 Searching = 1 << 0,
264 Tracking = 1 << 1,
265 TimeValid = 1 << 2,
266 CodeLock = 1 << 3,
267 PhaseLock = 1 << 4,
268 PhaseHalfAmbiguity = 1 << 5,
269 PhaseHalfSub = 1 << 6,
270 PhaseSlip = 1 << 7,
271 PseudorangeSmoothed = 1 << 8,
272 };
273
278 friend Flags operator|(Flags lhs, Flags rhs)
279 {
280 return Flags(int(lhs) | int(rhs));
281 }
282
284 enum class Chan : uint8_t
285 {
286 P_Code = 0,
287 CA_Code = 1,
288 SemiCodeless = 2,
289 Y_Code = 3,
290 M_Code = 4,
291 Codeless = 5,
292 A_Chan = 6,
293 B_Chan = 7,
294 I_Chan = 8,
295 Q_Chan = 9,
296 M_Chan = 10,
297 L_Chan = 11,
298 BC_Chan = 12,
299 Z_Tracking = 13,
300 ABC = 14,
301 };
302
307 friend std::ostream& operator<<(std::ostream& os, const Chan& chan)
308 {
309 switch (chan)
310 {
311 case Chan::P_Code:
312 os << "P-Code";
313 break;
314 case Chan::CA_Code:
315 os << "C/A-Code or C-Chan";
316 break;
318 os << "Semi-codeless";
319 break;
320 case Chan::Y_Code:
321 os << "Y-Code";
322 break;
323 case Chan::M_Code:
324 os << "M-Code";
325 break;
326 case Chan::Codeless:
327 os << "Codeless";
328 break;
329 case Chan::A_Chan:
330 os << "A Chan";
331 break;
332 case Chan::B_Chan:
333 os << "B Chan";
334 break;
335 case Chan::I_Chan:
336 os << "I Chan";
337 break;
338 case Chan::Q_Chan:
339 os << "Q Chan";
340 break;
341 case Chan::M_Chan:
342 os << "M Chan or D Chan";
343 break;
344 case Chan::L_Chan:
345 os << "L Chan or P Chan";
346 break;
347 case Chan::BC_Chan:
348 os << "B+C Chan, I+Q Chan, M+L Chan or D+P Chan";
349 break;
350 case Chan::Z_Tracking:
351 os << "based on Z-tracking";
352 break;
353 case Chan::ABC:
354 os << "A+B+C";
355 break;
356 }
357 return os;
358 }
359
361 enum class Freq : uint8_t
362 {
363 RxChannel = 0,
364 L1 = 1,
365 L2 = 2,
366 L5 = 3,
367 E6 = 4,
368 E5b = 5,
369 E5a = 6,
370 };
371
376 friend std::ostream& operator<<(std::ostream& os, const Freq& freq)
377 {
378 switch (freq)
379 {
380 case Freq::RxChannel:
381 os << "Rx Channel";
382 break;
383 case Freq::L1:
384 os << "L1, G1, E2-L1-E1 or B1";
385 break;
386 case Freq::L2:
387 os << "L2 or G2";
388 break;
389 case Freq::L5:
390 os << "L5 or E5a";
391 break;
392 case Freq::E6:
393 os << "E6, LEX or B3";
394 break;
395 case Freq::E5b:
396 os << "E5b or B2";
397 break;
398 case Freq::E5a:
399 os << "E5a+b";
400 break;
401 }
402 return os;
403 }
404
406 SatRawElement() = default;
407
419 SatRawElement(uint8_t sys, uint8_t svId, uint8_t freq, uint8_t chan, int8_t slot, uint8_t cno, uint16_t flags, double pr, double cp, float dp)
420 : sys(static_cast<SatSys>(sys)), svId(svId), freq(static_cast<Freq>(freq)), chan(static_cast<Chan>(chan)), slot(slot), cno(cno), flags(static_cast<Flags>(flags)), pr(pr), cp(cp), dp(dp) {}
421
441 SatRawElement(uint8_t sys, uint8_t svId, uint8_t freq, uint8_t chan, int8_t slot, uint8_t cno,
442 uint8_t searching, uint8_t tracking, uint8_t timeValid, uint8_t codeLock, uint8_t phaseLock, uint8_t phaseHalfAmbiguity, uint8_t phaseHalfSub, uint8_t phaseSlip, uint8_t pseudorangeSmoothed,
443 double pr, double cp, double dp)
444 : sys(static_cast<SatSys>(sys)), svId(svId), freq(static_cast<Freq>(freq)), chan(static_cast<Chan>(chan)), slot(slot), cno(cno), flags((searching ? Flags::Searching : Flags::None) | (tracking ? Flags::Tracking : Flags::None) | (timeValid ? Flags::TimeValid : Flags::None) | (codeLock ? Flags::CodeLock : Flags::None) | (phaseLock ? Flags::PhaseLock : Flags::None) | (phaseHalfAmbiguity ? Flags::PhaseHalfAmbiguity : Flags::None) | (phaseHalfSub ? Flags::PhaseHalfSub : Flags::None) | (phaseSlip ? Flags::PhaseSlip : Flags::None) | (pseudorangeSmoothed ? Flags::PseudorangeSmoothed : Flags::None)), pr(pr), cp(cp), dp(static_cast<float>(dp)) {}
445
447 uint8_t svId{};
450 int8_t slot{};
451 uint8_t cno{};
453 double pr{};
454 double cp{};
455 float dp{};
456 };
457
459 double tow{};
461 uint16_t week{};
463 uint8_t numSats{};
465 std::vector<SatRawElement> satellites;
466};
467
477
491{
492 public:
495 explicit VpeStatus(uint16_t status) : _status(status) {}
496
499 VpeStatus& operator=(const uint16_t& status)
500 {
501 _status = status;
502 return *this;
503 }
504
506 VpeStatus() = default;
507
509 [[nodiscard]] constexpr uint16_t& status()
510 {
511 return _status;
512 }
513
515 [[nodiscard]] constexpr uint8_t attitudeQuality() const
516 {
517 return ((_status & (1U << 0U | 1U << 1U)) >> 0U);
518 }
520 [[nodiscard]] constexpr uint8_t gyroSaturation() const
521 {
522 return ((_status & (1U << 2U)) >> 2U); // NOLINT
523 }
525 [[nodiscard]] constexpr uint8_t gyroSaturationRecovery() const
526 {
527 return ((_status & (1U << 3U)) >> 3U); // NOLINT
528 }
530 [[nodiscard]] constexpr uint8_t magDisturbance() const
531 {
532 return ((_status & (1U << 4U | 1U << 5U)) >> 4U); // NOLINT
533 }
535 [[nodiscard]] constexpr uint8_t magSaturation() const
536 {
537 return ((_status & (1U << 6U)) >> 6U); // NOLINT
538 }
540 [[nodiscard]] constexpr uint8_t accDisturbance() const
541 {
542 return ((_status & (1U << 7U | 1U << 8U)) >> 7U); // NOLINT
543 }
545 [[nodiscard]] constexpr uint8_t accSaturation() const
546 {
547 return ((_status & (1U << 9U)) >> 9U); // NOLINT
548 }
550 [[nodiscard]] constexpr uint8_t knownMagDisturbance() const
551 {
552 return ((_status & (1U << 11U)) >> 11U); // NOLINT
553 }
555 [[nodiscard]] constexpr uint8_t knownAccelDisturbance() const
556 {
557 return ((_status & (1U << 12U)) >> 12U); // NOLINT
558 }
559
560 private:
562 uint16_t _status;
563};
564
589{
590 public:
592 enum class Mode
593 {
597 NotTracking = 0,
606 Aligning = 1,
610 Tracking = 2,
615 LossOfGNSS = 3,
616 };
617
620 explicit InsStatus(uint16_t status) : _status(status) {}
621
624 InsStatus& operator=(const uint16_t& status)
625 {
626 _status = status;
627 return *this;
628 }
629
631 InsStatus() = default;
632
634 [[nodiscard]] constexpr uint16_t& status()
635 {
636 return _status;
637 }
638
640 [[nodiscard]] constexpr Mode mode() const
641 {
642 return static_cast<Mode>((_status & (1U << 0U | 1U << 1U)) >> 0U);
643 }
645 [[nodiscard]] constexpr bool gpsFix() const
646 {
647 return ((_status & (1U << 2U)) >> 2U); // NOLINT
648 }
650 [[nodiscard]] constexpr bool errorIMU() const
651 {
652 return ((_status & (1U << 4U)) >> 4U); // NOLINT
653 }
655 [[nodiscard]] constexpr bool errorMagPres() const
656 {
657 return ((_status & (1U << 5U)) >> 5U); // NOLINT
658 }
660 [[nodiscard]] constexpr bool errorGnss() const
661 {
662 return ((_status & (1U << 6U)) >> 6U); // NOLINT
663 }
665 [[nodiscard]] constexpr bool gpsHeadingIns() const
666 {
667 return ((_status & (1U << 8U)) >> 8U); // NOLINT
668 }
670 [[nodiscard]] constexpr bool gpsCompass() const
671 {
672 return ((_status & (1U << 9U)) >> 9U); // NOLINT
673 }
674
675 private:
677 uint16_t _status;
678};
679
680} // namespace NAV::vendor::vectornav
681
682#ifndef DOXYGEN_IGNORE
683
684template<>
685struct fmt::formatter<vn::protocol::uart::ErrorDetectionMode> : ostream_formatter
686{};
687template<>
688struct fmt::formatter<vn::protocol::uart::AsciiAsync> : ostream_formatter
689{};
690template<>
691struct fmt::formatter<vn::protocol::uart::AsyncMode> : ostream_formatter
692{};
693template<>
694struct fmt::formatter<vn::protocol::uart::BinaryGroup> : ostream_formatter
695{};
696template<>
697struct fmt::formatter<vn::protocol::uart::CommonGroup> : ostream_formatter
698{};
699template<>
700struct fmt::formatter<vn::protocol::uart::TimeGroup> : ostream_formatter
701{};
702template<>
703struct fmt::formatter<vn::protocol::uart::ImuGroup> : ostream_formatter
704{};
705template<>
706struct fmt::formatter<vn::protocol::uart::GpsGroup> : ostream_formatter
707{};
708template<>
709struct fmt::formatter<vn::protocol::uart::AttitudeGroup> : ostream_formatter
710{};
711template<>
712struct fmt::formatter<vn::protocol::uart::InsGroup> : ostream_formatter
713{};
714template<>
715struct fmt::formatter<vn::protocol::uart::SensorError> : ostream_formatter
716{};
717template<>
718struct fmt::formatter<vn::protocol::uart::BootloaderError> : ostream_formatter
719{};
720template<>
721struct fmt::formatter<vn::protocol::uart::SyncInMode> : ostream_formatter
722{};
723template<>
724struct fmt::formatter<vn::protocol::uart::SyncInEdge> : ostream_formatter
725{};
726template<>
727struct fmt::formatter<vn::protocol::uart::SyncOutMode> : ostream_formatter
728{};
729template<>
730struct fmt::formatter<vn::protocol::uart::SyncOutPolarity> : ostream_formatter
731{};
732template<>
733struct fmt::formatter<vn::protocol::uart::CountMode> : ostream_formatter
734{};
735template<>
736struct fmt::formatter<vn::protocol::uart::StatusMode> : ostream_formatter
737{};
738template<>
739struct fmt::formatter<vn::protocol::uart::ChecksumMode> : ostream_formatter
740{};
741template<>
742struct fmt::formatter<vn::protocol::uart::ErrorMode> : ostream_formatter
743{};
744template<>
745struct fmt::formatter<vn::protocol::uart::FilterMode> : ostream_formatter
746{};
747template<>
748struct fmt::formatter<vn::protocol::uart::IntegrationFrame> : ostream_formatter
749{};
750template<>
751struct fmt::formatter<vn::protocol::uart::CompensationMode> : ostream_formatter
752{};
753template<>
754struct fmt::formatter<vn::protocol::uart::AccCompensationMode> : ostream_formatter
755{};
756template<>
757struct fmt::formatter<vn::protocol::uart::EarthRateCorrection> : ostream_formatter
758{};
759template<>
760struct fmt::formatter<vn::protocol::uart::GpsFix> : ostream_formatter
761{};
762template<>
763struct fmt::formatter<vn::protocol::uart::GpsMode> : ostream_formatter
764{};
765template<>
766struct fmt::formatter<vn::protocol::uart::PpsSource> : ostream_formatter
767{};
768template<>
769struct fmt::formatter<vn::protocol::uart::GpsRate> : ostream_formatter
770{};
771template<>
772struct fmt::formatter<vn::protocol::uart::AntPower> : ostream_formatter
773{};
774template<>
775struct fmt::formatter<vn::protocol::uart::VpeEnable> : ostream_formatter
776{};
777template<>
778struct fmt::formatter<vn::protocol::uart::HeadingMode> : ostream_formatter
779{};
780template<>
781struct fmt::formatter<vn::protocol::uart::VpeMode> : ostream_formatter
782{};
783template<>
784struct fmt::formatter<vn::protocol::uart::Scenario> : ostream_formatter
785{};
786template<>
787struct fmt::formatter<vn::protocol::uart::HsiMode> : ostream_formatter
788{};
789template<>
790struct fmt::formatter<vn::protocol::uart::HsiOutput> : ostream_formatter
791{};
792template<>
793struct fmt::formatter<vn::protocol::uart::VelocityCompensationMode> : ostream_formatter
794{};
795template<>
796struct fmt::formatter<vn::protocol::uart::MagneticMode> : ostream_formatter
797{};
798template<>
799struct fmt::formatter<vn::protocol::uart::ExternalSensorMode> : ostream_formatter
800{};
801template<>
802struct fmt::formatter<vn::protocol::uart::FoamInit> : ostream_formatter
803{};
804template<>
805struct fmt::formatter<vn::protocol::uart::SensSat> : ostream_formatter
806{};
807template<>
808struct fmt::formatter<vn::protocol::uart::InsStatus> : ostream_formatter
809{};
810
811template<>
812struct fmt::formatter<NAV::vendor::vectornav::SatSys> : ostream_formatter
813{};
814template<>
815struct fmt::formatter<NAV::vendor::vectornav::RawMeas::SatRawElement::Chan> : ostream_formatter
816{};
817template<>
818struct fmt::formatter<NAV::vendor::vectornav::RawMeas::SatRawElement::Freq> : ostream_formatter
819{};
820
821template<size_t tdim, typename T>
822struct fmt::formatter<vn::math::vec<tdim, T>> : ostream_formatter
823{};
824
825template<size_t m, size_t n, typename T>
826struct fmt::formatter<vn::math::mat<m, n, T>> : ostream_formatter
827{};
828
829#endif
Code operator&(const Code::Enum &lhs, const Code::Enum &rhs)
Allows combining flags of the Code enum.
std::ostream & operator<<(std::ostream &os, const NAV::CycleSlipDetector::Result &obj)
Stream insertion operator overload.
@ GPS
Global Positioning System.
Definition SatelliteSystem.hpp:32
@ QZSS
Quasi-Zenith Satellite System.
Definition SatelliteSystem.hpp:36
@ SBAS
Satellite Based Augmentation System.
Definition SatelliteSystem.hpp:38
SatSys
Satellite Constellation.
Definition VectorNavTypes.hpp:133
GnssFix
GNSS fix.
Definition VectorNavTypes.hpp:92
@ GnssFix_NoFix
No fix.
Definition VectorNavTypes.hpp:93
@ GnssFix_2D
2D
Definition VectorNavTypes.hpp:95
@ GnssFix_TimeOnly
Time only.
Definition VectorNavTypes.hpp:94
@ GnssFix_SBAS
SBAS.
Definition VectorNavTypes.hpp:97
@ GnssFix_RTK_Float
RTK Float (only GNSS1)
Definition VectorNavTypes.hpp:98
@ GnssFix_3D
3D
Definition VectorNavTypes.hpp:96
@ GnssFix_RTK_Fixed
RTK Fixed (only GNSS1)
Definition VectorNavTypes.hpp:99
The INS status bitfield.
Definition VectorNavTypes.hpp:589
Mode
Indicates the current mode of the INS filter.
Definition VectorNavTypes.hpp:593
@ Aligning
INS Filter is dynamically aligning.
constexpr uint16_t & status()
Returns a reference to the status.
Definition VectorNavTypes.hpp:634
constexpr Mode mode() const
Extract the current mode of the INS filter from the ins status.
Definition VectorNavTypes.hpp:640
constexpr bool errorIMU() const
Extract the IMU Error from the ins status.
Definition VectorNavTypes.hpp:650
constexpr bool gpsFix() const
Extract the GPS Fix from the ins status.
Definition VectorNavTypes.hpp:645
InsStatus()=default
Default constructor.
constexpr bool errorMagPres() const
Extract the Mag/Pres Error from the ins status.
Definition VectorNavTypes.hpp:655
InsStatus & operator=(const uint16_t &status)
Assignment operator.
Definition VectorNavTypes.hpp:624
constexpr bool errorGnss() const
Extract the GNSS Error from the ins status.
Definition VectorNavTypes.hpp:660
constexpr bool gpsCompass() const
Extract the GPS Compass from the ins status.
Definition VectorNavTypes.hpp:670
InsStatus(uint16_t status)
Definition VectorNavTypes.hpp:620
constexpr bool gpsHeadingIns() const
Extract the GPS Heading INS from the ins status.
Definition VectorNavTypes.hpp:665
The VPE status bitfield.
Definition VectorNavTypes.hpp:34
constexpr uint8_t & status()
Returns a reference to the status.
Definition VectorNavTypes.hpp:52
constexpr uint8_t timeOk() const
GpsTow is valid.
Definition VectorNavTypes.hpp:58
TimeStatus(uint8_t status)
Definition VectorNavTypes.hpp:38
TimeStatus()=default
Default constructor.
constexpr uint8_t dateOk() const
TimeGps and GpsWeek are valid.
Definition VectorNavTypes.hpp:63
constexpr uint8_t utcTimeValid() const
UTC time is valid.
Definition VectorNavTypes.hpp:68
TimeStatus & operator=(const uint8_t &status)
Assignment operator.
Definition VectorNavTypes.hpp:42
The VPE status bitfield.
Definition VectorNavTypes.hpp:491
constexpr uint8_t magDisturbance() const
Extract the magnetic disturbance from the vpe status.
Definition VectorNavTypes.hpp:530
constexpr uint8_t gyroSaturation() const
Extract the gyro saturation from the vpe status.
Definition VectorNavTypes.hpp:520
VpeStatus & operator=(const uint16_t &status)
Assignment operator.
Definition VectorNavTypes.hpp:499
constexpr uint16_t & status()
Returns a reference to the status.
Definition VectorNavTypes.hpp:509
VpeStatus(uint16_t status)
Definition VectorNavTypes.hpp:495
constexpr uint8_t accSaturation() const
Extract the acceleration saturation from the vpe status.
Definition VectorNavTypes.hpp:545
constexpr uint8_t attitudeQuality() const
Extract the attitude quality from the vpe status.
Definition VectorNavTypes.hpp:515
constexpr uint8_t gyroSaturationRecovery() const
Extract the gyro saturation recovery from the vpe status.
Definition VectorNavTypes.hpp:525
VpeStatus()=default
Default constructor.
constexpr uint8_t accDisturbance() const
Extract the acceleration disturbance from the vpe status.
Definition VectorNavTypes.hpp:540
constexpr uint8_t knownAccelDisturbance() const
Extract the known acceleration disturbance from the vpe status.
Definition VectorNavTypes.hpp:555
constexpr uint8_t knownMagDisturbance() const
Extract the known magnetic disturbance from the vpe status.
Definition VectorNavTypes.hpp:550
constexpr uint8_t magSaturation() const
Extract the magnetic saturation from the vpe status.
Definition VectorNavTypes.hpp:535
Dilution of precision.
Definition VectorNavTypes.hpp:121
float tDop
Time DOP (time precision)
Definition VectorNavTypes.hpp:124
float pDop
Positional DOP (Overall 3D position precision)
Definition VectorNavTypes.hpp:123
float nDop
North DOP.
Definition VectorNavTypes.hpp:127
float hDop
Horizontal DOP (2D position precision)
Definition VectorNavTypes.hpp:126
float gDop
Geometric DOP.
Definition VectorNavTypes.hpp:122
float vDop
Vertical DOP (vertical position precision)
Definition VectorNavTypes.hpp:125
float eDop
East DOP.
Definition VectorNavTypes.hpp:128
Raw measurements for a certain satellite.
Definition VectorNavTypes.hpp:258
float dp
Doppler measurement in Hz. Positive sign for approaching satellites.
Definition VectorNavTypes.hpp:455
Flags flags
Tracking info flags.
Definition VectorNavTypes.hpp:452
SatRawElement(uint8_t sys, uint8_t svId, uint8_t freq, uint8_t chan, int8_t slot, uint8_t cno, uint16_t flags, double pr, double cp, float dp)
Constructor.
Definition VectorNavTypes.hpp:419
Freq
Frequency indicator.
Definition VectorNavTypes.hpp:362
@ L1
L1(GPS,QZSS,SBAS), G1(GLO), E2-L1-E1(GAL), B1(BDS)
friend std::ostream & operator<<(std::ostream &os, const Chan &chan)
Stream insertion operator overload.
Definition VectorNavTypes.hpp:307
friend std::ostream & operator<<(std::ostream &os, const Freq &freq)
Stream insertion operator overload.
Definition VectorNavTypes.hpp:376
SatRawElement(uint8_t sys, uint8_t svId, uint8_t freq, uint8_t chan, int8_t slot, uint8_t cno, uint8_t searching, uint8_t tracking, uint8_t timeValid, uint8_t codeLock, uint8_t phaseLock, uint8_t phaseHalfAmbiguity, uint8_t phaseHalfSub, uint8_t phaseSlip, uint8_t pseudorangeSmoothed, double pr, double cp, double dp)
Constructor.
Definition VectorNavTypes.hpp:441
SatRawElement()=default
Default Constructor.
Flags
Tracking info flags.
Definition VectorNavTypes.hpp:261
int8_t slot
Slot Id.
Definition VectorNavTypes.hpp:450
Chan chan
Channel Indicator.
Definition VectorNavTypes.hpp:449
SatSys sys
GNSS constellation indicator.
Definition VectorNavTypes.hpp:446
uint8_t cno
Carrier-to-noise density ratio (signal strength) [dB-Hz].
Definition VectorNavTypes.hpp:451
friend Flags operator|(Flags lhs, Flags rhs)
Binary or-operator.
Definition VectorNavTypes.hpp:278
Freq freq
Frequency indicator.
Definition VectorNavTypes.hpp:448
double cp
Carrier phase measurement in cycles.
Definition VectorNavTypes.hpp:454
double pr
Pseudorange measurement in meters.
Definition VectorNavTypes.hpp:453
Chan
Channel Indicator.
Definition VectorNavTypes.hpp:285
@ L_Chan
L chan (L2CGPS, L2CQZSS), P chan (GPS,QZSS)
@ BC_Chan
B+C chan (GAL), I+Q chan (GPS,GAL,QZSS,BDS), M+L chan (GPS,QZSS), D+P chan (GPS,QZSS)
@ CA_Code
C/A-code (GPS,GLO,SBAS,QZSS), C chan (GAL)
@ M_Chan
M chan (L2CGPS, L2CQZSS), D chan (GPS,QZSS)
uint8_t svId
Space vehicle Id.
Definition VectorNavTypes.hpp:447
Raw measurements pertaining to each GNSS satellite in view.
Definition VectorNavTypes.hpp:255
double tow
Time of week in seconds.
Definition VectorNavTypes.hpp:459
uint8_t numSats
Number of measurements to follow.
Definition VectorNavTypes.hpp:463
uint16_t week
GPS week number.
Definition VectorNavTypes.hpp:461
std::vector< SatRawElement > satellites
SatRaw container.
Definition VectorNavTypes.hpp:465
Information for a certain satellite.
Definition VectorNavTypes.hpp:159
uint8_t cno
Carrier-to-noise density ratio (signal strength) [dB-Hz].
Definition VectorNavTypes.hpp:231
Flags flags
Tracking info flags.
Definition VectorNavTypes.hpp:230
SatSys sys
GNSS constellation indicator.
Definition VectorNavTypes.hpp:228
SatInfoElement()=default
Default Constructor.
QualityIndicator qi
Quality Indicator.
Definition VectorNavTypes.hpp:232
SatInfoElement(uint8_t sys, uint8_t svId, uint8_t flags, uint8_t cno, uint8_t qi, int8_t el, int16_t az)
Constructor.
Definition VectorNavTypes.hpp:206
friend Flags operator|(Flags lhs, Flags rhs)
Binary or-operator.
Definition VectorNavTypes.hpp:177
Flags
Tracking info flags.
Definition VectorNavTypes.hpp:162
int8_t el
Elevation in degrees.
Definition VectorNavTypes.hpp:233
int16_t az
Azimuth angle in degrees.
Definition VectorNavTypes.hpp:234
uint8_t svId
Space vehicle Id.
Definition VectorNavTypes.hpp:229
SatInfoElement(uint8_t sys, uint8_t svId, uint8_t healthy, uint8_t almanac, uint8_t ephemeris, uint8_t differentialCorrection, uint8_t usedForNavigation, uint8_t azimuthElevationValid, uint8_t usedForRTK, uint8_t cno, uint8_t qi, int8_t el, int16_t az)
Constructor.
Definition VectorNavTypes.hpp:223
QualityIndicator
Quality Indicator.
Definition VectorNavTypes.hpp:184
@ CodeAndCarrierLockedAndTimeSynchronized3
Code and carrier locked and time synchronized.
@ CodeAndCarrierLockedAndTimeSynchronized1
Code and carrier locked and time synchronized.
@ CodeAndCarrierLockedAndTimeSynchronized2
Code and carrier locked and time synchronized.
@ CodeLockedAndTimeSynchronized
Code locked and time synchronized.
Information and measurements pertaining to each GNSS satellite in view.
Definition VectorNavTypes.hpp:156
std::vector< SatInfoElement > satellites
SatInfo container.
Definition VectorNavTypes.hpp:240
uint8_t numSats
Number of measurements to follow.
Definition VectorNavTypes.hpp:238
Flags for valid GPS TOW, week number and UTC and current leap seconds.
Definition VectorNavTypes.hpp:104
int8_t leapSeconds
Amount of leap seconds.
Definition VectorNavTypes.hpp:116
TimeStatus status
Definition VectorNavTypes.hpp:114
Storage class for UTC Time.
Definition VectorNavTypes.hpp:80
uint8_t hour
Hours.
Definition VectorNavTypes.hpp:84
uint8_t min
Minutes.
Definition VectorNavTypes.hpp:85
uint8_t day
Days.
Definition VectorNavTypes.hpp:83
uint8_t sec
Seconds.
Definition VectorNavTypes.hpp:86
uint8_t month
Months.
Definition VectorNavTypes.hpp:82
uint16_t ms
Milliseconds.
Definition VectorNavTypes.hpp:87
int8_t year
The year is given as a signed byte year offset from the year 2000. For example the year 2013 would be...
Definition VectorNavTypes.hpp:81