From 2e5871671601cd41b8b98b533c3877c9feed3380 Mon Sep 17 00:00:00 2001 From: andreas Date: Wed, 8 Mar 2023 15:58:08 +0100 Subject: [PATCH] #49: better handling of VHW - optionally send 127250 for both mag/true, always send 128259 also if no heading is available --- lib/nmea0183ton2k/NMEA0183DataToN2K.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/nmea0183ton2k/NMEA0183DataToN2K.cpp b/lib/nmea0183ton2k/NMEA0183DataToN2K.cpp index cd4fbc83..08e4bf79 100644 --- a/lib/nmea0183ton2k/NMEA0183DataToN2K.cpp +++ b/lib/nmea0183ton2k/NMEA0183DataToN2K.cpp @@ -526,7 +526,7 @@ class NMEA0183DataToN2KFunctions : public NMEA0183DataToN2K boatData->VAR->getDataWithDefault(N2kDoubleNA), boatData->DEV->getDataWithDefault(N2kDoubleNA) ); - send(n2kMsg,msg.sourceId); + send(n2kMsg,msg.sourceId,"127250M"); } void convertHDT(const SNMEA0183Msg &msg){ @@ -570,7 +570,7 @@ class NMEA0183DataToN2KFunctions : public NMEA0183DataToN2K UD(DEV); tN2kMsg n2kMsg; SetN2kMagneticHeading(n2kMsg,1,MHDG,DEV,VAR); - send(n2kMsg,msg.sourceId); + send(n2kMsg,msg.sourceId,"127250M"); } void convertDPT(const SNMEA0183Msg &msg){ @@ -692,10 +692,19 @@ class NMEA0183DataToN2KFunctions : public NMEA0183DataToN2K LOG_DEBUG(GwLog::DEBUG, "failed to parse VHW %s", msg.line); return; } - if (! updateDouble(boatData->STW,STW,msg.sourceId)) return; - if (! updateDouble(boatData->HDG,TrueHeading,msg.sourceId)) return; - if (MagneticHeading == NMEA0183DoubleNA) MagneticHeading=N2kDoubleNA; tN2kMsg n2kMsg; + if (updateDouble(boatData->HDG,TrueHeading,msg.sourceId)){ + SetN2kTrueHeading(n2kMsg,1,TrueHeading); + send(n2kMsg,msg.sourceId); + } + if(updateDouble(boatData->MHDG,MagneticHeading,msg.sourceId)){ + SetN2kMagneticHeading(n2kMsg,1,MagneticHeading, + boatData->DEV->getDataWithDefault(N2kDoubleNA), + boatData->VAR->getDataWithDefault(N2kDoubleNA) + ); + send(n2kMsg,msg.sourceId,"127250M"); //ensure both mag and true are sent + } + if (! updateDouble(boatData->STW,STW,msg.sourceId)) return; SetN2kBoatSpeed(n2kMsg,1,STW); send(n2kMsg,msg.sourceId);