75#ifndef __FPSDK_COMMON_PARSER_FPA_HPP__
76#define __FPSDK_COMMON_PARSER_FPA_HPP__
138bool FpaGetMessageName(
char* name,
const std::size_t size,
const uint8_t* msg,
const std::size_t msg_size);
154bool FpaGetMessageInfo(
char* info,
const std::size_t size,
const uint8_t* msg,
const std::size_t msg_size);
488 std::array<double, 3>
values = { { 0.0, 0.0, 0.0 } };
497 std::array<double, 4>
values = { { 0.0, 0.0, 0.0, 0.0 } };
506 std::array<double, 6>
values = { { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } };
551 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
553 static constexpr const char*
MSG_NAME =
"FP_A-EOE";
579 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
581 static constexpr const char*
MSG_NAME =
"FP_A-GNSSANT";
614 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
616 static constexpr const char*
MSG_NAME =
"FP_A-GNSSCORR";
647 virtual bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size) = 0;
655 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size)
final;
657 static constexpr const char*
MSG_NAME =
"FP_A-RAWIMU";
665 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size)
final;
667 static constexpr const char*
MSG_NAME =
"FP_A-CORRIMU";
695 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
697 static constexpr const char*
MSG_NAME =
"FP_A-IMUBIAS";
719 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
721 static constexpr const char*
MSG_NAME =
"FP_A-LLH";
765 virtual bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size) = 0;
773 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size)
final;
775 static constexpr const char*
MSG_NAME =
"FP_A-ODOMETRY";
783 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size)
final;
785 static constexpr const char*
MSG_NAME =
"FP_A-ODOMENU";
793 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size)
final;
795 static constexpr const char*
MSG_NAME =
"FP_A-ODOMSH";
835 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
837 static constexpr const char*
MSG_NAME =
"FP_A-ODOMSTATUS";
858 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
860 static constexpr const char*
MSG_NAME =
"FP_A-TEXT";
884 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
912 bool SetFromMsg(
const uint8_t* msg,
const std::size_t msg_size);
Fixposition SDK: Logging.
@ WARNING
[4/warning] Warnings (for libs and apps)
@ INFO
[6/info] Interesting stuff, the default level (for apps)
@ ERROR
[3/err] Errors (for apps)
@ DEBUG
[7/debug] Debugging (for libs and apps)
@ UNSPECIFIED
Unspecified.
FpaGnssStatus
FP_A GNSS fix status.
@ RTK_MB
RTK moving baseline.
@ SPP
Single-point positioning (SPP)
FpaCorrStatus
FP_A GNSS correction status.
@ WAITING_FUSION
Waiting fusion.
@ NO_GNSS
No GNSS available.
@ OLD_CORR
Corrections are too old (TBD)
@ NO_CORR
No corrections used.
@ GOOD_CORR
Sufficient corrections used: station data and corrections for ALL bands among the valid rover measure...
@ LIMITED_CORR
Limited corrections used: station data & at least one of the constellations (both bands) among the va...
FpaTimeref
FP_A time reference.
@ OTHER
other/unknown GNSS/UTC
@ UTC_NTSC
UTC: National Time Service Center (NTSC), China.
@ UNSPECIFIED
Unspecified.
@ UTC_EU
UTC: European laboratories.
@ UTC_NONE
UTC: None (UTC params not yet known)
@ UTC_USNO
UTC: U.S. Naval Observatory (USNO)
@ UTC_CRL
UTC: Communications Research Laboratory (CRL), Japan.
@ UTC_BIPM
UTC: International Bureau of Weights and Measures (BIPM)
@ UTC_SU
UTC: Former Soviet Union (SU)
@ UTC_NIST
UTC: National Institute of Standards and Technology (NIST)
FpaTextLevel
FP_A text levels.
FpaAntPower
FP_A GNSS antenna power.
@ UNSPECIFIED
Unspecified.
@ OFF
Antenna power supply is off.
@ ON
Antenna power supply is on.
static constexpr int FP_A_FRAME_SIZE
FP_A frame size ("$*cc\r\n")
FpaMeasStatus
FP_A fusion measurement status.
FpaBaselineStatus
FP_A baseline status.
bool FpaGetMessageMeta(FpaMessageMeta &meta, const uint8_t *msg, const std::size_t msg_size)
Get FP_A message meta data.
FpaWsStatus
FP_A wheelspeed status.
@ MISS_MEAS
Missing wheelspeed measurements.
@ ALL_CONVERGED
At least one wheelspeed enabled and all converged.
@ NONE_CONVERGED
At least one wheelspeed enabled, no wheelspeed converged.
@ ONE_CONVERGED
At least one wheelspeed enabled and at least one converged.
@ NOT_ENABLED
No wheelspeed enabled.
FpaGnssFix
FP_A GNSS fix type.
@ UNSPECIFIED
Unspecified.
@ DRONLY
Dead-reckoning only.
@ S3D_DR
Single 3D fix with dead-reckoning.
static constexpr uint8_t FP_A_PREAMBLE
FP_A framing preamble.
FpaFusionStatusLegacy
FP_A legacy fusion status.
@ VIO_GNSS
Visual-inertial-GNSS fusion.
@ VIO
Visual-inertial fusion.
@ IMU_GNSS
Inertial-GNSS fusion.
FpaMarkersConv
FP_A markers convergence status.
@ WAIT_MARKER_MEAS
Waiting marker measurements.
FpaImuNoise
FP_A IMU variance.
@ MEDIUM_NOISE
Medium noise.
FpaCamStatus
FP_A camera status.
@ GOOD
Camera working and available.
@ CAM_UNAVL
Camera not available.
@ BAD_FEAT
Camera available, but not usable (e.g. too dark)
FpaWsConv
FP_A wheelspeed convergence status.
@ WAIT_IMU_BIAS
Insufficient imu bias convergence.
@ WAIT_WS_MEAS
Missing wheelspeed measurements.
@ WAIT_FUSION
Awaiting Fusion.
FpaMarkersStatus
FP_A markers status.
FpaImuStatus
FP_A IMU bias status.
@ FINE_CONVERGED
Fine convergence.
@ NOT_CONVERGED
Not converged.
@ WARMSTARTED
Warmstarted.
@ ROUGH_CONVERGED
Rough convergence.
FpaInitStatus
FP_A fusion initialisation status.
@ UNSPECIFIED
Unspecified.
@ GLOBAL_INIT
Globally initialised.
@ LOCAL_INIT
Locally initialised.
@ NOT_INIT
Not initialised.
FpaImuStatusLegacy
FP_A Legacy IMU bias status.
bool FpaGetMessageInfo(char *info, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get FP_A message info.
FpaAntState
FP_A GNSS antenna state.
@ UNSPECIFIED
Unspecified.
@ SHORT
Antenna short circuit detected.
@ OPEN
No antenna detected (or connected via DC block)
@ OK
Antenna detected and good.
FpaTimebase
FP_A time base.
@ UNSPECIFIED
Unspecified.
bool FpaGetMessageName(char *name, const std::size_t size, const uint8_t *msg, const std::size_t msg_size)
Get FP_A message name.
FpaImuConv
FP_A IMU accelerometer and gyroscope convergence.
@ WAIT_IMU_MEAS
Awaiting IMU measurements.
@ WAIT_GLOBAL_MEAS
Insufficient global measurements.
@ WAIT_MOTION
Insufficient motion.
FpaWsStatusLegacy
FP_A Legacy wheelspeed status.
@ ONE_OR_MORE_CONVERGED
At least one converged.
static constexpr std::size_t MAX_FP_A_SIZE
Maximum FP_A message size (must be the same as MAX_NMEA_SIZE)
constexpr std::underlying_type< T >::type EnumToVal(T enum_val)
Convert enum class constant to the underlying integral type value.
FP_A-CORRIMU (version 1) message payload.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size) final
Set data from message.
static constexpr const char * MSG_NAME
Message name.
FP_A-EOE (version 1) message payload.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
static constexpr const char * MSG_NAME
Message name.
FpaEpoch epoch
Indicates which epoch ended ("FUSION", "GNSS", "GNSS1", "GNSS2")
std::array< double, 3 > values
Values.
std::array< double, 4 > values
Values.
std::array< double, 6 > values
Values.
FP_A-GNSSANT (version 1) message payload.
FpaAntPower gnss1_power
GNSS1 antenna power.
static constexpr const char * MSG_NAME
Message name.
FpaAntPower gnss2_power
GNSS2 antenna power.
FpaAntState gnss2_state
GNSS2 antenna state.
FpaInt gnss1_age
Time since gnss1_state or gnss1_power information last changed, 0-604800.
FpaAntState gnss1_state
GNSS1 antenna state.
FpaInt gnss2_age
Time since gnss2_state or gnss2_power information last changed, 0-604800.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
FP_A-GNSSCORR (version 1) message payload.
FpaGnssFix gnss1_fix
Fix status of GNSS1.
static constexpr const char * MSG_NAME
Message name.
FpaInt gnss2_nsig_l1
Number of L1 signals with correction data tracked by GNSS2 receiver, range 0-100.
FpaFloat corr_latency
Average correction data latency (10s window), range 0.0-99.9.
FpaInt gnss1_nsig_l1
Number of L1 signals with correction data tracked by GNSS1 receiver, range 0-100.
FpaInt sta_dist
Correction station baseline length (approximate 3d distance), range 0-100000.
FpaInt gnss2_nsig_l2
Number of L2 signals with correction data tracked by GNSS2 receiver, range 0-100.
FpaInt gnss1_nsig_l2
Number of L2 signals with correction data tracked by GNSS1 receiver, range 0-100.
FpaInt sta_id
Correction station ID, range 0–4095.
FpaFloat corr_msg_rate
Average correction message rate (10s window), range 0-50.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
FpaFloat3 sta_llh
Correction station latitude/longitude/height [deg, deg, m].
FpaFloat corr_update_rate
Average correction update rate (10s window), range 0.0-0.0.
FpaGnssFix gnss2_fix
Fix status of GNSS2 receiver.
FpaFloat corr_data_rate
Average correction data rate (10s window), range 0.0-50.0.
FpaInt week
GPS week number, range 0-9999, or null if time not (yet) available.
bool operator!=(const FpaGpsTime &rhs) const
Not equal (epsilon = 1e-6)
bool operator>=(const FpaGpsTime &rhs) const
Greater or equal than.
bool operator==(const FpaGpsTime &rhs) const
Equal (epsilon = 1e-6)
bool operator<=(const FpaGpsTime &rhs) const
Less or equal than.
bool operator<(const FpaGpsTime &rhs) const
Less than.
bool operator>(const FpaGpsTime &rhs) const
Greater than.
FpaFloat tow
GPS time of week, range 0.000-604799.999999, or null if time not (yet) available.
FP_A-...IMU (version 1) messages payload.
Which which
Indicates from which message the data is.
FpaFloat3 acc
Raw acceleration in output frame, X/Y/Z components.
FpaFloat3 rot
Raw angular velocity in output frame, X/Y/Z components.
virtual bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)=0
Set data from message.
Which
Data from which FP_A-...IMU is stored.
@ UNSPECIFIED
Unspecified.
@ RAWIMU
Data is from FP_A-RAWIMU.
@ CORRIMU
Data is from FP_A-CORRIMU.
FP_A-IMUBIAS (version 1) message payload.
FpaImuStatus imu_status
IMU bias status.
FpaMeasStatus fusion_imu
Fusion measurement status: IMU.
FpaFloat3 bias_cov_acc
Accelerometer bias covariance, X/Y/Z components.
FpaFloat3 bias_cov_gyr
Gyroscope bias covariance, X/Y/Z components.
FpaFloat3 bias_gyr
Gyroscope bias, X/Y/Z components.
FpaImuConv imu_conv
IMU convergence status.
FpaImuNoise imu_noise
IMU variance status.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
FpaFloat3 bias_acc
Accelerometer bias, X/Y/Z components.
static constexpr const char * MSG_NAME
Message name.
FP_A-LLH (version 1) message payload.
FpaFloat3 llh
Latitude/longitude/height [deg, deg, m].
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
static constexpr const char * MSG_NAME
Message name.
FpaFloat6 cov_enu
Position covariance in ENU, EE/NN/UU/EN/NU/EU components [m^2].
FP_A-ODOM... (version 1) messages payload.
Which
Data from which FP_A-...IMU is stored.
@ ODOMETRY
Data is from FP_A-ODOMETRY.
@ UNSPECIFIED
Unspecified.
@ ODOMSH
Data is from FP_A-ODOMSH.
@ ODOMENU
Data is from FP_A-ODOMENU.
FpaFusionStatusLegacy fusion_status
Fustion status.
FpaWsStatusLegacy wheelspeed_status
Wheelspeed status.
Which which
Indicates from which message the data is.
virtual bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)=0
Set data from message.
FpaGnssFix gnss2_fix
Fix status of GNSS2 receiver.
FpaFloat6 vel_cov
Velocity covariance, XX/YY/ZZ/XY/YZ/XZ components.
FpaGnssFix gnss1_fix
Fix status of GNSS1 receiver.
FpaFloat3 vel
Velocity, X/Y/Z components.
FpaImuStatusLegacy imu_bias_status
IMU bias status.
FpaFloat6 orientation_cov
Orientation covariance, XX/YY/ZZ/XY/YZ/XZ components.
char version[100]
Version.
FpaFloat3 acc
Bias corrected acceleration, X/Y/Z components.
FpaFloat3 pos
Position, X/Y/Z components.
FpaFloat6 pos_cov
Position covariance, XX/YY/ZZ/XY/YZ/XZ components.
FpaFloat3 rot
Bias corrected angular velocity, X/Y/Z components.
FpaFloat4 orientation
Quaternion, W/X/Y/Z components.
FP_A-ODOMETRY (version 2) messages payload (ECEF)
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size) final
Set data from message.
static constexpr const char * MSG_NAME
Message name.
FP_A-ODOMSH (version 1) messages payload (ECEF)
static constexpr const char * MSG_NAME
Message name.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size) final
Set data from message.
FP_A-ODOMSTATUS (version 1) messages payload.
FpaWsStatus ws_status
Wheelspeed status.
FpaMarkersConv markers_conv
Marker convergence status.
FpaImuConv imu_conv
IMU convergence status.
FpaMarkersStatus markers_status
Marker status.
FpaGnssStatus gnss1_status
GNSS 1 status.
FpaMeasStatus fusion_gnss1
Fusion measurement status: GNSS 1.
FpaMeasStatus fusion_gnss2
Fusion measurement status: GNSS 2.
static constexpr const char * MSG_NAME
Message name.
FpaImuNoise imu_noise
IMU variance status.
FpaBaselineStatus baseline_status
Baseline status.
FpaInitStatus init_status
Fusion init status.
FpaMeasStatus fusion_imu
Fusion measurement status: IMU.
FpaWsConv ws_conv
Wheelspeed convergence status.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
FpaMeasStatus fusion_cam1
Fusion measurement status: camera.
FpaCamStatus cam1_status
Camera 1 status.
FpaMeasStatus fusion_ws
Fusion measurement status: wheelspeed.
FpaCorrStatus corr_status
GNSS correction status.
FpaMeasStatus fusion_markers
Fusion measurement status: markers.
FpaImuStatus imu_status
IMU bias status.
FpaGnssStatus gnss2_status
GNSS 2 status.
FpaMeasStatus fusion_corr
Fusion measurement status: GNSS corrections.
bool valid_
Payload successfully decoded (true), or not (yet) decoded (false)
virtual ~FpaPayload()=default
Virtual dtor for polymorphism.
FP_A-RAWIMU (version 1) message payload.
static constexpr const char * MSG_NAME
Message name.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size) final
Set data from message.
FP_A-TEXT (version 1) message payload.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
char text[MAX_FP_A_SIZE]
Text (nul-terminated string)
static constexpr const char * MSG_NAME
Message name.
FP_A-TF (version 2) message payload.
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
static constexpr const char * MSG_NAME
Message name.
char frame_b[10]
Initial frame (nul-terminated string)
FpaFloat4 orientation
Rotation in quaternion, W/X/Y/Z components.
char frame_a[10]
Target frame (nul-terminated string)
FpaFloat3 translation
Translation, X/Y/Z components.
FP_A-TP (versions 1 and 2) message payload.
FpaInt tp_tow_sec
Timepulse time seconds of week, integer second part (0–604799)
FpaTimebase timebase
Time base.
FpaInt tp_week
Timepulse week number (only since version 2 of the message)
bool SetFromMsg(const uint8_t *msg, const std::size_t msg_size)
Set data from message.
static constexpr const char * MSG_NAME
Message name.
FpaTimeref timeref
Time reference.
FpaFloat tp_tow_psec
Timepulse time seconds of week, sub-second part (0.000000000000–0.999999999999)
FpaInt gps_leaps
GPS leapseconds.
char tp_name[10]
Timepulse name (nul-terminated string)
Fixposition SDK: Common types.