#49: better handling of VHW - optionally send 127250 for both mag/true, always send 128259 also if no heading is available

This commit is contained in:
andreas 2023-03-08 15:58:08 +01:00
parent ef2a79fc8b
commit 2e58716716
1 changed files with 14 additions and 5 deletions

View File

@ -526,7 +526,7 @@ private:
boatData->VAR->getDataWithDefault(N2kDoubleNA), boatData->VAR->getDataWithDefault(N2kDoubleNA),
boatData->DEV->getDataWithDefault(N2kDoubleNA) boatData->DEV->getDataWithDefault(N2kDoubleNA)
); );
send(n2kMsg,msg.sourceId); send(n2kMsg,msg.sourceId,"127250M");
} }
void convertHDT(const SNMEA0183Msg &msg){ void convertHDT(const SNMEA0183Msg &msg){
@ -570,7 +570,7 @@ private:
UD(DEV); UD(DEV);
tN2kMsg n2kMsg; tN2kMsg n2kMsg;
SetN2kMagneticHeading(n2kMsg,1,MHDG,DEV,VAR); SetN2kMagneticHeading(n2kMsg,1,MHDG,DEV,VAR);
send(n2kMsg,msg.sourceId); send(n2kMsg,msg.sourceId,"127250M");
} }
void convertDPT(const SNMEA0183Msg &msg){ void convertDPT(const SNMEA0183Msg &msg){
@ -692,10 +692,19 @@ private:
LOG_DEBUG(GwLog::DEBUG, "failed to parse VHW %s", msg.line); LOG_DEBUG(GwLog::DEBUG, "failed to parse VHW %s", msg.line);
return; return;
} }
if (! updateDouble(boatData->STW,STW,msg.sourceId)) return;
if (! updateDouble(boatData->HDG,TrueHeading,msg.sourceId)) return;
if (MagneticHeading == NMEA0183DoubleNA) MagneticHeading=N2kDoubleNA;
tN2kMsg n2kMsg; 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); SetN2kBoatSpeed(n2kMsg,1,STW);
send(n2kMsg,msg.sourceId); send(n2kMsg,msg.sourceId);