18 nv_oem6_header_t::nv_oem6_header_t() :
31 receiver_sw_version(0)
49 out.
printf(
"[Novatel OEM6 GENERIC FRAME]\n");
55 out << static_cast<uint32_t>(
msg_body.size());
66 in.ReadBuffer(&
msg_body[0],
sizeof(nBytesInStream));
71 out.
printf(
"[Novatel OEM6 GENERIC SHORT FRAME]\n");
77 out << static_cast<uint32_t>(
msg_body.size());
88 in.ReadBuffer(&
msg_body[0],
sizeof(nBytesInStream));
94 static bool init_map =
false;
95 static std::map<int,std::string> val2str;
98 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_solution_status::_NAME] = #_NAME; 109 return (it == val2str.end()) ? nullstr : it->second;
114 static bool init_map =
false;
115 static std::map<int,std::string> val2str;
118 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_position_type::_NAME] = #_NAME; 130 return (it == val2str.end()) ? nullstr : it->second;
135 static bool init_map =
false;
136 static std::map<int,std::string> val2str;
139 #define DEF_TYPESTR(_NAME) val2str[nv_oem6_ins_status_type::_NAME] = #_NAME; 147 return (it == val2str.end()) ? nullstr : it->second;
152 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
155 out.
printf(
" Longitude: %.09f deg (std dev: %.06f m) Latitude: %.09f deg (std dev: %.06f m)\n", fields.lon, fields.lon_sigma, fields.lat, fields.lat_sigma);
156 out.
printf(
" Height (sea level): %.06f m (std dev: %.06f m) Undulation: %.04f m (Sum: %.04f m)\n", fields.hgt, fields.hgt_sigma, fields.undulation,fields.hgt+fields.undulation);
157 out.
printf(
" Diff age: %.03f Solution age: %.03f\n", fields.diff_age, fields.sol_age);
158 out.
printf(
" Base station ID: `%.*s`\n", 4,fields.base_station_id);
159 out.
printf(
" Num sat tracked: %u Num sat in solution: %u\n", (
unsigned)fields.num_sats_tracked, (
unsigned)fields.num_sats_sol);
164 out.
printf(
"[Novatel OEM6 BESTPOS]\n");
170 o <<
"gps_week.gps_ms solution_stat position_type lon_deg lat_deg hgt_m undulation_m lon_sigma_m lat_sigma_m hgt_sigma_m diff_age sol_age num_sats_tracked num_sats_sol";
176 "%u.%08u %u %u %.09f %.09f %.06f %.04f %.06f %.06f %.06f %.03f %.03f %u %u",
177 (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
178 (
unsigned)fields.solution_stat,
179 (
unsigned)fields.position_type,
180 fields.lon,fields.lat,fields.hgt, fields.undulation,
181 fields.lon_sigma, fields.lat_sigma, fields.hgt_sigma,
182 fields.diff_age, fields.sol_age,
183 (
unsigned)fields.num_sats_tracked, (
unsigned)fields.num_sats_sol
193 out.
printf(
"[Novatel OEM6 INSPVAS]\n");
194 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
196 out.
printf(
" Longitude: %.09f deg Latitude: %.09f deg Height: %.03f m\n", fields.lon, fields.lat, fields.hgt );
197 out.
printf(
" Velocities: North: %.05f East: %.05f Up: %.05f\n", fields.vel_north, fields.vel_east, fields.vel_up);
198 out.
printf(
" Attitude: Roll: %.05f Pitch: %.05f Azimuth: %.05f\n", fields.roll, fields.pitch, fields.azimuth);
203 o <<
"gps_week.gps_ms ins_status lon_deg lat_deg ellip_height_WGS84 vel_north vel_east vel_up roll_deg pitch_deg azimuth_deg";
209 "%u.%08u %u %.09f %.09f %.06f %.05f %.05f %.05f %.05f %.05f %.05f",
210 (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
211 (
unsigned)fields.ins_status,
212 fields.lon,fields.lat,fields.hgt,
213 fields.vel_north, fields.vel_east, fields.vel_up,
214 fields.roll, fields.pitch, fields.azimuth
224 out.
printf(
"[Novatel OEM6 INSCOVS]\n");
225 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
226 out.
printf(
" Position cov: %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f\n",
227 fields.pos_cov[0],fields.pos_cov[1],fields.pos_cov[2],
228 fields.pos_cov[3],fields.pos_cov[4],fields.pos_cov[5],
229 fields.pos_cov[6],fields.pos_cov[7],fields.pos_cov[8]);
230 out.
printf(
" Attitude cov: %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f\n",
231 fields.att_cov[0],fields.att_cov[1],fields.att_cov[2],
232 fields.att_cov[3],fields.att_cov[4],fields.att_cov[5],
233 fields.att_cov[6],fields.att_cov[7],fields.att_cov[8]);
234 out.
printf(
" Velocity cov: %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f\n",
235 fields.vel_cov[0],fields.vel_cov[1],fields.vel_cov[2],
236 fields.vel_cov[3],fields.vel_cov[4],fields.vel_cov[5],
237 fields.vel_cov[6],fields.vel_cov[7],fields.vel_cov[8]);
242 o <<
"gps_week.gps_ms pos_cov(*9) att-cov(*9) vel_cov(*9)";
249 "%9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f " 250 "%9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f " 251 "%9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f %9.03f ",
252 (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
253 fields.pos_cov[0],fields.pos_cov[1],fields.pos_cov[2],
254 fields.pos_cov[3],fields.pos_cov[4],fields.pos_cov[5],
255 fields.pos_cov[6],fields.pos_cov[7],fields.pos_cov[8],
256 fields.att_cov[0],fields.att_cov[1],fields.att_cov[2],
257 fields.att_cov[3],fields.att_cov[4],fields.att_cov[5],
258 fields.att_cov[6],fields.att_cov[7],fields.att_cov[8],
259 fields.vel_cov[0],fields.vel_cov[1],fields.vel_cov[2],
260 fields.vel_cov[3],fields.vel_cov[4],fields.vel_cov[5],
261 fields.vel_cov[6],fields.vel_cov[7],fields.vel_cov[8]);
268 out.
printf(
"[Novatel OEM6 RANGECMP]\n");
269 out.
printf(
" Number of SAT observations: %u\n", static_cast<unsigned int>(this->
num_obs));
286 in >> expected_msg_len;
298 out.
printf(
"[Novatel OEM6 RXSTATUS]\n");
299 out.
printf(
" Error code: 0x%04X\n", static_cast<unsigned int>(this->fields.error));
305 out.
printf(
"[Novatel OEM6 RAWEPHEM]\n");
306 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
312 out.
printf(
"[Novatel OEM6 VERSION]\n");
313 out.
printf(
" Number of components: %u\n", static_cast<unsigned int>(this->
num_comps));
315 out.
printf(
" Component #%u:\n Model: `%.*s`\n Serial: `%.*s`\n SW version:`%.*s`\n",i,
337 in >> expected_msg_len;
349 out.
printf(
"[Novatel OEM6 RAWIMUS]\n");
350 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
351 out.
printf(
" Status: 0x%08lu\n",(
long)fields.imu_status);
352 out.
printf(
" Acel: X=%li Y=%li Z=%li\n",(
long)fields.accel_x,-(
long)fields.accel_y_neg,(
long)fields.accel_z);
353 out.
printf(
" Gyro: X=%li Y=%li Z=%li\n",(
long)fields.gyro_x,-(
long)fields.gyro_y_neg,(
long)fields.gyro_z);
358 o <<
"gps_week.gps_ms imu_status acc_x acc_y acc_z gyro_x gyro_y gyro_z";
364 "%u.%08u %u %li %li %li %li %li %li",
365 (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
366 (
unsigned)fields.imu_status,
367 (
long)fields.accel_x,-(
long)fields.accel_y_neg,(
long)fields.accel_z,
368 (
long)fields.gyro_x,-(
long)fields.gyro_y_neg,(
long)fields.gyro_z
377 out.
printf(
" Clock status: 0x%08lu\n",(
long)fields.clock_status);
378 out.
printf(
" GPS week: %lu Seconds: %f\n",(
long)fields.week, fields.week_seconds);
379 out.
printf(
" Clock offset: %f (std dev = %e)\n", fields.clock_offset,fields.clock_offset_std);
380 out.
printf(
" UTC offset: %f\n", fields.utc_offset);
385 out.
printf(
"[Novatel OEM6 MARKTIME]\n");
391 o <<
"gps_week.gps_ms clock_status week week_seconds utc_offset";
397 "%u.%08u %u %lu %f %f",
398 (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week),
399 (
unsigned)fields.clock_status,
400 (
long unsigned)fields.week, fields.week_seconds,
412 out.
printf(
"[Novatel OEM6 MARK2TIME]\n");
417 o <<
"gps_week.gps_ms clock_status week week_seconds utc_offset";
430 out.
printf(
"[Novatel OEM6 MARKPOSE]\n");
431 generic_dump_BESTPOS(*reinterpret_cast<const Message_NV_OEM6_BESTPOS::content_t*>(&fields),out);
437 out.
printf(
"[Novatel NV_OEM6_IONUTC]\n");
438 out.
printf(
" GPS week: %u ms in week: %u\n", (
unsigned)fields.header.week, (
unsigned)(fields.header.ms_in_week));
439 out.
printf(
" UTC ref week: %u Tot: %u\n",(
unsigned)fields.utc_wn, (
unsigned)fields.tot);
440 out.
printf(
" Leap seconds delta_t: %u future: %u\n",(
unsigned)fields.deltat_ls, (
unsigned)fields.deltat_lsf);
#define ASSERT_EQUAL_(__A, __B)
std::vector< uint8_t > msg_body
bool getAllFieldDescriptions(std::ostream &o) const MRPT_OVERRIDE
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
nv_oem6_header_t header
Frame header.
#define ASSERT_BELOW_(__A, __B)
insufficient observations
void WriteBuffer(const void *Buffer, size_t Count)
Writes a block of bytes to the stream from Buffer.
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
height or velocity limits exceeded
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
nv_oem6_header_t header
Frame header.
ins doing its coarse alignment
const Scalar * const_iterator
GLenum GLenum GLuint components
large residuals make position unreliable
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
delta position is too large
when a fix position command is entered, the receiver computes its own position and determines if the ...
const std::string OBS_IMPEXP & enum2str(int val)
for nv_position_type_t
void generic_dump_MARKTIME(const Message_NV_OEM6_MARKTIME::content_t &fields, mrpt::utils::CStream &out)
const std::string OBS_IMPEXP & enum2str(int val)
for nv_ins_status_type_t
std::string BASE_IMPEXP format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.
GLsizei const GLchar ** string
GNSS (GPS) data structures, mainly for use within mrpt::obs::CObservationGPS.
void generic_dump_BESTPOS(const Message_NV_OEM6_BESTPOS::content_t &fields, mrpt::utils::CStream &out)
std::vector< TCompressedRangeLog > obs_data
test distance exceeded (max of 3 rejections if distance > 10km)
not yet converged from cold start
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
singularity at parameters matrix
nv_oem6_short_header_t header
Frame header.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void generic_getFieldValues_MARKTIME(const Message_NV_OEM6_MARKTIME::content_t &fields, std::ostream &o)
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 MRPT_OVERRIDE
nv_oem6_header_t header
Frame header.
unsigned __int32 uint32_t
std::vector< uint8_t > msg_body
void internal_writeToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
void internal_readFromStream(mrpt::utils::CStream &in) MRPT_OVERRIDE
Save to binary stream. Launches an exception upon error.
virtual int printf(const char *fmt,...) MRPT_printf_format_check(2
Writes a string to the stream in a textual form.
const std::string OBS_IMPEXP & enum2str(int val)
for nv_solution_status_t
void dumpToStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE
Dumps the contents of the observation in a human-readable form to a given output stream.