NMEA2000 Library  0.1
Library to handle NMEA 2000 Communication written in C++
NMEA2000StdTypes.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015-2024 Timo Lappalainen, Kave Oy, www.kave.fi
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
14 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 * SOFTWARE.
20*/
21/*************************************************************************/
47#ifndef _NMEA2000StdTypes_H_
48#define _NMEA2000StdTypes_H_
49
50#include <stdint.h>
51
54/*************************************************************************/
78 };
79
80/*************************************************************************/
102 };
103
104/*************************************************************************/
120 };
121
122/*************************************************************************/
146 };
147
148/*************************************************************************/
175 uint16_t Status;
176 struct {
177 uint16_t CheckEngine:1;
178 uint16_t OverTemperature:1;
179 uint16_t LowOilPressure:1;
180 uint16_t LowOilLevel:1;
181 uint16_t LowFuelPressure:1;
182 uint16_t LowSystemVoltage:1;
183 uint16_t LowCoolantLevel:1;
184 uint16_t WaterFlow:1;
185 uint16_t WaterInFuel:1;
186 uint16_t ChargeIndicator:1;
187 uint16_t PreheatIndicator:1;
188 uint16_t HighBoostPressure:1;
189 uint16_t RevLimitExceeded:1;
190 uint16_t EGRSystem:1;
194 tN2kDD206(uint16_t _Status=0): Status(_Status) {};
195};
196
197/*************************************************************************/
224 uint16_t Status;
225 struct {
226 uint16_t WarningLevel1:1;
227 uint16_t WarningLevel2:1;
229 uint16_t MaintenanceNeeded:1;
230 uint16_t EngineCommError:1;
234 uint16_t Manufacturer1:1;
235 uint16_t Manufacturer2:1;
236 uint16_t Manufacturer3:1;
237 uint16_t Manufacturer4:1;
238 uint16_t Manufacturer5:1;
239 uint16_t Manufacturer6:1;
240 uint16_t Manufacturer7:1;
241 uint16_t Manufacturer8:1;
243 tN2kDD223(uint16_t _Status=0): Status(_Status) {};
244 uint16_t operator= (uint16_t val) { Status=val & 0x00ff; return Status;}
245};
246
247/*************************************************************************/
297};
298
299/*************************************************************************/
318
319/*************************************************************************/
339 unsigned char Events;
340 struct {
342 unsigned char MotorOverCurrentCutout:1;
343 unsigned char LowOilLevelWarning:1;
346 unsigned char ManufacturerDefined:1;
347 unsigned char Reserved:1;
348 unsigned char DataNotAvailable:1;
351 void SetEvents(unsigned char _Events) { Events = (_Events & 0xbf); }
352};
353
354/*************************************************************************/
372
373/*************************************************************************/
390
391/*************************************************************************/
403 unsigned char Events;
404 struct {
406 unsigned char BoatSpeedTooFast:1;
409 void SetEvents(unsigned char _Events) { Events = (_Events & 0x03); }
410};
411
412/*************************************************************************/
425 unsigned char Events;
426 struct {
432 void SetEvents(unsigned char _Events) { Events = (_Events & 0x07); }
433 };
434
435/*************************************************************************/
447 unsigned char Events;
448 struct {
452 void SetEvents(unsigned char _Events) { Events = (_Events & 0x01); }
453 };
454
455/*************************************************************************/
471 };
472
473/*************************************************************************/
488 };
489
490/*************************************************************************/
505 };
506
507/*************************************************************************/
521 unsigned char Events;
522 struct {
523 unsigned char SystemError:1;
524 unsigned char SensorError:1;
525 unsigned char NoWindlassMotionDetected:1;
527 unsigned char EndOfRodeReached:1;
530 void SetEvents(unsigned char _Events) { Events = (_Events & 0x1F); }
531 };
532
533/*************************************************************************/
548 };
549
550/*************************************************************************/
568 };
569
570/*************************************************************************/
585 };
586
587#endif
588
@ N2kDD481_ChainPresentlyDetected
Chain presently detected.
@ N2kDD481_Error
Error.
@ N2kDD481_RopePresentlyDetected
Rope presently detected.
@ N2kDD481_Unavailable
Unavailable.
@ N2kDD474_Extend
Thruster retraction Extend.
@ N2kDD474_Retract
Thruster retraction Retract.
@ N2kDD474_OFF
Thruster retraction Off.
@ N2kDD474_Reserved
Thruster retraction Reserved.
@ N2kDD482_Error
Error.
@ N2kDD482_FullyDocked
Fully docked.
@ N2kDD482_NotDocked
Not docked.
@ N2kDD482_DataNotAvailable
Data not available.
@ N2kDD124_TrackedWithDifferentialCorrections
Tracked with Differential Corrections.
@ N2kDD124_TrackedButNotUsedInSolution
Tracked but not used in solution.
@ N2kDD124_DifferentialCorrectionsAvailable
Differential Corrections available.
@ N2kDD124_UsedWithDifferentialCorrections
used with Differential Corrections
@ N2kDD124_Unavailable
no selection, unavailable
@ N2kDD124_Error
error occurred
@ N2kDD124_UsedInSolutionWithoutDifferentialCorrections
Used in solution without Differential corrections.
@ N2kDD124_NotTracked
Not Tracked.
@ N2kAISAtoN_isolated_danger
Floating AtoN type Isolated danger.
@ N2kAISAtoN_preferred_channel_starboard_hand
Floating AtoN type Preferred Channel Starboard hand.
@ N2kAISAtoN_safe_water
Floating AtoN type Safe Water.
@ N2kAISAtoN_light_with_sectors
Fixed AtoN type Light, with sectors.
@ N2kAISAtoN_light_vessel_lanby_rigs
Floating AtoN type Light Vessel/LANBY/Rigs.
@ N2kAISAtoN_RACON
AtoN type RACON.
@ N2kAISAtoN_beacon_starboard_hand
Fixed AtoN type Beacon, starboard hand.
@ N2kAISAtoN_beacon_port_hand
Fixed AtoN type Beacon, Port hand.
@ N2kAISAtoN_preferred_channel_port_hand
Floating AtoN type Preferred Channel Port hand.
@ N2kAISAtoN_cardinal_mark_S
Floating AtoN type Cardinal Mark S.
@ N2kAISAtoN_not_specified
Default, type of AtoN not specified.
@ N2kAISAtoN_beacon_special_mark
Fixed AtoN type Beacon, Special mark.
@ N2kAISAtoN_cardinal_mark_N
Floating AtoN type Cardinal Mark N.
@ N2kAISAtoN_leading_light_front
Fixed AtoN type Leading Light Front.
@ N2kAISAtoN_cardinal_mark_E
Floating AtoN type Cardinal Mark E.
@ N2kAISAtoN_beacon_cardinal_E
Fixed AtoN type Beacon, Cardinal E.
@ N2kAISAtoN_leading_light_rear
Fixed AtoN type Leading Light Rear.
@ N2kAISAtoN_special_mark
Floating AtoN type Special Mark.
@ N2kAISAtoN_cardinal_mark_W
Floating AtoN type Cardinal Mark W.
@ N2kAISAtoN_beacon_safe_water
Fixed AtoN type Beacon, Safe water.
@ N2kAISAtoN_beacon_cardinal_S
Fixed AtoN type Beacon, Cardinal S.
@ N2kAISAtoN_beacon_preferred_ch_port_hand
Fixed AtoN type Beacon, Preferred Channel port hand.
@ N2kAISAtoN_beacon_isolated_danger
Fixed AtoN type Beacon, Isolated danger.
@ N2kAISAtoN_beacon_cardinal_W
Fixed AtoN type Beacon, Cardinal W.
@ N2kAISAtoN_light_without_sectors
Fixed AtoN type Light, without sectors.
@ N2kAISAtoN_emergency_wreck_marking_buoy
AtoN type Emergency Wreck Marking Buoy.
@ N2kAISAtoN_fixed_structure
AtoN type Fixed structures off-shore, such as oil platforms, wind farms.
@ N2kAISAtoN_port_hand_mark
Floating AtoN type Port hand Mark.
@ N2kAISAtoN_starboard_hand_mark
Floating AtoN type Starboard hand Mark.
@ N2kAISAtoN_beacon_preferred_ch_starboard_hand
Fixed AtoN type Beacon, Preferred Channel starboard hand.
@ N2kAISAtoN_beacon_cardinal_N
Fixed AtoN type Beacon, Cardinal N.
@ N2kAISAtoN_reference_point
AtoN type reference point.
@ N2kDD072_RangeResidualsWereUsedToCalculateData
range residuals were used to calculate data
@ N2kDD072_Unavailable
data not available
@ N2kDD072_Error
error occurred
@ N2kDD072_RangeResidualsWereCalculatedAfterPosition
range residuals were calculated after the position
@ N2kDD025_Differential
differential mode
@ N2kDD025_Estimated
estimated mode
@ N2kDD025_Simulator
simulator mode
@ N2kDD025_Unavailable
data not available
@ N2kDD025_Autonomous
autonomous mode
@ N2kDD025_Manual
manual mode
@ N2kDD025_Error
error occurred
@ N2kDD487_48VDC
Motor Power Type is 48VDC.
@ N2kDD487_24VDC
Motor Power Type is 24VDC.
@ N2kDD487_24VAC
Motor Power Type is 24VAC.
@ N2kDD487_Hydraulic
Motor Power Type is hydraulic.
@ N2kDD487_12VDC
Motor Power Type is 12VDC.
@ N2kDD473_OFF
Thruster is Off.
@ N2kDD473_ThrusterReady
Truster is Ready.
@ N2kDD473_ThrusterToSTARBOARD
Thruster to starboard.
@ N2kDD473_ThrusterToPORT
Truster to port.
@ N2kDD374_MinimumDefined
Data is a defined minimum.
@ N2kDD374_UserDefined
Data is user defined
@ N2kDD374_OutOfRange
Data is out of range.
@ N2kDD374_DataNotAvailable
Data is not available.
@ N2kDD374_FactoryDefault
Data is Factory Default.
@ N2kDD374_MaximumSupported
Maximum
@ N2kDD002_Off
paired status is NO
@ N2kDD002_No
paired status is NO
@ N2kDD002_1
paired status is YES
@ N2kDD002_Set
paired status is YES
@ N2kDD002_0
paired status is NO
@ N2kDD002_On
paired status is YES
@ N2kDD002_Unknown
paired status is UNKNOWN
@ N2kDD002_Error
paired status is Error
@ N2kDD002_Reset
paired status is NO
@ N2kDD002_Unavailable
paired status is UNKNOWN
@ N2kDD002_Disabled
paired status is NO
@ N2kDD002_Yes
paired status is YES
@ N2kDD002_Enabled
paired status is YES
@ N2kDD488_DataNotAvailable
Data Not Available.
@ N2kDD488_ProportionalSpeed
Proportional Speed.
@ N2kDD488_DualSpeed
Dual Speed.
@ N2kDD488_SingleSpeed
Single Speed.
@ N2kDD480_Unavailable
Unavailable.
@ N2kDD480_DeploymentOccurring
Deployment occurring.
@ N2kDD480_WindlassStopped
Windlass stopped.
@ N2kDD480_RetrievalOccurring
Retrieval occurring.
@ N2kDD484_Off
Status only / cannot command.
@ N2kDD484_Reserved
Reserved.
@ N2kDD484_Down
Windlass DOWN.
@ N2kDD484_Up
Windlass UP.
tN2kDD481
DD481 - Rode Type States according to PGN 128777.
tN2kDD474
DD474 - Thruster Retraction according to PGN 128006.
tN2kDD482
DD482 - Anchor Docking States according to PGN 128777.
tN2kDD124
DD124 - PRN Usage Status.
tN2kDD305
Enumeration of Aid to Navigation (AtoN) Type according to PGN129041.
tN2kDD072
DD072 - Range Residual Mode.
tN2kDD025
DD025 - Mode, Data.
tN2kDD487
DD487 - Motor Power Type according to PGN 128007.
tN2kDD473
DD473 - Thruster Direction Control according to PGN 128006.
tN2kDD374
Measurement delay source.
tN2kDD002
DD002 - Generic Status Pair.
tN2kDD488
DD488 - Speed Control Type according to PGN 128776.
tN2kDD480
DD480 - Windlass Motion States according to PGN 128777.
tN2kDD484
DD484 - Windlass Direction Control according to PGN 128776.
DD206 - Engine Discrete Warning Status.
uint16_t EngineEmergencyStopMode
engine emergency stop mode status bit
uint16_t PreheatIndicator
pre heat indicator status bit
uint16_t WaterInFuel
water in fuel status bit
uint16_t LowOilPressure
low oil pressure status bit
uint16_t LowFuelPressure
low fuel pressure status bit
uint16_t RevLimitExceeded
rev limit exceeded status bit
uint16_t Status
2byte status with all individual status bits included
tN2kDD206(uint16_t _Status=0)
uint16_t LowSystemVoltage
low system voltage status bit
uint16_t HighBoostPressure
high boost pressure status bit
uint16_t WaterFlow
water flow status bit
struct tN2kDD206::@2 Bits
uint16_t CheckEngine
check engine status bit
uint16_t LowOilLevel
low oil level status bit
uint16_t EGRSystem
egr system status bit
uint16_t LowCoolantLevel
low coolant status bit
uint16_t ThrottlePositionSensor
throttle position sensor status bit
uint16_t OverTemperature
over temperature status bit
uint16_t ChargeIndicator
charge indicator status bit
DD223 - Engine Discrete Warning Status.
uint16_t Manufacturer6
reserved
uint16_t EngineShuttingDown
engine shuting down status bit
uint16_t Manufacturer4
reserved
uint16_t Manufacturer5
reserved
uint16_t EngineCommError
engine communication error status bit
uint16_t Status
2byte status with all individual status bits included
tN2kDD223(uint16_t _Status=0)
uint16_t SubOrSecondaryThrottle
sub or secondary throttle is used status bit
struct tN2kDD223::@3 Bits
uint16_t LowOiPowerReduction
engine power reduction due to low oil pressure status bit
uint16_t WarningLevel2
engine warning level 2 status bit
uint16_t WarningLevel1
engine warning level 1 status bit
uint16_t Manufacturer3
reserved
uint16_t Manufacturer8
reserved
uint16_t operator=(uint16_t val)
uint16_t MaintenanceNeeded
engine maintenance needed status bit
uint16_t Manufacturer1
reserved
uint16_t Manufacturer7
reserved
uint16_t NeutralStartProtect
neutral start protection status bit
uint16_t Manufacturer2
reserved
DD471 - Thruster Motor Events according to PGN 128008.
unsigned char MotorOverTemperatureCutout
status bit for Motor over temperature cutout
struct tN2kDD471::@4 Event
unsigned char DataNotAvailable
Data Not Available.
unsigned char LowOilLevelWarning
status bit for Low oil level warning
unsigned char Reserved
Reserved.
unsigned char OilOverTemperatureWarning
status bit for Oil over temperature warning
unsigned char ControllerUnderVoltageCutout
status bit for Controller under voltage cutout
unsigned char ManufacturerDefined
Manufacturer defined.
unsigned char Events
1byte with all Thruster Motor Events, 0x00 -> No errors present
void SetEvents(unsigned char _Events)
unsigned char MotorOverCurrentCutout
status bit for Motor over current cutout
DD475 - Thruster Control Events according to PGN 128006.
unsigned char AnotherDeviceControllingThruster
Another device is controlling thruster.
unsigned char Events
1byte of all Thruster Control Events, 0x00 would be NoErrors
void SetEvents(unsigned char _Events)
unsigned char BoatSpeedTooFast
Boat speed too fast to safely use thruster.
struct tN2kDD475::@5 Event
DD477 - Windlass Monitoring Events according to PGN 128778.
void SetEvents(unsigned char _Events)
struct tN2kDD477::@6 Event
unsigned char ControllerOverTemperatureCutout
Controller over temperature cut-out.
unsigned char ControllerUnderVoltageCutout
Controller under voltage cut-out.
unsigned char Events
1byte of all Windlass Monitoring Events, 0x00 would be NoErrors present
unsigned char ControllerOverCurrentCutout
Controller over current cut-out.
DD478 - Windlass Control Events according to PGN 128776.
unsigned char Events
1byte of all Windlass Control Events, 0x00 would be NoErrors present
unsigned char AnotherDeviceControllingWindlass
Another device controlling windlass.
void SetEvents(unsigned char _Events)
struct tN2kDD478::@7 Event
DD483 - Windlass Operating Events according to PGN 128777.
unsigned char SensorError
Sensor error.
void SetEvents(unsigned char _Events)
struct tN2kDD483::@8 Event
unsigned char EndOfRodeReached
End of rode reached (rode has been fully deployed)
unsigned char SystemError
System error.
unsigned char NoWindlassMotionDetected
No windlass motion detected.
unsigned char RetrievalDockingDistanceReached
Retrieval docking distance reached (retrieving anchor is nearing the boat, so more care can be taken ...
unsigned char Events
1byte of all Windlass Operating Events, 0x00 would be NoErrors present