52int main(
int ,
char** )
57 LoggingSetParams({ LoggingLevel::TRACE });
60 const double speed_FL[3] = { 5.422, -0.02, 0.4 };
61 const double speed_FR[3] = { 6.543, +0.03, 0.5 };
70 meas[0].
meas_x = std::floor(speed_FL[0] * 1e3);
71 meas[0].
meas_y = std::floor(speed_FL[1] * 1e3);
72 meas[0].
meas_z = std::floor(speed_FL[2] * 1e3);
80 meas[1].
meas_x = std::floor(speed_FR[0] * 1e3);
81 meas[1].
meas_y = std::floor(speed_FR[1] * 1e3);
82 meas[1].
meas_z = std::floor(speed_FR[2] * 1e3);
91 uint8_t payload[FP_B_MEASUREMENTS_HEAD_SIZE + (FP_B_MEASUREMENTS_MAX_NUM_MEAS * FP_B_MEASUREMENTS_MEAS_SIZE)];
92 std::size_t payload_size = 0;
94 std::memcpy(&payload[payload_size], &head,
sizeof(head));
95 payload_size +=
sizeof(head);
97 for (std::size_t ix = 0; (ix < head.
num_meas) && (ix < FP_B_MEASUREMENTS_MAX_NUM_MEAS); ix++) {
98 std::memcpy(&payload[payload_size], &meas[ix],
sizeof(meas[ix]));
99 payload_size +=
sizeof(meas[ix]);
102 INFO(
"num_meas=%" PRIu8
" payload_size=%" PRIuMAX, head.
num_meas, payload_size);
106 std::vector<uint8_t> message;
107 if (
FpbMakeMessage(message, FP_B_MEASUREMENTS_MSGID, 0, payload, payload_size)) {
108 INFO(
"Message successfully made");
112 if (isatty(fileno(stdout)) == 0) {
113 write(fileno(stdout), message.data(), message.size());
116 WARNING(
"Failed making FP_B-MEASUREMENTS message");
Fixposition SDK: Utilities for apps.
Helper to print a strack trace on SIGSEGV and SIGABRT.
Fixposition SDK: Parser FP_B routines and types.
Fixposition SDK: Logging.
#define WARNING(...)
Print a warning message.
#define DEBUG_HEXDUMP(data, size, prefix,...)
Print a debug hexdump.
#define INFO(...)
Print a info message.
Parser FP_B routines and types.
bool FpbMakeMessage(std::vector< uint8_t > &msg, const uint16_t msg_id, const uint16_t msg_time, const std::vector< uint8_t > &payload)
Make a FP_B message.
constexpr std::underlying_type< T >::type EnumToVal(T enum_val)
Convert enum class constant to the underlying integral type value.
FP_B-MEASUREMENTS payload: head.
uint8_t num_meas
Number of measurements in the body (1..FP_B_MEASUREMENTS_MAX_NUM_MEAS)
FP_B-MEASUREMENTS payload: measurement.
uint8_t timestamp_type
See FpbMeasurementsTimestampType.
int32_t meas_y
Measurement y.
uint8_t meas_y_valid
Validity of measurement y (1 = meas_x contains valid data, 0 = data invalid or n/a)
uint8_t meas_z_valid
Validity of measurement z (1 = meas_x contains valid data, 0 = data invalid or n/a)
uint8_t meas_type
See FpbMeasurementsMeasType.
uint8_t meas_x_valid
Validity of measurement x (1 = meas_x contains valid data, 0 = data invalid or n/a)
int32_t meas_z
Measurement z.
int32_t meas_x
Measurement x.
uint8_t meas_loc
See FpbMeasurementsMeasLoc.
Fixposition SDK: Common types and type helpers.