convert VHW,VTG

This commit is contained in:
andreas 2021-11-10 18:25:08 +01:00
parent 5560c39a02
commit e1e2998a9a
1 changed files with 38 additions and 1 deletions

View File

@ -520,6 +520,37 @@ private:
}
}
void convertVHW(const SNMEA0183Msg &msg){
double TrueHeading=NMEA0183DoubleNA;
double MagneticHeading=NMEA0183DoubleNA;
double STW=NMEA0183DoubleNA;
if (! NMEA0183ParseVHW_nc(msg,TrueHeading,MagneticHeading,STW)){
logger->logDebug(GwLog::DEBUG, "failed to parse VHW %s", msg.line);
return;
}
if (! updateDouble(boatData->STW,STW,msg.sourceId)) return;
if (! updateDouble(boatData->Heading,TrueHeading,msg.sourceId)) return;
if (MagneticHeading == NMEA0183DoubleNA) MagneticHeading=N2kDoubleNA;
tN2kMsg n2kMsg;
SetN2kBoatSpeed(n2kMsg,1,STW);
send(n2kMsg);
}
void convertVTG(const SNMEA0183Msg &msg){
double COG=NMEA0183DoubleNA;
double SOG=NMEA0183DoubleNA;
double MCOG=NMEA0183DoubleNA;
if (! NMEA0183ParseVTG_nc(msg,COG,MCOG,SOG)){
logger->logDebug(GwLog::DEBUG, "failed to parse VTG %s", msg.line);
return;
}
if (! UD(COG)) return;
if (! UD(SOG)) return;
tN2kMsg n2kMsg;
//TODO: maybe use MCOG if no COG?
SetN2kCOGSOGRapid(n2kMsg,1,N2khr_true,COG,SOG);
send(n2kMsg);
}
//shortcut for lambda converters
#define CVL [](const SNMEA0183Msg &msg, NMEA0183DataToN2KFunctions *p) -> void
@ -563,6 +594,12 @@ private:
converters.registerConverter(
127245UL,
String(F("RSA")), &NMEA0183DataToN2KFunctions::convertRSA);
converters.registerConverter(
128259UL,
String(F("VHW")), &NMEA0183DataToN2KFunctions::convertVHW);
converters.registerConverter(
129026UL,
String(F("VTG")), &NMEA0183DataToN2KFunctions::convertVTG);
unsigned long *aispgns=new unsigned long[7]{129810UL,129809UL,129040UL,129039UL,129802UL,129794UL,129038UL};
converters.registerConverter(7,&aispgns[0],
String(F("AIVDM")),&NMEA0183DataToN2KFunctions::convertAIVDX);