20 void Message_NV_OEM6_GENERIC_FRAME::dumpToStream(std::ostream& 
out)
 const    23         "[Novatel OEM6 GENERIC FRAME]\n"    27 void Message_NV_OEM6_GENERIC_FRAME::internal_writeToStream(
    31     out.WriteAs<uint32_t>(msg_body.size());
    32     if (!msg_body.empty()) 
out.WriteBuffer(&msg_body[0], msg_body.size());
    34 void Message_NV_OEM6_GENERIC_FRAME::internal_readFromStream(
    38     const uint32_t nBytesInStream = in.
ReadAs<uint32_t>();
    39     msg_body.resize(nBytesInStream);
    40     if (nBytesInStream) in.
ReadBuffer(&msg_body[0], 
sizeof(nBytesInStream));
    44 void Message_NV_OEM6_GENERIC_SHORT_FRAME::dumpToStream(std::ostream& 
out)
 const    46     out << 
"[Novatel OEM6 GENERIC SHORT FRAME]\n";
    49 void Message_NV_OEM6_GENERIC_SHORT_FRAME::internal_writeToStream(
    53     out.WriteAs<uint32_t>(msg_body.size());
    54     if (!msg_body.empty()) 
out.WriteBuffer(&msg_body[0], msg_body.size());
    56 void Message_NV_OEM6_GENERIC_SHORT_FRAME::internal_readFromStream(
    60     const uint32_t nBytesInStream = in.
ReadAs<uint32_t>();
    61     msg_body.resize(nBytesInStream);
    62     if (nBytesInStream) in.
ReadBuffer(&msg_body[0], 
sizeof(nBytesInStream));
    69     static bool init_map = 
false;
    70     static std::map<int, std::string> val2str;
    74 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_solution_status::_NAME] = #_NAME;    96     auto it = val2str.find(
val);
    97     static const std::string nullstr(
"???");
    98     return (it == val2str.end()) ? nullstr : it->second;
   103     static bool init_map = 
false;
   104     static std::map<int, std::string> val2str;
   108 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_position_type::_NAME] = #_NAME;   139     auto it = val2str.find(
val);
   140     static const std::string nullstr(
"???");
   141     return (it == val2str.end()) ? nullstr : it->second;
   146     static bool init_map = 
false;
   147     static std::map<int, std::string> val2str;
   151 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_ins_status_type::_NAME] = #_NAME;   162     auto it = val2str.find(
val);
   163     static const std::string nullstr(
"???");
   164     return (it == val2str.end()) ? nullstr : it->second;
   168     const Message_NV_OEM6_BESTPOS::content_t& fields, std::ostream& 
out)
   171         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   172         (
unsigned)(fields.header.ms_in_week));
   174         " Solution status: `%s`\n",
   177         " Position type  : `%s`\n",
   180         " Longitude: %.09f deg (std dev: %.06f m)  Latitude: %.09f deg (std "   182         fields.lon, fields.lon_sigma, fields.lat, fields.lat_sigma);
   184         " Height (sea level): %.06f m (std dev: %.06f m) Undulation: %.04f m   "   186         fields.hgt, fields.hgt_sigma, fields.undulation,
   187         fields.hgt + fields.undulation);
   189         " Diff age: %.03f  Solution age: %.03f\n", fields.diff_age,
   192         " Base station ID: `%.*s`\n", 4, fields.base_station_id);
   194         " Num sat tracked: %u  Num sat in solution: %u\n",
   195         (
unsigned)fields.num_sats_tracked, (
unsigned)fields.num_sats_sol);
   198 void Message_NV_OEM6_BESTPOS::dumpToStream(std::ostream& 
out)
 const   200     out << 
"[Novatel OEM6 BESTPOS]\n";
   206     o << 
"gps_week.gps_ms solution_stat position_type lon_deg lat_deg hgt_m "   207          "undulation_m lon_sigma_m lat_sigma_m hgt_sigma_m diff_age sol_age "   208          "num_sats_tracked num_sats_sol";
   214         "%u.%08u %u %u %.09f %.09f %.06f %.04f %.06f %.06f %.06f %.03f %.03f "   216         (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
   217         (
unsigned)fields.solution_stat, (
unsigned)fields.position_type,
   218         fields.lon, fields.lat, fields.hgt, fields.undulation, fields.lon_sigma,
   219         fields.lat_sigma, fields.hgt_sigma, fields.diff_age, fields.sol_age,
   220         (
unsigned)fields.num_sats_tracked, (
unsigned)fields.num_sats_sol);
   225 void Message_NV_OEM6_INSPVAS::dumpToStream(std::ostream& 
out)
 const   227     out << 
"[Novatel OEM6 INSPVAS]\n";
   229         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   230         (
unsigned)(fields.header.ms_in_week));
   232         " INS status: `%s`\n",
   235         " Longitude: %.09f deg  Latitude: %.09f deg  Height: %.03f m\n",
   236         fields.lon, fields.lat, fields.hgt);
   238         " Velocities: North: %.05f  East: %.05f  Up: %.05f\n", fields.vel_north,
   239         fields.vel_east, fields.vel_up);
   241         " Attitude: Roll: %.05f  Pitch: %.05f  Azimuth: %.05f\n", fields.roll,
   242         fields.pitch, fields.azimuth);
   247     o << 
"gps_week.gps_ms ins_status lon_deg lat_deg ellip_height_WGS84 "   248          "vel_north vel_east vel_up roll_deg pitch_deg azimuth_deg";
   254         "%u.%08u %u %.09f %.09f %.06f %.05f %.05f %.05f %.05f %.05f %.05f",
   255         (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
   256         (
unsigned)fields.ins_status, fields.lon, fields.lat, fields.hgt,
   257         fields.vel_north, fields.vel_east, fields.vel_up, fields.roll,
   258         fields.pitch, fields.azimuth);
   263 void Message_NV_OEM6_INSCOVS::dumpToStream(std::ostream& 
out)
 const   265     out << 
"[Novatel OEM6 INSCOVS]\n";
   267         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   268         (
unsigned)(fields.header.ms_in_week));
   270         " Position cov: %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f "   272         fields.pos_cov[0], fields.pos_cov[1], fields.pos_cov[2],
   273         fields.pos_cov[3], fields.pos_cov[4], fields.pos_cov[5],
   274         fields.pos_cov[6], fields.pos_cov[7], fields.pos_cov[8]);
   276         " Attitude cov: %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f "   278         fields.att_cov[0], fields.att_cov[1], fields.att_cov[2],
   279         fields.att_cov[3], fields.att_cov[4], fields.att_cov[5],
   280         fields.att_cov[6], fields.att_cov[7], fields.att_cov[8]);
   282         " Velocity cov: %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f "   284         fields.vel_cov[0], fields.vel_cov[1], fields.vel_cov[2],
   285         fields.vel_cov[3], fields.vel_cov[4], fields.vel_cov[5],
   286         fields.vel_cov[6], fields.vel_cov[7], fields.vel_cov[8]);
   291     o << 
"gps_week.gps_ms pos_cov(*9) att-cov(*9) vel_cov(*9)";
   298         "%9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f "   299         "%9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f "   300         "%9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f  %9.03f %9.03f %9.03f ",
   301         (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
   302         fields.pos_cov[0], fields.pos_cov[1], fields.pos_cov[2],
   303         fields.pos_cov[3], fields.pos_cov[4], fields.pos_cov[5],
   304         fields.pos_cov[6], fields.pos_cov[7], fields.pos_cov[8],
   305         fields.att_cov[0], fields.att_cov[1], fields.att_cov[2],
   306         fields.att_cov[3], fields.att_cov[4], fields.att_cov[5],
   307         fields.att_cov[6], fields.att_cov[7], fields.att_cov[8],
   308         fields.vel_cov[0], fields.vel_cov[1], fields.vel_cov[2],
   309         fields.vel_cov[3], fields.vel_cov[4], fields.vel_cov[5],
   310         fields.vel_cov[6], fields.vel_cov[7], fields.vel_cov[8]);
   315 void Message_NV_OEM6_RANGECMP::dumpToStream(std::ostream& 
out)
 const   317     out << 
"[Novatel OEM6 RANGECMP]\n";
   319         " Number of SAT observations: %u\n",
   320         static_cast<unsigned int>(this->num_obs));
   323 void Message_NV_OEM6_RANGECMP::internal_writeToStream(
   332         out.WriteBuffer(&obs_data[0], 
sizeof(obs_data[0]) * obs_data.size());
   335 void Message_NV_OEM6_RANGECMP::internal_readFromStream(
   338     uint32_t expected_msg_len;
   339     in >> expected_msg_len;
   343     obs_data.resize(num_obs);
   345         in.
ReadBuffer(&obs_data[0], 
sizeof(obs_data[0]) * obs_data.size());
   350 void Message_NV_OEM6_RXSTATUS::dumpToStream(std::ostream& 
out)
 const   352     out << 
"[Novatel OEM6 RXSTATUS]\n";
   354         " Error code: 0x%04X\n", static_cast<unsigned int>(this->fields.error));
   358 void Message_NV_OEM6_RAWEPHEM::dumpToStream(std::ostream& 
out)
 const   360     out << 
"[Novatel OEM6 RAWEPHEM]\n";
   362         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   363         (
unsigned)(fields.header.ms_in_week));
   367 void Message_NV_OEM6_VERSION::dumpToStream(std::ostream& 
out)
 const   369     out << 
"[Novatel OEM6 VERSION]\n";
   371         " Number of components: %u\n",
   372         static_cast<unsigned int>(this->num_comps));
   373     for (
size_t i = 0; i < components.size(); i++)
   376             " Component #%u:\n  Model: `%.*s`\n  Serial: `%.*s`\n  SW "   378             (
unsigned int)i, (
int)
sizeof(components[i].model),
   379             components[i].model, (
int)
sizeof(components[i].serial),
   380             components[i].serial, (
int)
sizeof(components[i].swversion),
   381             components[i].swversion);
   385 void Message_NV_OEM6_VERSION::internal_writeToStream(
   395             &components[0], 
sizeof(components[0]) * components.size());
   398 void Message_NV_OEM6_VERSION::internal_readFromStream(
   401     uint32_t expected_msg_len;
   402     in >> expected_msg_len;
   406     components.resize(num_comps);
   409             &components[0], 
sizeof(components[0]) * components.size());
   414 void Message_NV_OEM6_RAWIMUS::dumpToStream(std::ostream& 
out)
 const   416     out << 
"[Novatel OEM6 RAWIMUS]\n";
   418         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   419         (
unsigned)(fields.header.ms_in_week));
   422         " Acel: X=%li Y=%li Z=%li\n", (
long)fields.accel_x,
   423         -(
long)fields.accel_y_neg, (
long)fields.accel_z);
   425         " Gyro: X=%li Y=%li Z=%li\n", (
long)fields.gyro_x,
   426         -(
long)fields.gyro_y_neg, (
long)fields.gyro_z);
   431     o << 
"gps_week.gps_ms imu_status acc_x acc_y acc_z gyro_x gyro_y gyro_z";
   437         "%u.%08u %u %li %li %li %li %li %li", (
unsigned)fields.header.week,
   438         (
unsigned)(fields.header.ms_in_week), (
unsigned)fields.imu_status,
   439         (
long)fields.accel_x, -(
long)fields.accel_y_neg, (
long)fields.accel_z,
   440         (
long)fields.gyro_x, -(
long)fields.gyro_y_neg, (
long)fields.gyro_z);
   446     const Message_NV_OEM6_MARKTIME::content_t& fields, std::ostream& 
out)
   448     out << 
mrpt::format(
" Clock status: 0x%08lu\n", (
long)fields.clock_status);
   450         " GPS week: %lu Seconds: %f\n", (
long)fields.week, fields.week_seconds);
   452         " Clock offset: %f  (std dev = %e)\n", fields.clock_offset,
   453         fields.clock_offset_std);
   457 void Message_NV_OEM6_MARKTIME::dumpToStream(std::ostream& 
out)
 const   459     out << 
"[Novatel OEM6 MARKTIME]\n";
   465     o << 
"gps_week.gps_ms clock_status week week_seconds utc_offset";
   469     const Message_NV_OEM6_MARKTIME::content_t& fields, std::ostream& o)
   472         "%u.%08u %u %lu %f %f", (
unsigned)fields.header.week,
   473         (
unsigned)(fields.header.ms_in_week), (
unsigned)fields.clock_status,
   474         (
long unsigned)fields.week, fields.week_seconds, fields.utc_offset);
   482 void Message_NV_OEM6_MARK2TIME::dumpToStream(std::ostream& 
out)
 const   484     out << 
"[Novatel OEM6 MARK2TIME]\n";
   486         *reinterpret_cast<const Message_NV_OEM6_MARKTIME::content_t*>(&fields),
   491     o << 
"gps_week.gps_ms clock_status week week_seconds utc_offset";
   497         *reinterpret_cast<const Message_NV_OEM6_MARKTIME::content_t*>(&fields),
   503 void Message_NV_OEM6_MARKPOS::dumpToStream(std::ostream& 
out)
 const   505     out << 
"[Novatel OEM6 MARKPOSE]\n";
   507         *reinterpret_cast<const Message_NV_OEM6_BESTPOS::content_t*>(&fields),
   512 void Message_NV_OEM6_IONUTC::dumpToStream(std::ostream& 
out)
 const   514     out << 
"[Novatel NV_OEM6_IONUTC]\n";
   516         " GPS week: %u  ms in week: %u\n", (
unsigned)fields.header.week,
   517         (
unsigned)(fields.header.ms_in_week));
   519         " UTC ref week: %u  Tot: %u\n", (
unsigned)fields.utc_wn,
   520         (
unsigned)fields.tot);
   522         " Leap seconds delta_t: %u  future: %u\n", (
unsigned)fields.deltat_ls,
   523         (
unsigned)fields.deltat_lsf);
 insufficient observations 
 
test distance exceeded (max of 3 rejections if distance > 10km) 
 
not yet converged from cold start 
 
std::string std::string format(std::string_view fmt, ARGS &&... args)
 
#define ASSERT_BELOW_(__A, __B)
 
when a fix position command is entered, the receiver computes its own position and determines if the ...
 
large residuals make position unreliable 
 
const std::string & enum2str(int val)
for nv_position_type_t 
 
ins doing its coarse alignment 
 
void fixEndianness() override
 
height or velocity limits exceeded 
 
#define ASSERT_EQUAL_(__A, __B)
Assert comparing two values, reporting their actual values upon failure. 
 
STORED_TYPE ReadAs()
De-serialize a variable and returns it by value. 
 
nv_oem6_header_t header
Novatel frame: NV_OEM6_BESTPOS. 
 
void generic_dump_BESTPOS(const Message_NV_OEM6_BESTPOS::content_t &fields, std::ostream &out)
 
singularity at parameters matrix 
 
void generic_dump_MARKTIME(const Message_NV_OEM6_MARKTIME::content_t &fields, std::ostream &out)
 
GNSS (GPS) data structures, mainly for use within mrpt::obs::CObservationGPS. 
 
bool getAllFieldDescriptions(std::ostream &o) const override
 
Virtual base class for "archives": classes abstracting I/O streams. 
 
mrpt::vision::TStereoCalibResults out
 
void generic_getFieldValues_MARKTIME(const Message_NV_OEM6_MARKTIME::content_t &fields, std::ostream &o)
 
size_t ReadBuffer(void *Buffer, size_t Count)
Reads a block of bytes from the stream into Buffer. 
 
covariance trace exceeds maximum (trace>1000m) 
 
the fixed position entered using the fix position command is not valid 
 
#define DEF_TYPESTR(_NAME)
 
bool getAllFieldValues(std::ostream &o) const override
 
delta position is too large