1
0
mirror of https://github.com/peterantypas/maiana.git synced 2025-05-15 23:10:11 -07:00
2021-09-09 08:14:28 -07:00

36 lines
867 B
C++

// 'K' - 27 - Long-range AIS broadcast message
#include "ais.h"
namespace libais {
Ais27::Ais27(const char *nmea_payload, const size_t pad)
: AisMsg(nmea_payload, pad), position_accuracy(0), raim(false),
nav_status(0), sog(0), cog(0), gnss(false), spare(0) {
if (!CheckStatus()) {
return;
}
if (pad != 0 || num_bits != 96) {
status = AIS_ERR_BAD_BIT_COUNT;
return;
}
assert(message_id == 27);
bits.SeekTo(38);
position_accuracy = bits[38];
raim = bits[39];
nav_status = bits.ToUnsignedInt(40, 4);
position = bits.ToAisPoint(44, 35);
sog = bits.ToUnsignedInt(79, 6); // Knots.
cog = bits.ToUnsignedInt(85, 9); // Degrees.
// 0 is a current GNSS position. 1 is NOT the current GNSS position
gnss = !bits[94];
spare = bits[95];
assert(bits.GetRemaining() == 0);
status = AIS_OK;
}
} // namespace libais