fix a crash in ParseN2kGNSS, initialize double values for all n2k to 0183 conversions
This commit is contained in:
parent
724733c306
commit
db7647aa78
|
@ -366,16 +366,16 @@ private:
|
||||||
tN2kGNSStype GNSStype;
|
tN2kGNSStype GNSStype;
|
||||||
tN2kGNSSmethod GNSSmethod;
|
tN2kGNSSmethod GNSSmethod;
|
||||||
unsigned char nSatellites;
|
unsigned char nSatellites;
|
||||||
double HDOP;
|
double HDOP=N2kDoubleNA;
|
||||||
double PDOP;
|
double PDOP=N2kDoubleNA;
|
||||||
double GeoidalSeparation;
|
double GeoidalSeparation=N2kDoubleNA;
|
||||||
unsigned char nReferenceStations;
|
unsigned char nReferenceStations;
|
||||||
tN2kGNSStype ReferenceStationType;
|
tN2kGNSStype ReferenceStationType;
|
||||||
uint16_t ReferenceSationID;
|
uint16_t ReferenceSationID;
|
||||||
double AgeOfCorrection;
|
double AgeOfCorrection=N2kDoubleNA;
|
||||||
double Latitude;
|
double Latitude=N2kDoubleNA;
|
||||||
double Longitude;
|
double Longitude=N2kDoubleNA;
|
||||||
double Altitude;
|
double Altitude=N2kDoubleNA;
|
||||||
uint16_t DaysSince1970;
|
uint16_t DaysSince1970;
|
||||||
double GpsTime;
|
double GpsTime;
|
||||||
if (ParseN2kGNSS(N2kMsg, SID, DaysSince1970, GpsTime, Latitude, Longitude, Altitude, GNSStype, GNSSmethod,
|
if (ParseN2kGNSS(N2kMsg, SID, DaysSince1970, GpsTime, Latitude, Longitude, Altitude, GNSStype, GNSSmethod,
|
||||||
|
@ -403,7 +403,7 @@ private:
|
||||||
void HandleDop(const tN2kMsg &msg){
|
void HandleDop(const tN2kMsg &msg){
|
||||||
double HDOP=N2kDoubleNA;
|
double HDOP=N2kDoubleNA;
|
||||||
double VDOP=N2kDoubleNA;
|
double VDOP=N2kDoubleNA;
|
||||||
double TDOP;
|
double TDOP=N2kDoubleNA;
|
||||||
tN2kGNSSDOPmode DesiredMode;
|
tN2kGNSSDOPmode DesiredMode;
|
||||||
tN2kGNSSDOPmode ActualMode;
|
tN2kGNSSDOPmode ActualMode;
|
||||||
unsigned char SID;
|
unsigned char SID;
|
||||||
|
@ -477,7 +477,7 @@ private:
|
||||||
tNMEA0183WindReference NMEA0183Reference = NMEA0183Wind_True;
|
tNMEA0183WindReference NMEA0183Reference = NMEA0183Wind_True;
|
||||||
|
|
||||||
double x, y;
|
double x, y;
|
||||||
double WindAngle, WindSpeed;
|
double WindAngle=N2kDoubleNA, WindSpeed=N2kDoubleNA;
|
||||||
|
|
||||||
if (ParseN2kWindSpeed(N2kMsg, SID, WindSpeed, WindAngle, WindReference))
|
if (ParseN2kWindSpeed(N2kMsg, SID, WindSpeed, WindAngle, WindReference))
|
||||||
{
|
{
|
||||||
|
@ -574,7 +574,7 @@ private:
|
||||||
void HandleLog(const tN2kMsg &N2kMsg)
|
void HandleLog(const tN2kMsg &N2kMsg)
|
||||||
{
|
{
|
||||||
uint16_t DaysSince1970;
|
uint16_t DaysSince1970;
|
||||||
double GpsTime;
|
double GpsTime=N2kDoubleNA;
|
||||||
uint32_t Log, TripLog;
|
uint32_t Log, TripLog;
|
||||||
if (ParseN2kDistanceLog(N2kMsg, DaysSince1970, GpsTime, Log, TripLog))
|
if (ParseN2kDistanceLog(N2kMsg, DaysSince1970, GpsTime, Log, TripLog))
|
||||||
{
|
{
|
||||||
|
@ -607,8 +607,8 @@ private:
|
||||||
|
|
||||||
unsigned char Instance;
|
unsigned char Instance;
|
||||||
tN2kRudderDirectionOrder RudderDirectionOrder;
|
tN2kRudderDirectionOrder RudderDirectionOrder;
|
||||||
double AngleOrder;
|
double AngleOrder=N2kDoubleNA;
|
||||||
double RudderPosition;
|
double RudderPosition=N2kDoubleNA;
|
||||||
|
|
||||||
if (ParseN2kRudder(N2kMsg, RudderPosition, Instance, RudderDirectionOrder, AngleOrder))
|
if (ParseN2kRudder(N2kMsg, RudderPosition, Instance, RudderDirectionOrder, AngleOrder))
|
||||||
{
|
{
|
||||||
|
@ -642,15 +642,15 @@ private:
|
||||||
unsigned char SID;
|
unsigned char SID;
|
||||||
tN2kAISRepeat _Repeat;
|
tN2kAISRepeat _Repeat;
|
||||||
uint32_t _UserID; // MMSI
|
uint32_t _UserID; // MMSI
|
||||||
double _Latitude;
|
double _Latitude =N2kDoubleNA;
|
||||||
double _Longitude;
|
double _Longitude=N2kDoubleNA;
|
||||||
bool _Accuracy;
|
bool _Accuracy;
|
||||||
bool _RAIM;
|
bool _RAIM;
|
||||||
uint8_t _Seconds;
|
uint8_t _Seconds;
|
||||||
double _COG;
|
double _COG=N2kDoubleNA;
|
||||||
double _SOG;
|
double _SOG=N2kDoubleNA;
|
||||||
double _Heading;
|
double _Heading=N2kDoubleNA;
|
||||||
double _ROT;
|
double _ROT=N2kDoubleNA;
|
||||||
tN2kAISNavStatus _NavStatus;
|
tN2kAISNavStatus _NavStatus;
|
||||||
|
|
||||||
uint8_t _MessageType = 1;
|
uint8_t _MessageType = 1;
|
||||||
|
@ -729,13 +729,13 @@ private:
|
||||||
char _Callsign[8];
|
char _Callsign[8];
|
||||||
char _Name[21];
|
char _Name[21];
|
||||||
uint8_t _VesselType;
|
uint8_t _VesselType;
|
||||||
double _Length;
|
double _Length=N2kDoubleNA;
|
||||||
double _Beam;
|
double _Beam=N2kDoubleNA;
|
||||||
double _PosRefStbd;
|
double _PosRefStbd=N2kDoubleNA;
|
||||||
double _PosRefBow;
|
double _PosRefBow=N2kDoubleNA;
|
||||||
uint16_t _ETAdate;
|
uint16_t _ETAdate;
|
||||||
double _ETAtime;
|
double _ETAtime=N2kDoubleNA;
|
||||||
double _Draught;
|
double _Draught=N2kDoubleNA;
|
||||||
char _Destination[21];
|
char _Destination[21];
|
||||||
tN2kAISVersion _AISversion;
|
tN2kAISVersion _AISversion;
|
||||||
tN2kGNSStype _GNSStype;
|
tN2kGNSStype _GNSStype;
|
||||||
|
@ -838,14 +838,14 @@ private:
|
||||||
uint8_t _MessageID;
|
uint8_t _MessageID;
|
||||||
tN2kAISRepeat _Repeat;
|
tN2kAISRepeat _Repeat;
|
||||||
uint32_t _UserID; // MMSI
|
uint32_t _UserID; // MMSI
|
||||||
double _Latitude;
|
double _Latitude=N2kDoubleNA;
|
||||||
double _Longitude;
|
double _Longitude=N2kDoubleNA;
|
||||||
bool _Accuracy;
|
bool _Accuracy;
|
||||||
bool _RAIM;
|
bool _RAIM;
|
||||||
uint8_t _Seconds;
|
uint8_t _Seconds;
|
||||||
double _COG;
|
double _COG=N2kDoubleNA;
|
||||||
double _SOG;
|
double _SOG=N2kDoubleNA;
|
||||||
double _Heading;
|
double _Heading=N2kDoubleNA;
|
||||||
tN2kAISUnit _Unit;
|
tN2kAISUnit _Unit;
|
||||||
bool _Display, _DSC, _Band, _Msg22, _State;
|
bool _Display, _DSC, _Band, _Msg22, _State;
|
||||||
tN2kAISMode _Mode;
|
tN2kAISMode _Mode;
|
||||||
|
@ -913,10 +913,10 @@ private:
|
||||||
char _Callsign[8];
|
char _Callsign[8];
|
||||||
char _Vendor[4];
|
char _Vendor[4];
|
||||||
uint8_t _VesselType;
|
uint8_t _VesselType;
|
||||||
double _Length;
|
double _Length=N2kDoubleNA;
|
||||||
double _Beam;
|
double _Beam=N2kDoubleNA;
|
||||||
double _PosRefStbd;
|
double _PosRefStbd=N2kDoubleNA;
|
||||||
double _PosRefBow;
|
double _PosRefBow=N2kDoubleNA;
|
||||||
|
|
||||||
if (ParseN2kPGN129810(N2kMsg, _MessageID, _Repeat, _UserID, _VesselType, _Vendor, _Callsign,
|
if (ParseN2kPGN129810(N2kMsg, _MessageID, _Repeat, _UserID, _VesselType, _Vendor, _Callsign,
|
||||||
_Length, _Beam, _PosRefStbd, _PosRefBow, _MothershipID))
|
_Length, _Beam, _PosRefStbd, _PosRefBow, _MothershipID))
|
||||||
|
@ -1237,9 +1237,9 @@ private:
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned char SID=-1;
|
unsigned char SID=-1;
|
||||||
double OutsideAmbientAirTemperature;
|
double OutsideAmbientAirTemperature=N2kDoubleNA;
|
||||||
double AtmosphericPressure;
|
double AtmosphericPressure=N2kDoubleNA;
|
||||||
double WaterTemperature;
|
double WaterTemperature=N2kDoubleNA;
|
||||||
if (ParseN2kPGN130310(N2kMsg, SID, WaterTemperature, OutsideAmbientAirTemperature, AtmosphericPressure))
|
if (ParseN2kPGN130310(N2kMsg, SID, WaterTemperature, OutsideAmbientAirTemperature, AtmosphericPressure))
|
||||||
{
|
{
|
||||||
updateDouble(boatData->WTemp, WaterTemperature);
|
updateDouble(boatData->WTemp, WaterTemperature);
|
||||||
|
@ -1354,7 +1354,7 @@ private:
|
||||||
unsigned char SID=-1;
|
unsigned char SID=-1;
|
||||||
unsigned char PressureInstance=0;
|
unsigned char PressureInstance=0;
|
||||||
tN2kPressureSource PressureSource;
|
tN2kPressureSource PressureSource;
|
||||||
double ActualPressure;
|
double ActualPressure=N2kDoubleNA;
|
||||||
if (! ParseN2kPGN130314(msg,SID, PressureInstance,
|
if (! ParseN2kPGN130314(msg,SID, PressureInstance,
|
||||||
PressureSource, ActualPressure)){
|
PressureSource, ActualPressure)){
|
||||||
LOG_DEBUG(GwLog::DEBUG,"unable to parse PGN %d",msg.PGN);
|
LOG_DEBUG(GwLog::DEBUG,"unable to parse PGN %d",msg.PGN);
|
||||||
|
@ -1369,6 +1369,7 @@ private:
|
||||||
void Handle127489(const tN2kMsg &msg){
|
void Handle127489(const tN2kMsg &msg){
|
||||||
unsigned char instance=-1;
|
unsigned char instance=-1;
|
||||||
double values[8];
|
double values[8];
|
||||||
|
for (int i=0;i<8;i++) values[i]=N2kDoubleNA;
|
||||||
int8_t ivalues[2];
|
int8_t ivalues[2];
|
||||||
if (! ParseN2kPGN127489(msg,instance,
|
if (! ParseN2kPGN127489(msg,instance,
|
||||||
values[0],values[1],values[2],values[3],values[4],values[5],
|
values[0],values[1],values[2],values[3],values[4],values[5],
|
||||||
|
@ -1390,7 +1391,7 @@ private:
|
||||||
}
|
}
|
||||||
void Handle127488(const tN2kMsg &msg){
|
void Handle127488(const tN2kMsg &msg){
|
||||||
unsigned char instance=-1;
|
unsigned char instance=-1;
|
||||||
double speed,pressure;
|
double speed=N2kDoubleNA,pressure=N2kDoubleNA;
|
||||||
int8_t tilt;
|
int8_t tilt;
|
||||||
if (! ParseN2kPGN127488(msg,instance,
|
if (! ParseN2kPGN127488(msg,instance,
|
||||||
speed,pressure,tilt)){
|
speed,pressure,tilt)){
|
||||||
|
|
Loading…
Reference in New Issue