1 #include "message_19.hpp"
2 #include <marnav/ais/angle.hpp>
8 MARNAV_AIS_DEFINE_MESSAGE_PARSE_FUNC(message_19
)
10 message_19::message_19()
15 message_19::message_19(message_id id
)
17 , shipname("@@@@@@@@@@@@@@@@@@@@")
21 message_19::message_19(const raw
& bits
)
24 if (bits
.size() != SIZE_BITS
)
25 throw std::invalid_argument
{"invalid number of bits in message_19"};
29 void message_19::read_data(const raw
& bits
)
31 get(bits
, repeat_indicator
);
34 get(bits
, position_accuracy
);
35 get(bits
, longitude_minutes
);
36 get(bits
, latitude_minutes
);
45 get(bits
, to_starboard
);
52 raw
message_19::get_data() const
56 bits
.set(type(), 0, 6);
57 set(bits
, repeat_indicator
);
60 set(bits
, position_accuracy
);
61 set(bits
, longitude_minutes
);
62 set(bits
, latitude_minutes
);
71 set(bits
, to_starboard
);
80 utils::optional
<geo::longitude
> message_19::get_longitude() const
82 if (longitude_minutes
== longitude_not_available
)
83 return utils::make_optional
<geo::longitude
>();
84 return to_geo_longitude(longitude_minutes
);
87 utils::optional
<geo::latitude
> message_19::get_latitude() const
89 if (latitude_minutes
== latitude_not_available
)
90 return utils::make_optional
<geo::latitude
>();
91 return to_geo_latitude(latitude_minutes
);
94 void message_19::set_longitude(const utils::optional
<geo::longitude
> & t
)
96 longitude_minutes
= t
? to_longitude_minutes(t
.value()) : longitude_not_available
;
99 void message_19::set_latitude(const utils::optional
<geo::latitude
> & t
)
101 latitude_minutes
= t
? to_latitude_minutes(t
.value()) : latitude_not_available
;