Mercurial > ublox > ublox8 > experimental
view dump-pvt @ 64:8e85919405df
gnss-galileo: add a valid bit to each ephemeris
This is easier than trying to guess whether the ephemeris contains any
meaningful values.
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 22 Jan 2020 10:10:26 -0500 |
parents | abe411fe4cf3 |
children |
line wrap: on
line source
/* FIXME: for now, we just print it - to demonstrate correctness */ if ((hdr.class == UBX_CLASS_NAV) && (hdr.id == 0x07)) { /* UBX-NAV-PVT */ struct ubx_nav_pvt msg; char fix_type[16]; memcpy(&msg, raw, hdr.len); msg.itow = le32_to_cpu(msg.itow); msg.year = le16_to_cpu(msg.year); msg.time_acc = le32_to_cpu(msg.time_acc); msg.nsec = le32_to_cpu(msg.nsec); msg.lon = le32_to_cpu(msg.lon); msg.lat = le32_to_cpu(msg.lat); msg.height_ell = le32_to_cpu(msg.height_ell); msg.height_msl = le32_to_cpu(msg.height_msl); msg.horiz_acc = le32_to_cpu(msg.horiz_acc); msg.vert_acc = le32_to_cpu(msg.vert_acc); msg.vel_n = le32_to_cpu(msg.vel_n); msg.vel_e = le32_to_cpu(msg.vel_e); msg.vel_d = le32_to_cpu(msg.vel_d); msg.gspeed = le32_to_cpu(msg.gspeed); msg.motion_heading = le32_to_cpu(msg.motion_heading); msg.speed_acc = le32_to_cpu(msg.speed_acc); msg.head_acc = le32_to_cpu(msg.head_acc); msg.pdop = le16_to_cpu(msg.pdop); msg.vehicle_heading = le32_to_cpu(msg.vehicle_heading); msg.mag_dec = le16_to_cpu(msg.mag_dec); msg.mag_dec_acc = le16_to_cpu(msg.mag_dec_acc); switch (msg.fix_type) { case 0: strcpy(fix_type, "no"); break; case 1: strcpy(fix_type, "dead-reckoning"); break; case 2: strcpy(fix_type, "2D"); break; case 3: strcpy(fix_type, "3D"); break; case 4: strcpy(fix_type, "GNSS + dead-reckoning"); break; case 5: strcpy(fix_type, "time-only"); break; default: snprintf(fix_type, sizeof(fix_type), "<%u>", msg.fix_type); break; } fprintf(stderr, "UBX-NAV-PVT @ %u " "valid d%s t%s fr%s m%s f%s vh%s , " "%04u-%02u-%02u %02u:%02u:%02u +- %uns , " "%s fix diff-corr %sapplied , " "UTC validity %savailable d%s t%s , " "%u SVs , " "lat %.7f lon %.7f alt %.3f MSL %.3f ellipsoid , " "acc horiz %u vert %u , " "NED vel %d %d %d gspeed %d acc %u , " "head motion %.5f vehicle %.5f acc %.5f , " "mag dec %.2f acc %.2f , " "PDOP %.2f\n", msg.itow, (msg.valid & 0x01) ? "Y" : "N", (msg.valid & 0x02) ? "Y" : "N", (msg.valid & 0x04) ? "Y" : "N", (msg.valid & 0x08) ? "Y" : "N", (msg.flags & 0x01) ? "Y" : "N", (msg.flags & 0x20) ? "Y" : "N", msg.year, msg.month, msg.day, msg.hour, msg.min, msg.sec, msg.time_acc, fix_type, (msg.flags & 0x02) ? "" : "not-", (msg.flags2 & 0x20) ? "" : "not-", (msg.flags2 & 0x40) ? "Y" : "N", (msg.flags2 & 0x80) ? "Y" : "N", msg.num_sv, ((int32_t) msg.lat) * 1e-7, ((int32_t) msg.lon) * 1e-7, ((int32_t) msg.height_msl) / 1000., ((int32_t) msg.height_ell) / 1000., msg.horiz_acc, msg.vert_acc, msg.vel_n, msg.vel_e, msg.vel_d, msg.gspeed, msg.speed_acc, ((int32_t) msg.motion_heading) * 1e-5, ((int32_t) msg.vehicle_heading) * 1e-5, ((int32_t) msg.head_acc) * 1e-5, ((int32_t) msg.mag_dec) / 100., msg.mag_dec_acc / 100., msg.pdop * 0.01); }