@@ -516,6 +516,50 @@ bool PublishNovbInspvax(const novb::NovbHeader* header, const novb::NovbInspvax*
516516
517517// ---------------------------------------------------------------------------------------------------------------------
518518
519+ static void NovbHeading2ToMsg (const novb::NovbHeader* header, const novb::NovbHeading2* payload,
520+ fpmsgs::NovbHeading2& msg) {
521+ if ((header != NULL ) && (payload != NULL ) && header->IsLongHeader ()) {
522+ time::Time stamp;
523+ if (stamp.SetWnoTow ({header->long_header .gps_week , (double )header->long_header .gps_milliseconds * 1e-3 ,
524+ time::WnoTow::Sys::GPS})) {
525+ msg.header .stamp = ros2::utils::ConvTime (stamp);
526+ }
527+
528+ msg.sol_status = payload->sol_status ;
529+ msg.pos_type = payload->pos_type ;
530+ msg.length = payload->length ;
531+ msg.heading = payload->heading ;
532+ msg.pitch = payload->pitch ;
533+ msg.reserved = payload->reserved ;
534+ msg.heading_stdev = payload->heading_stdev ;
535+ msg.pitch_stdev = payload->pitch_stdev ;
536+ msg.rover_stn_id = fpsdk::common::string::BufToStr (
537+ {payload->rover_stn_id , payload->rover_stn_id + sizeof (payload->rover_stn_id )});
538+ msg.master_stn_id = fpsdk::common::string::BufToStr (
539+ {payload->master_stn_id , payload->master_stn_id + sizeof (payload->master_stn_id )});
540+ msg.num_sv_tracked = payload->num_sv_tracked ;
541+ msg.num_sv_in_sol = payload->num_sv_in_sol ;
542+ msg.num_sv_obs = payload->num_sv_obs ;
543+ msg.num_sv_multi = payload->num_sv_multi ;
544+ msg.sol_source = payload->sol_source ;
545+ msg.ext_sol_status = payload->ext_sol_status ;
546+ msg.galileo_beidou_sig_mask = payload->galileo_beidou_sig_mask ;
547+ msg.gps_glonass_sig_mask = payload->gps_glonass_sig_mask ;
548+ }
549+ }
550+
551+ bool PublishNovbHeading2 (const novb::NovbHeader* header, const novb::NovbHeading2* payload,
552+ rclcpp::Publisher<fpmsgs::NovbHeading2>::SharedPtr& pub) {
553+ if (pub->get_subscription_count () > 0 ) {
554+ fpmsgs::NovbHeading2 msg;
555+ NovbHeading2ToMsg (header, payload, msg);
556+ pub->publish (msg);
557+ }
558+ return true ;
559+ }
560+
561+ // ---------------------------------------------------------------------------------------------------------------------
562+
519563void PublishNmeaGga (const fpsdk::common::parser::nmea::NmeaGgaPayload& payload,
520564 rclcpp::Publisher<fpmsgs::NmeaGga>::SharedPtr& pub) {
521565 if (pub->get_subscription_count () > 0 ) {
0 commit comments