25#ifndef __FPSDK_COMMON_PARSER_NOVB_HPP__
26#define __FPSDK_COMMON_PARSER_NOVB_HPP__
48# define NOV_B_PACKED __attribute__((packed))
71 return (((uint16_t)((uint8_t*)msg)[5] << 8) | (uint16_t)((uint8_t*)msg)[4]);
118bool NovbGetMessageName(
char* name,
const std::size_t size,
const uint8_t* msg,
const std::size_t msg_size);
134bool NovbGetMessageInfo(
char* info,
const std::size_t size,
const uint8_t* msg,
const std::size_t msg_size);
static constexpr const char * NOV_B_IMURATECORRIMUS_STRID
NOV_B-IMURATECORRIMUS message name.
static constexpr uint16_t NOV_B_RAWIMUSX_MSGID
NOV_B-RAWIMUSX message ID.
static constexpr uint16_t NOV_B_RXSTATUS_MSGID
NOV_B-RXSTATUS message ID.
static constexpr const char * NOV_B_HEADING2_STRID
NOV_B-HEADING2 message name.
static constexpr const char * NOV_B_TIME_STRID
NOV_B-TIME message name.
static constexpr uint16_t NOV_B_RAWIMU_MSGID
NOV_B-RAWIMU message ID.
static constexpr const char * NOV_B_BESTPOS_STRID
NOV_B-BESTPOS message name.
static constexpr uint16_t NOV_B_IMURATECORRIMUS_MSGID
NOV_B-IMURATECORRIMUS message ID.
static constexpr const char * NOV_B_RAWIMU_STRID
NOV_B-RAWIMU message name.
static constexpr const char * NOV_B_INSPVAS_STRID
NOV_B-INSPVAS message name.
static constexpr uint16_t NOV_B_CORRIMUS_MSGID
NOV_B-CORRIMUS message ID.
NovbInsSolStatus
Intertial solution status.
@ WAITING_INITIAL_POS
The INS filter has determined the IMU orientation and is awaiting an initial position estimate to beg...
@ INS_SOLUTION_GOOD
The INS filter is in navigation mode and the INS solution is good.
@ INS_ALIGNMENT_COMPLETE
The INS filter is in navigation mode, but not enough vehicle dynamics have been experienced for the s...
@ INS_SOLUTION_FREE
The INS Filter is in navigation mode and the GNSS solution is suspected to be in error.
@ INS_HIGH_VARIANCE
The INS solution uncertainty contains outliers and the solution may be outside specifications.
@ WAITING_AZIMUTH
The INS filer has orientation, initial biases, initial position and valid roll/pitch estimated.
@ WAITING_ALIGNMENTORIENTATION
The INS filter is waiting to start alignment.
@ INS_INACTIVE
IMU logs are present, but the alignment routine has not started; INS is inactive.
@ INITIALIZING_BIASES
The INS filter is estimating initial biases during the first 10 seconds of stationary data.
@ DETERMINING_ORIENTATION
INS is determining the IMU axis aligned with gravity.
@ MOTION_DETECT
The INS filter has not completely aligned, but has detected motion.
@ INS_ALIGNING
INS is in alignment mode.
NovbMsgTypeResp
Message type format (bit 7 of NovbLongHeader.message_type)
@ RESPONSE
Secondary GNSS receiver.
@ ORIGINAL
Primary GNSS receiver.
NovbSigUsedGalBds
Gelileo and BeiDou signals used (bits)
@ GALILEO_L2
Galileo E5a used in Solution.
@ GALILEO_L1
Galileo E1 used in Solution.
@ GALILEO_L5
Galileo E5b used in Solution.
@ BEIDOU_L1
BeiDou B1 used in Solution (B1I and B1C)
@ GALILEO_E6
Galileo E6 used in Solution (E6B and E6C)
@ BEIDOU_L2
BeiDou B2 used in Solution (B2I, B2a and B2b)
@ GALILEO_ALTBOC
Galileo ALTBOC used in Solution.
@ BEIDOU_L5
BeiDou B3 used in Solution (B3I)
static constexpr uint16_t NOV_B_BESTUTM_MSGID
NOV_B-BESTUTM message ID.
NovbGnssSolStat
Solution status.
@ INSUFFICIENT_OBS
Insufficient observations.
@ TEST_DIST
Test distance exceeded (maximum of 3 rejections if distance >10 km)
@ COLD_START
Not yet converged from cold start.
@ RESIDUALS
Residuals are too large.
@ V_H_LIMIT
Height or velocity limits exceeded (in accordance with export licensing restrictions)
@ NO_CONVERGENCE
No convergence.
@ VARIANCE
Variance exceeds limits.
@ SINGULARITY
Singularity at parameters matrix.
@ SOL_COMPUTED
Solution computed.
@ COV_TRACE
Covariance trace exceeds maximum (trace > 1000 m)
static constexpr uint16_t NOV_B_BESTVEL_MSGID
NOV_B-BESTVEL message ID.
static constexpr uint8_t NOV_B_SYNC_3_SHORT
Sync char 3 (short header)
bool NovbGetMessageInfo(char *info, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get NOV_B message info.
static constexpr const char * NOV_B_BESTXYZ_STRID
NOV_B-BESTXYZ message name.
const char * NovbTimeStatusStr(const NovbTimeStatus time_status)
Stringify time status.
static constexpr const char * NOV_B_INSCONFIG_STRID
NOV_B-INSCONFIG message name.
static constexpr uint16_t NOV_B_BESTGNSSPOS_MSGID
NOV_B-BESTGNSSPOS message ID.
static constexpr uint16_t NOV_B_INSPVA_MSGID
NOV_B-INSPVA message ID.
static constexpr uint16_t NOV_B_INSPVAS_MSGID
NOV_B-INSPVAS message ID.
static constexpr const char * NOV_B_BESTGNSSPOS_STRID
NOV_B-BESTGNSSPOS message name.
static constexpr const char * NOV_B_RAWDMI_STRID
NOV_B-RAWDMI message name.
static constexpr uint16_t NOV_B_INSCONFIG_MSGID
NOV_B-INSCONFIG message ID.
static constexpr uint16_t NOV_B_PSRDOP2_MSGID
NOV_B-PSRDOP2 message ID.
const char * NovbMsgTypeSourceStr(const uint8_t message_type)
Stringify message type measurement source.
static constexpr uint16_t NOV_B_BESTPOS_MSGID
NOV_B-BESTPOS message ID.
static constexpr const char * NOV_B_PSRDOP2_STRID
NOV_B-PSRDOP2 message name.
constexpr bool NovbIsLongHeader(const uint8_t *msg)
Check if message has the long header.
NovbPortAddr
Message port address (NovbLongHeader.port_address)
@ ALL_PORTS
All virtual ports for all ports.
@ THISPORT
Current COM port.
@ NO_PORTS
No ports specified.
bool NovbGetMessageName(char *name, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get NOV_B message name.
static constexpr const char * NOV_B_INSSTDEV_STRID
NOV_B-INSSTDEV message name.
static constexpr uint16_t NOV_B_TIME_MSGID
NOV_B-TIME message ID.
static constexpr const char * NOV_B_RXSTATUS_STRID
NOV_B-RXSTATUS message name.
NovbSolSource
Solution source (bits)
constexpr uint16_t NovbMsgId(const uint8_t *msg)
Get message ID.
NovbSigUsedGpsGlo
GPS and GLONASS signals used (bits)
@ GPS_L2
GPS L2 used in solution.
@ GLONASS_L5
GLONASS L3 used in solution.
@ GLONASS_L2
GLONASS L2 used in solution.
@ GPS_L5
GPS L5 used in solution.
@ GLONASS_L1
GLONASS L1 used in solution.
@ GPS_L1
GPS L1 used in solution.
NovbTimeStatus
Message time status (NovbLongHeader.time_status)
@ SATTIME
Time from satellite. Only used in logs containing satellite data, such as eph or alm.
@ FINEBACKUPSTEERING
Time is fine set and is being steered by the backup system.
@ COARSE
This time is valid to coarse precision.
@ UNKNOWN
Time validity is unknown.
@ APPROXIMATE
Time is set approximately.
@ FINESTEERING
Time is fine set and is being steered.
@ COARSEADJUSTING
Time is approaching coarse precision.
@ FINE
Time has fine precision.
@ FINEADJUSTING
Time is adjusting to fine precision.
@ FREEWHEELING
Position is lost and the range bias cannot be calculated.
@ COARSESTEERING
Time is coarse set and is being steered.
static constexpr const char * NOV_B_RAWIMUSX_STRID
NOV_B-RAWIMUSX message name.
static constexpr const char * NOV_B_CORRIMUS_STRID
NOV_B-CORRIMUS message name.
constexpr bool NovbIsShortHeader(const uint8_t *msg)
Check if message has the short header.
NovbMsgTypeSource
Message type measurement source (bits 4..0 of NovbLongHeader.message_type)
@ _MASK
Mask for the source part of the NovbLongHeader.message_type field.
@ SECONDARY
Secondary antenna.
@ PRIMARY
Primary antenna.
NovbMsgTypeFormat
Message type format (bits 6..5 of NovbLongHeader.message_type)
@ AASCII_NMEA
Abbreviated ASCII, NMEA.
static constexpr uint8_t NOV_B_SYNC_3_LONG
Sync char 3 (long header)
static constexpr uint8_t NOV_B_SYNC_1
Sync char 1.
static constexpr uint16_t NOV_B_INSSTDEV_MSGID
NOV_B-INSSTDEV message ID.
static constexpr const char * NOV_B_BESTUTM_STRID
NOV_B-BESTUTM message name.
static constexpr const char * NOV_B_INSPVAX_STRID
NOV_B-INSPVAX message name.
static constexpr const char * NOV_B_BESTVEL_STRID
NOV_B-BESTVEL message name.
NovbInsSolExtStatus
Extended intertial solution status (bits)
@ DR_UPDATE
Dead reckoning update.
@ ALIGNMENT_INDICATION_3
Alignment indication 3.
@ ALIGNMENT_INDICATION_1
Alignment indication 1.
@ EXTERNAL_VELOCITY_UPDATE
External velocity update.
@ COURSE_OVER_GROUND_UPDATE
Course over ground update.
@ PSEUDORANGE_UPDATE
Pseudorange update.
@ PHASE_WINDUP_UPDATE
Phase wind up update.
@ INS_SOLUTION_CONVERGENCE
INS solution convergence flag.
@ NVM_SEED_INDICATION_2
NVM seed indication 2.
@ POSITION_UPDATE
Position update.
@ PHASE_UPDATE
Phase update.
@ ALIGNMENT_INDICATION_2
Alignment indication 2.
@ ALIGNMENT_DIRECTION_VERIFIED
Alignment direction verified.
@ EXTERNAL_HEADING_UPDATE
External heading update.
@ EXTERNAL_HEIGHT_UPDATE
External height update.
@ SECONDARY_INS_USED
Secondary INS solution.
@ NVM_SEED_INDICATION_1
NVM seed indication 1.
@ EXTERNAL_POSITION_UPDATE
External position update.
@ EXTERNAL_ATTITUDE_UPDATE
External attitude update.
@ ZERO_VELOCITY_UPDATE
Zero velocity update.
@ HEADING_UPDATE
ALIGN (heading) update.
@ VELOCITY_UPDATE
Velocity update.
@ WHEEL_SENSOR_UPDATE
Wheel sensor update.
@ TURN_ON_BIAS_ESTIMATED
Turn on biases estimated.
@ DOPPLER_UPDATE
Doppler update.
@ NVM_SEED_INDICATION_3
NVM seed indication 3.
@ USER
User-defined datum.
static constexpr uint16_t NOV_B_HEADING2_MSGID
NOV_B-HEADING2 message ID.
static constexpr const char * NOV_B_INSPVA_STRID
NOV_B-INSPVA message name.
NovbPosOrVelType
Position or velocity type.
@ INS_RTKFIXED
INS position, where the last applied position update used a fixed integer ambiguity RTK (L1_INT,...
@ RTK_DIRECT_INS
RTK status where the RTK filter is directly initialized from the INS filter.
@ WARNING
Solution accuracy is outside UAL operational limit but within warning limit.
@ SINGLE
Solution calculated using only data supplied by the GNSS satellites.
@ PPP_BASIC_CONVERGING
Converging TerraStar-L solution.
@ INS_SBAS
INS position, where the last applied position update used a GNSS solution computed using corrections ...
@ NARROW_INT
Multi-frequency RTK solution with carrier phase ambiguities resolved to narrow-lane integers.
@ FIXEDPOS
Position has been fixed by the FIX position command or by position averaging.
@ INS_RTKFLOAT
INS position, where the last applied position update used a floating ambiguity RTK (L1_FLOAT or NARRO...
@ INS_PSRSP
INS position, where the last applied position update used a single point GNSS (SINGLE) solution.
@ WAAS
Solution calculated using corrections from an SBAS satellite.
@ L1_INT
Single-frequency RTK solution with carrier phase ambiguities resolved to integers.
@ PSRDIFF
Solution calculated using pseudorange differential (DGPS, DGNSS) corrections.
@ INS_PPP_CONVERGING
INS position, where the last applied position update used a converging TerraStar-C,...
@ FIXEDHEIGHT
Position has been fixed by the FIX height or FIX auto command or by position averaging.
@ PPP_BASIC
Converged TerraStar-L solution.
@ INS_PSRDIFF
INS position, where the last applied position update used a pseudorange differential GNSS (PSRDIFF) s...
@ L1_FLOAT
Single-frequency RTK solution with unresolved, float carrier phase ambiguities.
@ INS_PPP
INS position, where the last applied position update used a converged TerraStar-C,...
@ INS_PPP_BASIC_CONVERGING
INS position, where the last applied position update used a converging TerraStar-L PPP (PPP_BASIC) so...
@ OUT_OF_BOUNDS
Solution accuracy is outside UAL limits.
@ PROPAGATED
Propagated by a Kalman filter without new observations.
@ PPP
Converged TerraStar-C, TerraStar-C PRO or TerraStar-X solution.
@ PPP_CONVERGING
Converging TerraStar-C, TerraStar-C PRO or TerraStar-X solution.
@ OPERATIONAL
Solution accuracy is within UAL operational limit.
@ DOPPLER_VELOCITY
Velocity computed using instantaneous Doppler.
@ WIDE_INT
Multi-frequency RTK solution with carrier phase ambiguities resolved to wide-lane integers.
@ INS_PPP_BASIC
INS position, where the last applied position update used a converged TerraStar-L PPP (PPP_BASIC) sol...
@ NARROW_FLOAT
Multi-frequency RTK solution with unresolved, float carrier phase ambiguities.
NovbGnssSolExtStat
Extended solution status (bits)
@ SOL_VERIFIED
Solution verified.
static constexpr uint16_t NOV_B_INSPVAX_MSGID
NOV_B-INSPVAX message ID.
static constexpr uint8_t NOV_B_SYNC_2
Sync char 2.
static constexpr uint16_t NOV_B_BESTXYZ_MSGID
NOV_B-BESTXYZ message ID.
static constexpr std::size_t NOV_B_HEAD_SIZE_SHORT
Size of the NOV_B short header (NovbShortHeader)
static constexpr uint16_t NOV_B_RAWDMI_MSGID
NOV_B-RAWDMI message ID.
static constexpr std::size_t NOV_B_HEAD_SIZE_LONG
Size of the NOV_B long header (NovbLongHeader)
#define NOV_B_PACKED
Message truct that must be packed.
NOV_B-BESTGNSSPOS payload.
uint8_t ext_sol_stat
See NovbGnssSolExtStat.
uint8_t gps_glonass_sig_mask
See NovbSigUsedGpsGlo.
uint8_t num_sol_multi_svs
uint32_t datum_id
See NovbDatumId.
uint8_t galileo_beidou_sig_mask
See NovbSigUsedGalBds.
uint32_t sol_stat
See NovbGnssSolStat.
uint32_t pos_type
See NovbPosOrVelType.
uint32_t vel_type
See NovbPosOrVelType.
uint32_t sol_stat
See NovbGnssSolStat.
uint32_t sol_status
See NovbGnssSolStat.
uint32_t pos_type
See NovbPosOrVelType.
uint8_t galileo_beidou_sig_mask
See NovbSigUsedGalBds.
uint8_t ext_sol_status
See NovbGnssSolExtStat.
uint8_t gps_glonass_sig_mask
See NovbSigUsedGpsGlo.
uint8_t sol_source
See NovbSolSource.
float north_velocity_stdev
uint32_t extended_status
See NovbInsSolExtStatus.
float east_velocity_stdev
uint32_t ins_status
See NovbInsSolStatus.
uint16_t time_since_update
uint32_t pos_type
See NovbPosOrVelType.
uint32_t dmi3_valid
DMI3 value valid flag (1 = dmi3 value is valid)
int32_t dmi4
DMI4 value (RL wheel)
uint32_t dmi4_type
DMI4 value type (0 = linear speed, 1 = angular velocity)
int32_t dmi1
DMI1 value (RC wheel or FR wheel)
int32_t dmi3
DMI3 value (RR wheel)
uint32_t dmi1_valid
DMI1 value valid flag (1 = dmi1 value is valid)
uint32_t dmi1_type
DMI1 value type (0 = linear speed, 1 = angular velocity)
uint32_t dmi2_type
DMI2 value type (0 = linear speed, 1 = angular velocity)
uint32_t dmi2_valid
DMI2 value valid flag (1 = dmi2 value is valid)
uint32_t dmi4_valid
DMI4 value valid flag (1 = dmi4 value is valid)
uint32_t dmi3_type
DMI3 value type (0 = linear speed, 1 = angular velocity)
int32_t dmi2
DMI2 value (FL wheel or YW sensor)
int32_t y_gyro
-change in angle count around y axis
double seconds
GNSS time of week [s].
int32_t x_accel
Change in velocity count along x axis.
uint32_t week
GNSS week number.
int32_t y_accel
-change in velocity count along y axis
int32_t z_accel
Change in velocity count along z axis.
int32_t x_gyro
Change in angle count around x axis.
uint32_t imu_stat
The status of the IMU.
int32_t z_gyro
Change in angle count around z axis.