From adecd9158edd4819b6368e697ff11ee8f77c1add Mon Sep 17 00:00:00 2001 From: ttlappalainen Date: Tue, 6 Feb 2024 09:09:06 +0000 Subject: [PATCH] deploy: 383d7fb207bd70ad6e287ff424f41f048baff8cf --- _device_analyzer_8ino_source.html | 20 +- _n2k_device_list_8cpp_source.html | 16 +- _n2k_device_list_8h_source.html | 4 +- _n2k_group_function_8cpp_source.html | 8 +- ...function_default_handlers_8cpp_source.html | 46 +- _n2k_messages_8cpp.html | 12 +- _n2k_messages_8cpp.js | 4 +- _n2k_messages_8cpp_source.html | 12 +- _n2k_messages_8h.html | 24 +- _n2k_messages_8h.js | 8 +- _n2k_messages_8h_source.html | 28 +- _n2k_messages_enum_to_str_8h.html | 6 +- _n_m_e_a2000_8cpp.html | 91 +- _n_m_e_a2000_8cpp_source.html | 4996 +++++++++-------- _n_m_e_a2000_8h.html | 42 +- _n_m_e_a2000_8h_source.html | 1474 ++--- _ring_buffer_8h.html | 27 +- _ring_buffer_8h_source.html | 290 +- _temperature_monitor_8ino_source.html | 18 +- _wind_monitor_8ino_source.html | 18 +- annotated.html | 4 +- changes.html | 427 +- classt_n_m_e_a2000.html | 307 +- classt_priority_ring_buffer-members.html | 25 +- classt_priority_ring_buffer.html | 214 +- classt_priority_ring_buffer.js | 1 + classt_priority_ring_buffer__coll__graph.map | 2 +- classt_priority_ring_buffer__coll__graph.md5 | 2 +- classt_ring_buffer.html | 160 +- dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- files.html | 2 +- functions_func_g.html | 3 +- functions_g.html | 1 + globals_func_p.html | 4 +- globals_func_s.html | 4 +- globals_p.html | 4 +- globals_s.html | 4 +- group__group__core_supplementary.html | 4 +- group__group__core_supplementary.js | 1 + group__group__msg_parsers.html | 30 +- group__group__msg_parsers.js | 4 +- group__group__msg_set_up.html | 30 +- group__group__msg_set_up.js | 4 +- hierarchy.html | 4 +- inherit_graph_25.map | 2 +- inherit_graph_25.md5 | 2 +- inherit_graph_28.map | 2 +- inherit_graph_28.md5 | 2 +- inherits.html | 4 +- list_msg.html | 2 +- navtreedata.js | 221 +- navtreeindex1.js | 82 +- navtreeindex10.js | 2 + navtreeindex2.js | 114 +- navtreeindex3.js | 52 +- navtreeindex4.js | 54 +- navtreeindex5.js | 4 +- navtreeindex6.js | 4 +- navtreeindex7.js | 32 +- navtreeindex8.js | 14 +- navtreeindex9.js | 6 +- pg_lib_ref.html | 31 +- search/all_15.js | 8 +- search/all_18.js | 4 +- search/all_9.js | 12 +- search/all_d.js | 77 +- search/functions_11.js | 4 +- search/functions_2.js | 10 +- search/functions_6.js | 63 +- search/functions_e.js | 4 +- search/variables_e.js | 4 +- ..._n_m_e_a2000_1_1t_product_information.html | 4 +- ...riority_ring_buffer_1_1t_priority_ref.html | 10 +- ..._priority_ring_buffer_1_1t_value_slot.html | 8 +- 74 files changed, 4732 insertions(+), 4493 deletions(-) diff --git a/_device_analyzer_8ino_source.html b/_device_analyzer_8ino_source.html index 4238b8a3..ee5ca7a7 100644 --- a/_device_analyzer_8ino_source.html +++ b/_device_analyzer_8ino_source.html @@ -286,18 +286,18 @@
virtual const char * GetModelID() const =0
Get the model ID from the product information of this device.
virtual const char * GetInstallationDescription2() const
Get the installation description 2 from the configuration information of this device.
Definition: NMEA2000.h:604
virtual const char * GetInstallationDescription1() const
Get the installation description 1 from the configuration information of this device.
Definition: NMEA2000.h:601
-
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:731
-
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2887
-
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2562
-
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1079
-
void SetForwardStream(N2kStream *_stream)
Set the Forward Stream object.
Definition: NMEA2000.h:2594
-
void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs)
Set incoming CAN message (tNMEA2000::N2kCANMsgBuf) buffer size.
Definition: NMEA2000.h:1812
-
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1186
+
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:745
+
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2900
+
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2577
+
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1093
+
void SetForwardStream(N2kStream *_stream)
Set the Forward Stream object.
Definition: NMEA2000.h:2603
+
void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs)
Set incoming CAN message (tNMEA2000::N2kCANMsgBuf) buffer size.
Definition: NMEA2000.h:1816
+
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1200
@ N2km_ListenAndNode
Definition: NMEA2000.h:699
@ fwdt_Text
Definition: NMEA2000.h:671
-
virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames)
Set CAN receive frame buffer size.
Definition: NMEA2000.h:1866
-
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1163
-
void SetForwardType(tForwardType fwdType)
Set the Forward Streaming Type.
Definition: NMEA2000.h:2582
+
virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames)
Set CAN receive frame buffer size.
Definition: NMEA2000.h:1870
+
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1177
+
void SetForwardType(tForwardType fwdType)
Set the Forward Streaming Type.
Definition: NMEA2000.h:2591
diff --git a/_n2k_device_list_8cpp_source.html b/_n2k_device_list_8cpp_source.html index 554c6a3e..fe5bfc5f 100644 --- a/_n2k_device_list_8cpp_source.html +++ b/_n2k_device_list_8cpp_source.html @@ -596,15 +596,15 @@
const uint16_t N2kUInt16NA
Constant "Not Available" for a unsigned 16bit int value.
Definition: N2kMsg.h:57
uint32_t N2kMillis()
Definition: N2kTimer.cpp:48
bool N2kHasElapsed(uint32_t Start, uint32_t Elapsed, uint32_t Now=N2kMillis())
Has time elapsed since start.
Definition: N2kTimer.h:111
-
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2773
-
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2858
+
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2788
+
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2873
#define N2kPGNIsoAddressClaim
PGN for an Iso Address Claim message.
Definition: NMEA2000.h:59
#define N2kPGNProductInformation
PGN for a Production Information message.
Definition: NMEA2000.h:61
#define N2kPGNConfigurationInformation
PGN for an Configuration Information message.
Definition: NMEA2000.h:63
-
void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up Message "ISO request" - PGN 59904.
Definition: NMEA2000.h:3213
-
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3249
-
@ N2kpgnl_receive
Definition: NMEA2000.h:3249
-
@ N2kpgnl_transmit
Definition: NMEA2000.h:3249
+
void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up Message "ISO request" - PGN 59904.
Definition: NMEA2000.h:3226
+
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3262
+
@ N2kpgnl_receive
Definition: NMEA2000.h:3262
+
@ N2kpgnl_transmit
Definition: NMEA2000.h:3262
This class represents an internal device.
Definition: N2kDeviceList.h:80
char * InstallationDescription1
Pointer to the Installation Description 1.
void ClearConfigurationInformationLoaded()
Resets the Configuration Information Loaded values of the device.
@@ -679,7 +679,7 @@
bool IsSame(uint64_t Other)
Check if two devices are the same, by comparing the device name.
Definition: NMEA2000.h:520
tNMEA2000 * GetNMEA2000()
Returns the tNMEA2000 object of this handler.
Definition: NMEA2000.h:633
tNMEA2000 device class definition.
Definition: NMEA2000.h:138
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
Structure that holds all the product information.
Definition: NMEA2000.h:216
unsigned short N2kVersion
Version of NMEA2000 Standard that is supported.
Definition: NMEA2000.h:219
unsigned short ProductCode
Product Code of the device.
Definition: NMEA2000.h:221
@@ -687,7 +687,7 @@
unsigned char LoadEquivalency
Load Equivalency of the device A Load Equivalence Number express the amount of current that is drawn ...
Definition: NMEA2000.h:243
unsigned char CertificationLevel
Certification level of the device.
Definition: NMEA2000.h:236
char N2kModelVersion[Max_N2kModelVersion_len+1]
Max length of Model Version Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:231
-
void Clear()
Clears out all data
Definition: NMEA2000.cpp:613
+
void Clear()
Clears out all data
Definition: NMEA2000.cpp:627
char N2kSwCode[Max_N2kSwCode_len+1]
Max length of Software Code Note that we reserve one extra char for null termination
Definition: NMEA2000.h:228
char N2kModelSerialCode[Max_N2kModelSerialCode_len+1]
Max length of Serial Code Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:234
diff --git a/_n2k_device_list_8h_source.html b/_n2k_device_list_8h_source.html index c2f455b7..27fea386 100644 --- a/_n2k_device_list_8h_source.html +++ b/_n2k_device_list_8h_source.html @@ -497,8 +497,8 @@
unsigned char LoadEquivalency
Load Equivalency of the device A Load Equivalence Number express the amount of current that is drawn ...
Definition: NMEA2000.h:243
unsigned char CertificationLevel
Certification level of the device.
Definition: NMEA2000.h:236
char N2kModelVersion[Max_N2kModelVersion_len+1]
Max length of Model Version Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:231
-
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:618
-
void Clear()
Clears out all data
Definition: NMEA2000.cpp:613
+
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:632
+
void Clear()
Clears out all data
Definition: NMEA2000.cpp:627
char N2kSwCode[Max_N2kSwCode_len+1]
Max length of Software Code Note that we reserve one extra char for null termination
Definition: NMEA2000.h:228
char N2kModelSerialCode[Max_N2kModelSerialCode_len+1]
Max length of Serial Code Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:234
void Set(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff)
Set all the product infomation data of the structure.
Definition: NMEA2000.h:262
diff --git a/_n2k_group_function_8cpp_source.html b/_n2k_group_function_8cpp_source.html index 4ad688c7..1f1790c0 100644 --- a/_n2k_group_function_8cpp_source.html +++ b/_n2k_group_function_8cpp_source.html @@ -666,10 +666,10 @@
unsigned long PGN
Parameter Group Number (PGN) of the NMEA2000 message.
Definition: N2kMsg.h:667
unsigned char Destination
Destination of the NMEA2000 message.
Definition: N2kMsg.h:671
tNMEA2000 device class definition.
Definition: NMEA2000.h:138
-
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:861
-
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2977
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:569
+
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:875
+
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2990
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:583
diff --git a/_n2k_group_function_default_handlers_8cpp_source.html b/_n2k_group_function_default_handlers_8cpp_source.html index 79dbd32d..91b195c8 100644 --- a/_n2k_group_function_default_handlers_8cpp_source.html +++ b/_n2k_group_function_default_handlers_8cpp_source.html @@ -695,8 +695,8 @@
#define Max_N2kModelVersion_len
Max length of Model Version Document says for leghts 24 but then values has not been translated right...
Definition: NMEA2000.h:78
#define Max_N2kConfigurationInfoField_len
Max length of Configuration Info Fields.
Definition: NMEA2000.h:99
#define Max_N2kModelID_len
Max length of ModelID Document says for leghts 33 but then values has not been translated right on de...
Definition: NMEA2000.h:70
-
@ N2kpgnl_receive
Definition: NMEA2000.h:3249
-
@ N2kpgnl_transmit
Definition: NMEA2000.h:3249
+
@ N2kpgnl_receive
Definition: NMEA2000.h:3262
+
@ N2kpgnl_transmit
Definition: NMEA2000.h:3262
virtual bool HandleRequest(const tN2kMsg &N2kMsg, uint32_t TransmissionInterval, uint16_t TransmissionIntervalOffset, uint8_t NumberOfParameterPairs, int iDev)
Handle response for request group function.
virtual bool HandleRequest(const tN2kMsg &N2kMsg, uint32_t TransmissionInterval, uint16_t TransmissionIntervalOffset, uint8_t NumberOfParameterPairs, int iDev)
Handle response for request group function.
virtual bool HandleRequest(const tN2kMsg &N2kMsg, uint32_t TransmissionInterval, uint16_t TransmissionIntervalOffset, uint8_t NumberOfParameterPairs, int iDev)
Handle response for request group function.
@@ -732,27 +732,27 @@
uint32_t GetUniqueNumber() const
Get the unique Number from the Device Information.
Definition: NMEA2000.h:370
unsigned char GetDeviceFunction() const
Get the Device Function from the Device Information.
Definition: NMEA2000.h:419
unsigned char GetDeviceClass() const
Get the Device Class from the Device Information.
Definition: NMEA2000.h:433
-
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1373
-
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1023
-
const tDeviceInformation GetDeviceInformation(int iDev=0)
Get the Device Information.
Definition: NMEA2000.h:2382
-
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2249
-
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:980
-
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2977
-
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2082
-
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1060
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1042
-
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1341
-
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2146
-
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2113
-
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:888
-
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2207
-
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1033
-
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1096
-
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1051
-
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:902
-
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:916
-
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:994
+
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1388
+
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1037
+
const tDeviceInformation GetDeviceInformation(int iDev=0)
Get the Device Information.
Definition: NMEA2000.h:2386
+
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2264
+
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:994
+
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2990
+
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2097
+
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1074
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1056
+
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1356
+
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2161
+
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2128
+
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:902
+
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2222
+
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1047
+
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1110
+
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1065
+
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:916
+
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:930
+
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:1008
diff --git a/_n2k_messages_8cpp.html b/_n2k_messages_8cpp.html index f9ae74b0..9b80bdc6 100644 --- a/_n2k_messages_8cpp.html +++ b/_n2k_messages_8cpp.html @@ -281,9 +281,9 @@ bool ParseN2kPGN129283 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE)  Parsing the content of Message PGN 129283 Message "Cross Track Error". More...
  -bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) - Parsing the content of message PGN 129284 "Navigation Data". More...
-  +bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) + Parsing the content of message PGN 129284 "Navigation Data". More...
+  bool ParseN2kPgn129539 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP)  Parsing the content of message PGN 129539 "GNSS DOP data". More...
  @@ -446,9 +446,9 @@ void SetN2kPGN129283 (tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE)  Setting up PGN 129283 Message "Cross Track Error". More...
  -void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) - Setting up PGN 129284 Message "Navigation Data". More...
-  +void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) + Setting up PGN 129284 Message "Navigation Data". More...
+  void SetN2kPGN129285 (tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, tN2kNavigationDirection NavDirection, const char *RouteName, tN2kGenericStatusPair SupplementaryData)  Setting up PGN 129285 Message "Route/WP information". More...
  diff --git a/_n2k_messages_8cpp.js b/_n2k_messages_8cpp.js index d092df3b..8750e1e4 100644 --- a/_n2k_messages_8cpp.js +++ b/_n2k_messages_8cpp.js @@ -42,7 +42,7 @@ var _n2k_messages_8cpp = [ "ParseN2kPGN129039", "group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9", null ], [ "ParseN2kPGN129041", "group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877", null ], [ "ParseN2kPGN129283", "group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab", null ], - [ "ParseN2kPGN129284", "group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48", null ], + [ "ParseN2kPGN129284", "group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3", null ], [ "ParseN2kPgn129539", "group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319", null ], @@ -96,7 +96,7 @@ var _n2k_messages_8cpp = [ "SetN2kPGN129039", "group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808", null ], [ "SetN2kPGN129041", "group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053", null ], [ "SetN2kPGN129283", "group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53", null ], - [ "SetN2kPGN129284", "group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54", null ], + [ "SetN2kPGN129284", "group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362", null ], [ "SetN2kPGN129285", "group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b", null ], [ "SetN2kPGN129539", "group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496", null ], [ "SetN2kPGN129540", "group__group__msg_set_up.html#ga0777897e14fe643f19afb53fd7114867", null ], diff --git a/_n2k_messages_8cpp_source.html b/_n2k_messages_8cpp_source.html index 1e05d49f..598e35be 100644 --- a/_n2k_messages_8cpp_source.html +++ b/_n2k_messages_8cpp_source.html @@ -1637,10 +1637,10 @@
1519
1520//*****************************************************************************
1521// Navigation info
-
1522void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
+
1522void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
1523 bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType,
1524 double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint,
-
1525 uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber,
+
1525 uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber,
1526 double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) {
1527 N2kMsg.SetPGN(129284L);
1528 N2kMsg.Priority=3;
@@ -1658,10 +1658,10 @@
1540 N2kMsg.Add2ByteDouble(WaypointClosingVelocity,0.01);
1541}
1542
-
1543bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
+
1543bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
1544 bool& PerpendicularCrossed, bool& ArrivalCircleEntered, tN2kDistanceCalculationType& CalculationType,
1545 double& ETATime, int16_t& ETADate, double& BearingOriginToDestinationWaypoint, double& BearingPositionToDestinationWaypoint,
-
1546 uint8_t& OriginWaypointNumber, uint8_t& DestinationWaypointNumber,
+
1546 uint32_t& OriginWaypointNumber, uint32_t& DestinationWaypointNumber,
1547 double& DestinationLatitude, double& DestinationLongitude, double& WaypointClosingVelocity) {
1548
1549 if(N2kMsg.PGN != 129284L)
@@ -2318,9 +2318,9 @@
bool ParseN2kPGN130310(const tN2kMsg &N2kMsg, unsigned char &SID, double &WaterTemperature, double &OutsideAmbientAirTemperature, double &AtmosphericPressure)
Parsing the content of message PGN 130310 "Environmental Parameters - DEPRECATED".
bool ParseN2kPGN127507(const tN2kMsg &N2kMsg, unsigned char &Instance, unsigned char &BatteryInstance, tN2kChargeState &ChargeState, tN2kChargerMode &ChargerMode, tN2kOnOff &Enabled, tN2kOnOff &EqualizationPending, double &EqualizationTimeRemaining)
Parsing the content of message PGN 127507 "DC Charger Status".
bool ParseN2kPGN130316(const tN2kMsg &N2kMsg, unsigned char &SID, unsigned char &TempInstance, tN2kTempSource &TempSource, double &ActualTemperature, double &SetTemperature)
Parsing the content of message PGN 130316 "Temperature, Extended Range".
+
bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of message PGN 129284 "Navigation Data".
bool ParseN2kPGN127497(const tN2kMsg &N2kMsg, unsigned char &EngineInstance, double &TripFuelUsed, double &FuelRateAverage, double &FuelRateEconomy, double &InstantaneousFuelEconomy)
Parsing the content of Message PGN 127497 "Trip Parameters, Engine".
bool ParseN2kPGN128259(const tN2kMsg &N2kMsg, unsigned char &SID, double &WaterReferenced, double &GroundReferenced, tN2kSpeedWaterReferenceType &SWRT)
Parsing the content of message PGN 128259 "Boat Speed, Water Referenced".
-
bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of message PGN 129284 "Navigation Data".
bool ParseN2kPGN127508(const tN2kMsg &N2kMsg, unsigned char &BatteryInstance, double &BatteryVoltage, double &BatteryCurrent, double &BatteryTemperature, unsigned char &SID)
Parsing the content of message PGN 127508 "Battery Status".
bool ParseN2kPGN127502(const tN2kMsg &N2kMsg, unsigned char &TargetBankInstance, tN2kBinaryStatus &BankStatus)
Parse the content of a PGN 127502 (Switch Bank Control) message.
bool ParseN2kPGN130313(const tN2kMsg &N2kMsg, unsigned char &SID, unsigned char &HumidityInstance, tN2kHumiditySource &HumiditySource, double &ActualHumidity, double &SetHumidity)
Parsing the content of message PGN 130313 "Humidity".
@@ -2332,6 +2332,7 @@
bool ParseN2kPGN129810(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint8_t &VesselType, char *Vendor, char *Callsign, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint32_t &MothershipID)
Parsing the content of message PGN 129810 "AIS static data class B part B".
bool ParseN2kPGN127252(const tN2kMsg &N2kMsg, unsigned char &SID, double &Heave, double &Delay, tN2kDelaySource &DelaySource)
Parsing the content of Message PGN127252 "Heave".
bool ParseN2kPGN127257(const tN2kMsg &N2kMsg, unsigned char &SID, double &Yaw, double &Pitch, double &Roll)
Parsing the content of Message PGN 127257 "Attitude".
+
void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up PGN 129284 Message "Navigation Data".
void SetN2kPGN127245(tN2kMsg &N2kMsg, double RudderPosition, unsigned char Instance, tN2kRudderDirectionOrder RudderDirectionOrder, double AngleOrder)
Setting up PGN127245 Message "Rudder".
void SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID, tN2kRangeResidualMode Mode)
Setting up PGN 129540 Message "GNSS Satellites in View".
void SetN2kPGN128776(tN2kMsg &N2kMsg, unsigned char SID, unsigned char WindlassIdentifier, tN2kWindlassDirectionControl WindlassDirectionControl, unsigned char SpeedControl, tN2kSpeedType SpeedControlType, tN2kGenericStatusPair AnchorDockingControl, tN2kGenericStatusPair PowerEnable, tN2kGenericStatusPair MechanicalLock, tN2kGenericStatusPair DeckAndAnchorWash, tN2kGenericStatusPair AnchorLight, double CommandTimeout, const tN2kWindlassControlEvents &WindlassControlEvents)
Setting up PGN 128776 Message "Anchor Windlass Control Status".
@@ -2388,7 +2389,6 @@
void SetN2kPGN130312(tN2kMsg &N2kMsg, unsigned char SID, unsigned char TempInstance, tN2kTempSource TempSource, double ActualTemperature, double SetTemperature)
Setting up PGN 130312 Message "Temperature - DEPRECATED".
void SetN2kPGN128000(tN2kMsg &N2kMsg, unsigned char SID, double Leeway)
Setting up PGN 128000 Message "Nautical Leeway Angle".
void SetN2kPGN130074(tN2kMsg &N2kMsg, uint16_t Start, uint16_t NumWaypoints, uint16_t Database)
Setting up PGN 130074 Message " Route and WP Service - WP List - WP Name & Position".
-
void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up PGN 129284 Message "Navigation Data".
tN2kDistanceCalculationType
Enumeration of distance calculation types for navigation according to PGN129284.
Definition: N2kTypes.h:83
tN2kDD481
DD481 - Rode Type States according to PGN 128777.
tN2kChargerMode
Enumeration of charger modes according to PGN 127507.
Definition: N2kTypes.h:518
diff --git a/_n2k_messages_8h.html b/_n2k_messages_8h.html index edc9618f..cbc5f22d 100644 --- a/_n2k_messages_8h.html +++ b/_n2k_messages_8h.html @@ -360,9 +360,9 @@ bool ParseN2kMOBNotification (const tN2kMsg &N2kMsg, unsigned char &SID, uint32_t &MobEmitterId, tN2kMOBStatus &MOBStatus, double &ActivationTime, tN2kMOBPositionSource &PositionSource, uint16_t &PositionDate, double &PositionTime, double &Latitude, double &Longitude, tN2kHeadingReference &COGReference, double &COG, double &SOG, uint32_t &MMSI, tN2kMOBEmitterBatteryStatus &MOBEmitterBatteryStatus)  Parsing the content of a "Man Overboard Notification" message - PGN 127233. More...
  -bool ParseN2kNavigationInfo (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) - Parsing the content of a "Navigation Data" message - PGN 129284. More...
-  +bool ParseN2kNavigationInfo (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) + Parsing the content of a "Navigation Data" message - PGN 129284. More...
+  bool ParseN2kOutsideEnvironmentalParameters (const tN2kMsg &N2kMsg, unsigned char &SID, double &WaterTemperature, double &OutsideAmbientAirTemperature, double &AtmosphericPressure)  Parsing the content of a "Environmental Parameters - DEPRECATED" message - PGN 130310. More...
  @@ -488,9 +488,9 @@ bool ParseN2kPGN129283 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE)  Parsing the content of Message PGN 129283 Message "Cross Track Error". More...
  -bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) - Parsing the content of message PGN 129284 "Navigation Data". More...
-  +bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) + Parsing the content of message PGN 129284 "Navigation Data". More...
+  bool ParseN2kPgn129539 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP)  Parsing the content of message PGN 129539 "GNSS DOP data". More...
  @@ -729,9 +729,9 @@ void SetN2kMOBNotification (tN2kMsg &N2kMsg, unsigned char SID, uint32_t MobEmitterId, tN2kMOBStatus MOBStatus, double ActivationTime, tN2kMOBPositionSource PositionSource, uint16_t PositionDate, double PositionTime, double Latitude, double Longitude, tN2kHeadingReference COGReference, double COG, double SOG, uint32_t MMSI, tN2kMOBEmitterBatteryStatus MOBEmitterBatteryStatus)  Setting up Message "Man Overboard Notification" - PGN 127233. More...
  -void SetN2kNavigationInfo (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) - Setting up Message "Navigation Data" - PGN 129284. More...
-  +void SetN2kNavigationInfo (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) + Setting up Message "Navigation Data" - PGN 129284. More...
+  void SetN2kOutsideEnvironmentalParameters (tN2kMsg &N2kMsg, unsigned char SID, double WaterTemperature, double OutsideAmbientAirTemperature=N2kDoubleNA, double AtmosphericPressure=N2kDoubleNA)  Setting up Message "Environmental Parameters - DEPRECATED" - PGN 130310. More...
  @@ -846,9 +846,9 @@ void SetN2kPGN129283 (tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE)  Setting up PGN 129283 Message "Cross Track Error". More...
  -void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) - Setting up PGN 129284 Message "Navigation Data". More...
-  +void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) + Setting up PGN 129284 Message "Navigation Data". More...
+  void SetN2kPGN129285 (tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, bool NavDirection, bool SupplementaryData, char *RouteName)  Setting up Message "Route/WP information" - PGN 129285 (for backwards compatibility) More...
  diff --git a/_n2k_messages_8h.js b/_n2k_messages_8h.js index 2ce56b9c..2bb4d5af 100644 --- a/_n2k_messages_8h.js +++ b/_n2k_messages_8h.js @@ -63,7 +63,7 @@ var _n2k_messages_8h = [ "ParseN2kMagneticVariation", "group__group__msg_parsers.html#ga24bf517beb9ec3eb063f53b2c998dfea", null ], [ "ParseN2kMeteorlogicalStationData", "group__group__msg_parsers.html#ga6eaf27ccf78506df754fa017b7952a6c", null ], [ "ParseN2kMOBNotification", "group__group__msg_parsers.html#ga7510cf2dcd3c5e2f881145d9ee8e3924", null ], - [ "ParseN2kNavigationInfo", "group__group__msg_parsers.html#ga80ba7520f2adbcb00c29c457c8734c5a", null ], + [ "ParseN2kNavigationInfo", "group__group__msg_parsers.html#gaa317ce136342611a1e964d13c9a36250", null ], [ "ParseN2kOutsideEnvironmentalParameters", "group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2", null ], [ "ParseN2kPGN126992", "group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d", null ], [ "ParseN2kPGN127233", "group__group__msg_parsers.html#ga823a92e4ac25ca2f7433198d8041f1b4", null ], @@ -102,7 +102,7 @@ var _n2k_messages_8h = [ "ParseN2kPGN129039", "group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9", null ], [ "ParseN2kPGN129041", "group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877", null ], [ "ParseN2kPGN129283", "group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab", null ], - [ "ParseN2kPGN129284", "group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48", null ], + [ "ParseN2kPGN129284", "group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3", null ], [ "ParseN2kPgn129539", "group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319", null ], @@ -181,7 +181,7 @@ var _n2k_messages_8h = [ "SetN2kMagneticVariation", "group__group__msg_set_up.html#gad71219a4554305258186c4bf6e941d4c", null ], [ "SetN2kMeteorlogicalStationData", "group__group__msg_set_up.html#ga4052813ff407b4ef9689a186d04d3a28", null ], [ "SetN2kMOBNotification", "group__group__msg_set_up.html#ga96d16a01e7d797c575e6e1598ae50c9c", null ], - [ "SetN2kNavigationInfo", "group__group__msg_set_up.html#ga91c729a2e3f2e16484c5d2646de7b9d3", null ], + [ "SetN2kNavigationInfo", "group__group__msg_set_up.html#ga1b3f15b9d6b0dabb6e1c1d7eb2ffe297", null ], [ "SetN2kOutsideEnvironmentalParameters", "group__group__msg_set_up.html#ga3586af539282bfc244944c444495f105", null ], [ "SetN2kPGN126992", "group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573", null ], [ "SetN2kPGN127233", "group__group__msg_set_up.html#gab0745362d010c308e8c28edc9ab04ed5", null ], @@ -220,7 +220,7 @@ var _n2k_messages_8h = [ "SetN2kPGN129039", "group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808", null ], [ "SetN2kPGN129041", "group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053", null ], [ "SetN2kPGN129283", "group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53", null ], - [ "SetN2kPGN129284", "group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54", null ], + [ "SetN2kPGN129284", "group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362", null ], [ "SetN2kPGN129285", "group__group__msg_set_up.html#gae590b48d9bdcf6ac759ccc961fc26d73", null ], [ "SetN2kPGN129285", "group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b", null ], [ "SetN2kPGN129539", "group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496", null ], diff --git a/_n2k_messages_8h_source.html b/_n2k_messages_8h_source.html index 65ee3296..5ae21785 100644 --- a/_n2k_messages_8h_source.html +++ b/_n2k_messages_8h_source.html @@ -1364,19 +1364,19 @@
3840}
3841
3842/************************************************************************/
-
3877void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
+
3877void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
3878 bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType,
3879 double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint,
-
3880 uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber,
+
3880 uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber,
3881 double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity);
3882
3883/************************************************************************/
-
3890inline void SetN2kNavigationInfo(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
+
3890inline void SetN2kNavigationInfo(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
3891 bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType,
3892 double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint,
-
3893 uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber,
+
3893 uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber,
3894 double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) {
-
3895 SetN2kPGN129284(N2kMsg, SID, DistanceToWaypoint, BearingReference,
+
3895 SetN2kPGN129284(N2kMsg, SID, DistanceToWaypoint, BearingReference,
3896 PerpendicularCrossed, ArrivalCircleEntered, CalculationType,
3897 ETATime, ETADate, BearingOriginToDestinationWaypoint, BearingPositionToDestinationWaypoint,
3898 OriginWaypointNumber, DestinationWaypointNumber,
@@ -1384,20 +1384,20 @@
3900}
3901
3902/************************************************************************/
-
3937bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
+
3937bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
3938 bool& PerpendicularCrossed, bool& ArrivalCircleEntered, tN2kDistanceCalculationType& CalculationType,
3939 double& ETATime, int16_t& ETADate, double& BearingOriginToDestinationWaypoint, double& BearingPositionToDestinationWaypoint,
-
3940 uint8_t& OriginWaypointNumber, uint8_t& DestinationWaypointNumber,
+
3940 uint32_t& OriginWaypointNumber, uint32_t& DestinationWaypointNumber,
3941 double& DestinationLatitude, double& DestinationLongitude, double& WaypointClosingVelocity);
3942
3943
3944/************************************************************************/
-
3952inline bool ParseN2kNavigationInfo(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
+
3952inline bool ParseN2kNavigationInfo(const tN2kMsg &N2kMsg, unsigned char& SID, double& DistanceToWaypoint, tN2kHeadingReference& BearingReference,
3953 bool& PerpendicularCrossed, bool& ArrivalCircleEntered, tN2kDistanceCalculationType& CalculationType,
3954 double& ETATime, int16_t& ETADate, double& BearingOriginToDestinationWaypoint, double& BearingPositionToDestinationWaypoint,
-
3955 uint8_t& OriginWaypointNumber, uint8_t& DestinationWaypointNumber,
+
3955 uint32_t& OriginWaypointNumber, uint32_t& DestinationWaypointNumber,
3956 double& DestinationLatitude, double& DestinationLongitude, double& WaypointClosingVelocity) {
-
3957 return ParseN2kPGN129284(N2kMsg, SID, DistanceToWaypoint, BearingReference, PerpendicularCrossed, ArrivalCircleEntered, CalculationType,
+
3957 return ParseN2kPGN129284(N2kMsg, SID, DistanceToWaypoint, BearingReference, PerpendicularCrossed, ArrivalCircleEntered, CalculationType,
3958 ETATime, ETADate, BearingOriginToDestinationWaypoint, BearingPositionToDestinationWaypoint,
3959 OriginWaypointNumber, DestinationWaypointNumber, DestinationLatitude, DestinationLongitude, WaypointClosingVelocity);
3960}
@@ -1955,7 +1955,6 @@
bool ParseN2kGNSSDOPData(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP)
Parsing the content of a "GNSS DOP data" message - PGN 129539.
Definition: N2kMessages.h:4115
bool ParseN2kHumidity(const tN2kMsg &N2kMsg, unsigned char &SID, unsigned char &HumidityInstance, tN2kHumiditySource &HumiditySource, double &ActualHumidity, double &SetHumidity)
Parsing the content of a "Humidity" message - PGN 130313.
Definition: N2kMessages.h:5063
bool ParseN2kEnvironmentalParameters(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kTempSource &TempSource, double &Temperature, tN2kHumiditySource &HumiditySource, double &Humidity, double &AtmosphericPressure)
Parsing the content of a "Environmental Parameters - DEPRECATED" message - PGN 130311.
Definition: N2kMessages.h:4909
-
bool ParseN2kNavigationInfo(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of a "Navigation Data" message - PGN 129284.
Definition: N2kMessages.h:3952
bool ParseN2kPGN129283(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE)
Parsing the content of Message PGN 129283 Message "Cross Track Error".
bool ParseN2kDirectionData(const tN2kMsg &N2kMsg, tN2kDataMode &DataMode, tN2kHeadingReference &CogReference, unsigned char &SID, double &COG, double &SOG, double &Heading, double &SpeedThroughWater, double &Set, double &Drift)
Parsing the content of a "Direction Data" message - PGN 130577.
Definition: N2kMessages.h:5542
bool ParseN2kPGN127233(const tN2kMsg &N2kMsg, unsigned char &SID, uint32_t &MobEmitterId, tN2kMOBStatus &MOBStatus, double &ActivationTime, tN2kMOBPositionSource &PositionSource, uint16_t &PositionDate, double &PositionTime, double &Latitude, double &Longitude, tN2kHeadingReference &COGReference, double &COG, double &SOG, uint32_t &MMSI, tN2kMOBEmitterBatteryStatus &MOBEmitterBatteryStatus)
Parsing the Content of Message PGN127233 "Man Overboard Notification".
@@ -1971,12 +1970,13 @@
bool ParseN2kPGN127507(const tN2kMsg &N2kMsg, unsigned char &Instance, unsigned char &BatteryInstance, tN2kChargeState &ChargeState, tN2kChargerMode &ChargerMode, tN2kOnOff &Enabled, tN2kOnOff &EqualizationPending, double &EqualizationTimeRemaining)
Parsing the content of message PGN 127507 "DC Charger Status".
bool ParseN2kXTE(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE)
Parsing the content of a "Cross Track Error" message - PGN 129283.
Definition: N2kMessages.h:3838
bool ParseN2kPGN130316(const tN2kMsg &N2kMsg, unsigned char &SID, unsigned char &TempInstance, tN2kTempSource &TempSource, double &ActualTemperature, double &SetTemperature)
Parsing the content of message PGN 130316 "Temperature, Extended Range".
+
bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of message PGN 129284 "Navigation Data".
bool ParseN2kPGN127497(const tN2kMsg &N2kMsg, unsigned char &EngineInstance, double &TripFuelUsed, double &FuelRateAverage, double &FuelRateEconomy, double &InstantaneousFuelEconomy)
Parsing the content of Message PGN 127497 "Trip Parameters, Engine".
bool ParseN2kPGN129029(const tN2kMsg &N2kMsg, unsigned char &SID, uint16_t &DaysSince1970, double &SecondsSinceMidnight, double &Latitude, double &Longitude, double &Altitude, tN2kGNSStype &GNSStype, tN2kGNSSmethod &GNSSmethod, unsigned char &nSatellites, double &HDOP, double &PDOP, double &GeoidalSeparation, unsigned char &nReferenceStations, tN2kGNSStype &ReferenceStationType, uint16_t &ReferenceSationID, double &AgeOfCorrection)
Parsing the content of message PGN 129029 "GNSS Position Data".
bool ParseN2kFluidLevel(const tN2kMsg &N2kMsg, unsigned char &Instance, tN2kFluidType &FluidType, double &Level, double &Capacity)
Parsing the content of a "Fluid level" message - PGN 127505.
Definition: N2kMessages.h:1929
bool ParseN2kPGN128259(const tN2kMsg &N2kMsg, unsigned char &SID, double &WaterReferenced, double &GroundReferenced, tN2kSpeedWaterReferenceType &SWRT)
Parsing the content of message PGN 128259 "Boat Speed, Water Referenced".
bool ParseN2kAttitude(const tN2kMsg &N2kMsg, unsigned char &SID, double &Yaw, double &Pitch, double &Roll)
Parsing the content of a "Attitude" message - PGN 127257.
Definition: N2kMessages.h:990
-
bool ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of message PGN 129284 "Navigation Data".
+
bool ParseN2kNavigationInfo(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity)
Parsing the content of a "Navigation Data" message - PGN 129284.
Definition: N2kMessages.h:3952
bool ParseN2kLeeway(const tN2kMsg &N2kMsg, unsigned char &SID, double &Leeway)
Parsing the content of a "Nautical Leeway Angle" message - PGN 128000.
Definition: N2kMessages.h:2333
bool ParseN2kPGN127508(const tN2kMsg &N2kMsg, unsigned char &BatteryInstance, double &BatteryVoltage, double &BatteryCurrent, double &BatteryTemperature, unsigned char &SID)
Parsing the content of message PGN 127508 "Battery Status".
bool ParseN2kPGN127502(const tN2kMsg &N2kMsg, unsigned char &TargetBankInstance, tN2kBinaryStatus &BankStatus)
Parse the content of a PGN 127502 (Switch Bank Control) message.
@@ -2002,6 +2002,7 @@
bool ParseN2kAISClassAPosition(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, double &Latitude, double &Longitude, bool &Accuracy, bool &RAIM, uint8_t &Seconds, double &COG, double &SOG, double &Heading, double &ROT, tN2kAISNavStatus &NavStatus)
Parsing the content of a "AIS position reports for Class A" message - PGN 129038.
Definition: N2kMessages.h:3333
bool ParseN2kAISClassAStatic(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint32_t &IMOnumber, char *Callsign, char *Name, uint8_t &VesselType, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint16_t &ETAdate, double &ETAtime, double &Draught, char *Destination, tN2kAISVersion &AISversion, tN2kGNSStype &GNSStype, tN2kAISDTE &DTE, tN2kAISTransceiverInformation &AISinfo)
Parsing the content of a "AIS static data class A" message - PGN 129794.
Definition: N2kMessages.h:4409
void SetN2kEngineParamRapid(tN2kMsg &N2kMsg, unsigned char EngineInstance, double EngineSpeed, double EngineBoostPressure=N2kDoubleNA, int8_t EngineTiltTrim=N2kInt8NA)
Setting up Message "Engine parameters rapid" - PGN 127488.
Definition: N2kMessages.h:1087
+
void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up PGN 129284 Message "Navigation Data".
void SetN2kPGN127245(tN2kMsg &N2kMsg, double RudderPosition, unsigned char Instance=0, tN2kRudderDirectionOrder RudderDirectionOrder=N2kRDO_NoDirectionOrder, double AngleOrder=N2kDoubleNA)
Setting up PGN127245 Message "Rudder".
void SetN2kPressure(tN2kMsg &N2kMsg, unsigned char SID, unsigned char PressureInstance, tN2kPressureSource PressureSource, double Pressure)
Setting up Message "Actual Pressure" - PGN 130314.
Definition: N2kMessages.h:5125
void SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID=0xff, tN2kRangeResidualMode Mode=N2kDD072_Unavailable)
Setting up PGN 129540 Message "GNSS Satellites in View".
@@ -2011,6 +2012,7 @@
void SetN2kPGN127502(tN2kMsg &N2kMsg, unsigned char TargetBankInstance, tN2kBinaryStatus BankStatus)
Set up PGN 127502 "Switch Bank Control" message.
void SetN2kDCStatus(tN2kMsg &N2kMsg, unsigned char SID, unsigned char DCInstance, tN2kDCType DCType, unsigned char StateOfCharge, unsigned char StateOfHealth, double TimeRemaining, double RippleVoltage=N2kDoubleNA, double Capacity=N2kDoubleNA)
Setting up Message "DC Detailed Status" - PGN 127506.
Definition: N2kMessages.h:1967
void SetN2kPGN129029(tN2kMsg &N2kMsg, unsigned char SID, uint16_t DaysSince1970, double SecondsSinceMidnight, double Latitude, double Longitude, double Altitude, tN2kGNSStype GNSStype, tN2kGNSSmethod GNSSmethod, unsigned char nSatellites, double HDOP, double PDOP=0, double GeoidalSeparation=0, unsigned char nReferenceStations=0, tN2kGNSStype ReferenceStationType=N2kGNSSt_GPS, uint16_t ReferenceSationID=0, double AgeOfCorrection=0)
Setting up PGN 129029 Message "GNSS Position Data".
+
void SetN2kNavigationInfo(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up Message "Navigation Data" - PGN 129284.
Definition: N2kMessages.h:3890
void SetN2kAISSafetyRelatedBroadcastMsg(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t SourceID, tN2kAISTransceiverInformation AISTransceiverInformation, char *SafetyRelatedText)
Setting up Message "AIS Safety Related Broadcast Message" - PGN 129802.
Definition: N2kMessages.h:276
void SetN2kHeave(tN2kMsg &N2kMsg, unsigned char SID, double Heave, double Delay=N2kDoubleNA, tN2kDelaySource DelaySource=N2kDD374_DataNotAvailable)
Setting up Message "Rate of Turn" - PGN 127252.
Definition: N2kMessages.h:878
void SetN2kPGN127252(tN2kMsg &N2kMsg, unsigned char SID, double Heave, double Delay=N2kDoubleNA, tN2kDelaySource DelaySource=N2kDD374_DataNotAvailable)
Setting up PGN 127252 Message "Heave".
@@ -2053,7 +2055,6 @@
void SetN2kDCBatStatus(tN2kMsg &N2kMsg, unsigned char BatteryInstance, double BatteryVoltage, double BatteryCurrent=N2kDoubleNA, double BatteryTemperature=N2kDoubleNA, unsigned char SID=1)
Setting up Message "Battery Status" - PGN 127508.
Definition: N2kMessages.h:2116
void SetN2kPGN127501(tN2kMsg &N2kMsg, unsigned char DeviceBankInstance, tN2kBinaryStatus BankStatus)
Setting up PGN 127501 Message "Universal Binary Status Report".
void SetN2kPGN127250(tN2kMsg &N2kMsg, unsigned char SID, double Heading, double Deviation, double Variation, tN2kHeadingReference ref)
Setting up PGN127250 Message "Vessel Heading".
-
void SetN2kNavigationInfo(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up Message "Navigation Data" - PGN 129284.
Definition: N2kMessages.h:3890
void SetN2kPGN127508(tN2kMsg &N2kMsg, unsigned char BatteryInstance, double BatteryVoltage, double BatteryCurrent=N2kDoubleNA, double BatteryTemperature=N2kDoubleNA, unsigned char SID=0xff)
Setting up PGN 127508 Message "Battery Status".
void SetN2kMOBNotification(tN2kMsg &N2kMsg, unsigned char SID, uint32_t MobEmitterId, tN2kMOBStatus MOBStatus, double ActivationTime, tN2kMOBPositionSource PositionSource, uint16_t PositionDate, double PositionTime, double Latitude, double Longitude, tN2kHeadingReference COGReference, double COG, double SOG, uint32_t MMSI, tN2kMOBEmitterBatteryStatus MOBEmitterBatteryStatus)
Setting up Message "Man Overboard Notification" - PGN 127233.
Definition: N2kMessages.h:379
void SetN2kGNSS(tN2kMsg &N2kMsg, unsigned char SID, uint16_t DaysSince1970, double SecondsSinceMidnight, double Latitude, double Longitude, double Altitude, tN2kGNSStype GNSStype, tN2kGNSSmethod GNSSmethod, unsigned char nSatellites, double HDOP, double PDOP=0, double GeoidalSeparation=0, unsigned char nReferenceStations=0, tN2kGNSStype ReferenceStationType=N2kGNSSt_GPS, uint16_t ReferenceSationID=0, double AgeOfCorrection=0)
Setting up Message "GNSS Position Data" - PGN 129029.
Definition: N2kMessages.h:3065
@@ -2113,7 +2114,6 @@
void SetN2kTrueHeading(tN2kMsg &N2kMsg, unsigned char SID, double Heading)
Setting up Message "Vessel Heading" - PGN 127250.
Definition: N2kMessages.h:743
void SetN2kLocalOffset(tN2kMsg &N2kMsg, uint16_t DaysSince1970, double SecondsSinceMidnight, int16_t LocalOffset)
Setting up Message "Date,Time & Local offset" - PGN 129033.
Definition: N2kMessages.h:3173
void SetN2kAISClassBStaticPartA(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t UserID, char *Name)
Setting up Message "AIS static data class B part A" - PGN 129809.
Definition: N2kMessages.h:4452
-
void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity)
Setting up PGN 129284 Message "Navigation Data".
void SetN2kSystemTime(tN2kMsg &N2kMsg, unsigned char SID, uint16_t SystemDate, double SystemTime, tN2kTimeSource TimeSource=N2ktimes_GPS)
Setting up Message "System date/time" - PGN 126992.
Definition: N2kMessages.h:208
tN2kDistanceCalculationType
Enumeration of distance calculation types for navigation according to PGN129284.
Definition: N2kTypes.h:83
tN2kDD481
DD481 - Rode Type States according to PGN 128777.
diff --git a/_n2k_messages_enum_to_str_8h.html b/_n2k_messages_enum_to_str_8h.html index a12afad5..e5194a5c 100644 --- a/_n2k_messages_enum_to_str_8h.html +++ b/_n2k_messages_enum_to_str_8h.html @@ -280,10 +280,10 @@

Detailed Description

This File contains functions to convert enums from N2kMessages.h to const char.

This is collection of functions for handling enums of NMEA2000 bus messages. There are basically 2 functions in the library to convert enums derived from N2kMessages to const char *:

-

+

const char * N2kEnumTypeToStr(enumType enumVal)

This functions returns a const char * value thats representing the given enum Value. By detecting the enumType, the right text output is chosen.

-

+

void PrintN2kEnumType (T a, Stream *OutputStream, bool addLF=true)

This prints the corresponding text output to the given output stream.

Note
If you do not need enums in clear text, you do not need this library.
@@ -325,7 +325,7 @@

-

+

Usage of the function N2kEnumTypeToStr(enumType enumVal):

const char* tmp;
diff --git a/_n_m_e_a2000_8cpp.html b/_n_m_e_a2000_8cpp.html index 20e60be5..f025434e 100644 --- a/_n_m_e_a2000_8cpp.html +++ b/_n_m_e_a2000_8cpp.html @@ -394,7 +394,7 @@

-

Definition at line 2109 of file NMEA2000.cpp.

+

Definition at line 2124 of file NMEA2000.cpp.

@@ -1129,7 +1129,7 @@

Definition at line 1262 of file NMEA2000.cpp.

+

Definition at line 1277 of file NMEA2000.cpp.

@@ -1182,7 +1182,7 @@

Definition at line 1611 of file NMEA2000.cpp.

+

Definition at line 1626 of file NMEA2000.cpp.

@@ -1218,7 +1218,7 @@

-

Definition at line 850 of file NMEA2000.cpp.

+

Definition at line 864 of file NMEA2000.cpp.

@@ -1338,26 +1338,33 @@

Definition at line 441 of file NMEA2000.cpp.

+

Definition at line 448 of file NMEA2000.cpp.

@@ -1442,7 +1449,7 @@

-

Definition at line 1956 of file NMEA2000.cpp.

+

Definition at line 1971 of file NMEA2000.cpp.

@@ -1545,7 +1552,7 @@

Definition at line 565 of file NMEA2000.cpp.

+

Definition at line 579 of file NMEA2000.cpp.

@@ -1630,7 +1637,7 @@

Returns
unsigned long -> CAN Id
-

Definition at line 1291 of file NMEA2000.cpp.

+

Definition at line 1306 of file NMEA2000.cpp.

@@ -1754,7 +1761,7 @@

Definition at line 2773 of file NMEA2000.cpp.

+

Definition at line 2788 of file NMEA2000.cpp.

@@ -1836,7 +1843,7 @@

Definition at line 2858 of file NMEA2000.cpp.

+

Definition at line 2873 of file NMEA2000.cpp.

@@ -1883,7 +1890,7 @@

Definition at line 2879 of file NMEA2000.cpp.

+

Definition at line 2894 of file NMEA2000.cpp.

@@ -1915,7 +1922,7 @@

-

Definition at line 2104 of file NMEA2000.cpp.

+

Definition at line 2119 of file NMEA2000.cpp.

@@ -1935,7 +1942,7 @@

-

Definition at line 2793 of file NMEA2000.cpp.

+

Definition at line 2808 of file NMEA2000.cpp.

@@ -1991,7 +1998,7 @@

Definition at line 2892 of file NMEA2000.cpp.

+

Definition at line 2907 of file NMEA2000.cpp.

@@ -2038,7 +2045,7 @@

Definition at line 2908 of file NMEA2000.cpp.

+

Definition at line 2923 of file NMEA2000.cpp.

@@ -2127,7 +2134,7 @@

Definition at line 2756 of file NMEA2000.cpp.

+

Definition at line 2771 of file NMEA2000.cpp.

@@ -2163,7 +2170,7 @@

-

Definition at line 2178 of file NMEA2000.cpp.

+

Definition at line 2193 of file NMEA2000.cpp.

@@ -2224,7 +2231,7 @@

Definition at line 2808 of file NMEA2000.cpp.

+

Definition at line 2823 of file NMEA2000.cpp.

@@ -2269,7 +2276,7 @@

-

Definition at line 2717 of file NMEA2000.cpp.

+

Definition at line 2732 of file NMEA2000.cpp.

@@ -2316,7 +2323,7 @@

Definition at line 2872 of file NMEA2000.cpp.

+

Definition at line 2887 of file NMEA2000.cpp.

@@ -2356,7 +2363,7 @@

Definition at line 2747 of file NMEA2000.cpp.

+

Definition at line 2762 of file NMEA2000.cpp.

@@ -2438,7 +2445,7 @@

Definition at line 2731 of file NMEA2000.cpp.

+

Definition at line 2746 of file NMEA2000.cpp.

@@ -2458,7 +2465,7 @@

-

Definition at line 2801 of file NMEA2000.cpp.

+

Definition at line 2816 of file NMEA2000.cpp.

@@ -2478,7 +2485,7 @@

-

Definition at line 1689 of file NMEA2000.cpp.

+

Definition at line 1704 of file NMEA2000.cpp.

@@ -2497,7 +2504,7 @@

Definition at line 606 of file NMEA2000.cpp.

+

Definition at line 620 of file NMEA2000.cpp.

@@ -2515,7 +2522,7 @@

Definition at line 610 of file NMEA2000.cpp.

+

Definition at line 624 of file NMEA2000.cpp.

@@ -2533,7 +2540,7 @@

Definition at line 602 of file NMEA2000.cpp.

+

Definition at line 616 of file NMEA2000.cpp.

@@ -2572,7 +2579,7 @@

Definition at line 588 of file NMEA2000.cpp.

+

Definition at line 602 of file NMEA2000.cpp.

diff --git a/_n_m_e_a2000_8cpp_source.html b/_n_m_e_a2000_8cpp_source.html index 367a42ad..67719459 100644 --- a/_n_m_e_a2000_8cpp_source.html +++ b/_n_m_e_a2000_8cpp_source.html @@ -342,2432 +342,2440 @@
326}
327
328/************************************************************************/
-
441bool IsDefaultFastPacketMessage(unsigned long PGN) {
-
442 switch (PGN) {
-
443 case 126983L: // Alert, pri=2, period=1000
-
444 case 126984L: // Alert Response, pri=2, period=NA
-
445 case 126985L: // Alert Text, pri=2, period=10000
-
446 case 126986L: // Alert Configuration, pri=2, period=NA
-
447 case 126987L: // Alert Threshold, pri=2, period=NA
-
448 case 126988L: // Alert Value, pri=2, period=10000
-
449 case 127233L: // Man Overboard Notification(MOB), pri=3, period=NA
-
450 case 127237L: // Heading/Track control, pri=2, period=250
-
451 case 127489L: // Engine parameters dynamic, pri=2, period=500
-
452 case 127490L: // Electric Drive Status (Dynamic), pri=1, period=1500
-
453 case 127491L: // Electric Energy Storage Status (Dynamic), pri=7, period=1500
-
454 case 127494L: // Electric Drive Information, pri=4, period=NA
-
455 case 127495L: // Electric Energy Storage Information, pri=6, period=NA
-
456 case 127496L: // Trip fuel consumption, vessel, pri=5, period=1000
-
457 case 127497L: // Trip fuel consumption, engine, pri=5, period=1000
-
458 case 127498L: // Engine parameters static, pri=5, period=NA
-
459 case 127503L: // AC Input Status, pri=6, period=1500
-
460 case 127504L: // AC Output Status, pri=6, period=1500
-
461 case 127506L: // DC Detailed status, pri=6, period=1500
-
462 case 127507L: // Charger status, pri=6, period=1500
-
463 case 127509L: // Inverter status, pri=6, period=1500
-
464 case 127510L: // Charger configuration status, pri=6, period=NA
-
465 case 127511L: // Inverter Configuration Status, pri=6, period=NA
-
466 case 127512L: // AGS configuration status, pri=6, period=NA
-
467 case 127513L: // Battery configuration status, pri=6, period=NA
-
468 case 127514L: // AGS Status, pri=6, period=1500
-
469 case 128275L: // Distance log, pri=6, period=1000
-
470 case 128520L: // Tracked Target Data, pri=2, period=1000
-
471 case 128538L: // Elevator car status, pri=6, period=100
-
472 case 129029L: // GNSS Position Data, pri=3, period=1000
-
473 case 129038L: // AIS Class A Position Report, pri=4, period=NA
-
474 case 129039L: // AIS Class B Position Report, pri=4, period=NA
-
475 case 129040L: // AIS Class B Extended Position Report, pri=4, period=NA
-
476 case 129041L: // AIS Aids to Navigation (AtoN) Report, pri=4, period=NA
-
477 case 129044L: // Datum, pri=6, period=10000
-
478 case 129045L: // User Datum Settings, pri=6, period=NA
-
479 case 129284L: // Navigation info, pri=3, period=1000
-
480 case 129285L: // Waypoint list, pri=3, period=NA
-
481 case 129301L: // Time to/from Mark, pri=3, period=1000
-
482 case 129302L: // Bearing and Distance between two Marks, pri=6, period=NA
-
483 case 129538L: // GNSS Control Status, pri=6, period=NA
-
484 case 129540L: // GNSS Sats in View, pri=6, period=1000
-
485 case 129541L: // GPS Almanac Data, pri=6, period=NA
-
486 case 129542L: // GNSS Pseudorange Noise Statistics, pri=6, period=1000
-
487 case 129545L: // GNSS RAIM Output, pri=6, period=NA
-
488 case 129547L: // GNSS Pseudorange Error Statistics, pri=6, period=NA
-
489 case 129549L: // DGNSS Corrections, pri=6, period=NA
-
490 case 129551L: // GNSS Differential Correction Receiver Signal, pri=6, period=NA
-
491 case 129556L: // GLONASS Almanac Data, pri=6, period=NA
-
492 case 129792L: // AIS DGNSS Broadcast Binary Message, pri=6, period=NA
-
493 case 129793L: // AIS UTC and Date Report, pri=7, period=NA
-
494 case 129794L: // AIS Class A Static data, pri=6, period=NA
-
495 case 129795L: // AIS Addressed Binary Message, pri=5, period=NA
-
496 case 129796L: // AIS Acknowledge, pri=7, period=NA
-
497 case 129797L: // AIS Binary Broadcast Message, pri=5, period=NA
-
498 case 129798L: // AIS SAR Aircraft Position Report, pri=4, period=NA
-
499 case 129799L: // Radio Frequency/Mode/Power, pri=3, period=NA
-
500 case 129800L: // AIS UTC/Date Inquiry, pri=7, period=NA
-
501 case 129801L: // AIS Addressed Safety Related Message, pri=5, period=NA
-
502 case 129802L: // AIS Safety Related Broadcast Message, pri=5, period=NA
-
503 case 129803L: // AIS Interrogation PGN, pri=7, period=NA
-
504 case 129804L: // AIS Assignment Mode Command, pri=7, period=NA
-
505 case 129805L: // AIS Data Link Management Message, pri=7, period=NA
-
506 case 129806L: // AIS Channel Management, pri=7, period=NA
-
507 case 129807L: // AIS Group Assignment, pri=7, period=NA
-
508 case 129808L: // DSC Call Information, pri=8, period=NA
-
509 case 129809L: // AIS Class B Static Data: Part A, pri=6, period=NA
-
510 case 129810L: // AIS Class B Static Data Part B, pri=6, period=NA
-
511 case 129811L: // AIS Single Slot Binary Message, pri=5, period=NA
-
512 case 129812L: // AIS Multi Slot Binary Message, pri=5, period=NA
-
513 case 129813L: // AIS Long-Range Broadcast Message, pri=5, period=NA
-
514 case 130052L: // Loran-C TD Data, pri=3, period=1000
-
515 case 130053L: // Loran-C Range Data, pri=3, period=1000
-
516 case 130054L: // Loran-C Signal Data, pri=3, period=1000
-
517 case 130060L: // Label, pri=7, period=NA
-
518 case 130061L: // Channel Source Configuration, pri=7, period=NA
-
519 case 130064L: // Route and WP Service - Database List, pri=7, period=NA
-
520 case 130065L: // Route and WP Service - Route List, pri=7, period=NA
-
521 case 130066L: // Route and WP Service - Route/WP-List Attributes, pri=7, period=NA
-
522 case 130067L: // Route and WP Service - Route - WP Name & Position, pri=7, period=NA
-
523 case 130068L: // Route and WP Service - Route - WP Name, pri=7, period=NA
-
524 case 130069L: // Route and WP Service - XTE Limit & Navigation Method, pri=7, period=NA
-
525 case 130070L: // Route and WP Service - WP Comment, pri=7, period=NA
-
526 case 130071L: // Route and WP Service - Route Comment, pri=7, period=NA
-
527 case 130072L: // Route and WP Service - Database Comment, pri=7, period=NA
-
528 case 130073L: // Route and WP Service - Radius of Turn, pri=7, period=NA
-
529 case 130074L: // Route and WP Service - WP List - WP Name & Position, pri=7, period=NA
-
530 case 130320L: // Tide Station Data, pri=6, period=1000
-
531 case 130321L: // Salinity Station Data, pri=6, period=1000
-
532 case 130322L: // Current Station Data, pri=6, period=1000
-
533 case 130323L: // Meteorological Station Data, pri=6, period=1000
-
534 case 130324L: // Moored Buoy Station Data, pri=6, period=1000
-
535 case 130567L: // Watermaker Input Setting and Status, pri=6, period=2500
-
536 case 130577L: // Direction Data PGN, pri=3, period=1000
-
537 case 130578L: // Vessel Speed Components, pri=2, period=250
-
538 // Entertainment PGNs
-
539 case 130569L: // Current File and Status, pri=6, period=500
-
540 case 130570L: // Library Data File, pri=6, period=NA
-
541 case 130571L: // Library Data Group, pri=6, period=NA
-
542 case 130572L: // Library Data Search, pri=6, period=NA
-
543 case 130573L: // Supported Source Data, pri=6, period=NA
-
544 case 130574L: // Supported Zone Data, pri=6, period=NA
-
545 case 130580L: // System Configuration Status, pri=6, period=NA
-
546 case 130581L: // Zone Configuration Status, pri=6, period=NA
-
547 case 130583L: // Available Audio EQ Presets, pri=6, period=NA
-
548 case 130584L: // Bluetooth Devices, pri=6, period=NA
-
549 case 130586L: // Zone Configuration Status, pri=6, period=NA
-
550 return true;
-
551 }
-
552 return false;
-
553}
-
554
-
555/************************************************************************/
-
565bool IsProprietaryFastPacketMessage(unsigned long PGN) {
-
566 return ( PGN==126720L ) || ( 130816L<=PGN && PGN<=131071L );
+
448bool IsDefaultFastPacketMessage(unsigned long PGN) {
+
449 switch (PGN) {
+
450 case 126983L: // Alert, pri=2, period=1000
+
451 case 126984L: // Alert Response, pri=2, period=NA
+
452 case 126985L: // Alert Text, pri=2, period=10000
+
453 case 126986L: // Alert Configuration, pri=2, period=NA
+
454 case 126987L: // Alert Threshold, pri=2, period=NA
+
455 case 126988L: // Alert Value, pri=2, period=10000
+
456 case 127233L: // Man Overboard Notification(MOB), pri=3, period=NA
+
457 case 127237L: // Heading/Track control, pri=2, period=250
+
458 case 127489L: // Engine parameters dynamic, pri=2, period=500
+
459 case 127490L: // Electric Drive Status (Dynamic), pri=1, period=1500
+
460 case 127491L: // Electric Energy Storage Status (Dynamic), pri=7, period=1500
+
461 case 127494L: // Electric Drive Information, pri=4, period=NA
+
462 case 127495L: // Electric Energy Storage Information, pri=6, period=NA
+
463 case 127496L: // Trip fuel consumption, vessel, pri=5, period=1000
+
464 case 127497L: // Trip fuel consumption, engine, pri=5, period=1000
+
465 case 127498L: // Engine parameters static, pri=5, period=NA
+
466 case 127503L: // AC Input Status, pri=6, period=1500
+
467 case 127504L: // AC Output Status, pri=6, period=1500
+
468 case 127506L: // DC Detailed status, pri=6, period=1500
+
469 case 127507L: // Charger status, pri=6, period=1500
+
470 case 127509L: // Inverter status, pri=6, period=1500
+
471 case 127510L: // Charger configuration status, pri=6, period=NA
+
472 case 127511L: // Inverter Configuration Status, pri=6, period=NA
+
473 case 127512L: // AGS configuration status, pri=6, period=NA
+
474 case 127513L: // Battery configuration status, pri=6, period=NA
+
475 case 127514L: // AGS Status, pri=6, period=1500
+
476 case 128275L: // Distance log, pri=6, period=1000
+
477 case 128520L: // Tracked Target Data, pri=2, period=1000
+
478 case 128538L: // Elevator car status, pri=6, period=100
+
479 case 129029L: // GNSS Position Data, pri=3, period=1000
+
480 case 129038L: // AIS Class A Position Report, pri=4, period=NA
+
481 case 129039L: // AIS Class B Position Report, pri=4, period=NA
+
482 case 129040L: // AIS Class B Extended Position Report, pri=4, period=NA
+
483 case 129041L: // AIS Aids to Navigation (AtoN) Report, pri=4, period=NA
+
484 case 129044L: // Datum, pri=6, period=10000
+
485 case 129045L: // User Datum Settings, pri=6, period=NA
+
486 case 129284L: // Navigation info, pri=3, period=1000
+
487 case 129285L: // Waypoint list, pri=3, period=NA
+
488 case 129301L: // Time to/from Mark, pri=3, period=1000
+
489 case 129302L: // Bearing and Distance between two Marks, pri=6, period=NA
+
490 case 129538L: // GNSS Control Status, pri=6, period=NA
+
491 case 129540L: // GNSS Sats in View, pri=6, period=1000
+
492 case 129541L: // GPS Almanac Data, pri=6, period=NA
+
493 case 129542L: // GNSS Pseudorange Noise Statistics, pri=6, period=1000
+
494 case 129545L: // GNSS RAIM Output, pri=6, period=NA
+
495 case 129547L: // GNSS Pseudorange Error Statistics, pri=6, period=NA
+
496 case 129549L: // DGNSS Corrections, pri=6, period=NA
+
497 case 129551L: // GNSS Differential Correction Receiver Signal, pri=6, period=NA
+
498 case 129556L: // GLONASS Almanac Data, pri=6, period=NA
+
499 case 129792L: // AIS DGNSS Broadcast Binary Message, pri=6, period=NA
+
500 case 129793L: // AIS UTC and Date Report, pri=7, period=NA
+
501 case 129794L: // AIS Class A Static data, pri=6, period=NA
+
502 case 129795L: // AIS Addressed Binary Message, pri=5, period=NA
+
503 case 129796L: // AIS Acknowledge, pri=7, period=NA
+
504 case 129797L: // AIS Binary Broadcast Message, pri=5, period=NA
+
505 case 129798L: // AIS SAR Aircraft Position Report, pri=4, period=NA
+
506 case 129799L: // Radio Frequency/Mode/Power, pri=3, period=NA
+
507 case 129800L: // AIS UTC/Date Inquiry, pri=7, period=NA
+
508 case 129801L: // AIS Addressed Safety Related Message, pri=5, period=NA
+
509 case 129802L: // AIS Safety Related Broadcast Message, pri=5, period=NA
+
510 case 129803L: // AIS Interrogation PGN, pri=7, period=NA
+
511 case 129804L: // AIS Assignment Mode Command, pri=7, period=NA
+
512 case 129805L: // AIS Data Link Management Message, pri=7, period=NA
+
513 case 129806L: // AIS Channel Management, pri=7, period=NA
+
514 case 129807L: // AIS Group Assignment, pri=7, period=NA
+
515 case 129808L: // DSC Call Information, pri=8, period=NA
+
516 case 129809L: // AIS Class B Static Data: Part A, pri=6, period=NA
+
517 case 129810L: // AIS Class B Static Data Part B, pri=6, period=NA
+
518 case 129811L: // AIS Single Slot Binary Message, pri=5, period=NA
+
519 case 129812L: // AIS Multi Slot Binary Message, pri=5, period=NA
+
520 case 129813L: // AIS Long-Range Broadcast Message, pri=5, period=NA
+
521 case 130052L: // Loran-C TD Data, pri=3, period=1000
+
522 case 130053L: // Loran-C Range Data, pri=3, period=1000
+
523 case 130054L: // Loran-C Signal Data, pri=3, period=1000
+
524 case 130060L: // Label, pri=7, period=NA
+
525 case 130061L: // Channel Source Configuration, pri=7, period=NA
+
526 case 130064L: // Route and WP Service - Database List, pri=7, period=NA
+
527 case 130065L: // Route and WP Service - Route List, pri=7, period=NA
+
528 case 130066L: // Route and WP Service - Route/WP-List Attributes, pri=7, period=NA
+
529 case 130067L: // Route and WP Service - Route - WP Name & Position, pri=7, period=NA
+
530 case 130068L: // Route and WP Service - Route - WP Name, pri=7, period=NA
+
531 case 130069L: // Route and WP Service - XTE Limit & Navigation Method, pri=7, period=NA
+
532 case 130070L: // Route and WP Service - WP Comment, pri=7, period=NA
+
533 case 130071L: // Route and WP Service - Route Comment, pri=7, period=NA
+
534 case 130072L: // Route and WP Service - Database Comment, pri=7, period=NA
+
535 case 130073L: // Route and WP Service - Radius of Turn, pri=7, period=NA
+
536 case 130074L: // Route and WP Service - WP List - WP Name & Position, pri=7, period=NA
+
537 case 130320L: // Tide Station Data, pri=6, period=1000
+
538 case 130321L: // Salinity Station Data, pri=6, period=1000
+
539 case 130322L: // Current Station Data, pri=6, period=1000
+
540 case 130323L: // Meteorological Station Data, pri=6, period=1000
+
541 case 130324L: // Moored Buoy Station Data, pri=6, period=1000
+
542 case 130330L: // Lighting system settings, pri=7, period=NA
+
543 case 130561L: // Lighting zone, pri=7, period=NA
+
544 case 130562L: // Lighting scene, pri=7, period=NA
+
545 case 130563L: // Lighting device, pri=7, period=NA
+
546 case 130564L: // Lighting device enumeration, pri=7, period=NA
+
547 case 130565L: // Lighting color sequence, pri=7, period=NA
+
548 case 130566L: // Lighting program, pri=7, period=NA
+
549 case 130567L: // Watermaker Input Setting and Status, pri=6, period=2500
+
550 case 130577L: // Direction Data PGN, pri=3, period=1000
+
551 case 130578L: // Vessel Speed Components, pri=2, period=250
+
552 // Entertainment PGNs
+
553 case 130569L: // Current File and Status, pri=6, period=500
+
554 case 130570L: // Library Data File, pri=6, period=NA
+
555 case 130571L: // Library Data Group, pri=6, period=NA
+
556 case 130572L: // Library Data Search, pri=6, period=NA
+
557 case 130573L: // Supported Source Data, pri=6, period=NA
+
558 case 130574L: // Supported Zone Data, pri=6, period=NA
+
559 case 130580L: // System Configuration Status, pri=6, period=NA
+
560 case 130581L: // Zone Configuration Status, pri=6, period=NA
+
561 case 130583L: // Available Audio EQ Presets, pri=6, period=NA
+
562 case 130584L: // Bluetooth Devices, pri=6, period=NA
+
563 case 130586L: // Zone Configuration Status, pri=6, period=NA
+
564 return true;
+
565 }
+
566 return false;
567}
568
-
569bool tNMEA2000::IsProprietaryMessage(unsigned long PGN) {
-
570 return IsProprietaryFastPacketMessage(PGN) || ( PGN==61184L ) || ( 65280L<=PGN && PGN<=65535L );
-
571}
-
572
-
573/************************************************************************/
- -
589 2101, // N2kVersion
-
590 666, // ProductCode
-
591 "Arduino N2k->PC", //N2kModelID
-
592 "1.0.0.0", //N2kSwCode
-
593 "1.0.0", // N2kModelVersion
-
594 "00000001", // N2kModelSerialCode
-
595 0, // CertificationLevel
-
596 1 // LoadEquivalency
-
597 };
-
598
-
599/************************************************************************/
-
602const char DefManufacturerInformation [] PROGMEM = "NMEA2000 library, https://github.com/ttlappalainen/NMEA2000";
-
603/************************************************************************/
- -
607/************************************************************************/
- -
611
-
612//*****************************************************************************
- -
614 memset(this,0,sizeof(tProductInformation));
-
615}
-
616
-
617//*****************************************************************************
- -
619 return memcmp(this,&Other,sizeof(tProductInformation))==0;
-
620}
-
621
-
622//*****************************************************************************
-
623void tNMEA2000::ClearCharBuf(size_t MaxLen, char *buf) {
-
624 if ( buf==0 ) return;
-
625 size_t i=0;
-
626 for (; i<MaxLen; i++) buf[i]=0;
-
627}
-
628
-
629//*****************************************************************************
-
630void tNMEA2000::SetCharBuf(const char *str, size_t MaxLen, char *buf) {
-
631 if ( buf==0 || MaxLen==0 ) return; // nothing to do for 0 buffer
-
632 if ( str==0 ) { buf[0]=0; return; }
-
633 size_t i=0;
-
634 for (; i<MaxLen-1 && str[i]!=0; i++) buf[i]=str[i];
-
635 for (; i<MaxLen; i++) buf[i]=0;
-
636 buf[MaxLen-1]=0; // Force null termination
-
637}
-
638
-
639//*****************************************************************************
-
640void tNMEA2000::ClearSetCharBuf(const char *str, size_t MaxLen, char *buf) {
-
641 ClearCharBuf(MaxLen,buf);
-
642 if (str) SetCharBuf(str,MaxLen,buf);
-
643}
-
644
-
645//*****************************************************************************
- -
647
-
648#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
- -
650#endif
-
651#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
- -
653#endif
- -
655
-
656 for (int i=0; i<N2kMessageGroups; i++) {SingleFrameMessages[i]=0; FastPacketMessages[i]=0;}
-
657
-
658 N2kCANMsgBuf=0;
- -
660
- -
662 MaxCANReceiveFrames=0; // Use driver default
- -
664
-
665 OnOpen=0;
-
666 MsgHandler=0;
-
667 MsgHandlers=0;
- +
569/************************************************************************/
+
579bool IsProprietaryFastPacketMessage(unsigned long PGN) {
+
580 return ( PGN==126720L ) || ( 130816L<=PGN && PGN<=131071L );
+
581}
+
582
+
583bool tNMEA2000::IsProprietaryMessage(unsigned long PGN) {
+
584 return IsProprietaryFastPacketMessage(PGN) || ( PGN==61184L ) || ( 65280L<=PGN && PGN<=65535L );
+
585}
+
586
+
587/************************************************************************/
+ +
603 2101, // N2kVersion
+
604 666, // ProductCode
+
605 "Arduino N2k->PC", //N2kModelID
+
606 "1.0.0.0", //N2kSwCode
+
607 "1.0.0", // N2kModelVersion
+
608 "00000001", // N2kModelSerialCode
+
609 0, // CertificationLevel
+
610 1 // LoadEquivalency
+
611 };
+
612
+
613/************************************************************************/
+
616const char DefManufacturerInformation [] PROGMEM = "NMEA2000 library, https://github.com/ttlappalainen/NMEA2000";
+
617/************************************************************************/
+ +
621/************************************************************************/
+ +
625
+
626//*****************************************************************************
+ +
628 memset(this,0,sizeof(tProductInformation));
+
629}
+
630
+
631//*****************************************************************************
+ +
633 return memcmp(this,&Other,sizeof(tProductInformation))==0;
+
634}
+
635
+
636//*****************************************************************************
+
637void tNMEA2000::ClearCharBuf(size_t MaxLen, char *buf) {
+
638 if ( buf==0 ) return;
+
639 size_t i=0;
+
640 for (; i<MaxLen; i++) buf[i]=0;
+
641}
+
642
+
643//*****************************************************************************
+
644void tNMEA2000::SetCharBuf(const char *str, size_t MaxLen, char *buf) {
+
645 if ( buf==0 || MaxLen==0 ) return; // nothing to do for 0 buffer
+
646 if ( str==0 ) { buf[0]=0; return; }
+
647 size_t i=0;
+
648 for (; i<MaxLen-1 && str[i]!=0; i++) buf[i]=str[i];
+
649 for (; i<MaxLen; i++) buf[i]=0;
+
650 buf[MaxLen-1]=0; // Force null termination
+
651}
+
652
+
653//*****************************************************************************
+
654void tNMEA2000::ClearSetCharBuf(const char *str, size_t MaxLen, char *buf) {
+
655 ClearCharBuf(MaxLen,buf);
+
656 if (str) SetCharBuf(str,MaxLen,buf);
+
657}
+
658
+
659//*****************************************************************************
+ +
661
+
662#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+ +
664#endif
+
665#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+ +
667#endif
+
669
- - -
672 AddressChanged=false;
- - - - -
677 ForwardMode=0;
- - - - - - - -
685 Devices=0;
-
686 DeviceCount=1;
-
687}
-
688
-
689//*****************************************************************************
-
690void tNMEA2000::SetDeviceCount(const uint8_t _DeviceCount) {
-
691 // Note that we can set this only before any initialization. Limit count to 10.
-
692 if ( Devices==0 && _DeviceCount>=1 && _DeviceCount<10 ) DeviceCount=_DeviceCount;
-
693}
-
694
-
695//*****************************************************************************
- -
697 if ( Devices==0 ) {
-
698 N2kDbgln("Init devices");
- -
700 MaxCANSendFrames*=DeviceCount; // We need bigger buffer for sending all information
-
701// for (int i=0; i<DeviceCount; i++) Devices[i].tDevice();
-
702 // We set default device information here.
- - -
705 for ( int i=0; i<DeviceCount; i++) { // Initialize all devices with some value
-
706 SetDeviceInformation(1+i, // 21 bit resolution, max 2097151. Each device from same manufacturer should have unique number.
-
707 130, // PC Gateway. See codes on https://web.archive.org/web/20190531120557/https://www.nmea.org/Assets/20120726%20nmea%202000%20class%20&%20function%20codes%20v%202.00.pdf
-
708 25, // Inter/Intranetwork Device. See codes on https://web.archive.org/web/20190531120557/https://www.nmea.org/Assets/20120726%20nmea%202000%20class%20&%20function%20codes%20v%202.00.pdf
-
709 2046, // Maximum 2046. See the list of codes on https://web.archive.org/web/20190529161431/http://www.nmea.org/Assets/20121020%20nmea%202000%20registration%20list.pdf
-
710 4, // Marine
-
711 i
-
712 );
-
713 if ( i>0 ) {
- - -
716 }
-
717 }
-
718 }
-
719}
-
720
-
721//*****************************************************************************
-
722void tNMEA2000::SetProductInformation(const tProductInformation *_ProductInformation, int iDev) {
-
723 if ( !IsValidDevice(iDev) ) return;
-
724 InitDevices();
-
725 Devices[iDev].ProductInformation=_ProductInformation;
-
726 if (Devices[iDev].ProductInformation==0) Devices[iDev].ProductInformation=Devices[iDev].LocalProductInformation;
-
727 if (Devices[iDev].ProductInformation==0) Devices[iDev].ProductInformation=&DefProductInformation;
-
728}
-
729
-
730//*****************************************************************************
-
731void tNMEA2000::SetProductInformation(const char *_ModelSerialCode,
-
732 unsigned short _ProductCode,
-
733 const char *_ModelID,
-
734 const char *_SwCode,
-
735 const char *_ModelVersion,
-
736 unsigned char _LoadEquivalency,
-
737 unsigned short _N2kVersion,
-
738 unsigned char _CertificationLevel,
-
739 int iDev) {
-
740 if ( !IsValidDevice(iDev) ) return;
-
741 InitDevices();
-
742 if (Devices[iDev].LocalProductInformation==0) {
- -
744 }
- -
746 Devices[iDev].LocalProductInformation->Set(_ModelSerialCode,_ProductCode,_ModelID,_SwCode,_ModelVersion,_LoadEquivalency,_N2kVersion,_CertificationLevel);
-
747}
-
748
-
749//*****************************************************************************
-
750void tNMEA2000::SetConfigurationInformation(const char *ManufacturerInformation,
-
751 const char *InstallationDescription1,
-
752 const char *InstallationDescription2) {
-
753 if ( LocalConfigurationInformationData!=0 ) free(LocalConfigurationInformationData); // This happens on second call, which is not good.
- -
755
-
756 size_t ManInfoLen=(ManufacturerInformation?strlen(ManufacturerInformation)+1:0);
-
757#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
758 size_t InstDesc1Len=Max_N2kConfigurationInfoField_len;
-
759 size_t InstDesc2Len=Max_N2kConfigurationInfoField_len;
-
760#else
-
761 size_t InstDesc1Len=(InstallationDescription1?strlen(InstallationDescription1)+1:0);
-
762 size_t InstDesc2Len=(InstallationDescription2?strlen(InstallationDescription2)+1:0);
-
763#endif
-
764
- - - -
768
-
769 size_t TotalSize=ManInfoLen+InstDesc1Len+InstDesc2Len;
-
770 void *mem=(TotalSize>0?malloc(TotalSize):0);
-
771
- - -
774
-
775 SetCharBuf(InstallationDescription1,InstDesc1Len,Info);
-
776 ConfigurationInformation.InstallationDescription1=(InstallationDescription1?Info:0);
-
777 Info+=InstDesc1Len;
+
670 for (int i=0; i<N2kMessageGroups; i++) {SingleFrameMessages[i]=0; FastPacketMessages[i]=0;}
+
671
+
672 N2kCANMsgBuf=0;
+ +
674
+ +
676 MaxCANReceiveFrames=0; // Use driver default
+ +
678
+
679 OnOpen=0;
+
680 MsgHandler=0;
+
681 MsgHandlers=0;
+ +
683
+ + +
686 AddressChanged=false;
+ + + + +
691 ForwardMode=0;
+ + + + + + + +
699 Devices=0;
+
700 DeviceCount=1;
+
701}
+
702
+
703//*****************************************************************************
+
704void tNMEA2000::SetDeviceCount(const uint8_t _DeviceCount) {
+
705 // Note that we can set this only before any initialization. Limit count to 10.
+
706 if ( Devices==0 && _DeviceCount>=1 && _DeviceCount<10 ) DeviceCount=_DeviceCount;
+
707}
+
708
+
709//*****************************************************************************
+ +
711 if ( Devices==0 ) {
+
712 N2kDbgln("Init devices");
+ +
714 MaxCANSendFrames*=DeviceCount; // We need bigger buffer for sending all information
+
715// for (int i=0; i<DeviceCount; i++) Devices[i].tDevice();
+
716 // We set default device information here.
+ + +
719 for ( int i=0; i<DeviceCount; i++) { // Initialize all devices with some value
+
720 SetDeviceInformation(1+i, // 21 bit resolution, max 2097151. Each device from same manufacturer should have unique number.
+
721 130, // PC Gateway. See codes on https://web.archive.org/web/20190531120557/https://www.nmea.org/Assets/20120726%20nmea%202000%20class%20&%20function%20codes%20v%202.00.pdf
+
722 25, // Inter/Intranetwork Device. See codes on https://web.archive.org/web/20190531120557/https://www.nmea.org/Assets/20120726%20nmea%202000%20class%20&%20function%20codes%20v%202.00.pdf
+
723 2046, // Maximum 2046. See the list of codes on https://web.archive.org/web/20190529161431/http://www.nmea.org/Assets/20121020%20nmea%202000%20registration%20list.pdf
+
724 4, // Marine
+
725 i
+
726 );
+
727 if ( i>0 ) {
+ + +
730 }
+
731 }
+
732 }
+
733}
+
734
+
735//*****************************************************************************
+
736void tNMEA2000::SetProductInformation(const tProductInformation *_ProductInformation, int iDev) {
+
737 if ( !IsValidDevice(iDev) ) return;
+
738 InitDevices();
+
739 Devices[iDev].ProductInformation=_ProductInformation;
+
740 if (Devices[iDev].ProductInformation==0) Devices[iDev].ProductInformation=Devices[iDev].LocalProductInformation;
+
741 if (Devices[iDev].ProductInformation==0) Devices[iDev].ProductInformation=&DefProductInformation;
+
742}
+
743
+
744//*****************************************************************************
+
745void tNMEA2000::SetProductInformation(const char *_ModelSerialCode,
+
746 unsigned short _ProductCode,
+
747 const char *_ModelID,
+
748 const char *_SwCode,
+
749 const char *_ModelVersion,
+
750 unsigned char _LoadEquivalency,
+
751 unsigned short _N2kVersion,
+
752 unsigned char _CertificationLevel,
+
753 int iDev) {
+
754 if ( !IsValidDevice(iDev) ) return;
+
755 InitDevices();
+
756 if (Devices[iDev].LocalProductInformation==0) {
+ +
758 }
+ +
760 Devices[iDev].LocalProductInformation->Set(_ModelSerialCode,_ProductCode,_ModelID,_SwCode,_ModelVersion,_LoadEquivalency,_N2kVersion,_CertificationLevel);
+
761}
+
762
+
763//*****************************************************************************
+
764void tNMEA2000::SetConfigurationInformation(const char *ManufacturerInformation,
+
765 const char *InstallationDescription1,
+
766 const char *InstallationDescription2) {
+
767 if ( LocalConfigurationInformationData!=0 ) free(LocalConfigurationInformationData); // This happens on second call, which is not good.
+ +
769
+
770 size_t ManInfoLen=(ManufacturerInformation?strlen(ManufacturerInformation)+1:0);
+
771#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
772 size_t InstDesc1Len=Max_N2kConfigurationInfoField_len;
+
773 size_t InstDesc2Len=Max_N2kConfigurationInfoField_len;
+
774#else
+
775 size_t InstDesc1Len=(InstallationDescription1?strlen(InstallationDescription1)+1:0);
+
776 size_t InstDesc2Len=(InstallationDescription2?strlen(InstallationDescription2)+1:0);
+
777#endif
778
-
779 SetCharBuf(InstallationDescription2,InstDesc2Len,Info);
-
780 ConfigurationInformation.InstallationDescription2=(InstallationDescription2?Info:0);
-
781 Info+=InstDesc2Len;
+ + +
782
-
783 SetCharBuf(ManufacturerInformation,ManInfoLen,Info);
-
784 ConfigurationInformation.ManufacturerInformation=(ManufacturerInformation?Info:0);
-
785}
-
786
-
787//*****************************************************************************
-
788void tNMEA2000::SetProgmemConfigurationInformation(const char *ManufacturerInformation,
-
789 const char *InstallationDescription1,
-
790 const char *InstallationDescription2) {
-
791 if ( LocalConfigurationInformationData!=0 ) free(LocalConfigurationInformationData); // This happens on second call, which is not good.
- - -
794 ConfigurationInformation.InstallationDescription1=InstallationDescription1;
-
795 ConfigurationInformation.InstallationDescription2=InstallationDescription2;
-
796}
-
797
-
798//*****************************************************************************
- -
800 if ( !IsValidDevice(iDev) ) return 0;
-
801 unsigned long ListPGN;
-
802 size_t FPTxPGNCount=0;
-
803
-
804 for (int i=0; (ListPGN=pgm_read_dword(&DefTransmitMessages[i]))!=0; i++) {
-
805 if ( IsFastPacketPGN(ListPGN) ) FPTxPGNCount++;
-
806 }
-
807 if (Devices[iDev].TransmitMessages!=0) {
-
808 for (int i=0; (ListPGN=pgm_read_dword(&Devices[iDev].TransmitMessages[i]))!=0; i++) {
-
809 if ( IsFastPacketPGN(ListPGN) ) FPTxPGNCount++;
-
810 }
-
811 }
-
812
-
813 return FPTxPGNCount;
-
814}
-
815
-
816//*****************************************************************************
-
817int tNMEA2000::GetSequenceCounter(unsigned long PGN, int iDev) {
-
818 if ( !IsValidDevice(iDev) ) return 0;
-
819
-
820 if ( Devices[iDev].PGNSequenceCounters==0 ) { // Sequence counters has not yet been initialized
-
821 Devices[iDev].MaxPGNSequenceCounters=GetFastPacketTxPGNCount(iDev)+1; // Reserve 1 for undefined PGNs
-
822 Devices[iDev].PGNSequenceCounters=new unsigned long[Devices[iDev].MaxPGNSequenceCounters];
-
823 for ( size_t i=0; i<Devices[iDev].MaxPGNSequenceCounters; i++ ) Devices[iDev].PGNSequenceCounters[i]=0;
-
824 }
-
825 if ( Devices[iDev].PGNSequenceCounters==0 ) return 0; // Should not be. Only in case of memory allocation problem.
-
826 size_t last=Devices[iDev].MaxPGNSequenceCounters-1;
-
827 unsigned long sc;
-
828 for ( size_t i=0; i<last; i++ ) {
-
829 if ( Devices[iDev].PGNSequenceCounters[i]==0 ) { // Empty place, use this
-
830 Devices[iDev].PGNSequenceCounters[i]=PGN;
-
831 return 0; // Start from sequence 0
-
832 }
-
833 if ( (Devices[iDev].PGNSequenceCounters[i]&0x00ffffff) == PGN ) { // Found counter, use it
-
834 sc=Devices[iDev].PGNSequenceCounters[i]>>24;
-
835 sc++; if (sc>7) sc=0; // Get next counter
-
836 Devices[iDev].PGNSequenceCounters[i]=PGN | (sc << 24);
-
837 return sc;
-
838 }
-
839 }
-
840 // PGN counter not found, so use common
-
841 sc=Devices[iDev].PGNSequenceCounters[last];
-
842 sc++; if (sc>7) sc=0;
-
843 Devices[iDev].PGNSequenceCounters[last]=sc;
-
844 return sc;
-
845}
-
846
-
847#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
848
-
849//*****************************************************************************
-
850void CopyProgmemString(const char *str, size_t MaxLen, char *buf) {
-
851 if ( buf==0 || MaxLen==0 ) return; // nothing to do for 0 buffer
-
852 if ( str==0 ) { buf[0]=0; return; }
-
853 size_t i=0;
-
854 char c;
-
855 for (; i<MaxLen-1 && (c=pgm_read_byte(&(str[i])))!=0; i++) buf[i]=c;
-
856 for (; i<MaxLen; i++) buf[i]=0;
-
857 buf[MaxLen-1]=0; // Force null termination
-
858}
-
859
-
860//*****************************************************************************
-
861bool tNMEA2000::IsTxPGN(unsigned long PGN, int iDev) {
-
862 if ( !IsValidDevice(iDev) ) return false;
-
863 unsigned long ListPGN;
-
864
-
865 for (int i=0; (ListPGN=pgm_read_dword(&DefTransmitMessages[i]))!=0; i++) {
-
866 if ( ListPGN==PGN ) return true;
-
867 }
-
868 if (Devices[iDev].TransmitMessages!=0) {
-
869 for (int i=0; (ListPGN=pgm_read_dword(&Devices[iDev].TransmitMessages[i]))!=0; i++) {
-
870 if ( ListPGN==PGN ) return true;
-
871 }
-
872 }
-
873 return false;
-
874}
-
875
-
876//*****************************************************************************
-
877const tNMEA2000::tProductInformation * tNMEA2000::GetProductInformation(int iDev, bool &IsProgMem) const {
-
878 if ( !IsValidDevice(iDev) ) return 0;
-
879 int iPIDev=iDev;
-
880
-
881 if ( Devices[iPIDev].ProductInformation==0 ) iPIDev=0; // Use first device product information
-
882 if ( Devices[iPIDev].ProductInformation==0 ) return 0; // Can not do anything.
-
883 IsProgMem = (Devices[iPIDev].ProductInformation!=Devices[iPIDev].LocalProductInformation );
-
884 return Devices[iPIDev].ProductInformation;
-
885}
-
886
-
887//*****************************************************************************
-
888unsigned short tNMEA2000::GetN2kVersion(int iDev) const {
-
889 bool IsProgMem;
-
890 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
-
891
-
892 if ( ProductInformation==0 ) return 0;
-
893
-
894 if ( !IsProgMem ) {
-
895 return ProductInformation->N2kVersion;
-
896 } else {
-
897 return pgm_read_word(&ProductInformation->N2kVersion);
-
898 }
+
783 size_t TotalSize=ManInfoLen+InstDesc1Len+InstDesc2Len;
+
784 void *mem=(TotalSize>0?malloc(TotalSize):0);
+
785
+ + +
788
+
789 SetCharBuf(InstallationDescription1,InstDesc1Len,Info);
+
790 ConfigurationInformation.InstallationDescription1=(InstallationDescription1?Info:0);
+
791 Info+=InstDesc1Len;
+
792
+
793 SetCharBuf(InstallationDescription2,InstDesc2Len,Info);
+
794 ConfigurationInformation.InstallationDescription2=(InstallationDescription2?Info:0);
+
795 Info+=InstDesc2Len;
+
796
+
797 SetCharBuf(ManufacturerInformation,ManInfoLen,Info);
+
798 ConfigurationInformation.ManufacturerInformation=(ManufacturerInformation?Info:0);
+
799}
+
800
+
801//*****************************************************************************
+
802void tNMEA2000::SetProgmemConfigurationInformation(const char *ManufacturerInformation,
+
803 const char *InstallationDescription1,
+
804 const char *InstallationDescription2) {
+
805 if ( LocalConfigurationInformationData!=0 ) free(LocalConfigurationInformationData); // This happens on second call, which is not good.
+ + +
808 ConfigurationInformation.InstallationDescription1=InstallationDescription1;
+
809 ConfigurationInformation.InstallationDescription2=InstallationDescription2;
+
810}
+
811
+
812//*****************************************************************************
+ +
814 if ( !IsValidDevice(iDev) ) return 0;
+
815 unsigned long ListPGN;
+
816 size_t FPTxPGNCount=0;
+
817
+
818 for (int i=0; (ListPGN=pgm_read_dword(&DefTransmitMessages[i]))!=0; i++) {
+
819 if ( IsFastPacketPGN(ListPGN) ) FPTxPGNCount++;
+
820 }
+
821 if (Devices[iDev].TransmitMessages!=0) {
+
822 for (int i=0; (ListPGN=pgm_read_dword(&Devices[iDev].TransmitMessages[i]))!=0; i++) {
+
823 if ( IsFastPacketPGN(ListPGN) ) FPTxPGNCount++;
+
824 }
+
825 }
+
826
+
827 return FPTxPGNCount;
+
828}
+
829
+
830//*****************************************************************************
+
831int tNMEA2000::GetSequenceCounter(unsigned long PGN, int iDev) {
+
832 if ( !IsValidDevice(iDev) ) return 0;
+
833
+
834 if ( Devices[iDev].PGNSequenceCounters==0 ) { // Sequence counters has not yet been initialized
+
835 Devices[iDev].MaxPGNSequenceCounters=GetFastPacketTxPGNCount(iDev)+1; // Reserve 1 for undefined PGNs
+
836 Devices[iDev].PGNSequenceCounters=new unsigned long[Devices[iDev].MaxPGNSequenceCounters];
+
837 for ( size_t i=0; i<Devices[iDev].MaxPGNSequenceCounters; i++ ) Devices[iDev].PGNSequenceCounters[i]=0;
+
838 }
+
839 if ( Devices[iDev].PGNSequenceCounters==0 ) return 0; // Should not be. Only in case of memory allocation problem.
+
840 size_t last=Devices[iDev].MaxPGNSequenceCounters-1;
+
841 unsigned long sc;
+
842 for ( size_t i=0; i<last; i++ ) {
+
843 if ( Devices[iDev].PGNSequenceCounters[i]==0 ) { // Empty place, use this
+
844 Devices[iDev].PGNSequenceCounters[i]=PGN;
+
845 return 0; // Start from sequence 0
+
846 }
+
847 if ( (Devices[iDev].PGNSequenceCounters[i]&0x00ffffff) == PGN ) { // Found counter, use it
+
848 sc=Devices[iDev].PGNSequenceCounters[i]>>24;
+
849 sc++; if (sc>7) sc=0; // Get next counter
+
850 Devices[iDev].PGNSequenceCounters[i]=PGN | (sc << 24);
+
851 return sc;
+
852 }
+
853 }
+
854 // PGN counter not found, so use common
+
855 sc=Devices[iDev].PGNSequenceCounters[last];
+
856 sc++; if (sc>7) sc=0;
+
857 Devices[iDev].PGNSequenceCounters[last]=sc;
+
858 return sc;
+
859}
+
860
+
861#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
862
+
863//*****************************************************************************
+
864void CopyProgmemString(const char *str, size_t MaxLen, char *buf) {
+
865 if ( buf==0 || MaxLen==0 ) return; // nothing to do for 0 buffer
+
866 if ( str==0 ) { buf[0]=0; return; }
+
867 size_t i=0;
+
868 char c;
+
869 for (; i<MaxLen-1 && (c=pgm_read_byte(&(str[i])))!=0; i++) buf[i]=c;
+
870 for (; i<MaxLen; i++) buf[i]=0;
+
871 buf[MaxLen-1]=0; // Force null termination
+
872}
+
873
+
874//*****************************************************************************
+
875bool tNMEA2000::IsTxPGN(unsigned long PGN, int iDev) {
+
876 if ( !IsValidDevice(iDev) ) return false;
+
877 unsigned long ListPGN;
+
878
+
879 for (int i=0; (ListPGN=pgm_read_dword(&DefTransmitMessages[i]))!=0; i++) {
+
880 if ( ListPGN==PGN ) return true;
+
881 }
+
882 if (Devices[iDev].TransmitMessages!=0) {
+
883 for (int i=0; (ListPGN=pgm_read_dword(&Devices[iDev].TransmitMessages[i]))!=0; i++) {
+
884 if ( ListPGN==PGN ) return true;
+
885 }
+
886 }
+
887 return false;
+
888}
+
889
+
890//*****************************************************************************
+
891const tNMEA2000::tProductInformation * tNMEA2000::GetProductInformation(int iDev, bool &IsProgMem) const {
+
892 if ( !IsValidDevice(iDev) ) return 0;
+
893 int iPIDev=iDev;
+
894
+
895 if ( Devices[iPIDev].ProductInformation==0 ) iPIDev=0; // Use first device product information
+
896 if ( Devices[iPIDev].ProductInformation==0 ) return 0; // Can not do anything.
+
897 IsProgMem = (Devices[iPIDev].ProductInformation!=Devices[iPIDev].LocalProductInformation );
+
898 return Devices[iPIDev].ProductInformation;
899}
900
901//*****************************************************************************
-
902unsigned short tNMEA2000::GetProductCode(int iDev) const {
+
902unsigned short tNMEA2000::GetN2kVersion(int iDev) const {
903 bool IsProgMem;
904 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
905
906 if ( ProductInformation==0 ) return 0;
907
908 if ( !IsProgMem ) {
-
909 return ProductInformation->ProductCode;
+
909 return ProductInformation->N2kVersion;
910 } else {
-
911 return pgm_read_word(&ProductInformation->ProductCode);
+
911 return pgm_read_word(&ProductInformation->N2kVersion);
912 }
913}
914
915//*****************************************************************************
-
916void tNMEA2000::GetModelID(char *buf, size_t max_len, int iDev) const {
-
917 if ( max_len==0 ) return;
-
918 buf[0]=0;
-
919 bool IsProgMem;
-
920 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
916unsigned short tNMEA2000::GetProductCode(int iDev) const {
+
917 bool IsProgMem;
+
918 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
919
+
920 if ( ProductInformation==0 ) return 0;
921
-
922 if ( ProductInformation==0 ) return;
-
923
-
924 if ( !IsProgMem ) {
-
925 SetCharBuf(ProductInformation->N2kModelID,max_len,buf);
-
926 } else {
-
927 CopyProgmemString(ProductInformation->N2kModelID,max_len,buf);
-
928 }
-
929}
-
930
-
931//*****************************************************************************
-
932void tNMEA2000::GetSwCode(char *buf, size_t max_len, int iDev) const {
-
933 if ( max_len==0 ) return;
-
934 buf[0]=0;
-
935 bool IsProgMem;
-
936 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
922 if ( !IsProgMem ) {
+
923 return ProductInformation->ProductCode;
+
924 } else {
+
925 return pgm_read_word(&ProductInformation->ProductCode);
+
926 }
+
927}
+
928
+
929//*****************************************************************************
+
930void tNMEA2000::GetModelID(char *buf, size_t max_len, int iDev) const {
+
931 if ( max_len==0 ) return;
+
932 buf[0]=0;
+
933 bool IsProgMem;
+
934 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
935
+
936 if ( ProductInformation==0 ) return;
937
-
938 if ( ProductInformation==0 ) return;
-
939
-
940 if ( !IsProgMem ) {
-
941 SetCharBuf(ProductInformation->N2kSwCode,max_len,buf);
-
942 } else {
-
943 CopyProgmemString(ProductInformation->N2kSwCode,max_len,buf);
-
944 }
-
945}
-
946
-
947//*****************************************************************************
-
948void tNMEA2000::GetModelVersion(char *buf, size_t max_len, int iDev) const {
-
949 if ( max_len==0 ) return;
-
950 buf[0]=0;
-
951 bool IsProgMem;
-
952 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
938 if ( !IsProgMem ) {
+
939 SetCharBuf(ProductInformation->N2kModelID,max_len,buf);
+
940 } else {
+
941 CopyProgmemString(ProductInformation->N2kModelID,max_len,buf);
+
942 }
+
943}
+
944
+
945//*****************************************************************************
+
946void tNMEA2000::GetSwCode(char *buf, size_t max_len, int iDev) const {
+
947 if ( max_len==0 ) return;
+
948 buf[0]=0;
+
949 bool IsProgMem;
+
950 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
951
+
952 if ( ProductInformation==0 ) return;
953
-
954 if ( ProductInformation==0 ) return;
-
955
-
956 if ( !IsProgMem ) {
-
957 SetCharBuf(ProductInformation->N2kModelVersion,max_len,buf);
-
958 } else {
-
959 CopyProgmemString(ProductInformation->N2kModelVersion,max_len,buf);
-
960 }
-
961}
-
962
-
963//*****************************************************************************
-
964void tNMEA2000::GetModelSerialCode(char *buf, size_t max_len, int iDev) const {
-
965 if ( max_len==0 ) return;
-
966 buf[0]=0;
-
967 bool IsProgMem;
-
968 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
954 if ( !IsProgMem ) {
+
955 SetCharBuf(ProductInformation->N2kSwCode,max_len,buf);
+
956 } else {
+
957 CopyProgmemString(ProductInformation->N2kSwCode,max_len,buf);
+
958 }
+
959}
+
960
+
961//*****************************************************************************
+
962void tNMEA2000::GetModelVersion(char *buf, size_t max_len, int iDev) const {
+
963 if ( max_len==0 ) return;
+
964 buf[0]=0;
+
965 bool IsProgMem;
+
966 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
967
+
968 if ( ProductInformation==0 ) return;
969
-
970 if ( ProductInformation==0 ) return;
-
971
-
972 if ( !IsProgMem ) {
-
973 SetCharBuf(ProductInformation->N2kModelSerialCode,max_len,buf);
-
974 } else {
-
975 CopyProgmemString(ProductInformation->N2kModelSerialCode,max_len,buf);
-
976 }
-
977}
-
978
-
979//*****************************************************************************
-
980unsigned char tNMEA2000::GetCertificationLevel(int iDev) const {
+
970 if ( !IsProgMem ) {
+
971 SetCharBuf(ProductInformation->N2kModelVersion,max_len,buf);
+
972 } else {
+
973 CopyProgmemString(ProductInformation->N2kModelVersion,max_len,buf);
+
974 }
+
975}
+
976
+
977//*****************************************************************************
+
978void tNMEA2000::GetModelSerialCode(char *buf, size_t max_len, int iDev) const {
+
979 if ( max_len==0 ) return;
+
980 buf[0]=0;
981 bool IsProgMem;
982 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
983
-
984 if ( ProductInformation==0 ) return 0;
+
984 if ( ProductInformation==0 ) return;
985
986 if ( !IsProgMem ) {
-
987 return ProductInformation->CertificationLevel;
+
987 SetCharBuf(ProductInformation->N2kModelSerialCode,max_len,buf);
988 } else {
-
989 return pgm_read_byte(&ProductInformation->CertificationLevel);
+
989 CopyProgmemString(ProductInformation->N2kModelSerialCode,max_len,buf);
990 }
991}
992
993//*****************************************************************************
-
994unsigned char tNMEA2000::GetLoadEquivalency(int iDev) const {
+
994unsigned char tNMEA2000::GetCertificationLevel(int iDev) const {
995 bool IsProgMem;
996 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
997
998 if ( ProductInformation==0 ) return 0;
999
1000 if ( !IsProgMem ) {
-
1001 return ProductInformation->LoadEquivalency;
+
1001 return ProductInformation->CertificationLevel;
1002 } else {
-
1003 return pgm_read_byte(&ProductInformation->LoadEquivalency);
+
1003 return pgm_read_byte(&ProductInformation->CertificationLevel);
1004 }
1005}
1006
1007//*****************************************************************************
- - - - - - - - - - - -
1019 }
-
1020}
-
1021
-
1022//*****************************************************************************
-
1023void tNMEA2000::SetInstallationDescription1(const char *InstallationDescription1) {
- -
1025 // Get pointer to local InstallationDescription1, which is after
- -
1027 SetCharBuf(InstallationDescription1,Max_N2kConfigurationInfoField_len,Info);
-
1028 ConfigurationInformation.InstallationDescription1=(InstallationDescription1?Info:0);
- -
1030}
-
1031
-
1032//*****************************************************************************
-
1033void tNMEA2000::SetInstallationDescription2(const char *InstallationDescription2) {
- - -
1036 SetCharBuf(InstallationDescription2,Max_N2kConfigurationInfoField_len,Info);
-
1037 ConfigurationInformation.InstallationDescription2=(InstallationDescription2?Info:0);
- -
1039}
-
1040
-
1041//*****************************************************************************
-
1042void tNMEA2000::GetInstallationDescription1(char *buf, size_t max_len) {
- - -
1045 } else {
- -
1047 }
-
1048}
-
1049
-
1050//*****************************************************************************
-
1051void tNMEA2000::GetInstallationDescription2(char *buf, size_t max_len) {
- - -
1054 } else {
- -
1056 }
-
1057}
-
1058
-
1059//*****************************************************************************
-
1060void tNMEA2000::GetManufacturerInformation(char *buf, size_t max_len) {
- - -
1063 } else {
- -
1065 }
-
1066}
-
1067
-
1068//*****************************************************************************
- - -
1071
- -
1073 return result;
-
1074}
-
1075
-
1076#endif
-
1077
-
1078//*****************************************************************************
-
1079void tNMEA2000::SetDeviceInformation(unsigned long _UniqueNumber,
-
1080 unsigned char _DeviceFunction,
-
1081 unsigned char _DeviceClass,
-
1082 uint16_t _ManufacturerCode,
-
1083 unsigned char _IndustryGroup,
-
1084 int iDev
-
1085 ) {
-
1086 if ( !IsValidDevice(iDev) ) return;
-
1087 InitDevices();
-
1088 if (_ManufacturerCode!=0xffff) Devices[iDev].DeviceInformation.SetManufacturerCode(_ManufacturerCode);
-
1089 if (_UniqueNumber!=0xffffffff) Devices[iDev].DeviceInformation.SetUniqueNumber(_UniqueNumber);
-
1090 if (_DeviceFunction!=0xff) Devices[iDev].DeviceInformation.SetDeviceFunction(_DeviceFunction);
-
1091 if (_DeviceClass!=0xff) Devices[iDev].DeviceInformation.SetDeviceClass(_DeviceClass);
-
1092 if (_IndustryGroup!=0xff) Devices[iDev].DeviceInformation.SetIndustryGroup(_IndustryGroup);
-
1093}
-
1094
-
1095//*****************************************************************************
- -
1097 uint8_t _DeviceInstanceLower,
-
1098 uint8_t _DeviceInstanceUpper,
-
1099 uint8_t _SystemInstance,
-
1100 int iDev
-
1101 ) {
-
1102 if ( !IsValidDevice(iDev) ) return;
-
1103
-
1104 InitDevices();
-
1105 uint8_t DeviceInstance=Devices[iDev].DeviceInformation.GetDeviceInstance();
-
1106
-
1107 if (_DeviceInstanceLower!=0xff ) {
-
1108 DeviceInstance=( (DeviceInstance & ~0x07) | (_DeviceInstanceLower & 0x07) );
-
1109 }
-
1110 if (_DeviceInstanceUpper!=0xff ) {
-
1111 DeviceInstance=( (DeviceInstance & ~0xF8) | ((_DeviceInstanceUpper&0x1f)<<3) );
-
1112 }
-
1113
-
1114 if ( Devices[iDev].DeviceInformation.GetDeviceInstance()!=DeviceInstance) {
-
1115 Devices[iDev].DeviceInformation.SetDeviceInstance(DeviceInstance);
- -
1117 }
-
1118
-
1119 if (_SystemInstance!=0xff && Devices[iDev].DeviceInformation.GetSystemInstance()!=_SystemInstance) {
-
1120 Devices[iDev].DeviceInformation.SetSystemInstance(_SystemInstance);
- -
1122 }
-
1123
-
1124 // Send delayed. Had problems with some devices with too fast response.
-
1125 if ( IsReadyToSend() ) SendIsoAddressClaim(0xff,iDev,2);
-
1126}
+
1008unsigned char tNMEA2000::GetLoadEquivalency(int iDev) const {
+
1009 bool IsProgMem;
+
1010 const tProductInformation *ProductInformation=GetProductInformation(iDev,IsProgMem);
+
1011
+
1012 if ( ProductInformation==0 ) return 0;
+
1013
+
1014 if ( !IsProgMem ) {
+
1015 return ProductInformation->LoadEquivalency;
+
1016 } else {
+
1017 return pgm_read_byte(&ProductInformation->LoadEquivalency);
+
1018 }
+
1019}
+
1020
+
1021//*****************************************************************************
+ + + + + + + + + + + +
1033 }
+
1034}
+
1035
+
1036//*****************************************************************************
+
1037void tNMEA2000::SetInstallationDescription1(const char *InstallationDescription1) {
+ +
1039 // Get pointer to local InstallationDescription1, which is after
+ +
1041 SetCharBuf(InstallationDescription1,Max_N2kConfigurationInfoField_len,Info);
+
1042 ConfigurationInformation.InstallationDescription1=(InstallationDescription1?Info:0);
+ +
1044}
+
1045
+
1046//*****************************************************************************
+
1047void tNMEA2000::SetInstallationDescription2(const char *InstallationDescription2) {
+ + +
1050 SetCharBuf(InstallationDescription2,Max_N2kConfigurationInfoField_len,Info);
+
1051 ConfigurationInformation.InstallationDescription2=(InstallationDescription2?Info:0);
+ +
1053}
+
1054
+
1055//*****************************************************************************
+
1056void tNMEA2000::GetInstallationDescription1(char *buf, size_t max_len) {
+ + +
1059 } else {
+ +
1061 }
+
1062}
+
1063
+
1064//*****************************************************************************
+
1065void tNMEA2000::GetInstallationDescription2(char *buf, size_t max_len) {
+ + +
1068 } else {
+ +
1070 }
+
1071}
+
1072
+
1073//*****************************************************************************
+
1074void tNMEA2000::GetManufacturerInformation(char *buf, size_t max_len) {
+ + +
1077 } else {
+ +
1079 }
+
1080}
+
1081
+
1082//*****************************************************************************
+ + +
1085
+ +
1087 return result;
+
1088}
+
1089
+
1090#endif
+
1091
+
1092//*****************************************************************************
+
1093void tNMEA2000::SetDeviceInformation(unsigned long _UniqueNumber,
+
1094 unsigned char _DeviceFunction,
+
1095 unsigned char _DeviceClass,
+
1096 uint16_t _ManufacturerCode,
+
1097 unsigned char _IndustryGroup,
+
1098 int iDev
+
1099 ) {
+
1100 if ( !IsValidDevice(iDev) ) return;
+
1101 InitDevices();
+
1102 if (_ManufacturerCode!=0xffff) Devices[iDev].DeviceInformation.SetManufacturerCode(_ManufacturerCode);
+
1103 if (_UniqueNumber!=0xffffffff) Devices[iDev].DeviceInformation.SetUniqueNumber(_UniqueNumber);
+
1104 if (_DeviceFunction!=0xff) Devices[iDev].DeviceInformation.SetDeviceFunction(_DeviceFunction);
+
1105 if (_DeviceClass!=0xff) Devices[iDev].DeviceInformation.SetDeviceClass(_DeviceClass);
+
1106 if (_IndustryGroup!=0xff) Devices[iDev].DeviceInformation.SetIndustryGroup(_IndustryGroup);
+
1107}
+
1108
+
1109//*****************************************************************************
+ +
1111 uint8_t _DeviceInstanceLower,
+
1112 uint8_t _DeviceInstanceUpper,
+
1113 uint8_t _SystemInstance,
+
1114 int iDev
+
1115 ) {
+
1116 if ( !IsValidDevice(iDev) ) return;
+
1117
+
1118 InitDevices();
+
1119 uint8_t DeviceInstance=Devices[iDev].DeviceInformation.GetDeviceInstance();
+
1120
+
1121 if (_DeviceInstanceLower!=0xff ) {
+
1122 DeviceInstance=( (DeviceInstance & ~0x07) | (_DeviceInstanceLower & 0x07) );
+
1123 }
+
1124 if (_DeviceInstanceUpper!=0xff ) {
+
1125 DeviceInstance=( (DeviceInstance & ~0xF8) | ((_DeviceInstanceUpper&0x1f)<<3) );
+
1126 }
1127
-
1128//*****************************************************************************
-
1129void tNMEA2000::SetSingleFrameMessages(const unsigned long *_SingleFrameMessages) {
-
1130 SingleFrameMessages[0]=_SingleFrameMessages;
-
1131}
+
1128 if ( Devices[iDev].DeviceInformation.GetDeviceInstance()!=DeviceInstance) {
+
1129 Devices[iDev].DeviceInformation.SetDeviceInstance(DeviceInstance);
+ +
1131 }
1132
-
1133//*****************************************************************************
-
1134void tNMEA2000::SetFastPacketMessages(const unsigned long *_FastPacketMessages) {
-
1135 FastPacketMessages[0]=_FastPacketMessages;
-
1136}
+
1133 if (_SystemInstance!=0xff && Devices[iDev].DeviceInformation.GetSystemInstance()!=_SystemInstance) {
+
1134 Devices[iDev].DeviceInformation.SetSystemInstance(_SystemInstance);
+ +
1136 }
1137
-
1138//*****************************************************************************
-
1139void tNMEA2000::ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages) {
-
1140 SingleFrameMessages[1]=_SingleFrameMessages;
-
1141}
-
1142
-
1143//*****************************************************************************
-
1144void tNMEA2000::ExtendFastPacketMessages(const unsigned long *_FastPacketMessages) {
-
1145 FastPacketMessages[1]=_FastPacketMessages;
-
1146}
-
1147
-
1148//*****************************************************************************
-
1149void tNMEA2000::ExtendTransmitMessages(const unsigned long *_Messages, int iDev) {
-
1150 if ( !IsValidDevice(iDev) ) return;
-
1151 InitDevices();
-
1152 Devices[iDev].TransmitMessages=_Messages;
-
1153}
-
1154
-
1155//*****************************************************************************
-
1156void tNMEA2000::ExtendReceiveMessages(const unsigned long *_Messages, int iDev) {
-
1157 if ( !IsValidDevice(iDev) ) return;
-
1158 InitDevices();
-
1159 Devices[iDev].ReceiveMessages=_Messages;
+
1138 // Send delayed. Had problems with some devices with too fast response.
+
1139 if ( IsReadyToSend() ) SendIsoAddressClaim(0xff,iDev,2);
+
1140}
+
1141
+
1142//*****************************************************************************
+
1143void tNMEA2000::SetSingleFrameMessages(const unsigned long *_SingleFrameMessages) {
+
1144 SingleFrameMessages[0]=_SingleFrameMessages;
+
1145}
+
1146
+
1147//*****************************************************************************
+
1148void tNMEA2000::SetFastPacketMessages(const unsigned long *_FastPacketMessages) {
+
1149 FastPacketMessages[0]=_FastPacketMessages;
+
1150}
+
1151
+
1152//*****************************************************************************
+
1153void tNMEA2000::ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages) {
+
1154 SingleFrameMessages[1]=_SingleFrameMessages;
+
1155}
+
1156
+
1157//*****************************************************************************
+
1158void tNMEA2000::ExtendFastPacketMessages(const unsigned long *_FastPacketMessages) {
+
1159 FastPacketMessages[1]=_FastPacketMessages;
1160}
1161
1162//*****************************************************************************
-
1163void tNMEA2000::SetMode(tN2kMode _N2kMode, uint8_t _N2kSource) {
-
1164 InitDevices();
-
1165 N2kMode=_N2kMode;
-
1166 for (int i=0; i<DeviceCount; i++) {
-
1167 Devices[i].N2kSource=_N2kSource+i;
- -
1169 }
-
1170 AddressChanged=false;
-
1171}
-
1172
-
1173//*****************************************************************************
- -
1175 if ( CANSendFrameBuf==0 && !IsInitialized() ) {
- -
1177 N2kDbg("Initialize frame buffer. Size: "); N2kDbg(MaxCANSendFrames); N2kDbg(", address:"); N2kDbgln((uint32_t)CANSendFrameBuf);
- - -
1180 }
-
1181
-
1182 // Receive buffer has sense only with interrupt handling. So it must be handled on inherited class.
-
1183}
-
1184
-
1185//*****************************************************************************
- -
1187 if ( OpenState==os_Open ) return true;
-
1188
-
1189 if ( OpenState==os_None ) {
- -
1191 InitDevices();
-
1192
-
1193 if ( N2kCANMsgBuf==0 ) {
-
1194 if ( MaxN2kCANMsgs==0 ) MaxN2kCANMsgs=5;
- -
1196 for (int i=0; i<MaxN2kCANMsgs; i++) N2kCANMsgBuf[i].FreeMessage();
-
1197
-
1198 #if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
1199 // On first open try add also default group function handlers
- -
1201 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126464(this)); // Rx/Tx list handler
-
1202 #if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
1203 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126993(this)); // Heartbeat handler
-
1204 #endif
-
1205 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126996(this)); // Product information
-
1206 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126998(this)); // Configuration information handler
-
1207 AddGroupFunctionHandler(new tN2kGroupFunctionHandler(this,0)); // Default handler at last
-
1208 #endif
-
1209 }
- -
1211 }
-
1212
-
1213 if ( OpenState==os_OpenCAN ) {
-
1214 if ( !OpenScheduler.IsTime() ) return false;
-
1215 bool Notify=( (ForwardStream!=0) && (ForwardType==tNMEA2000::fwdt_Text) );
-
1216 if ( (dbMode!=dm_None) || CANOpen() ) {
- - -
1219 if ( Notify ) ForwardStream->println(F("CAN device ready"));
-
1220 } else { // Open failed, delay next open
-
1221 OpenScheduler.FromNow(1000);
-
1222 if ( Notify ) ForwardStream->println(F("CAN device failed to open"));
+
1163void tNMEA2000::ExtendTransmitMessages(const unsigned long *_Messages, int iDev) {
+
1164 if ( !IsValidDevice(iDev) ) return;
+
1165 InitDevices();
+
1166 Devices[iDev].TransmitMessages=_Messages;
+
1167}
+
1168
+
1169//*****************************************************************************
+
1170void tNMEA2000::ExtendReceiveMessages(const unsigned long *_Messages, int iDev) {
+
1171 if ( !IsValidDevice(iDev) ) return;
+
1172 InitDevices();
+
1173 Devices[iDev].ReceiveMessages=_Messages;
+
1174}
+
1175
+
1176//*****************************************************************************
+
1177void tNMEA2000::SetMode(tN2kMode _N2kMode, uint8_t _N2kSource) {
+
1178 InitDevices();
+
1179 N2kMode=_N2kMode;
+
1180 for (int i=0; i<DeviceCount; i++) {
+
1181 Devices[i].N2kSource=_N2kSource+i;
+ +
1183 }
+
1184 AddressChanged=false;
+
1185}
+
1186
+
1187//*****************************************************************************
+ +
1189 if ( CANSendFrameBuf==0 && !IsInitialized() ) {
+ +
1191 N2kDbg("Initialize frame buffer. Size: "); N2kDbg(MaxCANSendFrames); N2kDbg(", address:"); N2kDbgln((uint32_t)CANSendFrameBuf);
+ + +
1194 }
+
1195
+
1196 // Receive buffer has sense only with interrupt handling. So it must be handled on inherited class.
+
1197}
+
1198
+
1199//*****************************************************************************
+ +
1201 if ( OpenState==os_Open ) return true;
+
1202
+
1203 if ( OpenState==os_None ) {
+ +
1205 InitDevices();
+
1206
+
1207 if ( N2kCANMsgBuf==0 ) {
+
1208 if ( MaxN2kCANMsgs==0 ) MaxN2kCANMsgs=5;
+ +
1210 for (int i=0; i<MaxN2kCANMsgs; i++) N2kCANMsgBuf[i].FreeMessage();
+
1211
+
1212 #if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
1213 // On first open try add also default group function handlers
+ +
1215 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126464(this)); // Rx/Tx list handler
+
1216 #if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
1217 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126993(this)); // Heartbeat handler
+
1218 #endif
+
1219 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126996(this)); // Product information
+
1220 AddGroupFunctionHandler(new tN2kGroupFunctionHandlerForPGN126998(this)); // Configuration information handler
+
1221 AddGroupFunctionHandler(new tN2kGroupFunctionHandler(this,0)); // Default handler at last
+
1222 #endif
1223 }
-
1224 return OpenState==os_WaitOpen;
+
1225 }
1226
-
1227 // There were problems with some CAN controllers start sending immediately after
-
1228 // Initialization so we start sending delayed.
- - - - -
1233 if ( OnOpen!=0 ) OnOpen();
-
1234 #if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
1235 SetHeartbeatIntervalAndOffset(DefaultHeartbeatInterval,10000); // Init default hearbeat interval and offset.
-
1236 #endif
-
1237 } else {
-
1238 unsigned long canId;
-
1239 unsigned char len = 0;
-
1240 unsigned char buf[8];
-
1241 while ( CANGetFrame(canId,len,buf) );
-
1242 }
-
1243
-
1244 // For compatibility return true, when final open is waiting.
-
1245 return OpenState>=os_WaitOpen;
-
1246}
-
1247
-
1248//*****************************************************************************
- - -
1251}
-
1252
-
1253/************************************************************************/
-
1262void CanIdToN2k(unsigned long id, unsigned char &prio, unsigned long &pgn, unsigned char &src, unsigned char &dst) {
-
1263 unsigned char CanIdPF = (unsigned char) (id >> 16);
-
1264 unsigned char CanIdPS = (unsigned char) (id >> 8);
-
1265 unsigned char CanIdDP = (unsigned char) (id >> 24) & 1;
-
1266
-
1267 src = (unsigned char) id >> 0;
-
1268 prio = (unsigned char) ((id >> 26) & 0x7);
-
1269
-
1270 if (CanIdPF < 240) {
-
1271 /* PDU1 format, the PS contains the destination address */
-
1272 dst = CanIdPS;
-
1273 pgn = (((unsigned long)CanIdDP) << 16) | (((unsigned long)CanIdPF) << 8);
-
1274 } else {
-
1275 /* PDU2 format, the destination is implied global and the PGN is extended */
-
1276 dst = 0xff;
-
1277 pgn = (((unsigned long)CanIdDP) << 16) | (((unsigned long)CanIdPF) << 8) | (unsigned long)CanIdPS;
-
1278 }
-
1279}
-
1280
-
1281/************************************************************************/
-
1291unsigned long N2ktoCanID(unsigned char priority, unsigned long PGN, unsigned long Source, unsigned char Destination) {
-
1292 unsigned char CanIdPF = (unsigned char) (PGN >> 8);
-
1293
-
1294 if (CanIdPF < 240) { // PDU1 format
-
1295 if ( (PGN & 0xff) != 0 ) return 0; // for PDU1 format PGN lowest byte has to be 0 for the destination.
-
1296 return ( ((unsigned long)(priority & 0x7))<<26 | PGN<<8 | ((unsigned long)Destination)<<8 | (unsigned long)Source);
-
1297 } else { // PDU2 format
-
1298 return ( ((unsigned long)(priority & 0x7))<<26 | PGN<<8 | (unsigned long)Source);
-
1299 }
-
1300}
-
1301
-
1302//*****************************************************************************
- -
1304{ uint16_t temp;
-
1305
-
1306 if ( CANSendFrameBuf==0 ) return true; // This can be in case, where inherited class defines own buffering.
-
1307
- - -
1310 if ( CANSendFrame(CANSendFrameBuf[temp].id, CANSendFrameBuf[temp].len, CANSendFrameBuf[temp].buf, CANSendFrameBuf[temp].wait_sent) ) {
- -
1312 N2kFrameOutDbgStart("Frame unbuffered "); N2kFrameOutDbgln(CANSendFrameBuf[temp].id);
-
1313 } else return false;
+
1227 if ( OpenState==os_OpenCAN ) {
+
1228 if ( !OpenScheduler.IsTime() ) return false;
+
1229 bool Notify=( (ForwardStream!=0) && (ForwardType==tNMEA2000::fwdt_Text) );
+
1230 if ( (dbMode!=dm_None) || CANOpen() ) {
+ + +
1233 if ( Notify ) ForwardStream->println(F("CAN device ready"));
+
1234 } else { // Open failed, delay next open
+
1235 OpenScheduler.FromNow(1000);
+
1236 if ( Notify ) ForwardStream->println(F("CAN device failed to open"));
+
1237 }
+
1238 return OpenState==os_WaitOpen;
+
1239 }
+
1240
+
1241 // There were problems with some CAN controllers start sending immediately after
+
1242 // Initialization so we start sending delayed.
+ + + + +
1247 #if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
1248 SetHeartbeatIntervalAndOffset(DefaultHeartbeatInterval,10000); // Init default hearbeat interval and offset.
+
1249 #endif
+
1250 if ( OnOpen!=0 ) OnOpen();
+
1251 } else {
+
1252 // Read rubbish out from CAN controller
+
1253 unsigned long canId;
+
1254 unsigned char len = 0;
+
1255 unsigned char buf[8];
+
1256 while ( CANGetFrame(canId,len,buf) );
+
1257 }
+
1258
+
1259 // For compatibility return true, when final open is waiting.
+
1260 return OpenState>=os_WaitOpen;
+
1261}
+
1262
+
1263//*****************************************************************************
+ + +
1266}
+
1267
+
1268/************************************************************************/
+
1277void CanIdToN2k(unsigned long id, unsigned char &prio, unsigned long &pgn, unsigned char &src, unsigned char &dst) {
+
1278 unsigned char CanIdPF = (unsigned char) (id >> 16);
+
1279 unsigned char CanIdPS = (unsigned char) (id >> 8);
+
1280 unsigned char CanIdDP = (unsigned char) (id >> 24) & 1;
+
1281
+
1282 src = (unsigned char) id >> 0;
+
1283 prio = (unsigned char) ((id >> 26) & 0x7);
+
1284
+
1285 if (CanIdPF < 240) {
+
1286 /* PDU1 format, the PS contains the destination address */
+
1287 dst = CanIdPS;
+
1288 pgn = (((unsigned long)CanIdDP) << 16) | (((unsigned long)CanIdPF) << 8);
+
1289 } else {
+
1290 /* PDU2 format, the destination is implied global and the PGN is extended */
+
1291 dst = 0xff;
+
1292 pgn = (((unsigned long)CanIdDP) << 16) | (((unsigned long)CanIdPF) << 8) | (unsigned long)CanIdPS;
+
1293 }
+
1294}
+
1295
+
1296/************************************************************************/
+
1306unsigned long N2ktoCanID(unsigned char priority, unsigned long PGN, unsigned long Source, unsigned char Destination) {
+
1307 unsigned char CanIdPF = (unsigned char) (PGN >> 8);
+
1308
+
1309 if (CanIdPF < 240) { // PDU1 format
+
1310 if ( (PGN & 0xff) != 0 ) return 0; // for PDU1 format PGN lowest byte has to be 0 for the destination.
+
1311 return ( ((unsigned long)(priority & 0x7))<<26 | PGN<<8 | ((unsigned long)Destination)<<8 | (unsigned long)Source);
+
1312 } else { // PDU2 format
+
1313 return ( ((unsigned long)(priority & 0x7))<<26 | PGN<<8 | (unsigned long)Source);
1314 }
-
1315
-
1316 return true;
-
1317}
-
1318
-
1319//*****************************************************************************
-
1320bool tNMEA2000::SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent) {
-
1321
-
1322 if ( !SendFrames() || !CANSendFrame(id,len,buf,wait_sent) ) { // If we can not sent frame immediately, add it to buffer
- -
1324 if ( Frame==0 ) {
-
1325 N2kFrameOutDbgStart("Frame failed "); N2kFrameOutDbgln(id);
-
1326 return false;
-
1327 }
-
1328 len=N2kMin<unsigned char>(len,8);
-
1329 Frame->id=id;
-
1330 Frame->len=len;
-
1331 Frame->wait_sent=wait_sent;
-
1332 for (int i=0; i<len; i++) Frame->buf[i]=buf[i];
-
1333 N2kFrameOutDbgStart("Frame buffered "); N2kFrameOutDbgln(id);
-
1334 }
-
1335
-
1336 return true;
-
1337}
-
1338
-
1339#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
1340//*****************************************************************************
-
1341void tNMEA2000::SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset, int iDev) {
-
1342 if ( interval==0xffffffff && offset==0xffff ) return; // Do not change
-
1343 InitDevices();
-
1344 for (int i=(iDev<0?0:iDev); i<DeviceCount && (iDev<0?true:i<iDev+1); i++) {
-
1345 if ( interval==0xffffffff ) {
-
1346 interval=Devices[i].HeartbeatScheduler.GetPeriod();
-
1347 } else if (interval==0xfffffffe) { // restore default
-
1348 interval=DefaultHeartbeatInterval;
-
1349 }
-
1350 if ( offset==0xffffffff ) offset=Devices[i].HeartbeatScheduler.GetOffset();
-
1351
-
1352 if ( interval==0 ) { // This is for test purposes
- -
1354 } else {
-
1355 if ( interval>MaxHeartbeatInterval ) interval=MaxHeartbeatInterval;
-
1356 if ( interval<1000 ) interval=1000;
-
1357
-
1358 bool changed=( Devices[i].HeartbeatScheduler.GetPeriod()!=interval || Devices[i].HeartbeatScheduler.GetOffset()!=offset );
-
1359 if ( changed ) {
-
1360 Devices[i].HeartbeatScheduler.SetPeriodAndOffset(interval,offset);
- -
1362 }
-
1363 }
-
1364 }
-
1365}
+
1315}
+
1316
+
1317//*****************************************************************************
+ +
1319{ uint16_t temp;
+
1320
+
1321 if ( CANSendFrameBuf==0 ) return true; // This can be in case, where inherited class defines own buffering.
+
1322
+ + +
1325 if ( CANSendFrame(CANSendFrameBuf[temp].id, CANSendFrameBuf[temp].len, CANSendFrameBuf[temp].buf, CANSendFrameBuf[temp].wait_sent) ) {
+ +
1327 N2kFrameOutDbgStart("Frame unbuffered "); N2kFrameOutDbgln(CANSendFrameBuf[temp].id);
+
1328 } else return false;
+
1329 }
+
1330
+
1331 return true;
+
1332}
+
1333
+
1334//*****************************************************************************
+
1335bool tNMEA2000::SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent) {
+
1336
+
1337 if ( !SendFrames() || !CANSendFrame(id,len,buf,wait_sent) ) { // If we can not sent frame immediately, add it to buffer
+ +
1339 if ( Frame==0 ) {
+
1340 N2kFrameOutDbgStart("Frame failed "); N2kFrameOutDbgln(id);
+
1341 return false;
+
1342 }
+
1343 len=N2kMin<unsigned char>(len,8);
+
1344 Frame->id=id;
+
1345 Frame->len=len;
+
1346 Frame->wait_sent=wait_sent;
+
1347 for (int i=0; i<len; i++) Frame->buf[i]=buf[i];
+
1348 N2kFrameOutDbgStart("Frame buffered "); N2kFrameOutDbgln(id);
+
1349 }
+
1350
+
1351 return true;
+
1352}
+
1353
+
1354#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
1355//*****************************************************************************
+
1356void tNMEA2000::SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset, int iDev) {
+
1357 if ( interval==0xffffffff && offset==0xffff ) return; // Do not change
+
1358 InitDevices();
+
1359 for (int i=(iDev<0?0:iDev); i<DeviceCount && (iDev<0?true:i<iDev+1); i++) {
+
1360 if ( interval==0xffffffff ) {
+
1361 interval=Devices[i].HeartbeatScheduler.GetPeriod();
+
1362 } else if (interval==0xfffffffe) { // restore default
+
1363 interval=DefaultHeartbeatInterval;
+
1364 }
+
1365 if ( offset==0xffffffff ) offset=Devices[i].HeartbeatScheduler.GetOffset();
1366
-
1367//*****************************************************************************
-
1368void tNMEA2000::SetHeartbeatInterval(unsigned long interval, bool /*SetAsDefault*/, int iDev) {
-
1369 SetHeartbeatIntervalAndOffset(interval,0xffffffff,iDev);
-
1370}
-
1371
-
1372//*****************************************************************************
- -
1374 if ( !IsValidDevice(iDev) ) return;
-
1375 tN2kMsg N2kMsg;
-
1376 SetHeartbeat(N2kMsg,Devices[iDev].HeartbeatScheduler.GetPeriod(),0xff);
-
1377 SendMsg(N2kMsg,iDev);
-
1378}
-
1379
-
1380//*****************************************************************************
- -
1382 if ( !IsActiveNode() ) return;
-
1383
-
1384 for (int iDev=0; iDev<DeviceCount; iDev++) {
-
1385 if ( !IsAddressClaimStarted(iDev) ) {
-
1386 if ( force || Devices[iDev].HeartbeatScheduler.IsTime() ) {
- -
1388 tN2kMsg N2kMsg;
-
1389 SetHeartbeat(N2kMsg,Devices[iDev].HeartbeatScheduler.GetPeriod(),force?0xff:Devices[iDev].HeartbeatSequence);
-
1390 SendMsg(N2kMsg,iDev);
-
1391 if ( !force ) {
-
1392 Devices[iDev].HeartbeatSequence++;
-
1393 if ( Devices[iDev].HeartbeatSequence>252 ) Devices[iDev].HeartbeatSequence=0;
-
1394 }
-
1395 }
-
1396 }
-
1397 }
-
1398}
-
1399#endif
-
1400
-
1401//*****************************************************************************
- -
1403 if (CANSendFrameBuf==0) return 0;
-
1404
-
1405 uint16_t temp = (CANSendFrameBufferWrite + 1) % MaxCANSendFrames;
-
1406
-
1407 if (temp != CANSendFrameBufferRead) {
- - -
1410 } else {
-
1411 return 0;
+
1367 if ( interval==0 ) { // This is for test purposes
+ +
1369 } else {
+
1370 if ( interval>MaxHeartbeatInterval ) interval=MaxHeartbeatInterval;
+
1371 if ( interval<1000 ) interval=1000;
+
1372
+
1373 bool changed=( Devices[i].HeartbeatScheduler.GetPeriod()!=interval || Devices[i].HeartbeatScheduler.GetOffset()!=offset );
+
1374 if ( changed ) {
+
1375 Devices[i].HeartbeatScheduler.SetPeriodAndOffset(interval,offset);
+ +
1377 }
+
1378 }
+
1379 }
+
1380}
+
1381
+
1382//*****************************************************************************
+
1383void tNMEA2000::SetHeartbeatInterval(unsigned long interval, bool /*SetAsDefault*/, int iDev) {
+
1384 SetHeartbeatIntervalAndOffset(interval,0xffffffff,iDev);
+
1385}
+
1386
+
1387//*****************************************************************************
+ +
1389 if ( !IsValidDevice(iDev) ) return;
+
1390 tN2kMsg N2kMsg;
+
1391 SetHeartbeat(N2kMsg,Devices[iDev].HeartbeatScheduler.GetPeriod(),0xff);
+
1392 SendMsg(N2kMsg,iDev);
+
1393}
+
1394
+
1395//*****************************************************************************
+ +
1397 if ( !IsActiveNode() ) return;
+
1398
+
1399 for (int iDev=0; iDev<DeviceCount; iDev++) {
+
1400 if ( !IsAddressClaimStarted(iDev) ) {
+
1401 if ( force || Devices[iDev].HeartbeatScheduler.IsTime() ) {
+ +
1403 tN2kMsg N2kMsg;
+
1404 SetHeartbeat(N2kMsg,Devices[iDev].HeartbeatScheduler.GetPeriod(),force?0xff:Devices[iDev].HeartbeatSequence);
+
1405 SendMsg(N2kMsg,iDev);
+
1406 if ( !force ) {
+
1407 Devices[iDev].HeartbeatSequence++;
+
1408 if ( Devices[iDev].HeartbeatSequence>252 ) Devices[iDev].HeartbeatSequence=0;
+
1409 }
+
1410 }
+
1411 }
1412 }
1413}
-
1414
-
1415//*****************************************************************************
- -
1417 for (int i=0; i<DeviceCount; i++ ) {
-
1418 if ( Devices[i].HasPendingInformation ) {
-
1419 #if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
- -
1421 #endif
-
1422 if ( Devices[i].QueryPendingIsoAddressClaim() ) {
-
1423 SendIsoAddressClaim(0xff,i);
- -
1425 }
-
1426 if ( Devices[i].QueryPendingProductInformation() ) SendProductInformation(i);
-
1427 if ( Devices[i].QueryPendingConfigurationInformation() ) SendConfigurationInformation(i);
-
1428 }
-
1429 }
-
1430}
-
1431
-
1432//*****************************************************************************
-
1433// Sends message to N2k bus
-
1434//
-
1435bool tNMEA2000::SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex) {
-
1436 if ( dbMode==dm_None ) {
-
1437 if ( OpenState!=os_Open ) {
-
1438 if ( !(Open() && OpenState==os_Open) ) return false; // Can not do much
-
1439 }
-
1440 }
-
1441
-
1442 bool result=false;
-
1443
-
1444 if ( DeviceIndex>=DeviceCount) return result;
-
1445 N2kMsg.CheckDestination();
-
1446 if (DeviceIndex>=0) { N2kMsg.ForceSource(Devices[DeviceIndex].N2kSource); } else { DeviceIndex=0; }
-
1447
-
1448 if ( N2kMsg.Source>N2kMaxCanBusAddress && N2kMsg.PGN!=N2kPGNIsoAddressClaim ) return false; // CAN bus address range is 0-251. Anyway allow ISO address claim mgs.
-
1449
-
1450 unsigned long canId=N2ktoCanID(N2kMsg.Priority,N2kMsg.PGN,N2kMsg.Source, N2kMsg.Destination);
-
1451
-
1452 if ( canId==0 ) { // PGN validity - N2ktoCanID returns 0 for invalid PGN
-
1453// if (ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) { ForwardStream->print(F("Invalid PGN ")); ForwardStream->println(N2kMsg.PGN); }
-
1454 return false;
+
1414#endif
+
1415
+
1416//*****************************************************************************
+ +
1418 if (CANSendFrameBuf==0) return 0;
+
1419
+
1420 uint16_t temp = (CANSendFrameBufferWrite + 1) % MaxCANSendFrames;
+
1421
+
1422 if (temp != CANSendFrameBufferRead) {
+ + +
1425 } else {
+
1426 return 0;
+
1427 }
+
1428}
+
1429
+
1430//*****************************************************************************
+ +
1432 for (int i=0; i<DeviceCount; i++ ) {
+
1433 if ( Devices[i].HasPendingInformation ) {
+
1434 #if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+ +
1436 #endif
+
1437 if ( Devices[i].QueryPendingIsoAddressClaim() ) {
+
1438 SendIsoAddressClaim(0xff,i);
+ +
1440 }
+
1441 if ( Devices[i].QueryPendingProductInformation() ) SendProductInformation(i);
+
1442 if ( Devices[i].QueryPendingConfigurationInformation() ) SendConfigurationInformation(i);
+
1443 }
+
1444 }
+
1445}
+
1446
+
1447//*****************************************************************************
+
1448// Sends message to N2k bus
+
1449//
+
1450bool tNMEA2000::SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex) {
+
1451 if ( dbMode==dm_None ) {
+
1452 if ( OpenState!=os_Open ) {
+
1453 if ( !(Open() && OpenState==os_Open) ) return false; // Can not do much
+
1454 }
1455 }
1456
-
1457 if (N2kMode==N2km_ListenOnly) return false; // Do not send anything on listen only mode
+
1457 bool result=false;
1458
-
1459 if (N2kMsg.PGN==0) return false;
-
1460
-
1461 switch (dbMode) {
-
1462 case dm_None:
-
1463 N2kMsgDbgStart("Send PGN:"); N2kMsgDbgln(N2kMsg.PGN);
-
1464 N2kMsgDbgStart(" - can ID:"); N2kMsgDbgln(canId);
-
1465 if ( IsAddressClaimStarted(DeviceIndex) && N2kMsg.PGN!=N2kPGNIsoAddressClaim ) return false;
+
1459 if ( DeviceIndex>=DeviceCount) return result;
+
1460 N2kMsg.CheckDestination();
+
1461 if (DeviceIndex>=0) { N2kMsg.ForceSource(Devices[DeviceIndex].N2kSource); } else { DeviceIndex=0; }
+
1462
+
1463 if ( N2kMsg.Source>N2kMaxCanBusAddress && N2kMsg.PGN!=N2kPGNIsoAddressClaim ) return false; // CAN bus address range is 0-251. Anyway allow ISO address claim mgs.
+
1464
+
1465 unsigned long canId=N2ktoCanID(N2kMsg.Priority,N2kMsg.PGN,N2kMsg.Source, N2kMsg.Destination);
1466
-
1467 if (N2kMsg.DataLen<=8 && !IsFastPacket(N2kMsg) ) { // We can send single frame
-
1468 DbgPrintBuf(N2kMsg.DataLen, N2kMsg.Data,true);
-
1469 result=SendFrame(canId, N2kMsg.DataLen, N2kMsg.Data,false);
-
1470 if (!result && ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) { ForwardStream->print(F("PGN ")); ForwardStream->print(N2kMsg.PGN); ForwardStream->println(F(" send failed")); }
-
1471 N2kPrintFreeMemory("SendMsg, single frame");
-
1472 } else { // Send it as fast packet in multiple frames
-
1473#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1474 if ( N2kMsg.IsTPMessage() ) {
-
1475 result=StartSendTPMessage(N2kMsg,DeviceIndex);
-
1476 } else
-
1477#endif
-
1478 {
-
1479 unsigned char temp[8]; // {0,0,0,0,0,0,0,0};
-
1480 int cur=0;
-
1481 int frames=(N2kMsg.DataLen>6 ? (N2kMsg.DataLen-6-1)/7+1+1 : 1 );
-
1482 int Order=GetSequenceCounter(N2kMsg.PGN,DeviceIndex)<<5;
-
1483 result=true;
-
1484 for (int i = 0; i<frames && result; i++) {
-
1485 temp[0] = i|Order; //frame counter
-
1486 if (i==0) {
-
1487 temp[1] = N2kMsg.DataLen; //total bytes in fast packet
-
1488 //send the first 6 bytes
-
1489 for (int j = 2; j<8; j++) {
-
1490 temp[j]=N2kMsg.Data[cur];
-
1491 cur++;
-
1492 }
-
1493 N2kPrintFreeMemory("SendMsg, fastpacket");
-
1494 } else {
-
1495 int j=1;
-
1496 //send the next 7 data bytes
-
1497 for (; j<8 && cur<N2kMsg.DataLen; j++) {
-
1498 temp[j]=N2kMsg.Data[cur];
-
1499 cur++;
-
1500 }
-
1501 for (; j<8; j++) {
-
1502 temp[j]=0xff;
-
1503 }
-
1504 }
-
1505
-
1506 DbgPrintBuf(8,temp,true);
-
1507 result=SendFrame(canId, 8, temp, true);
-
1508 if (!result && ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) {
-
1509 ForwardStream->print(F("PGN ")); ForwardStream->print(N2kMsg.PGN);
-
1510 ForwardStream->print(F(", frame:")); ForwardStream->print(i); ForwardStream->print(F("/")); ForwardStream->print(frames);
-
1511 ForwardStream->println(F(" send failed"));
-
1512 }
-
1513 }
-
1514 }
-
1515 };
-
1516 if ( ForwardOwnMessages() ) ForwardMessage(N2kMsg);
-
1517 break;
-
1518 case dm_ClearText:
-
1519 result=true;
-
1520 N2kMsg.Print(ForwardStream);
-
1521 break;
-
1522 case dm_Actisense:
-
1523 result=true;
- -
1525 break;
-
1526 }
-
1527
-
1528 return result;
-
1529}
-
1530
-
1531//*****************************************************************************
- -
1533 dbMode=_dbMode;
-
1534}
-
1535
-
1536//*****************************************************************************
-
1537bool tNMEA2000::IsFastPacketPGN(unsigned long PGN) {
- - -
1540 IsProprietaryFastPacketMessage(PGN) ) return true;
-
1541
-
1542 int i;
-
1543
-
1544 for (unsigned char igroup=0; (igroup<N2kMessageGroups); igroup++) {
-
1545 if (FastPacketMessages[igroup]!=0) {
-
1546 for (i=0; pgm_read_dword(&FastPacketMessages[igroup][i])!=PGN && pgm_read_dword(&FastPacketMessages[igroup][i])!=0; i++);
-
1547 if (pgm_read_dword(&FastPacketMessages[igroup][i])==PGN) {
-
1548 return true;
-
1549 }
-
1550 }
-
1551 }
-
1552
-
1553 return false;
-
1554}
-
1555
-
1556//*****************************************************************************
- -
1558 if (N2kMsg.Priority>=0x80) return false; // Special handling for force to send message as single frame.
-
1559
-
1560 return IsFastPacketPGN(N2kMsg.PGN);
-
1561}
-
1562
-
1563//*****************************************************************************
-
1564bool tNMEA2000::CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket) {
-
1565 int i;
-
1566// return true;
-
1567 FastPacket=false;
-
1568 SystemMessage=false;
-
1569 if ( PGN==0 ) { return false; } // Unknown
+
1467 if ( canId==0 ) { // PGN validity - N2ktoCanID returns 0 for invalid PGN
+
1468// if (ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) { ForwardStream->print(F("Invalid PGN ")); ForwardStream->println(N2kMsg.PGN); }
+
1469 return false;
+
1470 }
+
1471
+
1472 if (N2kMode==N2km_ListenOnly) return false; // Do not send anything on listen only mode
+
1473
+
1474 if (N2kMsg.PGN==0) return false;
+
1475
+
1476 switch (dbMode) {
+
1477 case dm_None:
+
1478 N2kMsgDbgStart("Send PGN:"); N2kMsgDbgln(N2kMsg.PGN);
+
1479 N2kMsgDbgStart(" - can ID:"); N2kMsgDbgln(canId);
+
1480 if ( IsAddressClaimStarted(DeviceIndex) && N2kMsg.PGN!=N2kPGNIsoAddressClaim ) return false;
+
1481
+
1482 if (N2kMsg.DataLen<=8 && !IsFastPacket(N2kMsg) ) { // We can send single frame
+
1483 DbgPrintBuf(N2kMsg.DataLen, N2kMsg.Data,true);
+
1484 result=SendFrame(canId, N2kMsg.DataLen, N2kMsg.Data,false);
+
1485 if (!result && ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) { ForwardStream->print(F("PGN ")); ForwardStream->print(N2kMsg.PGN); ForwardStream->println(F(" send failed")); }
+
1486 N2kPrintFreeMemory("SendMsg, single frame");
+
1487 } else { // Send it as fast packet in multiple frames
+
1488#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1489 if ( N2kMsg.IsTPMessage() ) {
+
1490 result=StartSendTPMessage(N2kMsg,DeviceIndex);
+
1491 } else
+
1492#endif
+
1493 {
+
1494 unsigned char temp[8]; // {0,0,0,0,0,0,0,0};
+
1495 int cur=0;
+
1496 int frames=(N2kMsg.DataLen>6 ? (N2kMsg.DataLen-6-1)/7+1+1 : 1 );
+
1497 int Order=GetSequenceCounter(N2kMsg.PGN,DeviceIndex)<<5;
+
1498 result=true;
+
1499 for (int i = 0; i<frames && result; i++) {
+
1500 temp[0] = i|Order; //frame counter
+
1501 if (i==0) {
+
1502 temp[1] = N2kMsg.DataLen; //total bytes in fast packet
+
1503 //send the first 6 bytes
+
1504 for (int j = 2; j<8; j++) {
+
1505 temp[j]=N2kMsg.Data[cur];
+
1506 cur++;
+
1507 }
+
1508 N2kPrintFreeMemory("SendMsg, fastpacket");
+
1509 } else {
+
1510 int j=1;
+
1511 //send the next 7 data bytes
+
1512 for (; j<8 && cur<N2kMsg.DataLen; j++) {
+
1513 temp[j]=N2kMsg.Data[cur];
+
1514 cur++;
+
1515 }
+
1516 for (; j<8; j++) {
+
1517 temp[j]=0xff;
+
1518 }
+
1519 }
+
1520
+
1521 DbgPrintBuf(8,temp,true);
+
1522 result=SendFrame(canId, 8, temp, true);
+
1523 if (!result && ForwardStream!=0 && ForwardType==tNMEA2000::fwdt_Text) {
+
1524 ForwardStream->print(F("PGN ")); ForwardStream->print(N2kMsg.PGN);
+
1525 ForwardStream->print(F(", frame:")); ForwardStream->print(i); ForwardStream->print(F("/")); ForwardStream->print(frames);
+
1526 ForwardStream->println(F(" send failed"));
+
1527 }
+
1528 }
+
1529 }
+
1530 };
+
1531 if ( ForwardOwnMessages() ) ForwardMessage(N2kMsg);
+
1532 break;
+
1533 case dm_ClearText:
+
1534 result=true;
+
1535 N2kMsg.Print(ForwardStream);
+
1536 break;
+
1537 case dm_Actisense:
+
1538 result=true;
+ +
1540 break;
+
1541 }
+
1542
+
1543 return result;
+
1544}
+
1545
+
1546//*****************************************************************************
+ +
1548 dbMode=_dbMode;
+
1549}
+
1550
+
1551//*****************************************************************************
+
1552bool tNMEA2000::IsFastPacketPGN(unsigned long PGN) {
+ + +
1555 IsProprietaryFastPacketMessage(PGN) ) return true;
+
1556
+
1557 int i;
+
1558
+
1559 for (unsigned char igroup=0; (igroup<N2kMessageGroups); igroup++) {
+
1560 if (FastPacketMessages[igroup]!=0) {
+
1561 for (i=0; pgm_read_dword(&FastPacketMessages[igroup][i])!=PGN && pgm_read_dword(&FastPacketMessages[igroup][i])!=0; i++);
+
1562 if (pgm_read_dword(&FastPacketMessages[igroup][i])==PGN) {
+
1563 return true;
+
1564 }
+
1565 }
+
1566 }
+
1567
+
1568 return false;
+
1569}
1570
-
1571 // Check other messages
-
1572 if ( SingleFrameMessages[0]==0 && IsDefaultSingleFrameMessage(PGN) ) return true;
-
1573 if ( (FastPacket=IsMandatoryFastPacketMessage(PGN)) ) return true;
-
1574 if ( FastPacketMessages[0]==0 && (FastPacket=IsDefaultFastPacketMessage(PGN))==true ) return true;
-
1575
-
1576 // Check system messages
-
1577 if ( IsSingleFrameSystemMessage(PGN) || (FastPacket=IsFastPacketSystemMessage(PGN))==true ) {
-
1578 SystemMessage=true;
-
1579 return true;
-
1580 }
-
1581
-
1582 // Check user defined messages
-
1583 for (unsigned char igroup=0; (igroup<N2kMessageGroups); igroup++) {
-
1584 if (SingleFrameMessages[igroup]!=0) {
-
1585 for (i=0; pgm_read_dword(&SingleFrameMessages[igroup][i])!=PGN && pgm_read_dword(&SingleFrameMessages[igroup][i])!=0; i++);
-
1586 if (pgm_read_dword(&SingleFrameMessages[igroup][i])==PGN) return true;
-
1587 }
-
1588
-
1589 if (FastPacketMessages[igroup]!=0) {
-
1590 for (i=0; pgm_read_dword(&FastPacketMessages[igroup][i])!=PGN && pgm_read_dword(&FastPacketMessages[igroup][i])!=0; i++);
-
1591 if (pgm_read_dword(&FastPacketMessages[igroup][i])==PGN) {
-
1592 FastPacket=true;
-
1593 return true;
-
1594 }
-
1595 }
-
1596 }
-
1597
-
1598 FastPacket=IsProprietaryFastPacketMessage(PGN);
-
1599
-
1600 return false;
-
1601}
-
1602
-
1603/************************************************************************/
-
1611void CopyBufToCANMsg(tN2kCANMsg &CANMsg, unsigned char start, unsigned char len, unsigned char *buf) {
-
1612 for (int j=start; (j<len) & (CANMsg.CopiedLen<CANMsg.N2kMsg.MaxDataLen); j++, CANMsg.CopiedLen++) {
-
1613 CANMsg.N2kMsg.Data[CANMsg.CopiedLen]=buf[j];
-
1614 }
-
1615}
-
1616
-
1617//*****************************************************************************
-
1618#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1619void tNMEA2000::FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex) {
-
1620#else
-
1621void tNMEA2000::FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, uint8_t &MsgIndex) {
-
1622#endif
-
1623 unsigned long OldestMsgTime,CurTime;
-
1624 int OldestIndex;
-
1625
-
1626 for (MsgIndex=0, CurTime=OldestMsgTime=N2kMillis(), OldestIndex=MaxN2kCANMsgs;
-
1627 MsgIndex<MaxN2kCANMsgs &&
-
1628 !( N2kCANMsgBuf[MsgIndex].FreeMsg ||
-
1629 ( N2kCANMsgBuf[MsgIndex].N2kMsg.PGN==PGN
-
1630 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
-
1631 && N2kCANMsgBuf[MsgIndex].N2kMsg.Destination==Destination
-
1632#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1633 && N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()==TPMsg
-
1634#endif
-
1635 )
-
1636 );
-
1637 MsgIndex++) { // Find free message place
-
1638 if ( N2kIsTimeBefore(N2kCANMsgBuf[MsgIndex].N2kMsg.MsgTime,OldestMsgTime) ) {
-
1639 OldestIndex=MsgIndex;
-
1640 OldestMsgTime=N2kCANMsgBuf[MsgIndex].N2kMsg.MsgTime;
-
1641 }
-
1642 }
-
1643 if ( MsgIndex==MaxN2kCANMsgs && N2kHasElapsed(OldestMsgTime,Max_N2kMsgBuf_Time,CurTime) ) {
-
1644 MsgIndex=OldestIndex; // Use the old one, which has timed out
-
1645 N2kCANMsgBuf[MsgIndex].FreeMessage();
-
1646 }
-
1647
-
1648}
-
1649
-
1650#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1651
-
1652//*****************************************************************************
- -
1654 if ( !IsActiveNode() ) return false;
-
1655
-
1656 tN2kMsg N2kMsg;
-
1657
-
1658 N2kMsg.Source=Devices[iDev].N2kSource;
-
1659 N2kMsg.Destination=0xff;
-
1660 N2kMsg.SetPGN(TP_CM);
-
1661 N2kMsg.Priority=6;
-
1662 N2kMsg.AddByte(TP_CM_BAM);
-
1663 int nBytes=Devices[iDev].PendingTPMsg.DataLen;
-
1664 N2kMsg.Add2ByteUInt(nBytes);
-
1665 N2kMsg.AddByte(nBytes/7+(nBytes%7!=0?1:0));
-
1666 N2kMsg.AddByte(0xff); // Reserved;
-
1667 N2kMsg.Add3ByteInt(Devices[iDev].PendingTPMsg.PGN);
-
1668 return SendMsg(N2kMsg,iDev);
-
1669}
+
1571//*****************************************************************************
+ +
1573 if (N2kMsg.Priority>=0x80) return false; // Special handling for force to send message as single frame.
+
1574
+
1575 return IsFastPacketPGN(N2kMsg.PGN);
+
1576}
+
1577
+
1578//*****************************************************************************
+
1579bool tNMEA2000::CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket) {
+
1580 int i;
+
1581// return true;
+
1582 FastPacket=false;
+
1583 SystemMessage=false;
+
1584 if ( PGN==0 ) { return false; } // Unknown
+
1585
+
1586 // Check other messages
+
1587 if ( SingleFrameMessages[0]==0 && IsDefaultSingleFrameMessage(PGN) ) return true;
+
1588 if ( (FastPacket=IsMandatoryFastPacketMessage(PGN)) ) return true;
+
1589 if ( FastPacketMessages[0]==0 && (FastPacket=IsDefaultFastPacketMessage(PGN))==true ) return true;
+
1590
+
1591 // Check system messages
+
1592 if ( IsSingleFrameSystemMessage(PGN) || (FastPacket=IsFastPacketSystemMessage(PGN))==true ) {
+
1593 SystemMessage=true;
+
1594 return true;
+
1595 }
+
1596
+
1597 // Check user defined messages
+
1598 for (unsigned char igroup=0; (igroup<N2kMessageGroups); igroup++) {
+
1599 if (SingleFrameMessages[igroup]!=0) {
+
1600 for (i=0; pgm_read_dword(&SingleFrameMessages[igroup][i])!=PGN && pgm_read_dword(&SingleFrameMessages[igroup][i])!=0; i++);
+
1601 if (pgm_read_dword(&SingleFrameMessages[igroup][i])==PGN) return true;
+
1602 }
+
1603
+
1604 if (FastPacketMessages[igroup]!=0) {
+
1605 for (i=0; pgm_read_dword(&FastPacketMessages[igroup][i])!=PGN && pgm_read_dword(&FastPacketMessages[igroup][i])!=0; i++);
+
1606 if (pgm_read_dword(&FastPacketMessages[igroup][i])==PGN) {
+
1607 FastPacket=true;
+
1608 return true;
+
1609 }
+
1610 }
+
1611 }
+
1612
+
1613 FastPacket=IsProprietaryFastPacketMessage(PGN);
+
1614
+
1615 return false;
+
1616}
+
1617
+
1618/************************************************************************/
+
1626void CopyBufToCANMsg(tN2kCANMsg &CANMsg, unsigned char start, unsigned char len, unsigned char *buf) {
+
1627 for (int j=start; (j<len) & (CANMsg.CopiedLen<CANMsg.N2kMsg.MaxDataLen); j++, CANMsg.CopiedLen++) {
+
1628 CANMsg.N2kMsg.Data[CANMsg.CopiedLen]=buf[j];
+
1629 }
+
1630}
+
1631
+
1632//*****************************************************************************
+
1633#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1634void tNMEA2000::FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex) {
+
1635#else
+
1636void tNMEA2000::FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, uint8_t &MsgIndex) {
+
1637#endif
+
1638 unsigned long OldestMsgTime,CurTime;
+
1639 int OldestIndex;
+
1640
+
1641 for (MsgIndex=0, CurTime=OldestMsgTime=N2kMillis(), OldestIndex=MaxN2kCANMsgs;
+
1642 MsgIndex<MaxN2kCANMsgs &&
+
1643 !( N2kCANMsgBuf[MsgIndex].FreeMsg ||
+
1644 ( N2kCANMsgBuf[MsgIndex].N2kMsg.PGN==PGN
+
1645 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
+
1646 && N2kCANMsgBuf[MsgIndex].N2kMsg.Destination==Destination
+
1647#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1648 && N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()==TPMsg
+
1649#endif
+
1650 )
+
1651 );
+
1652 MsgIndex++) { // Find free message place
+
1653 if ( N2kIsTimeBefore(N2kCANMsgBuf[MsgIndex].N2kMsg.MsgTime,OldestMsgTime) ) {
+
1654 OldestIndex=MsgIndex;
+
1655 OldestMsgTime=N2kCANMsgBuf[MsgIndex].N2kMsg.MsgTime;
+
1656 }
+
1657 }
+
1658 if ( MsgIndex==MaxN2kCANMsgs && N2kHasElapsed(OldestMsgTime,Max_N2kMsgBuf_Time,CurTime) ) {
+
1659 MsgIndex=OldestIndex; // Use the old one, which has timed out
+
1660 N2kCANMsgBuf[MsgIndex].FreeMessage();
+
1661 }
+
1662
+
1663}
+
1664
+
1665#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1666
+
1667//*****************************************************************************
+ +
1669 if ( !IsActiveNode() ) return false;
1670
-
1671//*****************************************************************************
- -
1673 if ( !IsActiveNode() ) return false;
-
1674
-
1675 tN2kMsg N2kMsg;
-
1676 N2kMsg.Source=Devices[iDev].N2kSource;
- -
1678 N2kMsg.SetPGN(TP_CM);
-
1679 N2kMsg.Priority=6;
-
1680 N2kMsg.AddByte(TP_CM_RTS);
-
1681 int nBytes=Devices[iDev].PendingTPMsg.DataLen;
-
1682 N2kMsg.Add2ByteUInt(nBytes);
-
1683 N2kMsg.AddByte(nBytes/7+(nBytes%7!=0?1:0));
-
1684 N2kMsg.AddByte(0xff); // Reserved;
-
1685 N2kMsg.Add3ByteInt(Devices[iDev].PendingTPMsg.PGN);
-
1686 return SendMsg(N2kMsg,iDev);
-
1687}
-
1688
-
1689unsigned char TPCtsPackets(unsigned char nPackets) { return tNMEA2000::N2kMax<unsigned char>(1,tNMEA2000::N2kMin<unsigned char>(nPackets,TP_MAX_FRAMES)); }
-
1690
-
1691//*****************************************************************************
-
1692void tNMEA2000::SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber) {
-
1693 tN2kMsg N2kMsg;
-
1694
-
1695 if ( !IsActiveNode() ) return;
-
1696 N2kMsg.Source=Devices[iDev].N2kSource;
-
1697 N2kMsg.Destination=Destination;
-
1698 N2kMsg.SetPGN(TP_CM);
-
1699 N2kMsg.Priority=6;
-
1700 N2kMsg.AddByte(TP_CM_CTS);
-
1701 N2kMsg.AddByte(TPCtsPackets(nPackets));
-
1702 N2kMsg.AddByte(NextPacketNumber);
-
1703 N2kMsg.AddByte(0xff); // Reserved;
-
1704 N2kMsg.AddByte(0xff); // Reserved;
-
1705 N2kMsg.Add3ByteInt(PGN);
-
1706 SendMsg(N2kMsg,iDev);
-
1707}
-
1708
-
1709//*****************************************************************************
-
1710void tNMEA2000::SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets) {
-
1711 tN2kMsg N2kMsg;
-
1712
-
1713 if ( !IsActiveNode() ) return;
-
1714 N2kMsg.Source=Devices[iDev].N2kSource;
-
1715 N2kMsg.Destination=Destination;
-
1716 N2kMsg.SetPGN(TP_CM);
-
1717 N2kMsg.Priority=6;
-
1718 N2kMsg.AddByte(TP_CM_ACK);
-
1719 N2kMsg.Add2ByteUInt(nBytes);
-
1720 N2kMsg.AddByte(nPackets);
-
1721 N2kMsg.AddByte(0xff); // Reserved;
-
1722 N2kMsg.Add3ByteInt(PGN);
-
1723 SendMsg(N2kMsg,iDev);
-
1724}
-
1725
-
1726//*****************************************************************************
-
1727void tNMEA2000::SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode) {
-
1728 tN2kMsg N2kMsg;
-
1729
-
1730 if ( !IsActiveNode() ) return;
-
1731 N2kMsg.Source=Devices[iDev].N2kSource;
-
1732 N2kMsg.Destination=Destination;
-
1733 N2kMsg.SetPGN(TP_CM);
-
1734 N2kMsg.Priority=6;
-
1735 N2kMsg.AddByte(TP_CM_Abort);
-
1736 N2kMsg.AddByte(AbortCode);
-
1737 N2kMsg.AddByte(0xff); // Reserved;
-
1738 N2kMsg.AddByte(0xff); // Reserved;
-
1739 N2kMsg.AddByte(0xff); // Reserved;
-
1740 N2kMsg.Add3ByteInt(PGN);
-
1741 SendMsg(N2kMsg,iDev);
-
1742}
-
1743
-
1744//*****************************************************************************
-
1745// Caller should take care of not calling this after all has been done.
-
1746// Use HasAllTPDTSent for checking.
-
1747bool tNMEA2000::SendTPDT(int iDev) {
-
1748 tN2kMsg N2kMsg;
-
1749 N2kMsg.Source=Devices[iDev].N2kSource;
- -
1751 N2kMsg.SetPGN(TP_DT);
-
1752 N2kMsg.Priority=6;
-
1753 N2kMsg.AddByte(Devices[iDev].NextDTSequence+1);
-
1754 int iByteToSend=Devices[iDev].NextDTSequence*7;
-
1755 for ( int i=0; i<7; i++,iByteToSend++ ) {
-
1756 if ( iByteToSend<Devices[iDev].PendingTPMsg.DataLen ) {
-
1757 N2kMsg.AddByte(Devices[iDev].PendingTPMsg.Data[iByteToSend]);
-
1758 } else N2kMsg.AddByte(0xff);
-
1759 }
-
1760 Devices[iDev].NextDTSequence++;
-
1761
-
1762 return SendMsg(N2kMsg,iDev);
-
1763}
-
1764
-
1765//*****************************************************************************
- -
1767 return ( Devices[iDev].NextDTSequence*7>=Devices[iDev].PendingTPMsg.DataLen );
-
1768}
-
1769
-
1770//*****************************************************************************
-
1771bool tNMEA2000::TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination,
-
1772 unsigned char len, unsigned char *buf,
-
1773 uint8_t &MsgIndex) {
-
1774 MsgIndex=MaxN2kCANMsgs;
-
1775 int iDev=FindSourceDeviceIndex(Destination);
+
1671 tN2kMsg N2kMsg;
+
1672
+
1673 N2kMsg.Source=Devices[iDev].N2kSource;
+
1674 N2kMsg.Destination=0xff;
+
1675 N2kMsg.SetPGN(TP_CM);
+
1676 N2kMsg.Priority=6;
+
1677 N2kMsg.AddByte(TP_CM_BAM);
+
1678 int nBytes=Devices[iDev].PendingTPMsg.DataLen;
+
1679 N2kMsg.Add2ByteUInt(nBytes);
+
1680 N2kMsg.AddByte(nBytes/7+(nBytes%7!=0?1:0));
+
1681 N2kMsg.AddByte(0xff); // Reserved;
+
1682 N2kMsg.Add3ByteInt(Devices[iDev].PendingTPMsg.PGN);
+
1683 return SendMsg(N2kMsg,iDev);
+
1684}
+
1685
+
1686//*****************************************************************************
+ +
1688 if ( !IsActiveNode() ) return false;
+
1689
+
1690 tN2kMsg N2kMsg;
+
1691 N2kMsg.Source=Devices[iDev].N2kSource;
+ +
1693 N2kMsg.SetPGN(TP_CM);
+
1694 N2kMsg.Priority=6;
+
1695 N2kMsg.AddByte(TP_CM_RTS);
+
1696 int nBytes=Devices[iDev].PendingTPMsg.DataLen;
+
1697 N2kMsg.Add2ByteUInt(nBytes);
+
1698 N2kMsg.AddByte(nBytes/7+(nBytes%7!=0?1:0));
+
1699 N2kMsg.AddByte(0xff); // Reserved;
+
1700 N2kMsg.Add3ByteInt(Devices[iDev].PendingTPMsg.PGN);
+
1701 return SendMsg(N2kMsg,iDev);
+
1702}
+
1703
+
1704unsigned char TPCtsPackets(unsigned char nPackets) { return tNMEA2000::N2kMax<unsigned char>(1,tNMEA2000::N2kMin<unsigned char>(nPackets,TP_MAX_FRAMES)); }
+
1705
+
1706//*****************************************************************************
+
1707void tNMEA2000::SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber) {
+
1708 tN2kMsg N2kMsg;
+
1709
+
1710 if ( !IsActiveNode() ) return;
+
1711 N2kMsg.Source=Devices[iDev].N2kSource;
+
1712 N2kMsg.Destination=Destination;
+
1713 N2kMsg.SetPGN(TP_CM);
+
1714 N2kMsg.Priority=6;
+
1715 N2kMsg.AddByte(TP_CM_CTS);
+
1716 N2kMsg.AddByte(TPCtsPackets(nPackets));
+
1717 N2kMsg.AddByte(NextPacketNumber);
+
1718 N2kMsg.AddByte(0xff); // Reserved;
+
1719 N2kMsg.AddByte(0xff); // Reserved;
+
1720 N2kMsg.Add3ByteInt(PGN);
+
1721 SendMsg(N2kMsg,iDev);
+
1722}
+
1723
+
1724//*****************************************************************************
+
1725void tNMEA2000::SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets) {
+
1726 tN2kMsg N2kMsg;
+
1727
+
1728 if ( !IsActiveNode() ) return;
+
1729 N2kMsg.Source=Devices[iDev].N2kSource;
+
1730 N2kMsg.Destination=Destination;
+
1731 N2kMsg.SetPGN(TP_CM);
+
1732 N2kMsg.Priority=6;
+
1733 N2kMsg.AddByte(TP_CM_ACK);
+
1734 N2kMsg.Add2ByteUInt(nBytes);
+
1735 N2kMsg.AddByte(nPackets);
+
1736 N2kMsg.AddByte(0xff); // Reserved;
+
1737 N2kMsg.Add3ByteInt(PGN);
+
1738 SendMsg(N2kMsg,iDev);
+
1739}
+
1740
+
1741//*****************************************************************************
+
1742void tNMEA2000::SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode) {
+
1743 tN2kMsg N2kMsg;
+
1744
+
1745 if ( !IsActiveNode() ) return;
+
1746 N2kMsg.Source=Devices[iDev].N2kSource;
+
1747 N2kMsg.Destination=Destination;
+
1748 N2kMsg.SetPGN(TP_CM);
+
1749 N2kMsg.Priority=6;
+
1750 N2kMsg.AddByte(TP_CM_Abort);
+
1751 N2kMsg.AddByte(AbortCode);
+
1752 N2kMsg.AddByte(0xff); // Reserved;
+
1753 N2kMsg.AddByte(0xff); // Reserved;
+
1754 N2kMsg.AddByte(0xff); // Reserved;
+
1755 N2kMsg.Add3ByteInt(PGN);
+
1756 SendMsg(N2kMsg,iDev);
+
1757}
+
1758
+
1759//*****************************************************************************
+
1760// Caller should take care of not calling this after all has been done.
+
1761// Use HasAllTPDTSent for checking.
+
1762bool tNMEA2000::SendTPDT(int iDev) {
+
1763 tN2kMsg N2kMsg;
+
1764 N2kMsg.Source=Devices[iDev].N2kSource;
+ +
1766 N2kMsg.SetPGN(TP_DT);
+
1767 N2kMsg.Priority=6;
+
1768 N2kMsg.AddByte(Devices[iDev].NextDTSequence+1);
+
1769 int iByteToSend=Devices[iDev].NextDTSequence*7;
+
1770 for ( int i=0; i<7; i++,iByteToSend++ ) {
+
1771 if ( iByteToSend<Devices[iDev].PendingTPMsg.DataLen ) {
+
1772 N2kMsg.AddByte(Devices[iDev].PendingTPMsg.Data[iByteToSend]);
+
1773 } else N2kMsg.AddByte(0xff);
+
1774 }
+
1775 Devices[iDev].NextDTSequence++;
1776
-
1777 if ( PGN==TP_CM ) {
-
1778 unsigned char TP_CM_Control=buf[0];
-
1779 int Index=5;
-
1780 unsigned long TransportPGN=GetBuf3ByteUInt(Index,buf);
-
1781
-
1782 switch (TP_CM_Control) {
-
1783 case TP_CM_BAM:
-
1784 case TP_CM_RTS: {
-
1785 N2kMsgDbgln("Got TP Command");
-
1786 Index=1;
-
1787 uint16_t nBytes=GetBuf2ByteUInt(Index,buf);
-
1788 uint8_t TPMaxPackets=buf[Index++];
-
1789 //Index++; // reserved
-
1790
-
1791 FindFreeCANMsgIndex(TransportPGN,Source,Destination,true,MsgIndex);
-
1792
-
1793 if (MsgIndex==MaxN2kCANMsgs) { // No free msg place
-
1794 N2kMsgDbgStart("No free msg slot"); N2kMsgDbgln();
-
1795 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to abort transport
-
1796 SendTPCM_Abort(TransportPGN,Source,iDev,TP_CM_AbortBusy);
-
1797 }
-
1798 } else { // Start transport
-
1799 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
-
1800 bool FastPacket;
-
1801 N2kCANMsgBuf[MsgIndex].KnownMessage=CheckKnownMessage(TransportPGN,N2kCANMsgBuf[MsgIndex].SystemMessage,FastPacket);
-
1802 if ( nBytes < tN2kMsg::MaxDataLen && // Currently we can handle only tN2kMsg::MaxDataLen long messages
-
1803 (N2kCANMsgBuf[MsgIndex].KnownMessage || !HandleOnlyKnownMessages()) ) {
-
1804 N2kCANMsgBuf[MsgIndex].FreeMsg=false;
-
1805 N2kCANMsgBuf[MsgIndex].N2kMsg.Init(7 /* Priority? */,TransportPGN,Source,Destination);
-
1806 N2kCANMsgBuf[MsgIndex].CopiedLen=0;
-
1807 N2kCANMsgBuf[MsgIndex].LastFrame=0;
-
1808 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=nBytes;
- -
1810 N2kCANMsgBuf[MsgIndex].TPMaxPackets=TPMaxPackets;
-
1811 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to response
-
1812 SendTPCM_CTS(TransportPGN,Source,iDev,N2kCANMsgBuf[MsgIndex].TPMaxPackets,N2kCANMsgBuf[MsgIndex].LastFrame+1);
-
1813 N2kCANMsgBuf[MsgIndex].TPRequireCTS=TPCtsPackets(N2kCANMsgBuf[MsgIndex].TPMaxPackets);
-
1814 } else {
-
1815 N2kCANMsgBuf[MsgIndex].TPMaxPackets=0xff; // TPMaxPackets>0 indicates that it is TP message
-
1816 }
-
1817 } else { // Too long or unknown
-
1818 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to response
-
1819 SendTPCM_Abort(TransportPGN,Source,iDev,TP_CM_AbortBusy); // Abort
-
1820 }
-
1821 }
-
1822 }
-
1823 break;
-
1824 }
-
1825 case TP_CM_CTS:
-
1826 if ( !IsValidDevice(iDev) ) break; // Should never fail
-
1827 N2kMsgDbgStart("Got TP CTS"); N2kMsgDbgln(MsgIndex);
-
1828 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
-
1829 if ( Devices[iDev].PendingTPMsg.PGN!=TransportPGN ) { // Some failure on communication
-
1830 EndSendTPMessage(iDev); // Should we retry from beginning?
-
1831 break;
-
1832 }
-
1833 // Now respond with next data packets
-
1834 if ( buf[1]>0 ) { // Note that with 0, receiver wants to have break
-
1835 if ( buf[2]-1!=Devices[iDev].NextDTSequence ) { // We got sequence error
-
1836 EndSendTPMessage(iDev); // Should we retry from beginning?
-
1837 break;
-
1838 }
-
1839 uint8_t MaxTPSequences=buf[1];
-
1840 bool TPDTResult=true;
-
1841 for ( uint8_t iSeq=0; TPDTResult &&iSeq<MaxTPSequences && !HasAllTPDTSent(iDev); iSeq++ ) TPDTResult&=SendTPDT(iDev);
-
1842 if ( !TPDTResult ) EndSendTPMessage(iDev);
-
1843 }
-
1844 Devices[iDev].NextDTSendTime.FromNow(100); // Set timeout for next response
-
1845 break;
-
1846 case TP_CM_ACK:
-
1847 if ( !IsValidDevice(iDev) ) break; // Should never fail
-
1848 N2kMsgDbgStart("Got TP ACK"); N2kMsgDbgln(MsgIndex);
-
1849 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
-
1850 EndSendTPMessage(iDev);
-
1851 break;
-
1852 case TP_CM_Abort:
-
1853 if ( !IsValidDevice(iDev) ) break; // Should never fail
-
1854 N2kMsgDbgStart("Got TP Abort"); N2kMsgDbgln(MsgIndex);
-
1855 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
-
1856 EndSendTPMessage(iDev);
-
1857 break;
-
1858 default:
-
1859 ;
-
1860 }
-
1861 MsgIndex=MaxN2kCANMsgs; // After TP_CM, message is newer ready.
-
1862 return true;
-
1863 } else if ( PGN==TP_DT ) { // Datapacket
-
1864 N2kMsgDbgStart("Got TP data"); N2kMsgDbgln(MsgIndex);
-
1865 // So we need to find TP msg which sender and destination matches.
-
1866 for (MsgIndex=0;
-
1867 MsgIndex<MaxN2kCANMsgs &&
-
1868 !( !N2kCANMsgBuf[MsgIndex].FreeMsg
-
1869 && N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()
-
1870 && N2kCANMsgBuf[MsgIndex].N2kMsg.Destination==Destination
-
1871 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
-
1872 );
-
1873 MsgIndex++);
-
1874 // if (MsgIndex==MaxN2kCANMsgs) N2kMsgDbgln("TP data msg not found");
-
1875 // for (int i=1; i<len; i++) N2kMsgDbgln(buf[i]);
-
1876 if (MsgIndex<MaxN2kCANMsgs) { // found TP message under reception
-
1877 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
-
1878 if (N2kCANMsgBuf[MsgIndex].LastFrame+1 == buf[0]) { // Right packet is coming
-
1879 // Add packet to the message
-
1880 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],1,len,buf);
-
1881 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
-
1882 // Transport protocol is slower, so to avoid timeout, we reset message time
- -
1884 if ( N2kCANMsgBuf[MsgIndex].CopiedLen>=N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen ) { // all done
-
1885 N2kCANMsgBuf[MsgIndex].Ready=true;
-
1886 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && iDev>=0 ) { // send response
-
1887 SendTPCM_EndAck(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen,N2kCANMsgBuf[MsgIndex].LastFrame);
-
1888 }
-
1889 } else {
-
1890 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && ((N2kCANMsgBuf[MsgIndex].LastFrame)%N2kCANMsgBuf[MsgIndex].TPRequireCTS)==0 ) { // send response
-
1891 SendTPCM_CTS(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,N2kCANMsgBuf[MsgIndex].TPMaxPackets,N2kCANMsgBuf[MsgIndex].LastFrame+1);
-
1892 }
-
1893 }
-
1894 } else { // Wrong packet - either we lost packet or sender sends wrong, so free this
-
1895 N2kMsgDbgStart("Invalid packet: "); N2kMsgDbgln(buf[0]);
-
1896 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && iDev>=0 ) { // We need to abort transport
-
1897 SendTPCM_Abort(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,TP_CM_AbortTimeout); // Abort transport
-
1898 }
-
1899 N2kCANMsgBuf[MsgIndex].FreeMessage();
-
1900
-
1901 }
-
1902 if ( !N2kCANMsgBuf[MsgIndex].Ready ) MsgIndex=MaxN2kCANMsgs;
-
1903 }
-
1904 return true; // We handled message
-
1905 }
-
1906
-
1907 return false;
-
1908}
-
1909
-
1910//*****************************************************************************
-
1911bool tNMEA2000::StartSendTPMessage(const tN2kMsg& msg, int iDev) {
-
1912 if ( !IsValidDevice(iDev) ) return false;
-
1913
-
1914 if ( Devices[iDev].PendingTPMsg.PGN!=0 ) return false; // No room for sending TP message
+
1777 return SendMsg(N2kMsg,iDev);
+
1778}
+
1779
+
1780//*****************************************************************************
+ +
1782 return ( Devices[iDev].NextDTSequence*7>=Devices[iDev].PendingTPMsg.DataLen );
+
1783}
+
1784
+
1785//*****************************************************************************
+
1786bool tNMEA2000::TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination,
+
1787 unsigned char len, unsigned char *buf,
+
1788 uint8_t &MsgIndex) {
+
1789 MsgIndex=MaxN2kCANMsgs;
+
1790 int iDev=FindSourceDeviceIndex(Destination);
+
1791
+
1792 if ( PGN==TP_CM ) {
+
1793 unsigned char TP_CM_Control=buf[0];
+
1794 int Index=5;
+
1795 unsigned long TransportPGN=GetBuf3ByteUInt(Index,buf);
+
1796
+
1797 switch (TP_CM_Control) {
+
1798 case TP_CM_BAM:
+
1799 case TP_CM_RTS: {
+
1800 N2kMsgDbgln("Got TP Command");
+
1801 Index=1;
+
1802 uint16_t nBytes=GetBuf2ByteUInt(Index,buf);
+
1803 uint8_t TPMaxPackets=buf[Index++];
+
1804 //Index++; // reserved
+
1805
+
1806 FindFreeCANMsgIndex(TransportPGN,Source,Destination,true,MsgIndex);
+
1807
+
1808 if (MsgIndex==MaxN2kCANMsgs) { // No free msg place
+
1809 N2kMsgDbgStart("No free msg slot"); N2kMsgDbgln();
+
1810 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to abort transport
+
1811 SendTPCM_Abort(TransportPGN,Source,iDev,TP_CM_AbortBusy);
+
1812 }
+
1813 } else { // Start transport
+
1814 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
+
1815 bool FastPacket;
+
1816 N2kCANMsgBuf[MsgIndex].KnownMessage=CheckKnownMessage(TransportPGN,N2kCANMsgBuf[MsgIndex].SystemMessage,FastPacket);
+
1817 if ( nBytes < tN2kMsg::MaxDataLen && // Currently we can handle only tN2kMsg::MaxDataLen long messages
+
1818 (N2kCANMsgBuf[MsgIndex].KnownMessage || !HandleOnlyKnownMessages()) ) {
+
1819 N2kCANMsgBuf[MsgIndex].FreeMsg=false;
+
1820 N2kCANMsgBuf[MsgIndex].N2kMsg.Init(7 /* Priority? */,TransportPGN,Source,Destination);
+
1821 N2kCANMsgBuf[MsgIndex].CopiedLen=0;
+
1822 N2kCANMsgBuf[MsgIndex].LastFrame=0;
+
1823 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=nBytes;
+ +
1825 N2kCANMsgBuf[MsgIndex].TPMaxPackets=TPMaxPackets;
+
1826 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to response
+
1827 SendTPCM_CTS(TransportPGN,Source,iDev,N2kCANMsgBuf[MsgIndex].TPMaxPackets,N2kCANMsgBuf[MsgIndex].LastFrame+1);
+
1828 N2kCANMsgBuf[MsgIndex].TPRequireCTS=TPCtsPackets(N2kCANMsgBuf[MsgIndex].TPMaxPackets);
+
1829 } else {
+
1830 N2kCANMsgBuf[MsgIndex].TPMaxPackets=0xff; // TPMaxPackets>0 indicates that it is TP message
+
1831 }
+
1832 } else { // Too long or unknown
+
1833 if ( (TP_CM_Control==TP_CM_RTS) && (iDev>=0) ) { // If it was for us and not broadcast, we need to response
+
1834 SendTPCM_Abort(TransportPGN,Source,iDev,TP_CM_AbortBusy); // Abort
+
1835 }
+
1836 }
+
1837 }
+
1838 break;
+
1839 }
+
1840 case TP_CM_CTS:
+
1841 if ( !IsValidDevice(iDev) ) break; // Should never fail
+
1842 N2kMsgDbgStart("Got TP CTS"); N2kMsgDbgln(MsgIndex);
+
1843 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
+
1844 if ( Devices[iDev].PendingTPMsg.PGN!=TransportPGN ) { // Some failure on communication
+
1845 EndSendTPMessage(iDev); // Should we retry from beginning?
+
1846 break;
+
1847 }
+
1848 // Now respond with next data packets
+
1849 if ( buf[1]>0 ) { // Note that with 0, receiver wants to have break
+
1850 if ( buf[2]-1!=Devices[iDev].NextDTSequence ) { // We got sequence error
+
1851 EndSendTPMessage(iDev); // Should we retry from beginning?
+
1852 break;
+
1853 }
+
1854 uint8_t MaxTPSequences=buf[1];
+
1855 bool TPDTResult=true;
+
1856 for ( uint8_t iSeq=0; TPDTResult &&iSeq<MaxTPSequences && !HasAllTPDTSent(iDev); iSeq++ ) TPDTResult&=SendTPDT(iDev);
+
1857 if ( !TPDTResult ) EndSendTPMessage(iDev);
+
1858 }
+
1859 Devices[iDev].NextDTSendTime.FromNow(100); // Set timeout for next response
+
1860 break;
+
1861 case TP_CM_ACK:
+
1862 if ( !IsValidDevice(iDev) ) break; // Should never fail
+
1863 N2kMsgDbgStart("Got TP ACK"); N2kMsgDbgln(MsgIndex);
+
1864 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
+
1865 EndSendTPMessage(iDev);
+
1866 break;
+
1867 case TP_CM_Abort:
+
1868 if ( !IsValidDevice(iDev) ) break; // Should never fail
+
1869 N2kMsgDbgStart("Got TP Abort"); N2kMsgDbgln(MsgIndex);
+
1870 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) break; // We should not get controls for broadcast TP msg
+
1871 EndSendTPMessage(iDev);
+
1872 break;
+
1873 default:
+
1874 ;
+
1875 }
+
1876 MsgIndex=MaxN2kCANMsgs; // After TP_CM, message is newer ready.
+
1877 return true;
+
1878 } else if ( PGN==TP_DT ) { // Datapacket
+
1879 N2kMsgDbgStart("Got TP data"); N2kMsgDbgln(MsgIndex);
+
1880 // So we need to find TP msg which sender and destination matches.
+
1881 for (MsgIndex=0;
+
1882 MsgIndex<MaxN2kCANMsgs &&
+
1883 !( !N2kCANMsgBuf[MsgIndex].FreeMsg
+
1884 && N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()
+
1885 && N2kCANMsgBuf[MsgIndex].N2kMsg.Destination==Destination
+
1886 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
+
1887 );
+
1888 MsgIndex++);
+
1889 // if (MsgIndex==MaxN2kCANMsgs) N2kMsgDbgln("TP data msg not found");
+
1890 // for (int i=1; i<len; i++) N2kMsgDbgln(buf[i]);
+
1891 if (MsgIndex<MaxN2kCANMsgs) { // found TP message under reception
+
1892 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
+
1893 if (N2kCANMsgBuf[MsgIndex].LastFrame+1 == buf[0]) { // Right packet is coming
+
1894 // Add packet to the message
+
1895 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],1,len,buf);
+
1896 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
+
1897 // Transport protocol is slower, so to avoid timeout, we reset message time
+ +
1899 if ( N2kCANMsgBuf[MsgIndex].CopiedLen>=N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen ) { // all done
+
1900 N2kCANMsgBuf[MsgIndex].Ready=true;
+
1901 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && iDev>=0 ) { // send response
+
1902 SendTPCM_EndAck(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen,N2kCANMsgBuf[MsgIndex].LastFrame);
+
1903 }
+
1904 } else {
+
1905 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && ((N2kCANMsgBuf[MsgIndex].LastFrame)%N2kCANMsgBuf[MsgIndex].TPRequireCTS)==0 ) { // send response
+
1906 SendTPCM_CTS(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,N2kCANMsgBuf[MsgIndex].TPMaxPackets,N2kCANMsgBuf[MsgIndex].LastFrame+1);
+
1907 }
+
1908 }
+
1909 } else { // Wrong packet - either we lost packet or sender sends wrong, so free this
+
1910 N2kMsgDbgStart("Invalid packet: "); N2kMsgDbgln(buf[0]);
+
1911 if ( N2kCANMsgBuf[MsgIndex].TPRequireCTS>0 && iDev>=0 ) { // We need to abort transport
+
1912 SendTPCM_Abort(N2kCANMsgBuf[MsgIndex].N2kMsg.PGN,Source,iDev,TP_CM_AbortTimeout); // Abort transport
+
1913 }
+
1914 N2kCANMsgBuf[MsgIndex].FreeMessage();
1915
-
1916 int result=false;
-
1917
-
1918 Devices[iDev].HasPendingInformation=true;
-
1919 Devices[iDev].PendingTPMsg=msg;
-
1920 Devices[iDev].NextDTSequence=0;
-
1921 Devices[iDev].NextDTSendTime.FromNow(50);
-
1922 if ( IsBroadcast(msg.Destination) ) { // Start with BAM
-
1923 result=SendTPCM_BAM(iDev);
-
1924 } else {
-
1925 result=SendTPCM_RTS(iDev);
-
1926 }
-
1927
-
1928 if ( !result ) EndSendTPMessage(iDev); // Currently no retry
-
1929
-
1930 return result;
-
1931}
+
1916 }
+
1917 if ( !N2kCANMsgBuf[MsgIndex].Ready ) MsgIndex=MaxN2kCANMsgs;
+
1918 }
+
1919 return true; // We handled message
+
1920 }
+
1921
+
1922 return false;
+
1923}
+
1924
+
1925//*****************************************************************************
+
1926bool tNMEA2000::StartSendTPMessage(const tN2kMsg& msg, int iDev) {
+
1927 if ( !IsValidDevice(iDev) ) return false;
+
1928
+
1929 if ( Devices[iDev].PendingTPMsg.PGN!=0 ) return false; // No room for sending TP message
+
1930
+
1931 int result=false;
1932
-
1933//*****************************************************************************
- -
1935 Devices[iDev].PendingTPMsg.Clear();
- - -
1938}
-
1939
-
1940//*****************************************************************************
- -
1942 if ( Devices[iDev].PendingTPMsg.PGN!=0 && Devices[iDev].NextDTSendTime.IsTime() ) { // Pending message and timed out
-
1943 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) { // For broadcast we just send next data
-
1944 SendTPDT(iDev);
-
1945 Devices[iDev].NextDTSendTime.FromNow(50);
-
1946 if ( HasAllTPDTSent(iDev) ) EndSendTPMessage(iDev); // All done
-
1947 } else { // We have not got response from receiver within timeout, so just end. Or should we retry?
-
1948 EndSendTPMessage(iDev);
-
1949 }
-
1950 }
-
1951}
-
1952
-
1953#endif
+
1933 Devices[iDev].HasPendingInformation=true;
+
1934 Devices[iDev].PendingTPMsg=msg;
+
1935 Devices[iDev].NextDTSequence=0;
+
1936 Devices[iDev].NextDTSendTime.FromNow(50);
+
1937 if ( IsBroadcast(msg.Destination) ) { // Start with BAM
+
1938 result=SendTPCM_BAM(iDev);
+
1939 } else {
+
1940 result=SendTPCM_RTS(iDev);
+
1941 }
+
1942
+
1943 if ( !result ) EndSendTPMessage(iDev); // Currently no retry
+
1944
+
1945 return result;
+
1946}
+
1947
+
1948//*****************************************************************************
+ +
1950 Devices[iDev].PendingTPMsg.Clear();
+ + +
1953}
1954
1955//*****************************************************************************
-
1956inline bool IsFastPacketFirstFrame(unsigned char b) { return ((b & 0x1F)==0); }
-
1957
-
1958//*****************************************************************************
-
1959// Function handles received CAN frame and adds it to tN2kCANMsg.
-
1960// Returns: Index to ready tN2kCANMsg or MaxN2kCANMsgs, if we skipped the frame
-
1961// or message is not ready (fast packet or ISO Multi-Packet)
-
1962uint8_t tNMEA2000::SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf) {
-
1963 unsigned char Priority;
-
1964 unsigned long PGN;
-
1965 unsigned char Source;
-
1966 unsigned char Destination;
-
1967 bool FastPacket;
-
1968 bool SystemMessage;
-
1969 bool KnownMessage;
-
1970 uint8_t MsgIndex=MaxN2kCANMsgs;
-
1971
-
1972 CanIdToN2k(canId,Priority,PGN,Source,Destination);
-
1973#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1974 if ( !TestHandleTPMessage(PGN,Source,Destination,len,buf,MsgIndex) )
-
1975#endif
-
1976 {
-
1977 KnownMessage=CheckKnownMessage(PGN,SystemMessage,FastPacket);
-
1978 if ( KnownMessage || !HandleOnlyKnownMessages() ) {
-
1979 if (FastPacket && !IsFastPacketFirstFrame(buf[0]) ) { // Not first frame
-
1980 N2kFrameInDbgStart("New frame="); N2kFrameInDbg(PGN); N2kFrameInDbg(" frame="); N2kFrameInDbg(buf[0],HEX); N2kFrameInDbgln();
-
1981 // Find previous slot for this PGN
-
1982 for (MsgIndex=0;
-
1983 MsgIndex<MaxN2kCANMsgs &&
-
1984 !( N2kCANMsgBuf[MsgIndex].N2kMsg.PGN==PGN
-
1985 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
-
1986#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1987 && !N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()
-
1988#endif
-
1989 );
-
1990 MsgIndex++);
-
1991 if (MsgIndex<MaxN2kCANMsgs) { // we found start for this message, so add data to it.
-
1992 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
-
1993 if (N2kCANMsgBuf[MsgIndex].LastFrame+1 == buf[0]) { // Right frame is coming
-
1994 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
-
1995 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],1,len,buf);
-
1996 } else { // We have lost frame, so free this
-
1997 N2kFrameErrDbgStart("Lost frame "); N2kFrameErrDbg(N2kCANMsgBuf[MsgIndex].LastFrame); N2kFrameErrDbg("/"); N2kFrameErrDbg(buf[0]);
-
1998 N2kFrameErrDbg(", source "); N2kFrameErrDbg(Source); N2kFrameErrDbg(" for: "); N2kFrameErrDbgln(PGN);
-
1999 N2kCANMsgBuf[MsgIndex].FreeMessage();
-
2000 MsgIndex=MaxN2kCANMsgs;
-
2001 }
-
2002 } else { // Orphan frame
-
2003 N2kFrameErrDbgStart("Orphan frame "); N2kFrameErrDbg(buf[0]); N2kFrameErrDbg(", source ");
-
2004 N2kFrameErrDbg(Source); N2kFrameErrDbg(" for: "); N2kFrameErrDbgln(PGN);
-
2005 }
-
2006 } else { // Handle first frame
-
2007#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2008 FindFreeCANMsgIndex(PGN,Source,Destination,false,MsgIndex);
-
2009#else
-
2010 FindFreeCANMsgIndex(PGN,Source,Destination,MsgIndex);
-
2011#endif
-
2012 if ( MsgIndex<MaxN2kCANMsgs ) { // we found free place, so handle frame
-
2013 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
-
2014 N2kCANMsgBuf[MsgIndex].FreeMsg=false;
-
2015 N2kCANMsgBuf[MsgIndex].KnownMessage=KnownMessage;
-
2016 N2kCANMsgBuf[MsgIndex].SystemMessage=SystemMessage;
-
2017 N2kCANMsgBuf[MsgIndex].N2kMsg.Init(Priority,PGN,Source,Destination);
-
2018#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2019 N2kCANMsgBuf[MsgIndex].N2kMsg.SetIsTPMessage(false);
-
2020#endif
-
2021 N2kCANMsgBuf[MsgIndex].CopiedLen=0;
-
2022 if (FastPacket) {
-
2023 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],2,len,buf);
-
2024 N2kFrameInDbgStart("First frame="); N2kFrameInDbg(PGN); N2kFrameInDbgln();
-
2025 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
-
2026 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=buf[1];
-
2027 } else {
-
2028 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],0,len,buf);
-
2029 N2kFrameInDbgStart("Single frame="); N2kFrameInDbg(PGN); N2kFrameInDbgln();
-
2030 N2kCANMsgBuf[MsgIndex].LastFrame=0;
-
2031 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=len;
-
2032 }
-
2033 }
-
2034 }
-
2035
-
2036 if ( MsgIndex<MaxN2kCANMsgs ) {
-
2037 N2kCANMsgBuf[MsgIndex].Ready=(N2kCANMsgBuf[MsgIndex].CopiedLen>=N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen);
-
2038 if ( !N2kCANMsgBuf[MsgIndex].Ready ) MsgIndex=MaxN2kCANMsgs; // If packet is not ready, do not return index to it
-
2039 }
-
2040 }
-
2041 }
-
2042
-
2043 return MsgIndex;
-
2044}
-
2045
-
2046//*****************************************************************************
-
2047 int tNMEA2000::FindSourceDeviceIndex(unsigned char Source) const {
-
2048 int i=DeviceCount;
-
2049
-
2050 if ( Source<=253 ) {
-
2051 for (i=0; i<DeviceCount && Devices[i].N2kSource!=Source; i++);
-
2052 }
-
2053
-
2054 return (i<DeviceCount?i:-1);
-
2055 }
-
2056
-
2057//*****************************************************************************
-
2058bool tNMEA2000::IsMySource(unsigned char Source) {
-
2059 return (FindSourceDeviceIndex(Source)!=-1);
-
2060}
-
2061
-
2062//*****************************************************************************
- -
2064 if ( !ForwardEnabled() || ( !( ForwardOwnMessages() && IsMySource(N2kMsg.Source) ) && N2kMode==N2km_NodeOnly ) ) return;
-
2065
-
2066 switch (ForwardType) {
-
2067 case fwdt_Actisense:
- -
2069 break;
-
2070 case fwdt_Text:
-
2071 N2kMsg.Print(ForwardStream);
-
2072 break;
-
2073 }
-
2074}
-
2075
-
2076//*****************************************************************************
- -
2078 if ( N2kCanMsg.KnownMessage || !ForwardOnlyKnownMessages() ) ForwardMessage(N2kCanMsg.N2kMsg);
-
2079}
+ +
1957 if ( Devices[iDev].PendingTPMsg.PGN!=0 && Devices[iDev].NextDTSendTime.IsTime() ) { // Pending message and timed out
+
1958 if ( IsBroadcast(Devices[iDev].PendingTPMsg.Destination) ) { // For broadcast we just send next data
+
1959 SendTPDT(iDev);
+
1960 Devices[iDev].NextDTSendTime.FromNow(50);
+
1961 if ( HasAllTPDTSent(iDev) ) EndSendTPMessage(iDev); // All done
+
1962 } else { // We have not got response from receiver within timeout, so just end. Or should we retry?
+
1963 EndSendTPMessage(iDev);
+
1964 }
+
1965 }
+
1966}
+
1967
+
1968#endif
+
1969
+
1970//*****************************************************************************
+
1971inline bool IsFastPacketFirstFrame(unsigned char b) { return ((b & 0x1F)==0); }
+
1972
+
1973//*****************************************************************************
+
1974// Function handles received CAN frame and adds it to tN2kCANMsg.
+
1975// Returns: Index to ready tN2kCANMsg or MaxN2kCANMsgs, if we skipped the frame
+
1976// or message is not ready (fast packet or ISO Multi-Packet)
+
1977uint8_t tNMEA2000::SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf) {
+
1978 unsigned char Priority;
+
1979 unsigned long PGN;
+
1980 unsigned char Source;
+
1981 unsigned char Destination;
+
1982 bool FastPacket;
+
1983 bool SystemMessage;
+
1984 bool KnownMessage;
+
1985 uint8_t MsgIndex=MaxN2kCANMsgs;
+
1986
+
1987 CanIdToN2k(canId,Priority,PGN,Source,Destination);
+
1988#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1989 if ( !TestHandleTPMessage(PGN,Source,Destination,len,buf,MsgIndex) )
+
1990#endif
+
1991 {
+
1992 KnownMessage=CheckKnownMessage(PGN,SystemMessage,FastPacket);
+
1993 if ( KnownMessage || !HandleOnlyKnownMessages() ) {
+
1994 if (FastPacket && !IsFastPacketFirstFrame(buf[0]) ) { // Not first frame
+
1995 N2kFrameInDbgStart("New frame="); N2kFrameInDbg(PGN); N2kFrameInDbg(" frame="); N2kFrameInDbg(buf[0],HEX); N2kFrameInDbgln();
+
1996 // Find previous slot for this PGN
+
1997 for (MsgIndex=0;
+
1998 MsgIndex<MaxN2kCANMsgs &&
+
1999 !( N2kCANMsgBuf[MsgIndex].N2kMsg.PGN==PGN
+
2000 && N2kCANMsgBuf[MsgIndex].N2kMsg.Source==Source
+
2001#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2002 && !N2kCANMsgBuf[MsgIndex].N2kMsg.IsTPMessage()
+
2003#endif
+
2004 );
+
2005 MsgIndex++);
+
2006 if (MsgIndex<MaxN2kCANMsgs) { // we found start for this message, so add data to it.
+
2007 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
+
2008 if (N2kCANMsgBuf[MsgIndex].LastFrame+1 == buf[0]) { // Right frame is coming
+
2009 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
+
2010 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],1,len,buf);
+
2011 } else { // We have lost frame, so free this
+
2012 N2kFrameErrDbgStart("Lost frame "); N2kFrameErrDbg(N2kCANMsgBuf[MsgIndex].LastFrame); N2kFrameErrDbg("/"); N2kFrameErrDbg(buf[0]);
+
2013 N2kFrameErrDbg(", source "); N2kFrameErrDbg(Source); N2kFrameErrDbg(" for: "); N2kFrameErrDbgln(PGN);
+
2014 N2kCANMsgBuf[MsgIndex].FreeMessage();
+
2015 MsgIndex=MaxN2kCANMsgs;
+
2016 }
+
2017 } else { // Orphan frame
+
2018 N2kFrameErrDbgStart("Orphan frame "); N2kFrameErrDbg(buf[0]); N2kFrameErrDbg(", source ");
+
2019 N2kFrameErrDbg(Source); N2kFrameErrDbg(" for: "); N2kFrameErrDbgln(PGN);
+
2020 }
+
2021 } else { // Handle first frame
+
2022#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2023 FindFreeCANMsgIndex(PGN,Source,Destination,false,MsgIndex);
+
2024#else
+
2025 FindFreeCANMsgIndex(PGN,Source,Destination,MsgIndex);
+
2026#endif
+
2027 if ( MsgIndex<MaxN2kCANMsgs ) { // we found free place, so handle frame
+
2028 N2kMsgDbgStart("Use msg slot: "); N2kMsgDbgln(MsgIndex);
+
2029 N2kCANMsgBuf[MsgIndex].FreeMsg=false;
+
2030 N2kCANMsgBuf[MsgIndex].KnownMessage=KnownMessage;
+
2031 N2kCANMsgBuf[MsgIndex].SystemMessage=SystemMessage;
+
2032 N2kCANMsgBuf[MsgIndex].N2kMsg.Init(Priority,PGN,Source,Destination);
+
2033#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2034 N2kCANMsgBuf[MsgIndex].N2kMsg.SetIsTPMessage(false);
+
2035#endif
+
2036 N2kCANMsgBuf[MsgIndex].CopiedLen=0;
+
2037 if (FastPacket) {
+
2038 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],2,len,buf);
+
2039 N2kFrameInDbgStart("First frame="); N2kFrameInDbg(PGN); N2kFrameInDbgln();
+
2040 N2kCANMsgBuf[MsgIndex].LastFrame=buf[0];
+
2041 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=buf[1];
+
2042 } else {
+
2043 CopyBufToCANMsg(N2kCANMsgBuf[MsgIndex],0,len,buf);
+
2044 N2kFrameInDbgStart("Single frame="); N2kFrameInDbg(PGN); N2kFrameInDbgln();
+
2045 N2kCANMsgBuf[MsgIndex].LastFrame=0;
+
2046 N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen=len;
+
2047 }
+
2048 }
+
2049 }
+
2050
+
2051 if ( MsgIndex<MaxN2kCANMsgs ) {
+
2052 N2kCANMsgBuf[MsgIndex].Ready=(N2kCANMsgBuf[MsgIndex].CopiedLen>=N2kCANMsgBuf[MsgIndex].N2kMsg.DataLen);
+
2053 if ( !N2kCANMsgBuf[MsgIndex].Ready ) MsgIndex=MaxN2kCANMsgs; // If packet is not ready, do not return index to it
+
2054 }
+
2055 }
+
2056 }
+
2057
+
2058 return MsgIndex;
+
2059}
+
2060
+
2061//*****************************************************************************
+
2062 int tNMEA2000::FindSourceDeviceIndex(unsigned char Source) const {
+
2063 int i=DeviceCount;
+
2064
+
2065 if ( Source<=253 ) {
+
2066 for (i=0; i<DeviceCount && Devices[i].N2kSource!=Source; i++);
+
2067 }
+
2068
+
2069 return (i<DeviceCount?i:-1);
+
2070 }
+
2071
+
2072//*****************************************************************************
+
2073bool tNMEA2000::IsMySource(unsigned char Source) {
+
2074 return (FindSourceDeviceIndex(Source)!=-1);
+
2075}
+
2076
+
2077//*****************************************************************************
+ +
2079 if ( !ForwardEnabled() || ( !( ForwardOwnMessages() && IsMySource(N2kMsg.Source) ) && N2kMode==N2km_NodeOnly ) ) return;
2080
-
2081//*****************************************************************************
-
2082void tNMEA2000::SendIsoAddressClaim(unsigned char Destination, int DeviceIndex, unsigned long FromNow) {
-
2083
-
2084 // Some devices (Garmin) request constantly information on network about others
-
2085 // 59904 ISO Request: PGN = 60928
-
2086 // So we need to Re-send Address claim, or they will stop detecting us
-
2087 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
-
2088
-
2089 if ( DeviceIndex<0 || DeviceIndex>=DeviceCount) return;
+
2081 switch (ForwardType) {
+
2082 case fwdt_Actisense:
+ +
2084 break;
+
2085 case fwdt_Text:
+
2086 N2kMsg.Print(ForwardStream);
+
2087 break;
+
2088 }
+
2089}
2090
-
2091 // Set pending, if we have delayed it.
-
2092 if ( FromNow>0 ) {
-
2093 Devices[DeviceIndex].SetPendingIsoAddressClaim(FromNow);
-
2094 return;
-
2095 }
-
2096
-
2097 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
+
2091//*****************************************************************************
+ +
2093 if ( N2kCanMsg.KnownMessage || !ForwardOnlyKnownMessages() ) ForwardMessage(N2kCanMsg.N2kMsg);
+
2094}
+
2095
+
2096//*****************************************************************************
+
2097void tNMEA2000::SendIsoAddressClaim(unsigned char Destination, int DeviceIndex, unsigned long FromNow) {
2098
-
2099 RespondMsg.Destination=Destination;
-
2100 SetN2kISOAddressClaim(RespondMsg,Devices[DeviceIndex].DeviceInformation.GetName());
-
2101 SendMsg(RespondMsg,DeviceIndex);
-
2102}
+
2099 // Some devices (Garmin) request constantly information on network about others
+
2100 // 59904 ISO Request: PGN = 60928
+
2101 // So we need to Re-send Address claim, or they will stop detecting us
+
2102 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
2103
-
2104template <typename T> void PROGMEM_readAnything (const T * sce, T& dest)
-
2105 {
-
2106 memcpy_P (&dest, sce, sizeof (T));
-
2107 }
-
2108
-
2109#define MAX_PGNS_IN_LIST 74
-
2110
-
2111//*****************************************************************************
-
2112#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2113void tNMEA2000::SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP) {
-
2114#else
-
2115void tNMEA2000::SendTxPGNList(unsigned char Destination, int DeviceIndex) {
-
2116#endif
-
2117 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
+
2104 if ( DeviceIndex<0 || DeviceIndex>=DeviceCount) return;
+
2105
+
2106 // Set pending, if we have delayed it.
+
2107 if ( FromNow>0 ) {
+
2108 Devices[DeviceIndex].SetPendingIsoAddressClaim(FromNow);
+
2109 return;
+
2110 }
+
2111
+
2112 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
+
2113
+
2114 RespondMsg.Destination=Destination;
+
2115 SetN2kISOAddressClaim(RespondMsg,Devices[DeviceIndex].DeviceInformation.GetName());
+
2116 SendMsg(RespondMsg,DeviceIndex);
+
2117}
2118
-
2119 if ( !IsValidDevice(DeviceIndex) ) return;
-
2120
-
2121 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
-
2122 unsigned long PGN;
+
2119template <typename T> void PROGMEM_readAnything (const T * sce, T& dest)
+
2120 {
+
2121 memcpy_P (&dest, sce, sizeof (T));
+
2122 }
2123
-
2124 RespondMsg.Destination=Destination;
-
2125 RespondMsg.SetPGN(126464L);
-
2126 RespondMsg.Priority=6;
+
2124#define MAX_PGNS_IN_LIST 74
+
2125
+
2126//*****************************************************************************
2127#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2128 RespondMsg.SetIsTPMessage(UseTP);
-
2129#endif
-
2130 RespondMsg.AddByte(N2kpgnl_transmit);
-
2131 // First add default messages
-
2132 size_t PGNCount=0;
-
2133 for (int i=0; (PGN=pgm_read_dword(&DefTransmitMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
-
2134 RespondMsg.Add3ByteInt(PGN);
-
2135 }
-
2136 if (Devices[DeviceIndex].TransmitMessages!=0) {
-
2137 for (int i=0; (PGN=pgm_read_dword(&Devices[DeviceIndex].TransmitMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
-
2138 RespondMsg.Add3ByteInt(PGN);
-
2139 }
-
2140 }
-
2141 SendMsg(RespondMsg,DeviceIndex);
-
2142}
-
2143
-
2144//*****************************************************************************
-
2145#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2146void tNMEA2000::SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP) {
-
2147#else
-
2148void tNMEA2000::SendRxPGNList(unsigned char Destination, int DeviceIndex) {
-
2149#endif
-
2150 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
-
2151
-
2152 if ( !IsValidDevice(DeviceIndex) ) return;
-
2153
-
2154 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
-
2155 unsigned long PGN;
-
2156
-
2157 RespondMsg.Destination=Destination;
-
2158 RespondMsg.SetPGN(126464L);
-
2159 RespondMsg.Priority=6;
+
2128void tNMEA2000::SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP) {
+
2129#else
+
2130void tNMEA2000::SendTxPGNList(unsigned char Destination, int DeviceIndex) {
+
2131#endif
+
2132 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
+
2133
+
2134 if ( !IsValidDevice(DeviceIndex) ) return;
+
2135
+
2136 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
+
2137 unsigned long PGN;
+
2138
+
2139 RespondMsg.Destination=Destination;
+
2140 RespondMsg.SetPGN(126464L);
+
2141 RespondMsg.Priority=6;
+
2142#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2143 RespondMsg.SetIsTPMessage(UseTP);
+
2144#endif
+
2145 RespondMsg.AddByte(N2kpgnl_transmit);
+
2146 // First add default messages
+
2147 size_t PGNCount=0;
+
2148 for (int i=0; (PGN=pgm_read_dword(&DefTransmitMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
+
2149 RespondMsg.Add3ByteInt(PGN);
+
2150 }
+
2151 if (Devices[DeviceIndex].TransmitMessages!=0) {
+
2152 for (int i=0; (PGN=pgm_read_dword(&Devices[DeviceIndex].TransmitMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
+
2153 RespondMsg.Add3ByteInt(PGN);
+
2154 }
+
2155 }
+
2156 SendMsg(RespondMsg,DeviceIndex);
+
2157}
+
2158
+
2159//*****************************************************************************
2160#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2161 RespondMsg.SetIsTPMessage(UseTP);
-
2162#endif
-
2163 RespondMsg.AddByte(N2kpgnl_receive);
-
2164 // First add default messages
-
2165 size_t PGNCount=0;
-
2166 for (int i=0; (PGN=pgm_read_dword(&DefReceiveMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
-
2167 RespondMsg.Add3ByteInt(PGN);
-
2168 }
-
2169 if (Devices[DeviceIndex].ReceiveMessages!=0) {
-
2170 for (int i=0; (PGN=pgm_read_dword(&Devices[DeviceIndex].ReceiveMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
-
2171 RespondMsg.Add3ByteInt(PGN);
-
2172 }
-
2173 }
-
2174 SendMsg(RespondMsg,DeviceIndex);
-
2175}
-
2176
-
2177//*****************************************************************************
-
2178void SetN2kPGN126996Progmem(tN2kMsg &N2kMsg, const tNMEA2000::tProductInformation *ProductInformation, char *OptionalSerialCode=0) {
-
2179 int i;
-
2180
-
2181 N2kMsg.SetPGN(126996L);
-
2182 N2kMsg.Priority=6;
-
2183 N2kMsg.Add2ByteInt(pgm_read_word(&ProductInformation->N2kVersion));
-
2184 N2kMsg.Add2ByteInt(pgm_read_word(&ProductInformation->ProductCode));
-
2185 for (i=0; i<Max_N2kModelID_len && pgm_read_byte(&ProductInformation->N2kModelID[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelID[i])); }
-
2186 for (; i<Max_N2kModelID_len; i++ ) { N2kMsg.AddByte(0xff); }
-
2187 for (i=0; i<Max_N2kSwCode_len && pgm_read_byte(&ProductInformation->N2kSwCode[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kSwCode[i])); }
-
2188 for (; i<Max_N2kSwCode_len; i++ ) { N2kMsg.AddByte(0xff); }
-
2189 for (i=0; i<Max_N2kModelVersion_len && pgm_read_byte(&ProductInformation->N2kModelVersion[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelVersion[i])); }
-
2190 for (; i<Max_N2kModelVersion_len; i++ ) { N2kMsg.AddByte(0xff); }
-
2191 if (OptionalSerialCode) {
-
2192 for (i=0; i<Max_N2kModelSerialCode_len && OptionalSerialCode[i]; i++ ) { N2kMsg.AddByte(OptionalSerialCode[i]); }
-
2193 } else {
-
2194 for (i=0; i<Max_N2kModelSerialCode_len && pgm_read_byte(&ProductInformation->N2kModelSerialCode[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelSerialCode[i])); }
-
2195 }
-
2196 for (; i<Max_N2kModelSerialCode_len; i++ ) { N2kMsg.AddByte(0xff); }
-
2197 N2kMsg.AddByte(pgm_read_byte(&ProductInformation->CertificationLevel));
-
2198 N2kMsg.AddByte(pgm_read_byte(&ProductInformation->LoadEquivalency));
-
2199}
-
2200
-
2201//*****************************************************************************
-
2202#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
- -
2204 return SendProductInformation(0xff,iDev,false);
-
2205}
-
2206
-
2207bool tNMEA2000::SendProductInformation(unsigned char Destination, int iDev, bool UseTP) {
-
2208#else
-
2209bool tNMEA2000::SendProductInformation(int iDev) {
-
2210#endif
-
2211 if ( !IsValidDevice(iDev) ) return false;
-
2212 tN2kMsg RespondMsg(Devices[iDev].N2kSource);
-
2213 int iPIDev=iDev;
-
2214
-
2215 if ( Devices[iPIDev].ProductInformation==0 ) iPIDev=0; // Use first device product information
-
2216 if ( Devices[iPIDev].ProductInformation==0 ) return false; // Can not do anything.
-
2217
-
2218 if ( Devices[iPIDev].ProductInformation==Devices[iPIDev].LocalProductInformation ) {
-
2219 SetN2kProductInformation(RespondMsg,Devices[iPIDev].ProductInformation->N2kVersion,
- - - - - - - -
2227 } else {
-
2228 SetN2kPGN126996Progmem(RespondMsg,Devices[iPIDev].ProductInformation);
-
2229 }
-
2230#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2231 RespondMsg.Destination=Destination;
-
2232 RespondMsg.SetIsTPMessage(UseTP);
-
2233#endif
-
2234 if (SendMsg(RespondMsg,iDev) ) {
- -
2236 return true;
-
2237 }
-
2238
- -
2240 return false;
-
2241}
-
2242
-
2243//*****************************************************************************
-
2244#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
- -
2246 return SendConfigurationInformation(0xff,DeviceIndex,false);
-
2247}
-
2248
-
2249bool tNMEA2000::SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP) {
-
2250#else
-
2251bool tNMEA2000::SendConfigurationInformation(int DeviceIndex) {
-
2252#endif
-
2253 if ( !IsValidDevice(DeviceIndex) ) return false;
-
2254 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
-
2255
- - - - - - - - -
2264 } else { // No information provided, so respond not available
-
2265 SetN2kPGNISOAcknowledgement(RespondMsg,1,0xff,126998L);
-
2266 }
-
2267
-
2268#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2269 RespondMsg.Destination=Destination;
-
2270 RespondMsg.SetIsTPMessage(UseTP);
-
2271#endif
-
2272 if (SendMsg(RespondMsg,DeviceIndex) ) {
- -
2274 return true;
-
2275 }
-
2276
- -
2278 return false;
-
2279}
-
2280
-
2281//*****************************************************************************
-
2282void tNMEA2000::RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev) {
-
2283 if ( IsAddressClaimStarted(iDev) ) return; // We do not respond any queries during address claiming.
-
2284
-
2285 switch (RequestedPGN) {
-
2286 case 60928L: /*ISO Address Claim*/ // Someone is asking others to claim their addresses
-
2287 SendIsoAddressClaim(0xff,iDev);
-
2288 break;
-
2289 case 126464L:
-
2290 SendTxPGNList(N2kMsg.Source,iDev);
-
2291 SendRxPGNList(N2kMsg.Source,iDev);
-
2292 break;
-
2293 case 126996L: /* Product information */
- -
2295 break;
-
2296 case 126998L: /* Configuration information */
- -
2298 break;
-
2299 default:
-
2300 /* If user has established a handler */
-
2301 if (ISORqstHandler!=0) {
-
2302 /* and if it handled the request, we are done */
-
2303 if (ISORqstHandler(RequestedPGN,N2kMsg.Source,iDev)) {
-
2304 return;
-
2305 }
-
2306 }
-
2307
-
2308 tN2kMsg N2kMsgR;
-
2309 // No user handler, or there was one and it retured FALSE. Send NAK
-
2310 SetN2kPGNISOAcknowledgement(N2kMsgR,1,0xff,RequestedPGN);
-
2311 // Direct the response to original requester.
-
2312 N2kMsgR.Destination = N2kMsg.Source;
-
2313 SendMsg(N2kMsgR,iDev);
-
2314 }
-
2315}
-
2316
-
2317//*****************************************************************************
- -
2319 unsigned long RequestedPGN;
-
2320 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
-
2321
-
2322 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
-
2323
-
2324 ParseN2kPGNISORequest(N2kMsg,RequestedPGN);
-
2325 N2kMsgDbgStart("ISO request: "); N2kMsgDbgln(RequestedPGN);
-
2326 if (tNMEA2000::IsBroadcast(N2kMsg.Destination)) { // broadcast -> respond from all devices
-
2327 for (iDev=0; iDev<DeviceCount; iDev++) RespondISORequest(N2kMsg,RequestedPGN,iDev);
-
2328 } else {
-
2329 RespondISORequest(N2kMsg,RequestedPGN,iDev);
-
2330 }
-
2331}
-
2332
-
2333#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
2334//*****************************************************************************
-
2335// Document https://web.archive.org/web/20170609033039/http://www.nmea.org/Assets/20140109%20nmea-2000-corrigendum-tc201401031%20pgn%20126208.pdf
-
2336// defines that systems should respond to NMEA Request/Command/Acknowledge group function PGN 126208.
-
2337// Here we first call callback and if that will not handle function, we use default handler.
-
2338void tNMEA2000::RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev) {
-
2339 // Find group function handler for PGN
-
2340 tN2kGroupFunctionHandler *pGroupFunctionHandler;
-
2341 for ( pGroupFunctionHandler=pGroupFunctionHandlers; pGroupFunctionHandler!=0; pGroupFunctionHandler=pGroupFunctionHandler->pNext) {
-
2342 if ( pGroupFunctionHandler->PGN==PGNForGroupFunction ) {
-
2343 // For matching PGN we run handler and exit always
-
2344 pGroupFunctionHandler->Handle(N2kMsg,GroupFunctionCode, PGNForGroupFunction,iDev);
-
2345 return;
-
2346 } else if ( pGroupFunctionHandler->PGN==0 &&
-
2347 pGroupFunctionHandler->Handle(N2kMsg,GroupFunctionCode, PGNForGroupFunction,iDev)
-
2348 ) {
-
2349 // If handler PGN is 0, we try handler and exit, if it does it. Default handler has PGN=0, but
-
2350 // it is at end of list. This allows user to add handlers, which tries to handle all PGNs.
-
2351 return;
-
2352 }
-
2353 }
-
2354}
-
2355
-
2356//*****************************************************************************
-
2357// Document https://web.archive.org/web/20170609033039/http://www.nmea.org/Assets/20140109%20nmea-2000-corrigendum-tc201401031%20pgn%20126208.pdf
-
2358// defines that systems should respond to NMEA Request/Command/Acknowledge group function PGN 126208.
-
2359// On the document it is not clear can request be send as broadcast, so we handle it, if we can.
- -
2361 tN2kGroupFunctionCode GroupFunctionCode;
-
2362 unsigned long PGNForGroupFunction;
-
2363 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
-
2364
-
2365 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
-
2366
-
2367 if (!tN2kGroupFunctionHandler::Parse(N2kMsg,GroupFunctionCode,PGNForGroupFunction)) return;
-
2368 N2kMsgDbgStart("Group function: "); N2kMsgDbgln(PGNForGroupFunction);
-
2369 if ( tNMEA2000::IsBroadcast(N2kMsg.Destination) ) { // broadcast -> respond from all devices
-
2370 for (iDev=0; iDev<DeviceCount; iDev++) RespondGroupFunction(N2kMsg,GroupFunctionCode,PGNForGroupFunction,iDev);
-
2371 } else {
-
2372 RespondGroupFunction(N2kMsg,GroupFunctionCode,PGNForGroupFunction,iDev);
-
2373 }
-
2374}
-
2375#endif
-
2376
-
2377//*****************************************************************************
- -
2379 if ( IsReadyToSend() ) { // Start address claim automatically
- - -
2382 ForwardStream->print(F("Start address claim for device "));
-
2383 ForwardStream->println(iDev);
-
2384 }
-
2385 SendIsoAddressClaim(0xff,iDev);
- -
2387 }
-
2388}
-
2389
-
2390//*****************************************************************************
- -
2392 for (int i=0; i<DeviceCount; i++) {
-
2393 if ( Devices[i].N2kSource==N2kNullCanBusAddress ) GetNextAddress(i,true); // On restart try address claiming from the beginning
- -
2395 }
-
2396}
-
2397
-
2398//*****************************************************************************
- -
2400 // Reset address claim after timeout
-
2401 bool result=Devices[iDev].AddressClaimTimer.IsEnabled();
-
2402 if ( result ) {
-
2403 if ( Devices[iDev].AddressClaimTimer.IsTime() ) {
- -
2405 result=false;
-
2406 // We have claimed our address, so save end source for next possible claim run.
- -
2408 }
-
2409 }
-
2410
-
2411 return result;
-
2412}
-
2413
-
2414//*****************************************************************************
- -
2416 int iDev=FindSourceDeviceIndex(N2kMsg.Source);
-
2417 if ( N2kMsg.Source==N2kNullCanBusAddress || iDev==-1 ) return; // if the address is not same as we have, we do nothing
-
2418
-
2419 int Index=0;
-
2420 uint64_t CallerName=N2kMsg.GetUInt64(Index);
-
2421
-
2422 if (Devices[iDev].DeviceInformation.GetName()<CallerName) { // We can keep our address, so just reclaim it
-
2423 SendIsoAddressClaim(0xff,iDev);
-
2424 } else { // we have to try an other address
-
2425 if ( Devices[iDev].DeviceInformation.GetName()==CallerName && IsAddressClaimStarted(iDev) ) {
-
2426 // If the name is same, then the first instance will get claim and change its address.
-
2427 // This should not happen, if user takes care of setting unique ID for device information.
-
2428 // If he does not there is no problem with this class, but e.g. Garmin gets crazy.
-
2429 // Try to solve situation by changing our device instance.
-
2430 Devices[iDev].DeviceInformation.SetDeviceInstance(Devices[iDev].DeviceInformation.GetDeviceInstance()+1);
- -
2432 } else {
-
2433 GetNextAddress(iDev);
-
2434 }
-
2435 StartAddressClaim(iDev);
-
2436 }
-
2437}
-
2438
-
2439//*****************************************************************************
-
2440void tNMEA2000::HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev) {
-
2441 if ( IsBroadcast(NewAddress) ) return;
-
2442 if (Devices[iDev].DeviceInformation.GetName() == CommandedName &&
-
2443 Devices[iDev].N2kSource!=NewAddress) { // We have been commanded to set our address
-
2444 Devices[iDev].N2kSource=NewAddress;
- -
2446 StartAddressClaim(iDev);
-
2447 AddressChanged=true;
-
2448 }
-
2449}
-
2450
-
2451//*****************************************************************************
- -
2453 N2kMsgDbgStart(" Commanded address:"); N2kMsgDbgln(N2kMsg.Destination);
-
2454
-
2455 if ( N2kMsg.PGN!=65240L || !N2kMsg.IsTPMessage() || N2kMsg.DataLen!=9 ) return;
-
2456
-
2457 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
-
2458 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
-
2459
-
2460 int Index=0;
-
2461 uint64_t CommandedName=N2kMsg.GetUInt64(Index);
-
2462 unsigned char NewAddress=N2kMsg.GetByte(Index);
-
2463 if ( NewAddress>=252 ) return;
-
2464
-
2465 if ( iDev==-1 ) {
-
2466 for (iDev=0; iDev<DeviceCount; iDev++) HandleCommandedAddress(CommandedName,NewAddress,iDev);
-
2467 } else {
-
2468 HandleCommandedAddress(CommandedName,NewAddress,iDev);
-
2469 }
-
2470}
+
2161void tNMEA2000::SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP) {
+
2162#else
+
2163void tNMEA2000::SendRxPGNList(unsigned char Destination, int DeviceIndex) {
+
2164#endif
+
2165 if (Destination==0xff && DeviceIndex==-1) DeviceIndex=0;
+
2166
+
2167 if ( !IsValidDevice(DeviceIndex) ) return;
+
2168
+
2169 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
+
2170 unsigned long PGN;
+
2171
+
2172 RespondMsg.Destination=Destination;
+
2173 RespondMsg.SetPGN(126464L);
+
2174 RespondMsg.Priority=6;
+
2175#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2176 RespondMsg.SetIsTPMessage(UseTP);
+
2177#endif
+
2178 RespondMsg.AddByte(N2kpgnl_receive);
+
2179 // First add default messages
+
2180 size_t PGNCount=0;
+
2181 for (int i=0; (PGN=pgm_read_dword(&DefReceiveMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
+
2182 RespondMsg.Add3ByteInt(PGN);
+
2183 }
+
2184 if (Devices[DeviceIndex].ReceiveMessages!=0) {
+
2185 for (int i=0; (PGN=pgm_read_dword(&Devices[DeviceIndex].ReceiveMessages[i]))!=0 && PGNCount<MAX_PGNS_IN_LIST; i++, PGNCount++ ) {
+
2186 RespondMsg.Add3ByteInt(PGN);
+
2187 }
+
2188 }
+
2189 SendMsg(RespondMsg,DeviceIndex);
+
2190}
+
2191
+
2192//*****************************************************************************
+
2193void SetN2kPGN126996Progmem(tN2kMsg &N2kMsg, const tNMEA2000::tProductInformation *ProductInformation, char *OptionalSerialCode=0) {
+
2194 int i;
+
2195
+
2196 N2kMsg.SetPGN(126996L);
+
2197 N2kMsg.Priority=6;
+
2198 N2kMsg.Add2ByteInt(pgm_read_word(&ProductInformation->N2kVersion));
+
2199 N2kMsg.Add2ByteInt(pgm_read_word(&ProductInformation->ProductCode));
+
2200 for (i=0; i<Max_N2kModelID_len && pgm_read_byte(&ProductInformation->N2kModelID[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelID[i])); }
+
2201 for (; i<Max_N2kModelID_len; i++ ) { N2kMsg.AddByte(0xff); }
+
2202 for (i=0; i<Max_N2kSwCode_len && pgm_read_byte(&ProductInformation->N2kSwCode[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kSwCode[i])); }
+
2203 for (; i<Max_N2kSwCode_len; i++ ) { N2kMsg.AddByte(0xff); }
+
2204 for (i=0; i<Max_N2kModelVersion_len && pgm_read_byte(&ProductInformation->N2kModelVersion[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelVersion[i])); }
+
2205 for (; i<Max_N2kModelVersion_len; i++ ) { N2kMsg.AddByte(0xff); }
+
2206 if (OptionalSerialCode) {
+
2207 for (i=0; i<Max_N2kModelSerialCode_len && OptionalSerialCode[i]; i++ ) { N2kMsg.AddByte(OptionalSerialCode[i]); }
+
2208 } else {
+
2209 for (i=0; i<Max_N2kModelSerialCode_len && pgm_read_byte(&ProductInformation->N2kModelSerialCode[i]); i++ ) { N2kMsg.AddByte(pgm_read_byte(&ProductInformation->N2kModelSerialCode[i])); }
+
2210 }
+
2211 for (; i<Max_N2kModelSerialCode_len; i++ ) { N2kMsg.AddByte(0xff); }
+
2212 N2kMsg.AddByte(pgm_read_byte(&ProductInformation->CertificationLevel));
+
2213 N2kMsg.AddByte(pgm_read_byte(&ProductInformation->LoadEquivalency));
+
2214}
+
2215
+
2216//*****************************************************************************
+
2217#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+ +
2219 return SendProductInformation(0xff,iDev,false);
+
2220}
+
2221
+
2222bool tNMEA2000::SendProductInformation(unsigned char Destination, int iDev, bool UseTP) {
+
2223#else
+
2224bool tNMEA2000::SendProductInformation(int iDev) {
+
2225#endif
+
2226 if ( !IsValidDevice(iDev) ) return false;
+
2227 tN2kMsg RespondMsg(Devices[iDev].N2kSource);
+
2228 int iPIDev=iDev;
+
2229
+
2230 if ( Devices[iPIDev].ProductInformation==0 ) iPIDev=0; // Use first device product information
+
2231 if ( Devices[iPIDev].ProductInformation==0 ) return false; // Can not do anything.
+
2232
+
2233 if ( Devices[iPIDev].ProductInformation==Devices[iPIDev].LocalProductInformation ) {
+
2234 SetN2kProductInformation(RespondMsg,Devices[iPIDev].ProductInformation->N2kVersion,
+ + + + + + + +
2242 } else {
+
2243 SetN2kPGN126996Progmem(RespondMsg,Devices[iPIDev].ProductInformation);
+
2244 }
+
2245#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2246 RespondMsg.Destination=Destination;
+
2247 RespondMsg.SetIsTPMessage(UseTP);
+
2248#endif
+
2249 if (SendMsg(RespondMsg,iDev) ) {
+ +
2251 return true;
+
2252 }
+
2253
+ +
2255 return false;
+
2256}
+
2257
+
2258//*****************************************************************************
+
2259#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+ +
2261 return SendConfigurationInformation(0xff,DeviceIndex,false);
+
2262}
+
2263
+
2264bool tNMEA2000::SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP) {
+
2265#else
+
2266bool tNMEA2000::SendConfigurationInformation(int DeviceIndex) {
+
2267#endif
+
2268 if ( !IsValidDevice(DeviceIndex) ) return false;
+
2269 tN2kMsg RespondMsg(Devices[DeviceIndex].N2kSource);
+
2270
+ + + + + + + + +
2279 } else { // No information provided, so respond not available
+
2280 SetN2kPGNISOAcknowledgement(RespondMsg,1,0xff,126998L);
+
2281 }
+
2282
+
2283#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2284 RespondMsg.Destination=Destination;
+
2285 RespondMsg.SetIsTPMessage(UseTP);
+
2286#endif
+
2287 if (SendMsg(RespondMsg,DeviceIndex) ) {
+ +
2289 return true;
+
2290 }
+
2291
+ +
2293 return false;
+
2294}
+
2295
+
2296//*****************************************************************************
+
2297void tNMEA2000::RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev) {
+
2298 if ( IsAddressClaimStarted(iDev) ) return; // We do not respond any queries during address claiming.
+
2299
+
2300 switch (RequestedPGN) {
+
2301 case 60928L: /*ISO Address Claim*/ // Someone is asking others to claim their addresses
+
2302 SendIsoAddressClaim(0xff,iDev);
+
2303 break;
+
2304 case 126464L:
+
2305 SendTxPGNList(N2kMsg.Source,iDev);
+
2306 SendRxPGNList(N2kMsg.Source,iDev);
+
2307 break;
+
2308 case 126996L: /* Product information */
+ +
2310 break;
+
2311 case 126998L: /* Configuration information */
+ +
2313 break;
+
2314 default:
+
2315 /* If user has established a handler */
+
2316 if (ISORqstHandler!=0) {
+
2317 /* and if it handled the request, we are done */
+
2318 if (ISORqstHandler(RequestedPGN,N2kMsg.Source,iDev)) {
+
2319 return;
+
2320 }
+
2321 }
+
2322
+
2323 tN2kMsg N2kMsgR;
+
2324 // No user handler, or there was one and it retured FALSE. Send NAK
+
2325 SetN2kPGNISOAcknowledgement(N2kMsgR,1,0xff,RequestedPGN);
+
2326 // Direct the response to original requester.
+
2327 N2kMsgR.Destination = N2kMsg.Source;
+
2328 SendMsg(N2kMsgR,iDev);
+
2329 }
+
2330}
+
2331
+
2332//*****************************************************************************
+ +
2334 unsigned long RequestedPGN;
+
2335 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
+
2336
+
2337 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
+
2338
+
2339 ParseN2kPGNISORequest(N2kMsg,RequestedPGN);
+
2340 N2kMsgDbgStart("ISO request: "); N2kMsgDbgln(RequestedPGN);
+
2341 if (tNMEA2000::IsBroadcast(N2kMsg.Destination)) { // broadcast -> respond from all devices
+
2342 for (iDev=0; iDev<DeviceCount; iDev++) RespondISORequest(N2kMsg,RequestedPGN,iDev);
+
2343 } else {
+
2344 RespondISORequest(N2kMsg,RequestedPGN,iDev);
+
2345 }
+
2346}
+
2347
+
2348#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
2349//*****************************************************************************
+
2350// Document https://web.archive.org/web/20170609033039/http://www.nmea.org/Assets/20140109%20nmea-2000-corrigendum-tc201401031%20pgn%20126208.pdf
+
2351// defines that systems should respond to NMEA Request/Command/Acknowledge group function PGN 126208.
+
2352// Here we first call callback and if that will not handle function, we use default handler.
+
2353void tNMEA2000::RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev) {
+
2354 // Find group function handler for PGN
+
2355 tN2kGroupFunctionHandler *pGroupFunctionHandler;
+
2356 for ( pGroupFunctionHandler=pGroupFunctionHandlers; pGroupFunctionHandler!=0; pGroupFunctionHandler=pGroupFunctionHandler->pNext) {
+
2357 if ( pGroupFunctionHandler->PGN==PGNForGroupFunction ) {
+
2358 // For matching PGN we run handler and exit always
+
2359 pGroupFunctionHandler->Handle(N2kMsg,GroupFunctionCode, PGNForGroupFunction,iDev);
+
2360 return;
+
2361 } else if ( pGroupFunctionHandler->PGN==0 &&
+
2362 pGroupFunctionHandler->Handle(N2kMsg,GroupFunctionCode, PGNForGroupFunction,iDev)
+
2363 ) {
+
2364 // If handler PGN is 0, we try handler and exit, if it does it. Default handler has PGN=0, but
+
2365 // it is at end of list. This allows user to add handlers, which tries to handle all PGNs.
+
2366 return;
+
2367 }
+
2368 }
+
2369}
+
2370
+
2371//*****************************************************************************
+
2372// Document https://web.archive.org/web/20170609033039/http://www.nmea.org/Assets/20140109%20nmea-2000-corrigendum-tc201401031%20pgn%20126208.pdf
+
2373// defines that systems should respond to NMEA Request/Command/Acknowledge group function PGN 126208.
+
2374// On the document it is not clear can request be send as broadcast, so we handle it, if we can.
+ +
2376 tN2kGroupFunctionCode GroupFunctionCode;
+
2377 unsigned long PGNForGroupFunction;
+
2378 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
+
2379
+
2380 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
+
2381
+
2382 if (!tN2kGroupFunctionHandler::Parse(N2kMsg,GroupFunctionCode,PGNForGroupFunction)) return;
+
2383 N2kMsgDbgStart("Group function: "); N2kMsgDbgln(PGNForGroupFunction);
+
2384 if ( tNMEA2000::IsBroadcast(N2kMsg.Destination) ) { // broadcast -> respond from all devices
+
2385 for (iDev=0; iDev<DeviceCount; iDev++) RespondGroupFunction(N2kMsg,GroupFunctionCode,PGNForGroupFunction,iDev);
+
2386 } else {
+
2387 RespondGroupFunction(N2kMsg,GroupFunctionCode,PGNForGroupFunction,iDev);
+
2388 }
+
2389}
+
2390#endif
+
2391
+
2392//*****************************************************************************
+ +
2394 if ( IsReadyToSend() ) { // Start address claim automatically
+ + +
2397 ForwardStream->print(F("Start address claim for device "));
+
2398 ForwardStream->println(iDev);
+
2399 }
+
2400 SendIsoAddressClaim(0xff,iDev);
+ +
2402 }
+
2403}
+
2404
+
2405//*****************************************************************************
+ +
2407 for (int i=0; i<DeviceCount; i++) {
+
2408 if ( Devices[i].N2kSource==N2kNullCanBusAddress ) GetNextAddress(i,true); // On restart try address claiming from the beginning
+ +
2410 }
+
2411}
+
2412
+
2413//*****************************************************************************
+ +
2415 // Reset address claim after timeout
+
2416 bool result=Devices[iDev].AddressClaimTimer.IsEnabled();
+
2417 if ( result ) {
+
2418 if ( Devices[iDev].AddressClaimTimer.IsTime() ) {
+ +
2420 result=false;
+
2421 // We have claimed our address, so save end source for next possible claim run.
+ +
2423 }
+
2424 }
+
2425
+
2426 return result;
+
2427}
+
2428
+
2429//*****************************************************************************
+ +
2431 int iDev=FindSourceDeviceIndex(N2kMsg.Source);
+
2432 if ( N2kMsg.Source==N2kNullCanBusAddress || iDev==-1 ) return; // if the address is not same as we have, we do nothing
+
2433
+
2434 int Index=0;
+
2435 uint64_t CallerName=N2kMsg.GetUInt64(Index);
+
2436
+
2437 if (Devices[iDev].DeviceInformation.GetName()<CallerName) { // We can keep our address, so just reclaim it
+
2438 SendIsoAddressClaim(0xff,iDev);
+
2439 } else { // we have to try an other address
+
2440 if ( Devices[iDev].DeviceInformation.GetName()==CallerName && IsAddressClaimStarted(iDev) ) {
+
2441 // If the name is same, then the first instance will get claim and change its address.
+
2442 // This should not happen, if user takes care of setting unique ID for device information.
+
2443 // If he does not there is no problem with this class, but e.g. Garmin gets crazy.
+
2444 // Try to solve situation by changing our device instance.
+
2445 Devices[iDev].DeviceInformation.SetDeviceInstance(Devices[iDev].DeviceInformation.GetDeviceInstance()+1);
+ +
2447 } else {
+
2448 GetNextAddress(iDev);
+
2449 }
+
2450 StartAddressClaim(iDev);
+
2451 }
+
2452}
+
2453
+
2454//*****************************************************************************
+
2455void tNMEA2000::HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev) {
+
2456 if ( IsBroadcast(NewAddress) ) return;
+
2457 if (Devices[iDev].DeviceInformation.GetName() == CommandedName &&
+
2458 Devices[iDev].N2kSource!=NewAddress) { // We have been commanded to set our address
+
2459 Devices[iDev].N2kSource=NewAddress;
+ +
2461 StartAddressClaim(iDev);
+
2462 AddressChanged=true;
+
2463 }
+
2464}
+
2465
+
2466//*****************************************************************************
+ +
2468 N2kMsgDbgStart(" Commanded address:"); N2kMsgDbgln(N2kMsg.Destination);
+
2469
+
2470 if ( N2kMsg.PGN!=65240L || !N2kMsg.IsTPMessage() || N2kMsg.DataLen!=9 ) return;
2471
-
2472//*****************************************************************************
-
2473void tNMEA2000::SetN2kSource(unsigned char _iAddr, int _iDev) {
-
2474 if ( !IsValidDevice(_iDev) || IsInitialized() ) return;
-
2475 InitDevices();
-
2476 Devices[_iDev].N2kSource= _iAddr;
- -
2478}
+
2472 int iDev=FindSourceDeviceIndex(N2kMsg.Destination);
+
2473 if ( !tNMEA2000::IsBroadcast(N2kMsg.Destination) && iDev==-1) return; // if destination is not for us, we do nothing
+
2474
+
2475 int Index=0;
+
2476 uint64_t CommandedName=N2kMsg.GetUInt64(Index);
+
2477 unsigned char NewAddress=N2kMsg.GetByte(Index);
+
2478 if ( NewAddress>=252 ) return;
2479
-
2480//*****************************************************************************
- -
2482 bool result=AddressChanged;
-
2483
-
2484 AddressChanged=false;
-
2485 return result;
-
2486}
-
2487
-
2488//*****************************************************************************
- -
2490 bool result=DeviceInformationChanged;
-
2491
- -
2493 return result;
-
2494}
-
2495
-
2496//*****************************************************************************
-
2497void tNMEA2000::GetNextAddress(int DeviceIndex, bool RestartAtEnd) {
-
2498 bool FoundSame;
-
2499 // Currently simply add address
-
2500 // Note that 251 is the last source. We do not send data if address is higher than that.
-
2501
-
2502 do {
-
2503 if ( Devices[DeviceIndex].N2kSource==N2kNullCanBusAddress ) {
-
2504 if ( RestartAtEnd ) {
-
2505 // For null address start from beginning.
-
2506 Devices[DeviceIndex].N2kSource=14;
-
2507 Devices[DeviceIndex].UpdateAddressClaimEndSource();
-
2508 } else return;
-
2509 } else if (Devices[DeviceIndex].N2kSource!=Devices[DeviceIndex].AddressClaimEndSource) {
-
2510 Devices[DeviceIndex].N2kSource++;
-
2511 // Roll to start?
-
2512 if ( Devices[DeviceIndex].N2kSource>N2kMaxCanBusAddress ) Devices[DeviceIndex].N2kSource=0;
-
2513 } else {
-
2514 Devices[DeviceIndex].N2kSource=N2kNullCanBusAddress; // Force null address = cannot claim address
-
2515 AddressChanged=true;
-
2516 return;
-
2517 }
-
2518 FoundSame=false;
-
2519 // Check that we do not have same on our list
-
2520 for (int i=0; i<DeviceCount && !FoundSame; i++) {
-
2521 if (i!=DeviceIndex) FoundSame=(Devices[DeviceIndex].N2kSource==Devices[i].N2kSource);
-
2522 }
-
2523 } while (FoundSame);
-
2524 AddressChanged=true;
-
2525}
-
2526
-
2527//*****************************************************************************
- -
2529 bool result=false;
-
2530
-
2531 if ( N2kMode==N2km_SendOnly || N2kMode==N2km_ListenAndSend ) return result;
-
2532
-
2533 if ( N2kCANMsgBuf[MsgIndex].SystemMessage ) {
-
2534 if ( ForwardSystemMessages() ) ForwardMessage(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2535 if ( N2kMode!=N2km_ListenOnly ) { // Note that in listen only mode we will not inform us to the bus
-
2536 switch (N2kCANMsgBuf[MsgIndex].N2kMsg.PGN) {
-
2537 case 59392L: /*ISO Acknowledgement*/
-
2538 break;
-
2539 case 59904L: /*ISO Request*/
-
2540 HandleISORequest(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2541 break;
-
2542 case 60928L: /*ISO Address Claim*/
-
2543 HandleISOAddressClaim(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2544 break;
-
2545 case 65240L: /*Commanded Address*/
-
2546 HandleCommandedAddress(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2547 break;
-
2548#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
2549 case 126208L: /*NMEA Request/Command/Acknowledge group function*/
-
2550 HandleGroupFunction(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2551 break;
-
2552#endif
-
2553 }
-
2554 }
-
2555 result=true;
-
2556 }
-
2557
-
2558 return result;
-
2559}
-
2560
-
2561//*****************************************************************************
- -
2563 unsigned long canId;
-
2564 unsigned char len = 0;
-
2565 unsigned char buf[8];
-
2566 uint8_t MsgIndex;
-
2567 static const int MaxReadFramesOnParse=20;
-
2568 int FramesRead=0;
-
2569// tN2kMsg N2kMsg;
-
2570
-
2571 if ( OpenState!=os_Open ) {
-
2572 if ( !(Open() && OpenState==os_Open) ) return; // Can not do much
-
2573 }
-
2574
-
2575 if (dbMode != dm_None) return; // No much to do here, when in Debug mode
-
2576
-
2577 SendFrames();
- -
2579#if defined(DEBUG_NMEA2000_ISR)
-
2580 TestISR();
-
2581#endif
-
2582
-
2583 while (FramesRead<MaxReadFramesOnParse && CANGetFrame(canId,len,buf) ) { // check if data coming
-
2584 FramesRead++;
-
2585 N2kMsgDbgStart("Received frame, can ID:"); N2kMsgDbg(canId); N2kMsgDbg(" len:"); N2kMsgDbg(len); N2kMsgDbg(" data:"); DbgPrintBuf(len,buf,false); N2kMsgDbgln();
-
2586 MsgIndex=SetN2kCANBufMsg(canId,len,buf);
-
2587 if (MsgIndex<MaxN2kCANMsgs) {
-
2588 if ( !HandleReceivedSystemMessage(MsgIndex) ) {
-
2589 N2kMsgDbgStart(" - Non system message, MsgIndex: "); N2kMsgDbgln(MsgIndex);
-
2590 ForwardMessage(N2kCANMsgBuf[MsgIndex]);
-
2591 }
-
2592// N2kCANMsgBuf[MsgIndex].N2kMsg.Print(Serial);
-
2593 RunMessageHandlers(N2kCANMsgBuf[MsgIndex].N2kMsg);
-
2594 N2kCANMsgBuf[MsgIndex].FreeMessage();
-
2595 N2kMsgDbgStart(" - Free message, MsgIndex: "); N2kMsgDbg(MsgIndex); N2kMsgDbgln();
-
2596 }
-
2597 }
-
2598
-
2599#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
2600 SendHeartbeat();
-
2601#endif
-
2602}
-
2603
-
2604//*****************************************************************************
- -
2606 if ( MsgHandler!=0 ) MsgHandler(N2kMsg);
-
2607
- -
2609 // Loop through all pgn handlers
-
2610 for ( ;MsgHandler!=0 && MsgHandler->GetPGN()==0; MsgHandler=MsgHandler->pNext) MsgHandler->HandleMsg(N2kMsg);
-
2611 // Loop through specific pgn handlers
-
2612 for ( ;MsgHandler!=0 && MsgHandler->GetPGN()<=N2kMsg.PGN; MsgHandler=MsgHandler->pNext) {
-
2613 if ( MsgHandler->GetPGN()==N2kMsg.PGN ) MsgHandler->HandleMsg(N2kMsg);
-
2614 }
-
2615}
-
2616
-
2617//*****************************************************************************
-
2618void tNMEA2000::SetOnOpen(void (*_OnOpen)()) {
-
2619 OnOpen=_OnOpen;
-
2620}
-
2621
-
2622//*****************************************************************************
-
2623void tNMEA2000::SetMsgHandler(void (*_MsgHandler)(const tN2kMsg &N2kMsg)) {
-
2624 MsgHandler=_MsgHandler;
-
2625}
-
2626
-
2627//*****************************************************************************
- -
2629 if ( _MsgHandler==0 ) return;
-
2630
-
2631 if ( _MsgHandler->pNMEA2000==this ) return; // Already attached
-
2632
-
2633 DetachMsgHandler(_MsgHandler);
-
2634
-
2635 if ( MsgHandlers==0 ) {
-
2636 MsgHandlers=_MsgHandler;
-
2637 } else {
- -
2639 if ( MsgHandler->GetPGN()>_MsgHandler->GetPGN() ) { // Add to first
-
2640 _MsgHandler->pNext=MsgHandler;
-
2641 MsgHandlers=_MsgHandler;
-
2642 } else {
-
2643 for ( ; MsgHandler->pNext!=0 && MsgHandler->pNext->GetPGN()<_MsgHandler->GetPGN(); MsgHandler=MsgHandler->pNext );
-
2644 _MsgHandler->pNext=MsgHandler->pNext;
-
2645 MsgHandler->pNext=_MsgHandler;
-
2646 }
-
2647 }
-
2648
-
2649 _MsgHandler->pNMEA2000=this;
-
2650}
-
2651
-
2652//*****************************************************************************
- -
2654 if ( _MsgHandler==0 || _MsgHandler->pNMEA2000==0 ) return;
-
2655
-
2656 tMsgHandler *MsgHandler=_MsgHandler->pNMEA2000->MsgHandlers;
-
2657
-
2658 if ( MsgHandler==_MsgHandler ) { // Is this at first
-
2659 _MsgHandler->pNMEA2000->MsgHandlers=MsgHandler->pNext;
-
2660 } else {
-
2661 for ( ; MsgHandler!=0 && MsgHandler->pNext!=_MsgHandler; MsgHandler=MsgHandler->pNext );
-
2662 if ( MsgHandler!=0 ) MsgHandler->pNext=_MsgHandler->pNext;
-
2663 }
-
2664 _MsgHandler->pNext=0;
-
2665 _MsgHandler->pNMEA2000=0;
-
2666}
-
2667
-
2668//*****************************************************************************
-
2669void tNMEA2000::SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)) {
-
2670 ISORqstHandler=ISORequestHandler;
-
2671}
+
2480 if ( iDev==-1 ) {
+
2481 for (iDev=0; iDev<DeviceCount; iDev++) HandleCommandedAddress(CommandedName,NewAddress,iDev);
+
2482 } else {
+
2483 HandleCommandedAddress(CommandedName,NewAddress,iDev);
+
2484 }
+
2485}
+
2486
+
2487//*****************************************************************************
+
2488void tNMEA2000::SetN2kSource(unsigned char _iAddr, int _iDev) {
+
2489 if ( !IsValidDevice(_iDev) || IsInitialized() ) return;
+
2490 InitDevices();
+
2491 Devices[_iDev].N2kSource= _iAddr;
+ +
2493}
+
2494
+
2495//*****************************************************************************
+ +
2497 bool result=AddressChanged;
+
2498
+
2499 AddressChanged=false;
+
2500 return result;
+
2501}
+
2502
+
2503//*****************************************************************************
+ +
2505 bool result=DeviceInformationChanged;
+
2506
+ +
2508 return result;
+
2509}
+
2510
+
2511//*****************************************************************************
+
2512void tNMEA2000::GetNextAddress(int DeviceIndex, bool RestartAtEnd) {
+
2513 bool FoundSame;
+
2514 // Currently simply add address
+
2515 // Note that 251 is the last source. We do not send data if address is higher than that.
+
2516
+
2517 do {
+
2518 if ( Devices[DeviceIndex].N2kSource==N2kNullCanBusAddress ) {
+
2519 if ( RestartAtEnd ) {
+
2520 // For null address start from beginning.
+
2521 Devices[DeviceIndex].N2kSource=14;
+
2522 Devices[DeviceIndex].UpdateAddressClaimEndSource();
+
2523 } else return;
+
2524 } else if (Devices[DeviceIndex].N2kSource!=Devices[DeviceIndex].AddressClaimEndSource) {
+
2525 Devices[DeviceIndex].N2kSource++;
+
2526 // Roll to start?
+
2527 if ( Devices[DeviceIndex].N2kSource>N2kMaxCanBusAddress ) Devices[DeviceIndex].N2kSource=0;
+
2528 } else {
+
2529 Devices[DeviceIndex].N2kSource=N2kNullCanBusAddress; // Force null address = cannot claim address
+
2530 AddressChanged=true;
+
2531 return;
+
2532 }
+
2533 FoundSame=false;
+
2534 // Check that we do not have same on our list
+
2535 for (int i=0; i<DeviceCount && !FoundSame; i++) {
+
2536 if (i!=DeviceIndex) FoundSame=(Devices[DeviceIndex].N2kSource==Devices[i].N2kSource);
+
2537 }
+
2538 } while (FoundSame);
+
2539 AddressChanged=true;
+
2540}
+
2541
+
2542//*****************************************************************************
+ +
2544 bool result=false;
+
2545
+
2546 if ( N2kMode==N2km_SendOnly || N2kMode==N2km_ListenAndSend ) return result;
+
2547
+
2548 if ( N2kCANMsgBuf[MsgIndex].SystemMessage ) {
+
2549 if ( ForwardSystemMessages() ) ForwardMessage(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2550 if ( N2kMode!=N2km_ListenOnly ) { // Note that in listen only mode we will not inform us to the bus
+
2551 switch (N2kCANMsgBuf[MsgIndex].N2kMsg.PGN) {
+
2552 case 59392L: /*ISO Acknowledgement*/
+
2553 break;
+
2554 case 59904L: /*ISO Request*/
+
2555 HandleISORequest(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2556 break;
+
2557 case 60928L: /*ISO Address Claim*/
+
2558 HandleISOAddressClaim(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2559 break;
+
2560 case 65240L: /*Commanded Address*/
+
2561 HandleCommandedAddress(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2562 break;
+
2563#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
2564 case 126208L: /*NMEA Request/Command/Acknowledge group function*/
+
2565 HandleGroupFunction(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2566 break;
+
2567#endif
+
2568 }
+
2569 }
+
2570 result=true;
+
2571 }
+
2572
+
2573 return result;
+
2574}
+
2575
+
2576//*****************************************************************************
+ +
2578 unsigned long canId;
+
2579 unsigned char len = 0;
+
2580 unsigned char buf[8];
+
2581 uint8_t MsgIndex;
+
2582 static const int MaxReadFramesOnParse=20;
+
2583 int FramesRead=0;
+
2584// tN2kMsg N2kMsg;
+
2585
+
2586 if ( OpenState!=os_Open ) {
+
2587 if ( !(Open() && OpenState==os_Open) ) return; // Can not do much
+
2588 }
+
2589
+
2590 if (dbMode != dm_None) return; // No much to do here, when in Debug mode
+
2591
+
2592 SendFrames();
+ +
2594#if defined(DEBUG_NMEA2000_ISR)
+
2595 TestISR();
+
2596#endif
+
2597
+
2598 while (FramesRead<MaxReadFramesOnParse && CANGetFrame(canId,len,buf) ) { // check if data coming
+
2599 FramesRead++;
+
2600 N2kMsgDbgStart("Received frame, can ID:"); N2kMsgDbg(canId); N2kMsgDbg(" len:"); N2kMsgDbg(len); N2kMsgDbg(" data:"); DbgPrintBuf(len,buf,false); N2kMsgDbgln();
+
2601 MsgIndex=SetN2kCANBufMsg(canId,len,buf);
+
2602 if (MsgIndex<MaxN2kCANMsgs) {
+
2603 if ( !HandleReceivedSystemMessage(MsgIndex) ) {
+
2604 N2kMsgDbgStart(" - Non system message, MsgIndex: "); N2kMsgDbgln(MsgIndex);
+
2605 ForwardMessage(N2kCANMsgBuf[MsgIndex]);
+
2606 }
+
2607// N2kCANMsgBuf[MsgIndex].N2kMsg.Print(Serial);
+
2608 RunMessageHandlers(N2kCANMsgBuf[MsgIndex].N2kMsg);
+
2609 N2kCANMsgBuf[MsgIndex].FreeMessage();
+
2610 N2kMsgDbgStart(" - Free message, MsgIndex: "); N2kMsgDbg(MsgIndex); N2kMsgDbgln();
+
2611 }
+
2612 }
+
2613
+
2614#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
2615 SendHeartbeat();
+
2616#endif
+
2617}
+
2618
+
2619//*****************************************************************************
+ +
2621 if ( MsgHandler!=0 ) MsgHandler(N2kMsg);
+
2622
+ +
2624 // Loop through all pgn handlers
+
2625 for ( ;MsgHandler!=0 && MsgHandler->GetPGN()==0; MsgHandler=MsgHandler->pNext) MsgHandler->HandleMsg(N2kMsg);
+
2626 // Loop through specific pgn handlers
+
2627 for ( ;MsgHandler!=0 && MsgHandler->GetPGN()<=N2kMsg.PGN; MsgHandler=MsgHandler->pNext) {
+
2628 if ( MsgHandler->GetPGN()==N2kMsg.PGN ) MsgHandler->HandleMsg(N2kMsg);
+
2629 }
+
2630}
+
2631
+
2632//*****************************************************************************
+
2633void tNMEA2000::SetOnOpen(void (*_OnOpen)()) {
+
2634 OnOpen=_OnOpen;
+
2635}
+
2636
+
2637//*****************************************************************************
+
2638void tNMEA2000::SetMsgHandler(void (*_MsgHandler)(const tN2kMsg &N2kMsg)) {
+
2639 MsgHandler=_MsgHandler;
+
2640}
+
2641
+
2642//*****************************************************************************
+ +
2644 if ( _MsgHandler==0 ) return;
+
2645
+
2646 if ( _MsgHandler->pNMEA2000==this ) return; // Already attached
+
2647
+
2648 DetachMsgHandler(_MsgHandler);
+
2649
+
2650 if ( MsgHandlers==0 ) {
+
2651 MsgHandlers=_MsgHandler;
+
2652 } else {
+ +
2654 if ( MsgHandler->GetPGN()>_MsgHandler->GetPGN() ) { // Add to first
+
2655 _MsgHandler->pNext=MsgHandler;
+
2656 MsgHandlers=_MsgHandler;
+
2657 } else {
+
2658 for ( ; MsgHandler->pNext!=0 && MsgHandler->pNext->GetPGN()<_MsgHandler->GetPGN(); MsgHandler=MsgHandler->pNext );
+
2659 _MsgHandler->pNext=MsgHandler->pNext;
+
2660 MsgHandler->pNext=_MsgHandler;
+
2661 }
+
2662 }
+
2663
+
2664 _MsgHandler->pNMEA2000=this;
+
2665}
+
2666
+
2667//*****************************************************************************
+ +
2669 if ( _MsgHandler==0 || _MsgHandler->pNMEA2000==0 ) return;
+
2670
+
2671 tMsgHandler *MsgHandler=_MsgHandler->pNMEA2000->MsgHandlers;
2672
-
2673#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
2674//*****************************************************************************
- -
2676 if (pGroupFunctionHandler==0 || pGroupFunctionHandlers==0 ) return;
-
2677
-
2678 tN2kGroupFunctionHandler* pPrevGroupFunctionHandler=pGroupFunctionHandlers;
-
2679 // Handle, if first
-
2680 if ( pPrevGroupFunctionHandler==pGroupFunctionHandler ) {
-
2681 pGroupFunctionHandlers=pPrevGroupFunctionHandler->pNext;
-
2682 } else {
-
2683 for ( ;pPrevGroupFunctionHandler!=0 && pPrevGroupFunctionHandler->pNext!=pGroupFunctionHandler;
-
2684 pPrevGroupFunctionHandler = pPrevGroupFunctionHandler->pNext);
-
2685 if ( pPrevGroupFunctionHandler!=0 && pPrevGroupFunctionHandler->pNext==pGroupFunctionHandler ) {
-
2686 pPrevGroupFunctionHandler->pNext=pGroupFunctionHandler->pNext;
-
2687 }
-
2688 }
-
2689 pGroupFunctionHandler->pNext=0;
-
2690}
-
2691
-
2692//*****************************************************************************
- -
2694 if (pGroupFunctionHandler==0) return;
-
2695 RemoveGroupFunctionHandler(pGroupFunctionHandler);
-
2696 // Add to the end on the list
-
2697 if ( pGroupFunctionHandlers==0 ) { // If there is none set, put it to first
-
2698 pGroupFunctionHandlers=pGroupFunctionHandler;
-
2699 } else {
-
2700 tN2kGroupFunctionHandler* pLastGroupFunctionHandler;
-
2701 // find last
-
2702 for (pLastGroupFunctionHandler = pGroupFunctionHandlers;
-
2703 pLastGroupFunctionHandler->pNext != 0 && pLastGroupFunctionHandler->pNext->PGN != 0;
-
2704 pLastGroupFunctionHandler = pLastGroupFunctionHandler->pNext);
-
2705 // Insert the new handler before the default handler if the default handler is present.
-
2706 if ( pLastGroupFunctionHandler->pNext != 0 && pLastGroupFunctionHandler->pNext->PGN == 0 ) {
-
2707 pGroupFunctionHandler->pNext = pLastGroupFunctionHandler->pNext;
-
2708 }
-
2709 // Add the new handler to the list.
-
2710 pLastGroupFunctionHandler->pNext = pGroupFunctionHandler;
-
2711 }
-
2712}
-
2713#endif
-
2714
-
2715//*****************************************************************************
-
2717void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN) {
-
2718 N2kMsg.SetPGN(59392L);
-
2719 N2kMsg.Priority=6;
-
2720
-
2721 N2kMsg.AddByte(Control);
-
2722 N2kMsg.AddByte(GroupFunction);
-
2723 N2kMsg.AddByte(0xff); // Reserved
-
2724 N2kMsg.AddByte(0xff); // Reserved
-
2725 N2kMsg.AddByte(0xff); // Reserved
-
2726 N2kMsg.Add3ByteInt(PGN);
+
2673 if ( MsgHandler==_MsgHandler ) { // Is this at first
+
2674 _MsgHandler->pNMEA2000->MsgHandlers=MsgHandler->pNext;
+
2675 } else {
+
2676 for ( ; MsgHandler!=0 && MsgHandler->pNext!=_MsgHandler; MsgHandler=MsgHandler->pNext );
+
2677 if ( MsgHandler!=0 ) MsgHandler->pNext=_MsgHandler->pNext;
+
2678 }
+
2679 _MsgHandler->pNext=0;
+
2680 _MsgHandler->pNMEA2000=0;
+
2681}
+
2682
+
2683//*****************************************************************************
+
2684void tNMEA2000::SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)) {
+
2685 ISORqstHandler=ISORequestHandler;
+
2686}
+
2687
+
2688#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
2689//*****************************************************************************
+ +
2691 if (pGroupFunctionHandler==0 || pGroupFunctionHandlers==0 ) return;
+
2692
+
2693 tN2kGroupFunctionHandler* pPrevGroupFunctionHandler=pGroupFunctionHandlers;
+
2694 // Handle, if first
+
2695 if ( pPrevGroupFunctionHandler==pGroupFunctionHandler ) {
+
2696 pGroupFunctionHandlers=pPrevGroupFunctionHandler->pNext;
+
2697 } else {
+
2698 for ( ;pPrevGroupFunctionHandler!=0 && pPrevGroupFunctionHandler->pNext!=pGroupFunctionHandler;
+
2699 pPrevGroupFunctionHandler = pPrevGroupFunctionHandler->pNext);
+
2700 if ( pPrevGroupFunctionHandler!=0 && pPrevGroupFunctionHandler->pNext==pGroupFunctionHandler ) {
+
2701 pPrevGroupFunctionHandler->pNext=pGroupFunctionHandler->pNext;
+
2702 }
+
2703 }
+
2704 pGroupFunctionHandler->pNext=0;
+
2705}
+
2706
+
2707//*****************************************************************************
+ +
2709 if (pGroupFunctionHandler==0) return;
+
2710 RemoveGroupFunctionHandler(pGroupFunctionHandler);
+
2711 // Add to the end on the list
+
2712 if ( pGroupFunctionHandlers==0 ) { // If there is none set, put it to first
+
2713 pGroupFunctionHandlers=pGroupFunctionHandler;
+
2714 } else {
+
2715 tN2kGroupFunctionHandler* pLastGroupFunctionHandler;
+
2716 // find last
+
2717 for (pLastGroupFunctionHandler = pGroupFunctionHandlers;
+
2718 pLastGroupFunctionHandler->pNext != 0 && pLastGroupFunctionHandler->pNext->PGN != 0;
+
2719 pLastGroupFunctionHandler = pLastGroupFunctionHandler->pNext);
+
2720 // Insert the new handler before the default handler if the default handler is present.
+
2721 if ( pLastGroupFunctionHandler->pNext != 0 && pLastGroupFunctionHandler->pNext->PGN == 0 ) {
+
2722 pGroupFunctionHandler->pNext = pLastGroupFunctionHandler->pNext;
+
2723 }
+
2724 // Add the new handler to the list.
+
2725 pLastGroupFunctionHandler->pNext = pGroupFunctionHandler;
+
2726 }
2727}
-
2728
-
2729//*****************************************************************************
-
2730// ISO Address Claim
-
2731void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
-
2732 unsigned char DeviceFunction, unsigned char DeviceClass,
-
2733 unsigned char DeviceInstance, unsigned char SystemInstance, unsigned char IndustryGroup
-
2734 ) {
- -
2736 N2kMsg.Priority=6;
-
2737
-
2738 N2kMsg.Add4ByteUInt((UniqueNumber&0x1FFFFF) | ((unsigned long)(ManufacturerCode&0x7ff))<<21);
-
2739 N2kMsg.AddByte(DeviceInstance);
-
2740 N2kMsg.AddByte(DeviceFunction);
-
2741 N2kMsg.AddByte((DeviceClass&0x7f)<<1);
-
2742 N2kMsg.AddByte( 0x80 | ((IndustryGroup&0x7)<<4) | (SystemInstance&0x0f) );
-
2743}
-
2744
-
2745//*****************************************************************************
-
2746// ISO Address Claim
-
2747void SetN2kPGN60928(tN2kMsg &N2kMsg, uint64_t Name) {
- -
2749 N2kMsg.Priority=6;
-
2750
-
2751 N2kMsg.AddUInt64(Name);
-
2752}
-
2753
-
2754//*****************************************************************************
-
2755// Product Information
-
2756void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
-
2757 const char *ModelID, const char *SwCode,
-
2758 const char *ModelVersion, const char *ModelSerialCode,
-
2759 unsigned char CertificationLevel, unsigned char LoadEquivalency) {
-
2760
- -
2762 N2kMsg.Priority=6;
-
2763 N2kMsg.Add2ByteUInt(N2kVersion);
-
2764 N2kMsg.Add2ByteUInt(ProductCode);
-
2765 N2kMsg.AddStr(ModelID, Max_N2kModelID_len);
-
2766 N2kMsg.AddStr(SwCode, Max_N2kSwCode_len);
-
2767 N2kMsg.AddStr(ModelVersion, Max_N2kModelVersion_len);
-
2768 N2kMsg.AddStr(ModelSerialCode, Max_N2kModelSerialCode_len);
-
2769 N2kMsg.AddByte(CertificationLevel);
-
2770 N2kMsg.AddByte(LoadEquivalency);
-
2771}
-
2772
-
2773bool ParseN2kPGN126996(const tN2kMsg& N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode,
-
2774 int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode,
-
2775 int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode,
-
2776 unsigned char &CertificationLevel, unsigned char &LoadEquivalency) {
-
2777 if (N2kMsg.PGN!=N2kPGNProductInformation) return false;
-
2778
-
2779 int Index=0;
-
2780 N2kVersion=N2kMsg.Get2ByteUInt(Index);
-
2781 ProductCode=N2kMsg.Get2ByteUInt(Index);
-
2782 N2kMsg.GetStr(ModelIDSize,ModelID,Max_N2kModelID_len,0xff,Index);
-
2783 N2kMsg.GetStr(SwCodeSize,SwCode,Max_N2kSwCode_len,0xff,Index);
-
2784 N2kMsg.GetStr(ModelVersionSize,ModelVersion,Max_N2kModelVersion_len,0xff,Index);
-
2785 N2kMsg.GetStr(ModelSerialCodeSize,ModelSerialCode,Max_N2kModelSerialCode_len,0xff,Index);
-
2786 CertificationLevel=N2kMsg.GetByte(Index);
-
2787 LoadEquivalency=N2kMsg.GetByte(Index);
-
2788
-
2789 return true;
-
2790}
-
2791
-
2792//*****************************************************************************
-
2793size_t ProgmemStrLen(const char *str) {
-
2794 size_t len;
-
2795 if (str==0) return 0;
-
2796 for (len=0; pgm_read_byte(&(str[len]))!=0; len++ );
-
2797 return len;
-
2798}
-
2799
-
2800//*****************************************************************************
-
2801size_t StrLen(const char *str) {
-
2802 if (str==0) return 0;
-
2803 return strlen(str);
-
2804}
-
2805
-
2806//*****************************************************************************
-
2807// Configuration information
- -
2809 const char *ManufacturerInformation,
-
2810 const char *InstallationDescription1,
-
2811 const char *InstallationDescription2,
-
2812 bool UsePgm) {
-
2813 size_t TotalLen;
-
2814 size_t MaxLen=tN2kMsg::MaxDataLen-6; // Each field has 2 extra bytes
-
2815 size_t ManInfoLen;
-
2816 size_t InstDesc1Len;
-
2817 size_t InstDesc2Len;
-
2818
-
2819 if ( UsePgm ) {
-
2820 ManInfoLen=ProgmemStrLen(ManufacturerInformation);
-
2821 InstDesc1Len=ProgmemStrLen(InstallationDescription1);
-
2822 InstDesc2Len=ProgmemStrLen(InstallationDescription2);
-
2823 } else {
-
2824 ManInfoLen=StrLen(ManufacturerInformation);
-
2825 InstDesc1Len=StrLen(InstallationDescription1);
-
2826 InstDesc2Len=StrLen(InstallationDescription2);
-
2827 }
-
2828
- - - -
2832
-
2833 TotalLen=0;
-
2834 if (TotalLen+ManInfoLen>MaxLen) ManInfoLen=MaxLen-TotalLen;
-
2835 TotalLen+=ManInfoLen;
-
2836 if (TotalLen+InstDesc1Len>MaxLen) InstDesc1Len=MaxLen-TotalLen;
-
2837 TotalLen+=InstDesc1Len;
-
2838 if (TotalLen+InstDesc2Len>MaxLen) InstDesc2Len=MaxLen-TotalLen;
-
2839 TotalLen+=InstDesc2Len;
-
2840
- -
2842 N2kMsg.Priority=6;
-
2843 // InstallationDescription1
-
2844 N2kMsg.AddByte(InstDesc1Len+2);
-
2845 N2kMsg.AddByte(0x01);
-
2846 N2kMsg.AddStr(InstallationDescription1,InstDesc1Len,UsePgm);
+
2728#endif
+
2729
+
2730//*****************************************************************************
+
2732void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN) {
+
2733 N2kMsg.SetPGN(59392L);
+
2734 N2kMsg.Priority=6;
+
2735
+
2736 N2kMsg.AddByte(Control);
+
2737 N2kMsg.AddByte(GroupFunction);
+
2738 N2kMsg.AddByte(0xff); // Reserved
+
2739 N2kMsg.AddByte(0xff); // Reserved
+
2740 N2kMsg.AddByte(0xff); // Reserved
+
2741 N2kMsg.Add3ByteInt(PGN);
+
2742}
+
2743
+
2744//*****************************************************************************
+
2745// ISO Address Claim
+
2746void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
+
2747 unsigned char DeviceFunction, unsigned char DeviceClass,
+
2748 unsigned char DeviceInstance, unsigned char SystemInstance, unsigned char IndustryGroup
+
2749 ) {
+ +
2751 N2kMsg.Priority=6;
+
2752
+
2753 N2kMsg.Add4ByteUInt((UniqueNumber&0x1FFFFF) | ((unsigned long)(ManufacturerCode&0x7ff))<<21);
+
2754 N2kMsg.AddByte(DeviceInstance);
+
2755 N2kMsg.AddByte(DeviceFunction);
+
2756 N2kMsg.AddByte((DeviceClass&0x7f)<<1);
+
2757 N2kMsg.AddByte( 0x80 | ((IndustryGroup&0x7)<<4) | (SystemInstance&0x0f) );
+
2758}
+
2759
+
2760//*****************************************************************************
+
2761// ISO Address Claim
+
2762void SetN2kPGN60928(tN2kMsg &N2kMsg, uint64_t Name) {
+ +
2764 N2kMsg.Priority=6;
+
2765
+
2766 N2kMsg.AddUInt64(Name);
+
2767}
+
2768
+
2769//*****************************************************************************
+
2770// Product Information
+
2771void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
+
2772 const char *ModelID, const char *SwCode,
+
2773 const char *ModelVersion, const char *ModelSerialCode,
+
2774 unsigned char CertificationLevel, unsigned char LoadEquivalency) {
+
2775
+ +
2777 N2kMsg.Priority=6;
+
2778 N2kMsg.Add2ByteUInt(N2kVersion);
+
2779 N2kMsg.Add2ByteUInt(ProductCode);
+
2780 N2kMsg.AddStr(ModelID, Max_N2kModelID_len);
+
2781 N2kMsg.AddStr(SwCode, Max_N2kSwCode_len);
+
2782 N2kMsg.AddStr(ModelVersion, Max_N2kModelVersion_len);
+
2783 N2kMsg.AddStr(ModelSerialCode, Max_N2kModelSerialCode_len);
+
2784 N2kMsg.AddByte(CertificationLevel);
+
2785 N2kMsg.AddByte(LoadEquivalency);
+
2786}
+
2787
+
2788bool ParseN2kPGN126996(const tN2kMsg& N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode,
+
2789 int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode,
+
2790 int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode,
+
2791 unsigned char &CertificationLevel, unsigned char &LoadEquivalency) {
+
2792 if (N2kMsg.PGN!=N2kPGNProductInformation) return false;
+
2793
+
2794 int Index=0;
+
2795 N2kVersion=N2kMsg.Get2ByteUInt(Index);
+
2796 ProductCode=N2kMsg.Get2ByteUInt(Index);
+
2797 N2kMsg.GetStr(ModelIDSize,ModelID,Max_N2kModelID_len,0xff,Index);
+
2798 N2kMsg.GetStr(SwCodeSize,SwCode,Max_N2kSwCode_len,0xff,Index);
+
2799 N2kMsg.GetStr(ModelVersionSize,ModelVersion,Max_N2kModelVersion_len,0xff,Index);
+
2800 N2kMsg.GetStr(ModelSerialCodeSize,ModelSerialCode,Max_N2kModelSerialCode_len,0xff,Index);
+
2801 CertificationLevel=N2kMsg.GetByte(Index);
+
2802 LoadEquivalency=N2kMsg.GetByte(Index);
+
2803
+
2804 return true;
+
2805}
+
2806
+
2807//*****************************************************************************
+
2808size_t ProgmemStrLen(const char *str) {
+
2809 size_t len;
+
2810 if (str==0) return 0;
+
2811 for (len=0; pgm_read_byte(&(str[len]))!=0; len++ );
+
2812 return len;
+
2813}
+
2814
+
2815//*****************************************************************************
+
2816size_t StrLen(const char *str) {
+
2817 if (str==0) return 0;
+
2818 return strlen(str);
+
2819}
+
2820
+
2821//*****************************************************************************
+
2822// Configuration information
+ +
2824 const char *ManufacturerInformation,
+
2825 const char *InstallationDescription1,
+
2826 const char *InstallationDescription2,
+
2827 bool UsePgm) {
+
2828 size_t TotalLen;
+
2829 size_t MaxLen=tN2kMsg::MaxDataLen-6; // Each field has 2 extra bytes
+
2830 size_t ManInfoLen;
+
2831 size_t InstDesc1Len;
+
2832 size_t InstDesc2Len;
+
2833
+
2834 if ( UsePgm ) {
+
2835 ManInfoLen=ProgmemStrLen(ManufacturerInformation);
+
2836 InstDesc1Len=ProgmemStrLen(InstallationDescription1);
+
2837 InstDesc2Len=ProgmemStrLen(InstallationDescription2);
+
2838 } else {
+
2839 ManInfoLen=StrLen(ManufacturerInformation);
+
2840 InstDesc1Len=StrLen(InstallationDescription1);
+
2841 InstDesc2Len=StrLen(InstallationDescription2);
+
2842 }
+
2843
+ + +
2847
-
2848 // InstallationDescription2
-
2849 N2kMsg.AddByte(InstDesc2Len+2);
-
2850 N2kMsg.AddByte(0x01);
-
2851 N2kMsg.AddStr(InstallationDescription2,InstDesc2Len,UsePgm);
-
2852 // ManufacturerInformation
-
2853 N2kMsg.AddByte(ManInfoLen+2);
-
2854 N2kMsg.AddByte(0x01);
-
2855 N2kMsg.AddStr(ManufacturerInformation,ManInfoLen,UsePgm);
-
2856}
-
2857
-
2858bool ParseN2kPGN126998(const tN2kMsg& N2kMsg,
-
2859 size_t &ManufacturerInformationSize, char *ManufacturerInformation,
-
2860 size_t &InstallationDescription1Size, char *InstallationDescription1,
-
2861 size_t &InstallationDescription2Size, char *InstallationDescription2) {
-
2862 if (N2kMsg.PGN!=N2kPGNConfigurationInformation) return false;
-
2863
-
2864 int Index=0;
-
2865 return ( N2kMsg.GetVarStr(InstallationDescription1Size,InstallationDescription1,Index) &&
-
2866 N2kMsg.GetVarStr(InstallationDescription2Size,InstallationDescription2,Index) &&
-
2867 N2kMsg.GetVarStr(ManufacturerInformationSize,ManufacturerInformation,Index) );
-
2868}
-
2869
-
2870//*****************************************************************************
-
2871// Iso request
-
2872void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN) {
-
2873 N2kMsg.SetPGN(59904L);
-
2874 N2kMsg.Destination=Destination;
-
2875 N2kMsg.Priority=6;
-
2876 N2kMsg.Add3ByteInt(RequestedPGN);
-
2877}
+
2848 TotalLen=0;
+
2849 if (TotalLen+ManInfoLen>MaxLen) ManInfoLen=MaxLen-TotalLen;
+
2850 TotalLen+=ManInfoLen;
+
2851 if (TotalLen+InstDesc1Len>MaxLen) InstDesc1Len=MaxLen-TotalLen;
+
2852 TotalLen+=InstDesc1Len;
+
2853 if (TotalLen+InstDesc2Len>MaxLen) InstDesc2Len=MaxLen-TotalLen;
+
2854 TotalLen+=InstDesc2Len;
+
2855
+ +
2857 N2kMsg.Priority=6;
+
2858 // InstallationDescription1
+
2859 N2kMsg.AddByte(InstDesc1Len+2);
+
2860 N2kMsg.AddByte(0x01);
+
2861 N2kMsg.AddStr(InstallationDescription1,InstDesc1Len,UsePgm);
+
2862
+
2863 // InstallationDescription2
+
2864 N2kMsg.AddByte(InstDesc2Len+2);
+
2865 N2kMsg.AddByte(0x01);
+
2866 N2kMsg.AddStr(InstallationDescription2,InstDesc2Len,UsePgm);
+
2867 // ManufacturerInformation
+
2868 N2kMsg.AddByte(ManInfoLen+2);
+
2869 N2kMsg.AddByte(0x01);
+
2870 N2kMsg.AddStr(ManufacturerInformation,ManInfoLen,UsePgm);
+
2871}
+
2872
+
2873bool ParseN2kPGN126998(const tN2kMsg& N2kMsg,
+
2874 size_t &ManufacturerInformationSize, char *ManufacturerInformation,
+
2875 size_t &InstallationDescription1Size, char *InstallationDescription1,
+
2876 size_t &InstallationDescription2Size, char *InstallationDescription2) {
+
2877 if (N2kMsg.PGN!=N2kPGNConfigurationInformation) return false;
2878
-
2879bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN) {
-
2880 int result=((N2kMsg.DataLen>=3) && (N2kMsg.DataLen<=8));
-
2881 RequestedPGN=0;
-
2882 if (result) {
-
2883 int Index=0;
-
2884 RequestedPGN=N2kMsg.Get3ByteUInt(Index);
-
2885 }
-
2886
-
2887 return result;
-
2888}
-
2889
-
2890//*****************************************************************************
-
2891// PGN List (Transmit and Receive)
-
2892void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs) {
-
2893 unsigned long PGN;
-
2894
-
2895 N2kMsg.SetPGN(126464L);
-
2896 N2kMsg.Destination=Destination;
-
2897 N2kMsg.Priority=6;
-
2898 N2kMsg.AddByte(tr);
-
2899
-
2900 for (int i=0; (PGN=pgm_read_dword(&PGNs[i]))!=0; i++) {
-
2901 N2kMsg.Add3ByteInt(PGN);
-
2902 }
+
2879 int Index=0;
+
2880 return ( N2kMsg.GetVarStr(InstallationDescription1Size,InstallationDescription1,Index) &&
+
2881 N2kMsg.GetVarStr(InstallationDescription2Size,InstallationDescription2,Index) &&
+
2882 N2kMsg.GetVarStr(ManufacturerInformationSize,ManufacturerInformation,Index) );
+
2883}
+
2884
+
2885//*****************************************************************************
+
2886// Iso request
+
2887void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN) {
+
2888 N2kMsg.SetPGN(59904L);
+
2889 N2kMsg.Destination=Destination;
+
2890 N2kMsg.Priority=6;
+
2891 N2kMsg.Add3ByteInt(RequestedPGN);
+
2892}
+
2893
+
2894bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN) {
+
2895 int result=((N2kMsg.DataLen>=3) && (N2kMsg.DataLen<=8));
+
2896 RequestedPGN=0;
+
2897 if (result) {
+
2898 int Index=0;
+
2899 RequestedPGN=N2kMsg.Get3ByteUInt(Index);
+
2900 }
+
2901
+
2902 return result;
2903}
2904
-
2905#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
2906//*****************************************************************************
-
2907// Heartbeat
-
2908void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter) {
-
2909 N2kMsg.SetPGN(126993L);
-
2910 N2kMsg.Priority=7;
-
2911 if ( timeInterval_ms>MaxHeartbeatInterval ) {
-
2912 N2kMsg.Add2ByteUInt(0xfffe); // Error
-
2913 } else {
-
2914 N2kMsg.Add2ByteUInt((uint16_t)(timeInterval_ms));
-
2915 }
-
2916 N2kMsg.AddByte(sequenceCounter);
-
2917 N2kMsg.AddByte(0xff); // Reserved
-
2918 N2kMsg.Add4ByteUInt(0xffffffff); // Reserved
-
2919}
-
2920#endif
+
2905//*****************************************************************************
+
2906// PGN List (Transmit and Receive)
+
2907void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs) {
+
2908 unsigned long PGN;
+
2909
+
2910 N2kMsg.SetPGN(126464L);
+
2911 N2kMsg.Destination=Destination;
+
2912 N2kMsg.Priority=6;
+
2913 N2kMsg.AddByte(tr);
+
2914
+
2915 for (int i=0; (PGN=pgm_read_dword(&PGNs[i]))!=0; i++) {
+
2916 N2kMsg.Add3ByteInt(PGN);
+
2917 }
+
2918}
+
2919
+
2920#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
2921//*****************************************************************************
+
2922// Heartbeat
+
2923void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter) {
+
2924 N2kMsg.SetPGN(126993L);
+
2925 N2kMsg.Priority=7;
+
2926 if ( timeInterval_ms>MaxHeartbeatInterval ) {
+
2927 N2kMsg.Add2ByteUInt(0xfffe); // Error
+
2928 } else {
+
2929 N2kMsg.Add2ByteUInt((uint16_t)(timeInterval_ms));
+
2930 }
+
2931 N2kMsg.AddByte(sequenceCounter);
+
2932 N2kMsg.AddByte(0xff); // Reserved
+
2933 N2kMsg.Add4ByteUInt(0xffffffff); // Reserved
+
2934}
+
2935#endif
Type definitions and utility macros used in the NMEA2000 libraries.
#define pgm_read_byte(var)
Definition: N2kDef.h:46
#define F(str)
Definition: N2kDef.h:64
@@ -2782,88 +2790,88 @@
bool N2kHasElapsed(uint32_t Start, uint32_t Elapsed, uint32_t Now=N2kMillis())
Has time elapsed since start.
Definition: N2kTimer.h:111
bool N2kIsTimeBefore(uint32_t T1, uint32_t T2)
Comparing 2 values even after 32 bit time roll over situation.
Definition: N2kTimer.h:96
#define N2kMsgDbg(fmt, args...)
Definition: NMEA2000.cpp:77
-
size_t ProgmemStrLen(const char *str)
Definition: NMEA2000.cpp:2793
+
size_t ProgmemStrLen(const char *str)
Definition: NMEA2000.cpp:2808
#define N2kFrameErrDbgln(fmt, args...)
Definition: NMEA2000.cpp:48
#define N2kFrameErrDbg(fmt, args...)
Definition: NMEA2000.cpp:47
#define N2kMsgDbgln(fmt, args...)
Definition: NMEA2000.cpp:78
#define DbgPrintBuf(len, buf, addln)
Definition: NMEA2000.cpp:84
bool IsSingleFrameSystemMessage(unsigned long PGN)
Checks if the given PGN is a Single Frame System Message.
Definition: NMEA2000.cpp:215
-
bool IsDefaultFastPacketMessage(unsigned long PGN)
Checks if the PGN is a Default Fast Packet Message.
Definition: NMEA2000.cpp:441
+
bool IsDefaultFastPacketMessage(unsigned long PGN)
Checks if the PGN is a Default Fast Packet Message.
Definition: NMEA2000.cpp:448
bool IsFastPacketSystemMessage(unsigned long PGN)
Checks if the given PGN is a Fast Packet System Message.
Definition: NMEA2000.cpp:234
-
#define MAX_PGNS_IN_LIST
Definition: NMEA2000.cpp:2109
+
#define MAX_PGNS_IN_LIST
Definition: NMEA2000.cpp:2124
#define N2kDbg(fmt, args...)
Definition: NMEA2000.cpp:91
-
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2773
+
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2788
#define N2kFrameOutDbgStart(fmt, args...)
Definition: NMEA2000.cpp:66
-
void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up PGN 126993 Message "Heartbeat".
Definition: NMEA2000.cpp:2908
-
bool IsProprietaryFastPacketMessage(unsigned long PGN)
Checks if the PGN is a Proprietary Fast Packet Message.
Definition: NMEA2000.cpp:565
+
void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up PGN 126993 Message "Heartbeat".
Definition: NMEA2000.cpp:2923
+
bool IsProprietaryFastPacketMessage(unsigned long PGN)
Checks if the PGN is a Proprietary Fast Packet Message.
Definition: NMEA2000.cpp:579
#define TP_CM_BAM
Multi packet connection management, Broadcast Announce Message.
Definition: NMEA2000.cpp:121
#define TP_MAX_FRAMES
Max frames, which can be received at time.
Definition: NMEA2000.cpp:115
-
const char DefInstallationDescription1[]
Default Installation Description (Field1)
Definition: NMEA2000.cpp:606
+
const char DefInstallationDescription1[]
Default Installation Description (Field1)
Definition: NMEA2000.cpp:620
#define TP_CM_Abort
Multi packet connection management, Abort Connection.
Definition: NMEA2000.cpp:129
#define TP_CM_AbortTimeout
A timeout occurred and this is the connection abort to close the s ession.
Definition: NMEA2000.cpp:139
-
const tNMEA2000::tProductInformation DefProductInformation
Default Product Information.
Definition: NMEA2000.cpp:588
-
void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs)
Setting up PGN 126464 Message "PGN List - Transmit PGNs group function".
Definition: NMEA2000.cpp:2892
+
const tNMEA2000::tProductInformation DefProductInformation
Default Product Information.
Definition: NMEA2000.cpp:602
+
void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs)
Setting up PGN 126464 Message "PGN List - Transmit PGNs group function".
Definition: NMEA2000.cpp:2907
#define TP_DT
Multi packet data transfer.
Definition: NMEA2000.cpp:119
#define N2kDbgln(fmt, args...)
Definition: NMEA2000.cpp:92
-
unsigned long N2ktoCanID(unsigned char priority, unsigned long PGN, unsigned long Source, unsigned char Destination)
Convert NMEA2000 values into a CAN Id.
Definition: NMEA2000.cpp:1291
-
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2858
+
unsigned long N2ktoCanID(unsigned char priority, unsigned long PGN, unsigned long Source, unsigned char Destination)
Convert NMEA2000 values into a CAN Id.
Definition: NMEA2000.cpp:1306
+
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2873
#define N2kFrameInDbg(fmt, args...)
Definition: NMEA2000.cpp:57
#define MaxHeartbeatInterval
Maximum value for the Iso Heartbeat interval in ms.
Definition: NMEA2000.cpp:112
-
void PROGMEM_readAnything(const T *sce, T &dest)
Definition: NMEA2000.cpp:2104
-
void SetN2kPGN126996Progmem(tN2kMsg &N2kMsg, const tNMEA2000::tProductInformation *ProductInformation, char *OptionalSerialCode=0)
Definition: NMEA2000.cpp:2178
-
void CanIdToN2k(unsigned long id, unsigned char &prio, unsigned long &pgn, unsigned char &src, unsigned char &dst)
Convert a CAN Id to NMEA2000 values.
Definition: NMEA2000.cpp:1262
+
void PROGMEM_readAnything(const T *sce, T &dest)
Definition: NMEA2000.cpp:2119
+
void SetN2kPGN126996Progmem(tN2kMsg &N2kMsg, const tNMEA2000::tProductInformation *ProductInformation, char *OptionalSerialCode=0)
Definition: NMEA2000.cpp:2193
+
void CanIdToN2k(unsigned long id, unsigned char &prio, unsigned long &pgn, unsigned char &src, unsigned char &dst)
Convert a CAN Id to NMEA2000 values.
Definition: NMEA2000.cpp:1277
#define N2kFrameOutDbgln(fmt, args...)
Definition: NMEA2000.cpp:68
bool IsMandatoryFastPacketMessage(unsigned long PGN)
Checks if the PGN is a Mandatory Fast Packet Message.
Definition: NMEA2000.cpp:318
-
bool IsFastPacketFirstFrame(unsigned char b)
Definition: NMEA2000.cpp:1956
-
void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up PGN 59904 Message "ISO request".
Definition: NMEA2000.cpp:2872
+
bool IsFastPacketFirstFrame(unsigned char b)
Definition: NMEA2000.cpp:1971
+
void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up PGN 59904 Message "ISO request".
Definition: NMEA2000.cpp:2887
#define N2kMsgDbgStart(fmt, args...)
Definition: NMEA2000.cpp:76
#define N2kFrameErrDbgStart(fmt, args...)
Definition: NMEA2000.cpp:46
#define TP_CM_CTS
Multi packet connection management, Clear To Send.
Definition: NMEA2000.cpp:125
-
void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
ISO Acknowledgement.
Definition: NMEA2000.cpp:2717
+
void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
ISO Acknowledgement.
Definition: NMEA2000.cpp:2732
#define N2kPrintFreeMemory(a)
Definition: NMEA2000.cpp:106
-
void SetN2kPGN126998(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1, const char *InstallationDescription2, bool UsePgm)
Setting up PGN 126998 Message "Configuration information".
Definition: NMEA2000.cpp:2808
+
void SetN2kPGN126998(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1, const char *InstallationDescription2, bool UsePgm)
Setting up PGN 126998 Message "Configuration information".
Definition: NMEA2000.cpp:2823
#define N2kFrameInDbgStart(fmt, args...)
Definition: NMEA2000.cpp:56
-
bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of message PGN 59904 "ISO request".
Definition: NMEA2000.cpp:2879
-
void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance, unsigned char SystemInstance, unsigned char IndustryGroup)
Setting up PGN 60928 Message "ISO Address Claim".
Definition: NMEA2000.cpp:2731
+
bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of message PGN 59904 "ISO request".
Definition: NMEA2000.cpp:2894
+
void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance, unsigned char SystemInstance, unsigned char IndustryGroup)
Setting up PGN 60928 Message "ISO Address Claim".
Definition: NMEA2000.cpp:2746
const unsigned long DefTransmitMessages[]
Default list of Transmit Messages.
Definition: NMEA2000.cpp:160
#define N2kAddressClaimTimeout
Timeout value for the ISO Address Claim in ms.
Definition: NMEA2000.cpp:110
-
void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel, unsigned char LoadEquivalency)
Setting up PGN 126996 Message "Product information".
Definition: NMEA2000.cpp:2756
+
void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel, unsigned char LoadEquivalency)
Setting up PGN 126996 Message "Product information".
Definition: NMEA2000.cpp:2771
#define N2kFrameInDbgln(fmt, args...)
Definition: NMEA2000.cpp:58
#define TP_CM_AbortBusy
Already in one or more connection managed sessions and cannot support another.
Definition: NMEA2000.cpp:133
-
const char DefManufacturerInformation[]
Default Manufacturer Information.
Definition: NMEA2000.cpp:602
-
unsigned char TPCtsPackets(unsigned char nPackets)
Definition: NMEA2000.cpp:1689
+
const char DefManufacturerInformation[]
Default Manufacturer Information.
Definition: NMEA2000.cpp:616
+
unsigned char TPCtsPackets(unsigned char nPackets)
Definition: NMEA2000.cpp:1704
const unsigned long DefReceiveMessages[]
Default list of Received Messages.
Definition: NMEA2000.cpp:194
#define TP_CM_RTS
Multi packet connection management, Request To Send.
Definition: NMEA2000.cpp:123
-
void CopyProgmemString(const char *str, size_t MaxLen, char *buf)
Definition: NMEA2000.cpp:850
+
void CopyProgmemString(const char *str, size_t MaxLen, char *buf)
Definition: NMEA2000.cpp:864
bool IsDefaultSingleFrameMessage(unsigned long PGN)
Checks if the given PGN is a Default Single Frame Message.
Definition: NMEA2000.cpp:276
#define TP_CM
Multi packet connection management, TP.CM.
Definition: NMEA2000.cpp:117
-
void CopyBufToCANMsg(tN2kCANMsg &CANMsg, unsigned char start, unsigned char len, unsigned char *buf)
Copy a Buffer to a CAN Message.
Definition: NMEA2000.cpp:1611
-
size_t StrLen(const char *str)
Definition: NMEA2000.cpp:2801
+
void CopyBufToCANMsg(tN2kCANMsg &CANMsg, unsigned char start, unsigned char len, unsigned char *buf)
Copy a Buffer to a CAN Message.
Definition: NMEA2000.cpp:1626
+
size_t StrLen(const char *str)
Definition: NMEA2000.cpp:2816
#define TP_CM_ACK
Multi packet connection management, End of Message Acknowledgement.
Definition: NMEA2000.cpp:127
-
const char DefInstallationDescription2[]
Default Installation Description (Field2)
Definition: NMEA2000.cpp:610
+
const char DefInstallationDescription2[]
Default Installation Description (Field2)
Definition: NMEA2000.cpp:624
This file contains the class tNMEA2000, which consists the main functionality of the library.
-
void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up Message "Product information" - PGN 126996.
Definition: NMEA2000.h:3094
+
void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up Message "Product information" - PGN 126996.
Definition: NMEA2000.h:3107
#define Max_N2kModelSerialCode_len
Max length of SerialCode Document says for leghts 32 but then values has not been translated right on...
Definition: NMEA2000.h:82
#define N2kPGNIsoAddressClaim
PGN for an Iso Address Claim message.
Definition: NMEA2000.h:59
#define N2kPGNProductInformation
PGN for a Production Information message.
Definition: NMEA2000.h:61
#define Max_N2kSwCode_len
Max length of Software Code Document says for leghts 40 but then values has not been translated right...
Definition: NMEA2000.h:74
-
void SetN2kConfigurationInformation(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up Message "Configuration information" - PGN 126998.
Definition: NMEA2000.h:3156
+
void SetN2kConfigurationInformation(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up Message "Configuration information" - PGN 126998.
Definition: NMEA2000.h:3169
#define DefaultHeartbeatInterval
Intervall for Heartbeat.
Definition: NMEA2000.h:824
#define N2kMessageGroups
Number of message groups.
Definition: NMEA2000.h:104
#define Max_N2kMsgBuf_Time
Message buffer time.
Definition: NMEA2000.h:102
#define Max_N2kModelVersion_len
Max length of Model Version Document says for leghts 24 but then values has not been translated right...
Definition: NMEA2000.h:78
#define Max_N2kConfigurationInfoField_len
Max length of Configuration Info Fields.
Definition: NMEA2000.h:99
#define N2kPGNConfigurationInformation
PGN for an Configuration Information message.
Definition: NMEA2000.h:63
-
void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up Message "ISO Address Claim" - PGN 60928.
Definition: NMEA2000.h:3050
+
void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up Message "ISO Address Claim" - PGN 60928.
Definition: NMEA2000.h:3063
#define Max_N2kModelID_len
Max length of ModelID Document says for leghts 33 but then values has not been translated right on de...
Definition: NMEA2000.h:70
-
void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up Message "Heartbeat" - PGN 126993.
Definition: NMEA2000.h:3300
+
void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up Message "Heartbeat" - PGN 126993.
Definition: NMEA2000.h:3313
#define N2kNullCanBusAddress
Null Address (???)
Definition: NMEA2000.h:108
-
void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up Message "ISO Acknowledgement" - PGN 59392.
Definition: NMEA2000.h:3003
+
void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up Message "ISO Acknowledgement" - PGN 59392.
Definition: NMEA2000.h:3016
#define N2kMaxCanBusAddress
Max CAN Bus Address given by the library.
Definition: NMEA2000.h:106
-
bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of a "ISO request" message - PGN 59904.
Definition: NMEA2000.h:3240
-
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3249
-
@ N2kpgnl_receive
Definition: NMEA2000.h:3249
-
@ N2kpgnl_transmit
Definition: NMEA2000.h:3249
+
bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of a "ISO request" message - PGN 59904.
Definition: NMEA2000.h:3253
+
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3262
+
@ N2kpgnl_receive
Definition: NMEA2000.h:3262
+
@ N2kpgnl_transmit
Definition: NMEA2000.h:3262
const unsigned long TransmitMessages[]
size_t print(const char *str)
Print string to stream.
Definition: N2kStream.cpp:32
size_t println(const char *str)
Print string and newline to stream.
Definition: N2kStream.cpp:75
@@ -2967,161 +2975,161 @@
void ClearPendingProductInformation()
Resets PendingProductInformation to zero.
Definition: NMEA2000.h:881
Message handler class.
Definition: NMEA2000.h:616
unsigned long GetPGN() const
Return the PGN that is handled by this message handler.
Definition: NMEA2000.h:656
-
bool SendTPCM_RTS(int iDev)
Send ISO Transport Protocol message RTS.
Definition: NMEA2000.cpp:1672
-
bool IsMySource(unsigned char Source)
Checks if the source belongs to a device on Devices.
Definition: NMEA2000.cpp:2058
-
void SetFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Fast Packet Messages.
Definition: NMEA2000.cpp:1134
-
bool IsReadyToSend() const
Checks if the device is ready to start address claiming.
Definition: NMEA2000.h:1597
-
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1373
-
void SendPendingInformation()
Send ISO AddressClaim, Product Information and Config Information.
Definition: NMEA2000.cpp:1416
-
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:731
-
bool(* ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)
Handler callbacks for 'ISORequest' messages.
Definition: NMEA2000.h:1075
-
static void ClearSetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a clean Char Buffer.
Definition: NMEA2000.cpp:640
-
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:861
-
size_t GetFastPacketTxPGNCount(int iDev)
Get the Fast Packet Tx PGN Count.
Definition: NMEA2000.cpp:799
+
bool SendTPCM_RTS(int iDev)
Send ISO Transport Protocol message RTS.
Definition: NMEA2000.cpp:1687
+
bool IsMySource(unsigned char Source)
Checks if the source belongs to a device on Devices.
Definition: NMEA2000.cpp:2073
+
void SetFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Fast Packet Messages.
Definition: NMEA2000.cpp:1148
+
bool IsReadyToSend() const
Checks if the device is ready to start address claiming.
Definition: NMEA2000.h:1601
+
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1388
+
void SendPendingInformation()
Send ISO AddressClaim, Product Information and Config Information.
Definition: NMEA2000.cpp:1431
+
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:745
+
bool(* ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)
Handler callbacks for 'ISORequest' messages.
Definition: NMEA2000.h:1079
+
static void ClearSetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a clean Char Buffer.
Definition: NMEA2000.cpp:654
+
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:875
+
size_t GetFastPacketTxPGNCount(int iDev)
Get the Fast Packet Tx PGN Count.
Definition: NMEA2000.cpp:813
int DeviceCount
Number of devices.
Definition: NMEA2000.h:977
-
static void ClearCharBuf(size_t MaxLen, char *buf)
Clears a char array buffer with 0s.
Definition: NMEA2000.cpp:623
-
void InitDevices()
Initialize all devices.
Definition: NMEA2000.cpp:696
+
static void ClearCharBuf(size_t MaxLen, char *buf)
Clears a char array buffer with 0s.
Definition: NMEA2000.cpp:637
+
void InitDevices()
Initialize all devices.
Definition: NMEA2000.cpp:710
tN2kCANMsg * N2kCANMsgBuf
Buffer for receiving messages.
Definition: NMEA2000.h:1015
-
void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Extended Single Frame Messages.
Definition: NMEA2000.cpp:1139
-
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2887
-
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2562
-
void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex))
Set the message handler for incoming ISO Requests.
Definition: NMEA2000.cpp:2669
+
void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Extended Single Frame Messages.
Definition: NMEA2000.cpp:1153
+
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2900
+
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2577
+
void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex))
Set the message handler for incoming ISO Requests.
Definition: NMEA2000.cpp:2684
tDebugMode dbMode
Attribute that holds the actual Debug Mode (default = md_none)
Definition: NMEA2000.h:950
-
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1079
-
bool HasAllTPDTSent(int iDev)
Check if all data bytes of the multi packet message has been send successful.
Definition: NMEA2000.cpp:1766
-
void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Remove a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2675
-
void SetForwardSystemMessages(bool v=true)
Enable System Messages for forwarding.
Definition: NMEA2000.h:2901
+
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1093
+
bool HasAllTPDTSent(int iDev)
Check if all data bytes of the multi packet message has been send successful.
Definition: NMEA2000.cpp:1781
+
void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Remove a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2690
+
void SetForwardSystemMessages(bool v=true)
Enable System Messages for forwarding.
Definition: NMEA2000.h:2914
unsigned int ForwardMode
Actual message forward operation mode (default = all messages - also system and own)
Definition: NMEA2000.h:959
-
void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Single Frame Messages.
Definition: NMEA2000.cpp:1129
-
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1023
-
void HandleISORequest(const tN2kMsg &N2kMsg)
Handles an Iso Request.
Definition: NMEA2000.cpp:2318
+
void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Single Frame Messages.
Definition: NMEA2000.cpp:1143
+
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1037
+
void HandleISORequest(const tN2kMsg &N2kMsg)
Handles an Iso Request.
Definition: NMEA2000.cpp:2333
N2kStream * ForwardStream
Actual stream to be used for forward messaging.
Definition: NMEA2000.h:961
-
void SetMsgHandler(void(*_MsgHandler)(const tN2kMsg &N2kMsg))
Set the message handler for incoming NMEA2000 messages.
Definition: NMEA2000.cpp:2623
-
tN2kGroupFunctionHandler * pGroupFunctionHandlers
Pointer to Buffer for GRoup Function Handlers.
Definition: NMEA2000.h:1079
-
bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)
Sends a single CAN frame.
Definition: NMEA2000.cpp:1320
-
bool StartSendTPMessage(const tN2kMsg &msg, int iDev)
Start sending an ISO-TP message.
Definition: NMEA2000.cpp:1911
-
void HandleGroupFunction(const tN2kMsg &N2kMsg)
Handles a Group Function.
Definition: NMEA2000.cpp:2360
-
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2249
-
bool ReadResetInstallationDescriptionChanged()
Check if this device has changed its Install Description.
Definition: NMEA2000.cpp:1069
-
void SetForwardOwnMessages(bool v=true)
Enable Own Messages for forwarding.
Definition: NMEA2000.h:2935
-
bool IsInitialized()
Determines if the CAN BUS is already initialized.
Definition: NMEA2000.h:1230
-
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:980
-
void AttachMsgHandler(tMsgHandler *_MsgHandler)
Attach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2628
+
void SetMsgHandler(void(*_MsgHandler)(const tN2kMsg &N2kMsg))
Set the message handler for incoming NMEA2000 messages.
Definition: NMEA2000.cpp:2638
+
tN2kGroupFunctionHandler * pGroupFunctionHandlers
Pointer to Buffer for GRoup Function Handlers.
Definition: NMEA2000.h:1083
+
bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)
Sends a single CAN frame.
Definition: NMEA2000.cpp:1335
+
bool StartSendTPMessage(const tN2kMsg &msg, int iDev)
Start sending an ISO-TP message.
Definition: NMEA2000.cpp:1926
+
void HandleGroupFunction(const tN2kMsg &N2kMsg)
Handles a Group Function.
Definition: NMEA2000.cpp:2375
+
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2264
+
bool ReadResetInstallationDescriptionChanged()
Check if this device has changed its Install Description.
Definition: NMEA2000.cpp:1083
+
void SetForwardOwnMessages(bool v=true)
Enable Own Messages for forwarding.
Definition: NMEA2000.h:2948
+
bool IsInitialized()
Determines if the CAN BUS is already initialized.
Definition: NMEA2000.h:1234
+
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:994
+
void AttachMsgHandler(tMsgHandler *_MsgHandler)
Attach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2643
bool AddressChanged
Flag that the address has changed.
Definition: NMEA2000.h:970
-
bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket)
Check if this Message is known to the system.
Definition: NMEA2000.cpp:1564
-
void SetDebugMode(tDebugMode _dbMode)
Set the Debug Mode of the system.
Definition: NMEA2000.cpp:1532
-
bool IsValidDevice(int iDev) const
Checks if the device index on Devices is valid.
Definition: NMEA2000.h:1589
-
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1156
+
bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket)
Check if this Message is known to the system.
Definition: NMEA2000.cpp:1579
+
void SetDebugMode(tDebugMode _dbMode)
Set the Debug Mode of the system.
Definition: NMEA2000.cpp:1547
+
bool IsValidDevice(int iDev) const
Checks if the device index on Devices is valid.
Definition: NMEA2000.h:1593
+
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1170
uint8_t MaxN2kCANMsgs
Size of N2kCANMsgBuf receiving message buffer.
Definition: NMEA2000.h:1021
virtual bool CANGetFrame(unsigned long &id, unsigned char &len, unsigned char *buf)=0
Abstract class for reading frame from driver class.
-
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2977
-
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2082
-
bool ForwardEnabled() const
Is message forwarding enabled.
Definition: NMEA2000.h:1516
-
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1186
+
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2990
+
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2097
+
bool ForwardEnabled() const
Is message forwarding enabled.
Definition: NMEA2000.h:1520
+
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1200
tN2kMode
System mode defines how the device will behave on the NMEA2000 bus.
Definition: NMEA2000.h:683
@ N2km_ListenOnly
Definition: NMEA2000.h:689
@ N2km_NodeOnly
Definition: NMEA2000.h:695
@ N2km_SendOnly
Definition: NMEA2000.h:705
@ N2km_ListenAndSend
Definition: NMEA2000.h:711
-
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1060
-
void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__((deprecated))
Definition: NMEA2000.cpp:1368
-
bool ForwardSystemMessages() const
Is forwarding enabled for system messages.
Definition: NMEA2000.h:1524
+
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1074
+
void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__((deprecated))
Deprecated. Use function SetHeartbeatIntervalAndOffset.
Definition: NMEA2000.cpp:1383
+
bool ForwardSystemMessages() const
Is forwarding enabled for system messages.
Definition: NMEA2000.h:1528
@ fwdt_Text
Definition: NMEA2000.h:671
@ fwdt_Actisense
Definition: NMEA2000.h:667
-
void SendPendingTPMessage(int iDev)
Send pending ISO-TP Messages.
Definition: NMEA2000.cpp:1941
-
void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets)
Send ISO Transport Protocol message End Acknowledge.
Definition: NMEA2000.cpp:1710
+
void SendPendingTPMessage(int iDev)
Send pending ISO-TP Messages.
Definition: NMEA2000.cpp:1956
+
void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets)
Send ISO Transport Protocol message End Acknowledge.
Definition: NMEA2000.cpp:1725
tN2kScheduler OpenScheduler
Definition: NMEA2000.h:966
-
bool IsFastPacketPGN(unsigned long PGN)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1537
-
void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Add a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2693
-
void Restart()
Restart the device.
Definition: NMEA2000.cpp:1249
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1149
-
bool SendTPDT(int iDev)
Send ISO Transport Protocol data packet.
Definition: NMEA2000.cpp:1747
+
bool IsFastPacketPGN(unsigned long PGN)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1552
+
void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Add a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2708
+
void Restart()
Restart the device.
Definition: NMEA2000.cpp:1264
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1163
+
bool SendTPDT(int iDev)
Send ISO Transport Protocol data packet.
Definition: NMEA2000.cpp:1762
virtual bool CANOpen()=0
Abstract class for initializing and opening CAN interface.
-
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:569
-
void HandleISOAddressClaim(const tN2kMsg &N2kMsg)
Handles an IsoAddressClaim.
Definition: NMEA2000.cpp:2415
-
tNMEA2000()
Construct a new NMEA2000 object.
Definition: NMEA2000.cpp:646
+
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:583
+
void HandleISOAddressClaim(const tN2kMsg &N2kMsg)
Handles an IsoAddressClaim.
Definition: NMEA2000.cpp:2430
+
tNMEA2000()
Construct a new NMEA2000 object.
Definition: NMEA2000.cpp:660
uint16_t MaxCANSendFrames
Size of CANSendFrameBuf or before initialization requested total frame buffering size.
Definition: NMEA2000.h:1049
-
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1042
+
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1056
@ os_Open
State Open.
Definition: NMEA2000.h:763
@ os_None
State none.
Definition: NMEA2000.h:754
@ os_OpenCAN
State Open CAN.
Definition: NMEA2000.h:757
@ os_WaitOpen
State Wait Open.
Definition: NMEA2000.h:760
uint16_t CANSendFrameBufferRead
Next write index for the library CAN send frame buffer.
Definition: NMEA2000.h:1055
-
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1341
+
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1356
uint16_t CANSendFrameBufferWrite
Next read index for the library CAN send frame buffer.
Definition: NMEA2000.h:1052
-
bool SendFrames()
Sends pending all frames.
Definition: NMEA2000.cpp:1303
-
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2618
-
bool IsAddressClaimStarted(int iDev)
Checks if the IsoAddressClaim is already started.
Definition: NMEA2000.cpp:2399
-
void ExtendFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Extended Fast Packet Messages.
Definition: NMEA2000.cpp:1144
-
void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev)
Respond to an ISO request.
Definition: NMEA2000.cpp:2282
-
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2146
+
bool SendFrames()
Sends pending all frames.
Definition: NMEA2000.cpp:1318
+
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2633
+
bool IsAddressClaimStarted(int iDev)
Checks if the IsoAddressClaim is already started.
Definition: NMEA2000.cpp:2414
+
void ExtendFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Extended Fast Packet Messages.
Definition: NMEA2000.cpp:1158
+
void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev)
Respond to an ISO request.
Definition: NMEA2000.cpp:2297
+
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2161
tMsgHandler * MsgHandlers
Pointer to a buffer for Message Handlers.
Definition: NMEA2000.h:963
-
uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf)
Function handles received CAN frame and adds it to tN2kCANMsg.
Definition: NMEA2000.cpp:1962
-
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2113
-
void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex)
Find index for free space for a message on N2kCANMsgBuf.
Definition: NMEA2000.cpp:1619
-
void StartAddressClaim()
Starting the ISO Address Claim for all devices.
Definition: NMEA2000.cpp:2391
-
tCANSendFrame * GetNextFreeCANSendFrame()
Get the Next Free CAN Frame from CANSendFrameBuf.
Definition: NMEA2000.cpp:1402
+
uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf)
Function handles received CAN frame and adds it to tN2kCANMsg.
Definition: NMEA2000.cpp:1977
+
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2128
+
void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex)
Find index for free space for a message on N2kCANMsgBuf.
Definition: NMEA2000.cpp:1634
+
void StartAddressClaim()
Starting the ISO Address Claim for all devices.
Definition: NMEA2000.cpp:2406
+
tCANSendFrame * GetNextFreeCANSendFrame()
Get the Next Free CAN Frame from CANSendFrameBuf.
Definition: NMEA2000.cpp:1417
tConfigurationInformation ConfigurationInformation
Configuration Information of the device.
Definition: NMEA2000.h:983
-
void SetProgmemConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information located on PROGMEM.
Definition: NMEA2000.cpp:788
-
void GetModelVersion(char *buf, size_t max_len, int iDev=0) const
Get the Model Version of the device.
Definition: NMEA2000.cpp:948
-
int GetSequenceCounter(unsigned long PGN, int iDev)
Get the Sequence Counter for the PGN.
Definition: NMEA2000.cpp:817
-
const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const
Get the Product Information of the device.
Definition: NMEA2000.cpp:877
-
void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode)
Send ISO Transport Protocol message Abort.
Definition: NMEA2000.cpp:1727
-
void EndSendTPMessage(int iDev)
Ends sending of ISO-TP message.
Definition: NMEA2000.cpp:1934
+
void SetProgmemConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information located on PROGMEM.
Definition: NMEA2000.cpp:802
+
void GetModelVersion(char *buf, size_t max_len, int iDev=0) const
Get the Model Version of the device.
Definition: NMEA2000.cpp:962
+
int GetSequenceCounter(unsigned long PGN, int iDev)
Get the Sequence Counter for the PGN.
Definition: NMEA2000.cpp:831
+
const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const
Get the Product Information of the device.
Definition: NMEA2000.cpp:891
+
void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode)
Send ISO Transport Protocol message Abort.
Definition: NMEA2000.cpp:1742
+
void EndSendTPMessage(int iDev)
Ends sending of ISO-TP message.
Definition: NMEA2000.cpp:1949
tForwardType ForwardType
Actual message forward type (default = fwdt_Actisense)
Definition: NMEA2000.h:956
const unsigned long * SingleFrameMessages[N2kMessageGroups]
Definition: NMEA2000.h:985
-
bool HandleReceivedSystemMessage(int MsgIndex)
Handles a received system message.
Definition: NMEA2000.cpp:2528
+
bool HandleReceivedSystemMessage(int MsgIndex)
Handles a received system message.
Definition: NMEA2000.cpp:2543
tN2kMode N2kMode
Actual operation mode of this device (default = N2km_ListenOnly)
Definition: NMEA2000.h:954
tOpenState OpenState
Definition: NMEA2000.h:968
const unsigned long * FastPacketMessages[N2kMessageGroups]
Definition: NMEA2000.h:986
-
void(* MsgHandler)(const tN2kMsg &N2kMsg)
Handler callbacks for normal messages.
Definition: NMEA2000.h:1073
-
bool HandleOnlyKnownMessages() const
Is handle only known messages enabled.
Definition: NMEA2000.h:1548
+
void(* MsgHandler)(const tN2kMsg &N2kMsg)
Handler callbacks for normal messages.
Definition: NMEA2000.h:1077
+
bool HandleOnlyKnownMessages() const
Is handle only known messages enabled.
Definition: NMEA2000.h:1552
char * LocalConfigurationInformationData
Pointer to a buffer for local Configuration Information.
Definition: NMEA2000.h:981
-
static void SetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a Char Buffer.
Definition: NMEA2000.cpp:630
-
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:888
+
static void SetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a Char Buffer.
Definition: NMEA2000.cpp:644
+
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:902
uint16_t MaxCANReceiveFrames
Max number received CAN messages that can go to the buffer.
Definition: NMEA2000.h:1061
-
int FindSourceDeviceIndex(unsigned char Source) const
Finds a device on Devices by its source address.
Definition: NMEA2000.cpp:2047
-
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2207
-
virtual void InitCANFrameBuffers()
Initialize CAN Frame buffers.
Definition: NMEA2000.cpp:1174
+
int FindSourceDeviceIndex(unsigned char Source) const
Finds a device on Devices by its source address.
Definition: NMEA2000.cpp:2062
+
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2222
+
virtual void InitCANFrameBuffers()
Initialize CAN Frame buffers.
Definition: NMEA2000.cpp:1188
bool DeviceInformationChanged
Flag that the device information has changed.
Definition: NMEA2000.h:972
-
void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber)
Send ISO Transport Protocol message CTS.
Definition: NMEA2000.cpp:1692
-
bool SendTPCM_BAM(int iDev)
Send ISO Transport Protocol message BAM.
Definition: NMEA2000.cpp:1653
-
bool IsActiveNode()
Returns if this node is active on the bus.
Definition: NMEA2000.h:1580
-
void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const
Get the Model Serial of the device.
Definition: NMEA2000.cpp:964
-
bool ReadResetAddressChanged()
Check if this device has changed its address.
Definition: NMEA2000.cpp:2481
-
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1163
-
void ForwardMessage(const tN2kMsg &N2kMsg)
Forwards a N2k message.
Definition: NMEA2000.cpp:2063
-
bool ForwardOnlyKnownMessages() const
Is forwarding enabled for known messages only.
Definition: NMEA2000.h:1532
+
void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber)
Send ISO Transport Protocol message CTS.
Definition: NMEA2000.cpp:1707
+
bool SendTPCM_BAM(int iDev)
Send ISO Transport Protocol message BAM.
Definition: NMEA2000.cpp:1668
+
bool IsActiveNode()
Returns if this node is active on the bus.
Definition: NMEA2000.h:1584
+
void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const
Get the Model Serial of the device.
Definition: NMEA2000.cpp:978
+
bool ReadResetAddressChanged()
Check if this device has changed its address.
Definition: NMEA2000.cpp:2496
+
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1177
+
void ForwardMessage(const tN2kMsg &N2kMsg)
Forwards a N2k message.
Definition: NMEA2000.cpp:2078
+
bool ForwardOnlyKnownMessages() const
Is forwarding enabled for known messages only.
Definition: NMEA2000.h:1536
virtual bool CANSendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)=0
Abstract class for sending a CAN Frame.
-
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1033
-
bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination, unsigned char len, unsigned char *buf, uint8_t &MsgIndex)
ISO Transport Protocol handlers for multi packet support.
Definition: NMEA2000.cpp:1771
-
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1096
-
void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev)
Handles if we get commanded to set a new address.
Definition: NMEA2000.cpp:2440
-
bool IsFastPacket(const tN2kMsg &N2kMsg)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1557
-
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1051
-
bool ForwardOwnMessages() const
Is forwarding enabled for own messages.
Definition: NMEA2000.h:1540
-
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:902
+
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1047
+
bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination, unsigned char len, unsigned char *buf, uint8_t &MsgIndex)
ISO Transport Protocol handlers for multi packet support.
Definition: NMEA2000.cpp:1786
+
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1110
+
void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev)
Handles if we get commanded to set a new address.
Definition: NMEA2000.cpp:2455
+
bool IsFastPacket(const tN2kMsg &N2kMsg)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1572
+
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1065
+
bool ForwardOwnMessages() const
Is forwarding enabled for own messages.
Definition: NMEA2000.h:1544
+
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:916
tDebugMode
For debugging we have some cases for SendMsg.
Definition: NMEA2000.h:718
@ dm_ClearText
Definition: NMEA2000.h:724
@ dm_Actisense
Definition: NMEA2000.h:727
-
bool ReadResetDeviceInformationChanged()
Check if this device has changed its DeviceInstances or SystemInstance.
Definition: NMEA2000.cpp:2489
-
void GetSwCode(char *buf, size_t max_len, int iDev=0) const
Get the Sw Code of the device.
Definition: NMEA2000.cpp:932
-
void SetN2kSource(unsigned char _iAddr, int _iDev=0)
Set source for the given device.
Definition: NMEA2000.cpp:2473
-
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:916
-
void DetachMsgHandler(tMsgHandler *_MsgHandler)
Detach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2653
-
void CopyProgmemConfigurationInformationToLocal()
Copy Configuration Information to local memory.
Definition: NMEA2000.cpp:1008
-
void(* OnOpen)()
Callback function, which will be called when library start bus communicaion.
Definition: NMEA2000.h:1070
-
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:994
-
void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false)
Get the next free address for the device.
Definition: NMEA2000.cpp:2497
-
void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev)
Respond to an Group Function.
Definition: NMEA2000.cpp:2338
-
bool InstallationDescriptionChanged
Flag the Installation description has changed.
Definition: NMEA2000.h:1742
-
void SetConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information of this device.
Definition: NMEA2000.cpp:750
+
bool ReadResetDeviceInformationChanged()
Check if this device has changed its DeviceInstances or SystemInstance.
Definition: NMEA2000.cpp:2504
+
void GetSwCode(char *buf, size_t max_len, int iDev=0) const
Get the Sw Code of the device.
Definition: NMEA2000.cpp:946
+
void SetN2kSource(unsigned char _iAddr, int _iDev=0)
Set source for the given device.
Definition: NMEA2000.cpp:2488
+
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:930
+
void DetachMsgHandler(tMsgHandler *_MsgHandler)
Detach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2668
+
void CopyProgmemConfigurationInformationToLocal()
Copy Configuration Information to local memory.
Definition: NMEA2000.cpp:1022
+
void(* OnOpen)()
Callback function, which will be called when library start bus communicaion.
Definition: NMEA2000.h:1074
+
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:1008
+
void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false)
Get the next free address for the device.
Definition: NMEA2000.cpp:2512
+
void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev)
Respond to an Group Function.
Definition: NMEA2000.cpp:2353
+
bool InstallationDescriptionChanged
Flag the Installation description has changed.
Definition: NMEA2000.h:1746
+
void SetConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information of this device.
Definition: NMEA2000.cpp:764
tInternalDevice * Devices
Pointer to a buffer for all internal devices.
Definition: NMEA2000.h:975
-
void SetDeviceCount(const uint8_t _DeviceCount)
Set the count of devices library shows on bus.
Definition: NMEA2000.cpp:690
+
void SetDeviceCount(const uint8_t _DeviceCount)
Set the count of devices library shows on bus.
Definition: NMEA2000.cpp:704
tCANSendFrame * CANSendFrameBuf
Buffer for library send out CAN frames.
Definition: NMEA2000.h:1035
-
void RunMessageHandlers(const tN2kMsg &N2kMsg)
Run all message handlers.
Definition: NMEA2000.cpp:2605
+
void RunMessageHandlers(const tN2kMsg &N2kMsg)
Run all message handlers.
Definition: NMEA2000.cpp:2620
const char * InstallationDescription2
pointer to char array holding the installation description 2
Definition: NMEA2000.h:740
const char * InstallationDescription1
pointer to char array holding the installation description 1
Definition: NMEA2000.h:738
const char * ManufacturerInformation
pointer to char array holding the manufacturer information
Definition: NMEA2000.h:736
@@ -3132,8 +3140,8 @@
unsigned char LoadEquivalency
Load Equivalency of the device A Load Equivalence Number express the amount of current that is drawn ...
Definition: NMEA2000.h:243
unsigned char CertificationLevel
Certification level of the device.
Definition: NMEA2000.h:236
char N2kModelVersion[Max_N2kModelVersion_len+1]
Max length of Model Version Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:231
-
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:618
-
void Clear()
Clears out all data
Definition: NMEA2000.cpp:613
+
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:632
+
void Clear()
Clears out all data
Definition: NMEA2000.cpp:627
char N2kSwCode[Max_N2kSwCode_len+1]
Max length of Software Code Note that we reserve one extra char for null termination
Definition: NMEA2000.h:228
char N2kModelSerialCode[Max_N2kModelSerialCode_len+1]
Max length of Serial Code Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:234
void Set(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff)
Set all the product infomation data of the structure.
Definition: NMEA2000.h:262
diff --git a/_n_m_e_a2000_8h.html b/_n_m_e_a2000_8h.html index 3e49dd3c..b6bf4e1d 100644 --- a/_n_m_e_a2000_8h.html +++ b/_n_m_e_a2000_8h.html @@ -600,7 +600,7 @@

N2kpgnl_receive  -

Definition at line 3249 of file NMEA2000.h.

+

Definition at line 3262 of file NMEA2000.h.

@@ -725,7 +725,7 @@

Definition at line 2773 of file NMEA2000.cpp.

+

Definition at line 2788 of file NMEA2000.cpp.

@@ -807,7 +807,7 @@

Definition at line 2858 of file NMEA2000.cpp.

+

Definition at line 2873 of file NMEA2000.cpp.

@@ -854,7 +854,7 @@

Definition at line 2879 of file NMEA2000.cpp.

+

Definition at line 2894 of file NMEA2000.cpp.

@@ -895,7 +895,7 @@

Alias of PGN 59904. This alias was introduced to improve the readability of the source code. See parameter details on ParseN2kPGN59904

-

Definition at line 3240 of file NMEA2000.h.

+

Definition at line 3253 of file NMEA2000.h.

@@ -942,7 +942,7 @@

Alias of PGN 126993. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN126993

-

Definition at line 3300 of file NMEA2000.h.

+

Definition at line 3313 of file NMEA2000.h.

@@ -1001,7 +1001,7 @@

Alias of PGN 126998. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN126998

-

Definition at line 3156 of file NMEA2000.h.

+

Definition at line 3169 of file NMEA2000.h.

@@ -1042,7 +1042,7 @@

Alias of PGN 60928. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN60928

-

Definition at line 3063 of file NMEA2000.h.

+

Definition at line 3076 of file NMEA2000.h.

@@ -1119,7 +1119,7 @@

Alias of PGN 60928. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN60928

-

Definition at line 3050 of file NMEA2000.h.

+

Definition at line 3063 of file NMEA2000.h.

@@ -1175,7 +1175,7 @@

Definition at line 2892 of file NMEA2000.cpp.

+

Definition at line 2907 of file NMEA2000.cpp.

@@ -1222,7 +1222,7 @@

Definition at line 2908 of file NMEA2000.cpp.

+

Definition at line 2923 of file NMEA2000.cpp.

@@ -1311,7 +1311,7 @@

Definition at line 2756 of file NMEA2000.cpp.

+

Definition at line 2771 of file NMEA2000.cpp.

@@ -1372,7 +1372,7 @@

Definition at line 2808 of file NMEA2000.cpp.

+

Definition at line 2823 of file NMEA2000.cpp.

@@ -1427,7 +1427,7 @@

-

Definition at line 2717 of file NMEA2000.cpp.

+

Definition at line 2732 of file NMEA2000.cpp.

@@ -1474,7 +1474,7 @@

Definition at line 2872 of file NMEA2000.cpp.

+

Definition at line 2887 of file NMEA2000.cpp.

@@ -1514,7 +1514,7 @@

Definition at line 2747 of file NMEA2000.cpp.

+

Definition at line 2762 of file NMEA2000.cpp.

@@ -1596,7 +1596,7 @@

Definition at line 2731 of file NMEA2000.cpp.

+

Definition at line 2746 of file NMEA2000.cpp.

@@ -1649,7 +1649,7 @@

Alias of PGN 59392. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN59392

-

Definition at line 3003 of file NMEA2000.h.

+

Definition at line 3016 of file NMEA2000.h.

@@ -1696,7 +1696,7 @@

Alias of PGN 59904. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN59904

-

Definition at line 3213 of file NMEA2000.h.

+

Definition at line 3226 of file NMEA2000.h.

@@ -1744,7 +1744,7 @@

Alias of PGN 126464. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN126464

-

Definition at line 3276 of file NMEA2000.h.

+

Definition at line 3289 of file NMEA2000.h.

@@ -1827,7 +1827,7 @@

Alias of PGN 126996. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN126996

-

Definition at line 3094 of file NMEA2000.h.

+

Definition at line 3107 of file NMEA2000.h.

diff --git a/_n_m_e_a2000_8h_source.html b/_n_m_e_a2000_8h_source.html index 4e16aa1d..70f1e40b 100644 --- a/_n_m_e_a2000_8h_source.html +++ b/_n_m_e_a2000_8h_source.html @@ -564,596 +564,596 @@
1062
-
1070 void (*OnOpen)();
-
1071
-
1073 void (*MsgHandler)(const tN2kMsg &N2kMsg);
-
1075 bool (*ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex);
-
1076
-
1077#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
- -
1080#endif
-
1081
-
1082protected:
-
1083 /*********************************************************************/
-
1101 virtual bool CANSendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)=0;
-
1102
-
1103 /*********************************************************************/
-
1116 virtual bool CANOpen()=0;
-
1117
-
1118 /*********************************************************************/
-
1131 virtual bool CANGetFrame(unsigned long &id, unsigned char &len, unsigned char *buf)=0;
-
1132
-
1133 /*********************************************************************/
-
1155 virtual void InitCANFrameBuffers();
-
1156#if defined(DEBUG_NMEA2000_ISR)
-
1157 virtual void TestISR() {;}
-
1158#endif
-
1159
-
1160protected:
-
1161 /**********************************************************************/
-
1167 bool SendFrames();
-
1168 /**********************************************************************/
-
1182 bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true);
-
1183
-
1184 /*********************************************************************/
-
1188 tCANSendFrame *GetNextFreeCANSendFrame();
-
1189
-
1190 /*********************************************************************/
- -
1204
-
1205protected:
-
1206 /*********************************************************************/
-
1224 void InitDevices();
-
1225 /*********************************************************************/
-
1230 bool IsInitialized() { return (N2kCANMsgBuf!=0); }
-
1231
-
1232#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1233 /*********************************************************************/
-
1248 void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex);
-
1249#else
-
1250 /*********************************************************************/
-
1264 void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, uint8_t &MsgIndex);
-
1265#endif
-
1266 /*********************************************************************/
-
1279 uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf);
-
1280
-
1281 /*********************************************************************/
-
1292 bool IsFastPacketPGN(unsigned long PGN);
-
1293
-
1294 /*********************************************************************/
-
1305 bool IsFastPacket(const tN2kMsg &N2kMsg);
-
1306
-
1307 /*********************************************************************/
-
1324 bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket);
-
1325
-
1326 /*********************************************************************/
-
1342 bool HandleReceivedSystemMessage(int MsgIndex);
-
1343
-
1344 /*********************************************************************/
-
1353 void ForwardMessage(const tN2kMsg &N2kMsg);
-
1354
-
1355 /*********************************************************************/
-
1364 void ForwardMessage(const tN2kCANMsg &N2kCanMsg);
-
1365
-
1366 /*********************************************************************/
-
1380 void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev);
-
1381
-
1382 /*********************************************************************/
-
1390 void HandleISORequest(const tN2kMsg &N2kMsg);
-
1391
-
1392#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
1393
-
1394 /*********************************************************************/
-
1408 void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev);
-
1409
-
1410 /*********************************************************************/
-
1420 void HandleGroupFunction(const tN2kMsg &N2kMsg);
-
1421#endif
-
1422
-
1423 /*********************************************************************/
-
1428 void StartAddressClaim(int iDev);
-
1429
-
1430 /*********************************************************************/
-
1434 void StartAddressClaim();
-
1435
-
1436 /*********************************************************************/
-
1443 bool IsAddressClaimStarted(int iDev);
-
1444
-
1445 /**********************************************************************/
-
1450 void HandleISOAddressClaim(const tN2kMsg &N2kMsg);
-
1451
-
1452 /**********************************************************************/
-
1460 void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev);
-
1461
-
1462 /**********************************************************************/
-
1467 void HandleCommandedAddress(const tN2kMsg &N2kMsg);
-
1468
-
1469 /**********************************************************************/
-
1477 void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false);
-
1478
-
1479 /**********************************************************************/
-
1486 bool IsMySource(unsigned char Source);
-
1487
-
1488 /**********************************************************************/
-
1495 int GetSequenceCounter(unsigned long PGN, int iDev);
-
1496
-
1497 /*********************************************************************/
-
1503 size_t GetFastPacketTxPGNCount(int iDev);
-
1504
-
1505 /*********************************************************************/
- -
1517
-
1518 /*********************************************************************/
- -
1525
-
1526 /*********************************************************************/
- -
1533
-
1534 /*********************************************************************/
- -
1541
-
1542 /*********************************************************************/
- -
1549
-
1550 /*********************************************************************/
-
1555 void RunMessageHandlers(const tN2kMsg &N2kMsg);
-
1556
-
1557 /*********************************************************************/
-
1568 bool HandleReceivedMessage(unsigned char Destination) {
-
1569 return (/* HandleMessagesToAnyDestination() */ true ||
-
1570 tNMEA2000::IsBroadcast(Destination) ||
-
1571 FindSourceDeviceIndex(Destination)>=0);
-
1572 }
-
1573
-
1574 /*********************************************************************/
- -
1581
-
1582 /*********************************************************************/
-
1589 bool IsValidDevice(int iDev) const { return (iDev>=0 && iDev<DeviceCount ); }
-
1590
-
1591 /*********************************************************************/
-
1597 bool IsReadyToSend() const {
-
1598 return ( (OpenState==os_Open || dbMode!=dm_None) &&
- - - -
1602 );
-
1603 }
-
1604
-
1605
-
1606#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
1607 /*********************************************************************/
-
1620 bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination,
-
1621 unsigned char len, unsigned char *buf,
-
1622 uint8_t &MsgIndex);
-
1623
-
1624 /*********************************************************************/
-
1634 bool SendTPCM_BAM(int iDev);
-
1635
-
1636 /*********************************************************************/
-
1644 bool SendTPCM_RTS(int iDev);
-
1645
-
1646 /*********************************************************************/
-
1656 void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber);
-
1657
-
1658 /**********************************************************************/
-
1667 void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets);
-
1668
-
1669 /*********************************************************************/
-
1677 void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode);
-
1678
-
1679 /**********************************************************************/
-
1690 bool SendTPDT(int iDev);
-
1691
-
1692 /*********************************************************************/
-
1701 bool HasAllTPDTSent(int iDev);
-
1702
-
1703 /*********************************************************************/
-
1712 bool StartSendTPMessage(const tN2kMsg& msg, int iDev);
-
1713
-
1714 /*********************************************************************/
-
1719 void EndSendTPMessage(int iDev);
-
1720
-
1721 /*********************************************************************/
-
1726 void SendPendingTPMessage(int iDev);
-
1727#endif
-
1728#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
1729 /*********************************************************************/
- -
1738
-
1739 /*********************************************************************/
- -
1743#endif
-
1744
-
1745public:
-
1746 /*********************************************************************/
-
1751 tNMEA2000();
-
1752
-
1753 /**********************************************************************/
-
1759 int FindSourceDeviceIndex(unsigned char Source) const;
-
1760
-
1761 /*********************************************************************/
-
1775 void SetDeviceCount(const uint8_t _DeviceCount);
-
1776
-
1777 /*********************************************************************/
-
1812 void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs) { if (N2kCANMsgBuf==0) { MaxN2kCANMsgs=_MaxN2kCANMsgs; }; }
-
1813
-
1814 /*********************************************************************/
-
1849 virtual void SetN2kCANSendFrameBufSize(const uint16_t _MaxCANSendFrames) { if ( !IsInitialized() ) { MaxCANSendFrames=_MaxCANSendFrames; }; }
-
1850
-
1851 /*********************************************************************/
-
1866 virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames) { if ( !IsInitialized() ) MaxCANReceiveFrames=_MaxCANReceiveFrames; }
-
1867
-
1868 /*********************************************************************/
-
1900 void SetProductInformation(const char *_ModelSerialCode,
-
1901 unsigned short _ProductCode=0xffff,
-
1902 const char *_ModelID=0,
-
1903 const char *_SwCode=0,
-
1904 const char *_ModelVersion=0,
-
1905 unsigned char _LoadEquivalency=0xff,
-
1906 unsigned short _N2kVersion=0xffff,
-
1907 unsigned char _CertificationLevel=0xff,
-
1908 int iDev=0
-
1909 );
-
1910
-
1911 /*********************************************************************/
-
1924 void SetProductInformation(const tProductInformation *_ProductInformation, int iDev=0);
-
1925
-
1926 /*********************************************************************/
-
1955 void SetConfigurationInformation(const char *ManufacturerInformation,
-
1956 const char *InstallationDescription1=0,
-
1957 const char *InstallationDescription2=0);
-
1958
-
1959 /*********************************************************************/
-
1979 void SetProgmemConfigurationInformation(const char *ManufacturerInformation,
-
1980 const char *InstallationDescription1=0,
-
1981 const char *InstallationDescription2=0);
-
1982
-
1983#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
1984
-
1985 /**********************************************************************/
-
1993 bool IsTxPGN(unsigned long PGN, int iDev=0);
-
1994
-
1995 /**********************************************************************/
-
2002 const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const;
-
2003
-
2004 /**********************************************************************/
-
2010 unsigned short GetN2kVersion(int iDev=0) const;
-
2011
-
2012 /**********************************************************************/
-
2018 unsigned short GetProductCode(int iDev=0) const;
-
2019
-
2020 /**********************************************************************/
-
2027 void GetModelID(char *buf, size_t max_len, int iDev=0) const;
-
2028
-
2029 /**********************************************************************/
-
2036 void GetSwCode(char *buf, size_t max_len, int iDev=0) const;
-
2037
-
2038 /**********************************************************************/
-
2045 void GetModelVersion(char *buf, size_t max_len, int iDev=0) const;
-
2046
-
2047 /**********************************************************************/
-
2054 void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const;
-
2055
-
2056 /**********************************************************************/
-
2062 unsigned char GetCertificationLevel(int iDev=0) const;
-
2063
-
2064 /*********************************************************************/
-
2075 unsigned char GetLoadEquivalency(int iDev=0) const;
-
2076
-
2077 /*********************************************************************/
-
2085 void SetInstallationDescription1(const char *InstallationDescription1);
-
2086
-
2087 /*********************************************************************/
-
2095 void SetInstallationDescription2(const char *InstallationDescription2);
-
2096
-
2097 /*********************************************************************/
-
2104 void GetInstallationDescription1(char *buf, size_t max_len);
-
2105
-
2106 /*********************************************************************/
-
2113 void GetInstallationDescription2(char *buf, size_t max_len);
-
2114
-
2115 /*********************************************************************/
-
2122 void GetManufacturerInformation(char *buf, size_t max_len);
-
2123
-
2124 /*********************************************************************/
- -
2136#endif
-
2137
-
2138 /*********************************************************************/
-
2161 void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages);
-
2162
-
2163 /*********************************************************************/
-
2186 void SetFastPacketMessages (const unsigned long *_FastPacketMessages);
-
2187
-
2188 /*********************************************************************/
-
2208 void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages);
-
2209
-
2210 /*********************************************************************/
-
2233 void ExtendFastPacketMessages (const unsigned long *_FastPacketMessages);
-
2234
-
2235 /*********************************************************************/
-
2262 void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0);
-
2263
-
2264 /*********************************************************************/
-
2289 void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0);
-
2290
-
2291 /*********************************************************************/
-
2329 void SetDeviceInformation(unsigned long _UniqueNumber,
-
2330 unsigned char _DeviceFunction=0xff,
-
2331 unsigned char _DeviceClass=0xff,
-
2332 uint16_t _ManufacturerCode=0xffff,
-
2333 unsigned char _IndustryGroup=4,
-
2334 int iDev=0
-
2335 );
-
2336
-
2337 /*********************************************************************/
- -
2356 uint8_t _DeviceInstanceLower=0xff,
-
2357 uint8_t _DeviceInstanceUpper=0xff,
-
2358 uint8_t _SystemInstance=0xff,
-
2359 int iDev=0
-
2360 );
-
2361
-
2362 /*********************************************************************/
-
2382 const tDeviceInformation GetDeviceInformation(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return tDeviceInformation(); return Devices[iDev].DeviceInformation; }
-
2383
-
2384 /*********************************************************************/
-
2394 void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0);
-
2395
-
2396#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
-
2397 /*********************************************************************/
-
2409 bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP);
-
2410
-
2411 /*********************************************************************/
-
2423 bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP);
-
2424
-
2425 /*********************************************************************/
-
2435 void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false);
-
2436
-
2437 /*********************************************************************/
-
2447 void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false);
-
2448#else
-
2449 void SendTxPGNList(unsigned char Destination, int DeviceIndex);
-
2450 void SendRxPGNList(unsigned char Destination, int DeviceIndex);
-
2451#endif
-
2452
-
2453 /*********************************************************************/
-
2463 bool SendProductInformation(int DeviceIndex=0);
-
2464
-
2465 /*********************************************************************/
-
2475 bool SendConfigurationInformation(int DeviceIndex=0);
-
2476
-
2477#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
-
2478
-
2479
-
2480 /*********************************************************************/
-
2497 void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1);
-
2498
-
2499 /*********************************************************************/
-
2509 uint32_t GetHeartbeatInterval(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return 60000; return Devices[iDev].HeartbeatScheduler.GetPeriod(); }
-
2510 /*********************************************************************/
-
2520 uint32_t GetHeartbeatOffset(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return 0; return Devices[iDev].HeartbeatScheduler.GetOffset(); }
-
2521
-
2522 /*********************************************************************/
-
2527 void SendHeartbeat(int iDev);
-
2528
-
2529 /*********************************************************************/
-
2537 void SendHeartbeat(bool force=false);
-
2538
-
2539 // deprecated! SetAsDefault has no effect. Use function SetHeartbeatIntervalAndOffset.
-
2540 void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__ ((deprecated));
-
2541#endif
-
2542
-
2543 /*********************************************************************/
-
2566 void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15);
-
2567
-
2568 /*********************************************************************/
-
2582 void SetForwardType(tForwardType fwdType) { ForwardType=fwdType; }
-
2583
-
2584 /*********************************************************************/
-
2594 void SetForwardStream(N2kStream* _stream) { ForwardStream=_stream; }
-
2595
-
2596 /*********************************************************************/
- -
2602
-
2603 /*********************************************************************/
-
2617 bool Open();
-
2618
-
2619 /*********************************************************************/
-
2625 inline bool IsOpen() const { return OpenState==os_Open; }
-
2626
-
2627 /*********************************************************************/
-
2636 void Restart();
-
2637
-
2638 /*********************************************************************/
-
2679 bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0);
-
2680
-
2681 /*********************************************************************/
-
2705 void ParseMessages();
-
2706
-
2707 /*********************************************************************/
-
2714 void SetOnOpen(void (*_OnOpen)());
-
2715
+
1074 void (*OnOpen)();
+
1075
+
1077 void (*MsgHandler)(const tN2kMsg &N2kMsg);
+
1079 bool (*ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex);
+
1080
+
1081#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+ +
1084#endif
+
1085
+
1086protected:
+
1087 /*********************************************************************/
+
1105 virtual bool CANSendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)=0;
+
1106
+
1107 /*********************************************************************/
+
1120 virtual bool CANOpen()=0;
+
1121
+
1122 /*********************************************************************/
+
1135 virtual bool CANGetFrame(unsigned long &id, unsigned char &len, unsigned char *buf)=0;
+
1136
+
1137 /*********************************************************************/
+
1159 virtual void InitCANFrameBuffers();
+
1160#if defined(DEBUG_NMEA2000_ISR)
+
1161 virtual void TestISR() {;}
+
1162#endif
+
1163
+
1164protected:
+
1165 /**********************************************************************/
+
1171 bool SendFrames();
+
1172 /**********************************************************************/
+
1186 bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true);
+
1187
+
1188 /*********************************************************************/
+
1192 tCANSendFrame *GetNextFreeCANSendFrame();
+
1193
+
1194 /*********************************************************************/
+ +
1208
+
1209protected:
+
1210 /*********************************************************************/
+
1228 void InitDevices();
+
1229 /*********************************************************************/
+
1234 bool IsInitialized() { return (N2kCANMsgBuf!=0); }
+
1235
+
1236#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1237 /*********************************************************************/
+
1252 void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex);
+
1253#else
+
1254 /*********************************************************************/
+
1268 void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, uint8_t &MsgIndex);
+
1269#endif
+
1270 /*********************************************************************/
+
1283 uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf);
+
1284
+
1285 /*********************************************************************/
+
1296 bool IsFastPacketPGN(unsigned long PGN);
+
1297
+
1298 /*********************************************************************/
+
1309 bool IsFastPacket(const tN2kMsg &N2kMsg);
+
1310
+
1311 /*********************************************************************/
+
1328 bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket);
+
1329
+
1330 /*********************************************************************/
+
1346 bool HandleReceivedSystemMessage(int MsgIndex);
+
1347
+
1348 /*********************************************************************/
+
1357 void ForwardMessage(const tN2kMsg &N2kMsg);
+
1358
+
1359 /*********************************************************************/
+
1368 void ForwardMessage(const tN2kCANMsg &N2kCanMsg);
+
1369
+
1370 /*********************************************************************/
+
1384 void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev);
+
1385
+
1386 /*********************************************************************/
+
1394 void HandleISORequest(const tN2kMsg &N2kMsg);
+
1395
+
1396#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
1397
+
1398 /*********************************************************************/
+
1412 void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev);
+
1413
+
1414 /*********************************************************************/
+
1424 void HandleGroupFunction(const tN2kMsg &N2kMsg);
+
1425#endif
+
1426
+
1427 /*********************************************************************/
+
1432 void StartAddressClaim(int iDev);
+
1433
+
1434 /*********************************************************************/
+
1438 void StartAddressClaim();
+
1439
+
1440 /*********************************************************************/
+
1447 bool IsAddressClaimStarted(int iDev);
+
1448
+
1449 /**********************************************************************/
+
1454 void HandleISOAddressClaim(const tN2kMsg &N2kMsg);
+
1455
+
1456 /**********************************************************************/
+
1464 void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev);
+
1465
+
1466 /**********************************************************************/
+
1471 void HandleCommandedAddress(const tN2kMsg &N2kMsg);
+
1472
+
1473 /**********************************************************************/
+
1481 void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false);
+
1482
+
1483 /**********************************************************************/
+
1490 bool IsMySource(unsigned char Source);
+
1491
+
1492 /**********************************************************************/
+
1499 int GetSequenceCounter(unsigned long PGN, int iDev);
+
1500
+
1501 /*********************************************************************/
+
1507 size_t GetFastPacketTxPGNCount(int iDev);
+
1508
+
1509 /*********************************************************************/
+ +
1521
+
1522 /*********************************************************************/
+ +
1529
+
1530 /*********************************************************************/
+ +
1537
+
1538 /*********************************************************************/
+ +
1545
+
1546 /*********************************************************************/
+ +
1553
+
1554 /*********************************************************************/
+
1559 void RunMessageHandlers(const tN2kMsg &N2kMsg);
+
1560
+
1561 /*********************************************************************/
+
1572 bool HandleReceivedMessage(unsigned char Destination) {
+
1573 return (/* HandleMessagesToAnyDestination() */ true ||
+
1574 tNMEA2000::IsBroadcast(Destination) ||
+
1575 FindSourceDeviceIndex(Destination)>=0);
+
1576 }
+
1577
+
1578 /*********************************************************************/
+ +
1585
+
1586 /*********************************************************************/
+
1593 bool IsValidDevice(int iDev) const { return (iDev>=0 && iDev<DeviceCount ); }
+
1594
+
1595 /*********************************************************************/
+
1601 bool IsReadyToSend() const {
+
1602 return ( (OpenState==os_Open || dbMode!=dm_None) &&
+ + + +
1606 );
+
1607 }
+
1608
+
1609
+
1610#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
1611 /*********************************************************************/
+
1624 bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination,
+
1625 unsigned char len, unsigned char *buf,
+
1626 uint8_t &MsgIndex);
+
1627
+
1628 /*********************************************************************/
+
1638 bool SendTPCM_BAM(int iDev);
+
1639
+
1640 /*********************************************************************/
+
1648 bool SendTPCM_RTS(int iDev);
+
1649
+
1650 /*********************************************************************/
+
1660 void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber);
+
1661
+
1662 /**********************************************************************/
+
1671 void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets);
+
1672
+
1673 /*********************************************************************/
+
1681 void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode);
+
1682
+
1683 /**********************************************************************/
+
1694 bool SendTPDT(int iDev);
+
1695
+
1696 /*********************************************************************/
+
1705 bool HasAllTPDTSent(int iDev);
+
1706
+
1707 /*********************************************************************/
+
1716 bool StartSendTPMessage(const tN2kMsg& msg, int iDev);
+
1717
+
1718 /*********************************************************************/
+
1723 void EndSendTPMessage(int iDev);
+
1724
+
1725 /*********************************************************************/
+
1730 void SendPendingTPMessage(int iDev);
+
1731#endif
+
1732#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
1733 /*********************************************************************/
+ +
1742
+
1743 /*********************************************************************/
+ +
1747#endif
+
1748
+
1749public:
+
1750 /*********************************************************************/
+
1755 tNMEA2000();
+
1756
+
1757 /**********************************************************************/
+
1763 int FindSourceDeviceIndex(unsigned char Source) const;
+
1764
+
1765 /*********************************************************************/
+
1779 void SetDeviceCount(const uint8_t _DeviceCount);
+
1780
+
1781 /*********************************************************************/
+
1816 void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs) { if (N2kCANMsgBuf==0) { MaxN2kCANMsgs=_MaxN2kCANMsgs; }; }
+
1817
+
1818 /*********************************************************************/
+
1853 virtual void SetN2kCANSendFrameBufSize(const uint16_t _MaxCANSendFrames) { if ( !IsInitialized() ) { MaxCANSendFrames=_MaxCANSendFrames; }; }
+
1854
+
1855 /*********************************************************************/
+
1870 virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames) { if ( !IsInitialized() ) MaxCANReceiveFrames=_MaxCANReceiveFrames; }
+
1871
+
1872 /*********************************************************************/
+
1904 void SetProductInformation(const char *_ModelSerialCode,
+
1905 unsigned short _ProductCode=0xffff,
+
1906 const char *_ModelID=0,
+
1907 const char *_SwCode=0,
+
1908 const char *_ModelVersion=0,
+
1909 unsigned char _LoadEquivalency=0xff,
+
1910 unsigned short _N2kVersion=0xffff,
+
1911 unsigned char _CertificationLevel=0xff,
+
1912 int iDev=0
+
1913 );
+
1914
+
1915 /*********************************************************************/
+
1928 void SetProductInformation(const tProductInformation *_ProductInformation, int iDev=0);
+
1929
+
1930 /*********************************************************************/
+
1959 void SetConfigurationInformation(const char *ManufacturerInformation,
+
1960 const char *InstallationDescription1=0,
+
1961 const char *InstallationDescription2=0);
+
1962
+
1963 /*********************************************************************/
+
1983 void SetProgmemConfigurationInformation(const char *ManufacturerInformation,
+
1984 const char *InstallationDescription1=0,
+
1985 const char *InstallationDescription2=0);
+
1986
+
1987#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
1988
+
1989 /**********************************************************************/
+
1997 bool IsTxPGN(unsigned long PGN, int iDev=0);
+
1998
+
1999 /**********************************************************************/
+
2006 const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const;
+
2007
+
2008 /**********************************************************************/
+
2014 unsigned short GetN2kVersion(int iDev=0) const;
+
2015
+
2016 /**********************************************************************/
+
2022 unsigned short GetProductCode(int iDev=0) const;
+
2023
+
2024 /**********************************************************************/
+
2031 void GetModelID(char *buf, size_t max_len, int iDev=0) const;
+
2032
+
2033 /**********************************************************************/
+
2040 void GetSwCode(char *buf, size_t max_len, int iDev=0) const;
+
2041
+
2042 /**********************************************************************/
+
2049 void GetModelVersion(char *buf, size_t max_len, int iDev=0) const;
+
2050
+
2051 /**********************************************************************/
+
2058 void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const;
+
2059
+
2060 /**********************************************************************/
+
2066 unsigned char GetCertificationLevel(int iDev=0) const;
+
2067
+
2068 /*********************************************************************/
+
2079 unsigned char GetLoadEquivalency(int iDev=0) const;
+
2080
+
2081 /*********************************************************************/
+
2089 void SetInstallationDescription1(const char *InstallationDescription1);
+
2090
+
2091 /*********************************************************************/
+
2099 void SetInstallationDescription2(const char *InstallationDescription2);
+
2100
+
2101 /*********************************************************************/
+
2108 void GetInstallationDescription1(char *buf, size_t max_len);
+
2109
+
2110 /*********************************************************************/
+
2117 void GetInstallationDescription2(char *buf, size_t max_len);
+
2118
+
2119 /*********************************************************************/
+
2126 void GetManufacturerInformation(char *buf, size_t max_len);
+
2127
+
2128 /*********************************************************************/
+ +
2140#endif
+
2141
+
2142 /*********************************************************************/
+
2165 void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages);
+
2166
+
2167 /*********************************************************************/
+
2190 void SetFastPacketMessages (const unsigned long *_FastPacketMessages);
+
2191
+
2192 /*********************************************************************/
+
2212 void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages);
+
2213
+
2214 /*********************************************************************/
+
2237 void ExtendFastPacketMessages (const unsigned long *_FastPacketMessages);
+
2238
+
2239 /*********************************************************************/
+
2266 void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0);
+
2267
+
2268 /*********************************************************************/
+
2293 void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0);
+
2294
+
2295 /*********************************************************************/
+
2333 void SetDeviceInformation(unsigned long _UniqueNumber,
+
2334 unsigned char _DeviceFunction=0xff,
+
2335 unsigned char _DeviceClass=0xff,
+
2336 uint16_t _ManufacturerCode=0xffff,
+
2337 unsigned char _IndustryGroup=4,
+
2338 int iDev=0
+
2339 );
+
2340
+
2341 /*********************************************************************/
+ +
2360 uint8_t _DeviceInstanceLower=0xff,
+
2361 uint8_t _DeviceInstanceUpper=0xff,
+
2362 uint8_t _SystemInstance=0xff,
+
2363 int iDev=0
+
2364 );
+
2365
+
2366 /*********************************************************************/
+
2386 const tDeviceInformation GetDeviceInformation(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return tDeviceInformation(); return Devices[iDev].DeviceInformation; }
+
2387
+
2388 /*********************************************************************/
+
2398 void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0);
+
2399
+
2400#if !defined(N2K_NO_ISO_MULTI_PACKET_SUPPORT)
+
2401 /*********************************************************************/
+
2413 bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP);
+
2414
+
2415 /*********************************************************************/
+
2427 bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP);
+
2428
+
2429 /*********************************************************************/
+
2439 void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false);
+
2440
+
2441 /*********************************************************************/
+
2451 void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false);
+
2452#else
+
2453 void SendTxPGNList(unsigned char Destination, int DeviceIndex);
+
2454 void SendRxPGNList(unsigned char Destination, int DeviceIndex);
+
2455#endif
+
2456
+
2457 /*********************************************************************/
+
2467 bool SendProductInformation(int DeviceIndex=0);
+
2468
+
2469 /*********************************************************************/
+
2479 bool SendConfigurationInformation(int DeviceIndex=0);
+
2480
+
2481#if !defined(N2K_NO_HEARTBEAT_SUPPORT)
+
2482
+
2483
+
2484 /*********************************************************************/
+
2501 void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1);
+
2502
+
2503 /*********************************************************************/
+
2513 uint32_t GetHeartbeatInterval(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return 60000; return Devices[iDev].HeartbeatScheduler.GetPeriod(); }
+
2514 /*********************************************************************/
+
2524 uint32_t GetHeartbeatOffset(int iDev=0) { if (iDev<0 || iDev>=DeviceCount) return 0; return Devices[iDev].HeartbeatScheduler.GetOffset(); }
+
2525
+
2526 /*********************************************************************/
+
2534 void SendHeartbeat(int iDev);
+
2535
+
2536 /*********************************************************************/
+
2544 void SendHeartbeat(bool force=false);
+
2545
+
2546 /*********************************************************************/
+
2549 void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__ ((deprecated));
+
2550#endif
+
2551
+
2552 /*********************************************************************/
+
2575 void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15);
+
2576
+
2577 /*********************************************************************/
+
2591 void SetForwardType(tForwardType fwdType) { ForwardType=fwdType; }
+
2592
+
2593 /*********************************************************************/
+
2603 void SetForwardStream(N2kStream* _stream) { ForwardStream=_stream; }
+
2604
+
2605 /*********************************************************************/
+ +
2611
+
2612 /*********************************************************************/
+
2626 bool Open();
+
2627
+
2628 /*********************************************************************/
+
2634 inline bool IsOpen() const { return OpenState==os_Open; }
+
2635
+
2636 /*********************************************************************/
+
2645 void Restart();
+
2646
+
2647 /*********************************************************************/
+
2688 bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0);
+
2689
+
2690 /*********************************************************************/
+
2714 void ParseMessages();
+
2715
2716 /*********************************************************************/
-
2730 void SetMsgHandler(void (*_MsgHandler)(const tN2kMsg &N2kMsg));
-
2731
-
2732 /*********************************************************************/
-
2748 void AttachMsgHandler(tMsgHandler *_MsgHandler);
-
2749
-
2750 /*********************************************************************/
-
2762 void DetachMsgHandler(tMsgHandler *_MsgHandler);
-
2763
-
2764 /*********************************************************************/
-
2780 void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex));
-
2781
-
2782#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
-
2783
-
2784 /**********************************************************************/
-
2790 void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler);
-
2791
-
2792 /**********************************************************************/
-
2798 void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler);
-
2799#endif
-
2800
-
2801 /*********************************************************************/
-
2814 unsigned char GetN2kSource(int DeviceIndex=0) const { if (DeviceIndex>=0 && DeviceIndex<DeviceCount) return Devices[DeviceIndex].N2kSource; return Devices[0].N2kSource; }
-
2815
-
2816 /*********************************************************************/
-
2833 void SetN2kSource(unsigned char _iAddr, int _iDev=0);
-
2834
-
2835 /*********************************************************************/
- -
2857
-
2858 /*********************************************************************/
- -
2876
-
2877 /*********************************************************************/
-
2887 void EnableForward(bool v=true) {
-
2888 if (v) { ForwardMode |= FwdModeBit_EnableForward; } else { ForwardMode &= ~FwdModeBit_EnableForward; }
-
2889 }
-
2890
-
2891 /*********************************************************************/
-
2901 void SetForwardSystemMessages(bool v=true) {
-
2902 if (v) { ForwardMode |= FwdModeBit_SystemMessages; } else { ForwardMode &= ~FwdModeBit_SystemMessages; }
-
2903 }
-
2904
-
2905 /*********************************************************************/
- -
2924 if (v) { ForwardMode |= FwdModeBit_OnlyKnownMessages; } else { ForwardMode &= ~FwdModeBit_OnlyKnownMessages; }
-
2925 }
-
2926
-
2927 /*********************************************************************/
-
2935 void SetForwardOwnMessages(bool v=true) {
-
2936 if (v) { ForwardMode |= FwdModeBit_OwnMessages; } else { ForwardMode &= ~FwdModeBit_OwnMessages; }
-
2937 }
-
2938
-
2939 /*********************************************************************/
-
2953 void SetHandleOnlyKnownMessages(bool v=true) {
-
2954 if (v) { ForwardMode |= HandleModeBit_OnlyKnownMessages; } else { ForwardMode &= ~HandleModeBit_OnlyKnownMessages; }
-
2955 }
-
2956
-
2957 /*********************************************************************/
-
2968 void SetDebugMode(tDebugMode _dbMode);
+
2727 void SetOnOpen(void (*_OnOpen)());
+
2728
+
2729 /*********************************************************************/
+
2743 void SetMsgHandler(void (*_MsgHandler)(const tN2kMsg &N2kMsg));
+
2744
+
2745 /*********************************************************************/
+
2761 void AttachMsgHandler(tMsgHandler *_MsgHandler);
+
2762
+
2763 /*********************************************************************/
+
2775 void DetachMsgHandler(tMsgHandler *_MsgHandler);
+
2776
+
2777 /*********************************************************************/
+
2793 void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex));
+
2794
+
2795#if !defined(N2K_NO_GROUP_FUNCTION_SUPPORT)
+
2796
+
2797 /**********************************************************************/
+
2803 void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler);
+
2804
+
2805 /**********************************************************************/
+
2811 void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler);
+
2812#endif
+
2813
+
2814 /*********************************************************************/
+
2827 unsigned char GetN2kSource(int DeviceIndex=0) const { if (DeviceIndex>=0 && DeviceIndex<DeviceCount) return Devices[DeviceIndex].N2kSource; return Devices[0].N2kSource; }
+
2828
+
2829 /*********************************************************************/
+
2846 void SetN2kSource(unsigned char _iAddr, int _iDev=0);
+
2847
+
2848 /*********************************************************************/
+ +
2870
+
2871 /*********************************************************************/
+ +
2889
+
2890 /*********************************************************************/
+
2900 void EnableForward(bool v=true) {
+
2901 if (v) { ForwardMode |= FwdModeBit_EnableForward; } else { ForwardMode &= ~FwdModeBit_EnableForward; }
+
2902 }
+
2903
+
2904 /*********************************************************************/
+
2914 void SetForwardSystemMessages(bool v=true) {
+
2915 if (v) { ForwardMode |= FwdModeBit_SystemMessages; } else { ForwardMode &= ~FwdModeBit_SystemMessages; }
+
2916 }
+
2917
+
2918 /*********************************************************************/
+ +
2937 if (v) { ForwardMode |= FwdModeBit_OnlyKnownMessages; } else { ForwardMode &= ~FwdModeBit_OnlyKnownMessages; }
+
2938 }
+
2939
+
2940 /*********************************************************************/
+
2948 void SetForwardOwnMessages(bool v=true) {
+
2949 if (v) { ForwardMode |= FwdModeBit_OwnMessages; } else { ForwardMode &= ~FwdModeBit_OwnMessages; }
+
2950 }
+
2951
+
2952 /*********************************************************************/
+
2966 void SetHandleOnlyKnownMessages(bool v=true) {
+
2967 if (v) { ForwardMode |= HandleModeBit_OnlyKnownMessages; } else { ForwardMode &= ~HandleModeBit_OnlyKnownMessages; }
+
2968 }
2969
2970 /*********************************************************************/
-
2977 static bool IsBroadcast(unsigned char Source) { return Source==0xff; }
-
2978
-
2979};
-
2980
-
2981/************************************************************************/
-
2995void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN);
-
2996
-
2997/************************************************************************/
-
3003inline void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN) {
-
3004 SetN2kPGN59392(N2kMsg,Control,GroupFunction,PGN);
-
3005}
-
3006
-
3007/************************************************************************/
-
3026void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
-
3027 unsigned char DeviceFunction, unsigned char DeviceClass,
-
3028 unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4
-
3029 );
-
3030/************************************************************************/
-
3042void SetN2kPGN60928(tN2kMsg &N2kMsg, uint64_t Name);
-
3043
-
3044/************************************************************************/
-
3050inline void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
-
3051 unsigned char DeviceFunction, unsigned char DeviceClass,
-
3052 unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4
-
3053 ) {
-
3054 SetN2kPGN60928(N2kMsg, UniqueNumber, ManufacturerCode, DeviceFunction, DeviceClass,
-
3055 DeviceInstance, SystemInstance, IndustryGroup);
-
3056}
+
2981 void SetDebugMode(tDebugMode _dbMode);
+
2982
+
2983 /*********************************************************************/
+
2990 static bool IsBroadcast(unsigned char Source) { return Source==0xff; }
+
2991
+
2992};
+
2993
+
2994/************************************************************************/
+
3008void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN);
+
3009
+
3010/************************************************************************/
+
3016inline void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN) {
+
3017 SetN2kPGN59392(N2kMsg,Control,GroupFunction,PGN);
+
3018}
+
3019
+
3020/************************************************************************/
+
3039void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
+
3040 unsigned char DeviceFunction, unsigned char DeviceClass,
+
3041 unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4
+
3042 );
+
3043/************************************************************************/
+
3055void SetN2kPGN60928(tN2kMsg &N2kMsg, uint64_t Name);
+
3056
3057/************************************************************************/
-
3063inline void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, uint64_t Name) {
-
3064 SetN2kPGN60928(N2kMsg, Name);
-
3065}
-
3066
-
3067/************************************************************************/
-
3083void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
-
3084 const char *ModelID, const char *SwCode,
-
3085 const char *ModelVersion, const char *ModelSerialCode,
-
3086 unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1);
-
3087
-
3088/************************************************************************/
-
3094inline void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
-
3095 const char *ModelID, const char *SwCode,
-
3096 const char *ModelVersion, const char *ModelSerialCode,
-
3097 unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1) {
-
3098 SetN2kPGN126996(N2kMsg,N2kVersion,ProductCode,
-
3099 ModelID,SwCode,ModelVersion,ModelSerialCode,
-
3100 CertificationLevel,LoadEquivalency);
-
3101}
-
3102
-
3103/************************************************************************/
-
3126bool ParseN2kPGN126996(const tN2kMsg& N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode,
-
3127 int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode,
-
3128 int ModelVersionSize, char * ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode,
-
3129 unsigned char &CertificationLevel, unsigned char &LoadEquivalency);
-
3130
-
3131/************************************************************************/
-
3144void SetN2kPGN126998(tN2kMsg &N2kMsg,
-
3145 const char *ManufacturerInformation,
-
3146 const char *InstallationDescription1=0,
-
3147 const char *InstallationDescription2=0,
-
3148 bool UsePgm=false);
-
3149
-
3150/************************************************************************/
- -
3157 const char *ManufacturerInformation,
-
3158 const char *InstallationDescription1=0,
-
3159 const char *InstallationDescription2=0,
-
3160 bool UsePgm=false) {
-
3161 SetN2kPGN126998(N2kMsg,
-
3162 ManufacturerInformation,
-
3163 InstallationDescription1,
-
3164 InstallationDescription2,
-
3165 UsePgm);
-
3166}
-
3167
-
3168/************************************************************************/
-
3188bool ParseN2kPGN126998(const tN2kMsg& N2kMsg,
-
3189 size_t &ManufacturerInformationSize, char *ManufacturerInformation,
-
3190 size_t &InstallationDescription1Size, char *InstallationDescription1,
-
3191 size_t &InstallationDescription2Size, char *InstallationDescription2);
-
3192
-
3193/************************************************************************/
-
3205void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN);
-
3206
-
3207/************************************************************************/
-
3213inline void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN) {
-
3214 SetN2kPGN59904(N2kMsg,Destination,RequestedPGN);
-
3215}
-
3216
-
3217/************************************************************************/
-
3231bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN);
-
3232
-
3233/************************************************************************/
-
3240inline bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN) {
-
3241 return ParseN2kPGN59904(N2kMsg, RequestedPGN);
-
3242}
-
3243
-
3244/************************************************************************/
- -
3250
-
3251/************************************************************************/
-
3267void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs);
-
3268
-
3269/************************************************************************/
-
3276inline void SetN2kPGNTransmitList(tN2kMsg &N2kMsg, uint8_t Destination, const unsigned long *PGNs) {
-
3277 SetN2kPGN126464(N2kMsg,Destination,N2kpgnl_transmit,PGNs);
-
3278}
-
3279
-
3280/************************************************************************/
-
3292void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter);
-
3293
-
3294/************************************************************************/
-
3300inline void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter) {
-
3301 SetN2kPGN126993(N2kMsg, timeInterval_ms, sequenceCounter);
-
3302}
-
3303
-
3304#endif
+
3063inline void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode,
+
3064 unsigned char DeviceFunction, unsigned char DeviceClass,
+
3065 unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4
+
3066 ) {
+
3067 SetN2kPGN60928(N2kMsg, UniqueNumber, ManufacturerCode, DeviceFunction, DeviceClass,
+
3068 DeviceInstance, SystemInstance, IndustryGroup);
+
3069}
+
3070/************************************************************************/
+
3076inline void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, uint64_t Name) {
+
3077 SetN2kPGN60928(N2kMsg, Name);
+
3078}
+
3079
+
3080/************************************************************************/
+
3096void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
+
3097 const char *ModelID, const char *SwCode,
+
3098 const char *ModelVersion, const char *ModelSerialCode,
+
3099 unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1);
+
3100
+
3101/************************************************************************/
+
3107inline void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode,
+
3108 const char *ModelID, const char *SwCode,
+
3109 const char *ModelVersion, const char *ModelSerialCode,
+
3110 unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1) {
+
3111 SetN2kPGN126996(N2kMsg,N2kVersion,ProductCode,
+
3112 ModelID,SwCode,ModelVersion,ModelSerialCode,
+
3113 CertificationLevel,LoadEquivalency);
+
3114}
+
3115
+
3116/************************************************************************/
+
3139bool ParseN2kPGN126996(const tN2kMsg& N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode,
+
3140 int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode,
+
3141 int ModelVersionSize, char * ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode,
+
3142 unsigned char &CertificationLevel, unsigned char &LoadEquivalency);
+
3143
+
3144/************************************************************************/
+
3157void SetN2kPGN126998(tN2kMsg &N2kMsg,
+
3158 const char *ManufacturerInformation,
+
3159 const char *InstallationDescription1=0,
+
3160 const char *InstallationDescription2=0,
+
3161 bool UsePgm=false);
+
3162
+
3163/************************************************************************/
+ +
3170 const char *ManufacturerInformation,
+
3171 const char *InstallationDescription1=0,
+
3172 const char *InstallationDescription2=0,
+
3173 bool UsePgm=false) {
+
3174 SetN2kPGN126998(N2kMsg,
+
3175 ManufacturerInformation,
+
3176 InstallationDescription1,
+
3177 InstallationDescription2,
+
3178 UsePgm);
+
3179}
+
3180
+
3181/************************************************************************/
+
3201bool ParseN2kPGN126998(const tN2kMsg& N2kMsg,
+
3202 size_t &ManufacturerInformationSize, char *ManufacturerInformation,
+
3203 size_t &InstallationDescription1Size, char *InstallationDescription1,
+
3204 size_t &InstallationDescription2Size, char *InstallationDescription2);
+
3205
+
3206/************************************************************************/
+
3218void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN);
+
3219
+
3220/************************************************************************/
+
3226inline void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN) {
+
3227 SetN2kPGN59904(N2kMsg,Destination,RequestedPGN);
+
3228}
+
3229
+
3230/************************************************************************/
+
3244bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN);
+
3245
+
3246/************************************************************************/
+
3253inline bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN) {
+
3254 return ParseN2kPGN59904(N2kMsg, RequestedPGN);
+
3255}
+
3256
+
3257/************************************************************************/
+ +
3263
+
3264/************************************************************************/
+
3280void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs);
+
3281
+
3282/************************************************************************/
+
3289inline void SetN2kPGNTransmitList(tN2kMsg &N2kMsg, uint8_t Destination, const unsigned long *PGNs) {
+
3290 SetN2kPGN126464(N2kMsg,Destination,N2kpgnl_transmit,PGNs);
+
3291}
+
3292
+
3293/************************************************************************/
+
3305void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter);
+
3306
+
3307/************************************************************************/
+
3313inline void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter) {
+
3314 SetN2kPGN126993(N2kMsg, timeInterval_ms, sequenceCounter);
+
3315}
+
3316
+
3317#endif
File declares tN2kCANMsg class used internally on tNMEA2000.
Base and default group function PGN 126208 message handler class.
tN2kGroupFunctionCode
FunctionCode for the group function.
@@ -1162,33 +1162,33 @@
This File contains an I/O stream used in the NMEA2000 libraries.
uint32_t N2kMillis()
Definition: N2kTimer.cpp:48
The file contains function and classes for best timing performance.
-
void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up Message "Product information" - PGN 126996.
Definition: NMEA2000.h:3094
+
void SetN2kProductInformation(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up Message "Product information" - PGN 126996.
Definition: NMEA2000.h:3107
#define Max_N2kModelSerialCode_len
Max length of SerialCode Document says for leghts 32 but then values has not been translated right on...
Definition: NMEA2000.h:82
-
void SetN2kPGNTransmitList(tN2kMsg &N2kMsg, uint8_t Destination, const unsigned long *PGNs)
Setting up Message "PGN List - Transmit PGNs group function" - PGN 126464.
Definition: NMEA2000.h:3276
-
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2773
-
void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up PGN 126993 Message "Heartbeat".
Definition: NMEA2000.cpp:2908
-
void SetN2kPGN126998(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up PGN 126998 Message "Configuration information".
Definition: NMEA2000.cpp:2808
-
void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up PGN 60928 Message "ISO Address Claim".
Definition: NMEA2000.cpp:2731
+
void SetN2kPGNTransmitList(tN2kMsg &N2kMsg, uint8_t Destination, const unsigned long *PGNs)
Setting up Message "PGN List - Transmit PGNs group function" - PGN 126464.
Definition: NMEA2000.h:3289
+
bool ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency)
Parsing the content of message PGN 126996 "Product information".
Definition: NMEA2000.cpp:2788
+
void SetN2kPGN126993(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up PGN 126993 Message "Heartbeat".
Definition: NMEA2000.cpp:2923
+
void SetN2kPGN126998(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up PGN 126998 Message "Configuration information".
Definition: NMEA2000.cpp:2823
+
void SetN2kPGN60928(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up PGN 60928 Message "ISO Address Claim".
Definition: NMEA2000.cpp:2746
#define Max_N2kSwCode_len
Max length of Software Code Document says for leghts 40 but then values has not been translated right...
Definition: NMEA2000.h:74
-
void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs)
Setting up PGN 126464 Message "PGN List - Transmit PGNs group function".
Definition: NMEA2000.cpp:2892
-
void SetN2kConfigurationInformation(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up Message "Configuration information" - PGN 126998.
Definition: NMEA2000.h:3156
-
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2858
+
void SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs)
Setting up PGN 126464 Message "PGN List - Transmit PGNs group function".
Definition: NMEA2000.cpp:2907
+
void SetN2kConfigurationInformation(tN2kMsg &N2kMsg, const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0, bool UsePgm=false)
Setting up Message "Configuration information" - PGN 126998.
Definition: NMEA2000.h:3169
+
bool ParseN2kPGN126998(const tN2kMsg &N2kMsg, size_t &ManufacturerInformationSize, char *ManufacturerInformation, size_t &InstallationDescription1Size, char *InstallationDescription1, size_t &InstallationDescription2Size, char *InstallationDescription2)
Parsing the content of message PGN 126998 "Configuration information".
Definition: NMEA2000.cpp:2873
#define N2kMessageGroups
Number of message groups.
Definition: NMEA2000.h:104
#define Max_N2kModelVersion_len
Max length of Model Version Document says for leghts 24 but then values has not been translated right...
Definition: NMEA2000.h:78
-
void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up PGN 59904 Message "ISO request".
Definition: NMEA2000.cpp:2872
-
void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up PGN 59392 Message "ISO Acknowledgement".
Definition: NMEA2000.cpp:2717
-
void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up Message "ISO Address Claim" - PGN 60928.
Definition: NMEA2000.h:3050
+
void SetN2kPGN59904(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up PGN 59904 Message "ISO request".
Definition: NMEA2000.cpp:2887
+
void SetN2kPGN59392(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up PGN 59392 Message "ISO Acknowledgement".
Definition: NMEA2000.cpp:2732
+
void SetN2kISOAddressClaim(tN2kMsg &N2kMsg, unsigned long UniqueNumber, int ManufacturerCode, unsigned char DeviceFunction, unsigned char DeviceClass, unsigned char DeviceInstance=0, unsigned char SystemInstance=0, unsigned char IndustryGroup=4)
Setting up Message "ISO Address Claim" - PGN 60928.
Definition: NMEA2000.h:3063
#define Max_N2kModelID_len
Max length of ModelID Document says for leghts 33 but then values has not been translated right on de...
Definition: NMEA2000.h:70
-
void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up Message "Heartbeat" - PGN 126993.
Definition: NMEA2000.h:3300
-
bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of message PGN 59904 "ISO request".
Definition: NMEA2000.cpp:2879
-
void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up PGN 126996 Message "Product information".
Definition: NMEA2000.cpp:2756
-
void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up Message "ISO Acknowledgement" - PGN 59392.
Definition: NMEA2000.h:3003
+
void SetHeartbeat(tN2kMsg &N2kMsg, uint32_t timeInterval_ms, uint8_t sequenceCounter)
Setting up Message "Heartbeat" - PGN 126993.
Definition: NMEA2000.h:3313
+
bool ParseN2kPGN59904(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of message PGN 59904 "ISO request".
Definition: NMEA2000.cpp:2894
+
void SetN2kPGN126996(tN2kMsg &N2kMsg, unsigned int N2kVersion, unsigned int ProductCode, const char *ModelID, const char *SwCode, const char *ModelVersion, const char *ModelSerialCode, unsigned char CertificationLevel=1, unsigned char LoadEquivalency=1)
Setting up PGN 126996 Message "Product information".
Definition: NMEA2000.cpp:2771
+
void SetN2kPGNISOAcknowledgement(tN2kMsg &N2kMsg, unsigned char Control, unsigned char GroupFunction, unsigned long PGN)
Setting up Message "ISO Acknowledgement" - PGN 59392.
Definition: NMEA2000.h:3016
#define N2kMaxCanBusAddress
Max CAN Bus Address given by the library.
Definition: NMEA2000.h:106
-
bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of a "ISO request" message - PGN 59904.
Definition: NMEA2000.h:3240
-
void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up Message "ISO request" - PGN 59904.
Definition: NMEA2000.h:3213
-
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3249
-
@ N2kpgnl_receive
Definition: NMEA2000.h:3249
-
@ N2kpgnl_transmit
Definition: NMEA2000.h:3249
+
bool ParseN2kPGNISORequest(const tN2kMsg &N2kMsg, unsigned long &RequestedPGN)
Parsing the content of a "ISO request" message - PGN 59904.
Definition: NMEA2000.h:3253
+
void SetN2kPGNISORequest(tN2kMsg &N2kMsg, uint8_t Destination, unsigned long RequestedPGN)
Setting up Message "ISO request" - PGN 59904.
Definition: NMEA2000.h:3226
+
tN2kPGNList
Enumeration of types for PGN lists according to PGN 126464.
Definition: NMEA2000.h:3262
+
@ N2kpgnl_receive
Definition: NMEA2000.h:3262
+
@ N2kpgnl_transmit
Definition: NMEA2000.h:3262
Specific compiler definition to adapt the library to your needs.
Streaming Class to handle all Streams generated by the Library.
Definition: N2kStream.h:60
Class used internally on tNMEA2000 to handle incoming NMEA2000 messages.
Definition: N2kCANMsg.h:42
@@ -1303,185 +1303,185 @@
tNMEA2000 * GetNMEA2000()
Returns the tNMEA2000 object of this handler.
Definition: NMEA2000.h:633
virtual void HandleMsg(const tN2kMsg &N2kMsg)=0
Handles a given message *.
tNMEA2000 device class definition.
Definition: NMEA2000.h:138
-
bool SendTPCM_RTS(int iDev)
Send ISO Transport Protocol message RTS.
Definition: NMEA2000.cpp:1672
-
bool IsMySource(unsigned char Source)
Checks if the source belongs to a device on Devices.
Definition: NMEA2000.cpp:2058
-
void SetFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Fast Packet Messages.
Definition: NMEA2000.cpp:1134
-
bool IsReadyToSend() const
Checks if the device is ready to start address claiming.
Definition: NMEA2000.h:1597
-
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1373
-
void SendPendingInformation()
Send ISO AddressClaim, Product Information and Config Information.
Definition: NMEA2000.cpp:1416
-
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:731
-
bool(* ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)
Handler callbacks for 'ISORequest' messages.
Definition: NMEA2000.h:1075
-
static void ClearSetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a clean Char Buffer.
Definition: NMEA2000.cpp:640
-
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:861
-
size_t GetFastPacketTxPGNCount(int iDev)
Get the Fast Packet Tx PGN Count.
Definition: NMEA2000.cpp:799
+
bool SendTPCM_RTS(int iDev)
Send ISO Transport Protocol message RTS.
Definition: NMEA2000.cpp:1687
+
bool IsMySource(unsigned char Source)
Checks if the source belongs to a device on Devices.
Definition: NMEA2000.cpp:2073
+
void SetFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Fast Packet Messages.
Definition: NMEA2000.cpp:1148
+
bool IsReadyToSend() const
Checks if the device is ready to start address claiming.
Definition: NMEA2000.h:1601
+
void SendHeartbeat(int iDev)
Send heartbeat for specific device.
Definition: NMEA2000.cpp:1388
+
void SendPendingInformation()
Send ISO AddressClaim, Product Information and Config Information.
Definition: NMEA2000.cpp:1431
+
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:745
+
bool(* ISORqstHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex)
Handler callbacks for 'ISORequest' messages.
Definition: NMEA2000.h:1079
+
static void ClearSetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a clean Char Buffer.
Definition: NMEA2000.cpp:654
+
bool IsTxPGN(unsigned long PGN, int iDev=0)
Check if this message is a Transmit message of this device.
Definition: NMEA2000.cpp:875
+
size_t GetFastPacketTxPGNCount(int iDev)
Get the Fast Packet Tx PGN Count.
Definition: NMEA2000.cpp:813
int DeviceCount
Number of devices.
Definition: NMEA2000.h:977
-
static void ClearCharBuf(size_t MaxLen, char *buf)
Clears a char array buffer with 0s.
Definition: NMEA2000.cpp:623
-
void InitDevices()
Initialize all devices.
Definition: NMEA2000.cpp:696
+
static void ClearCharBuf(size_t MaxLen, char *buf)
Clears a char array buffer with 0s.
Definition: NMEA2000.cpp:637
+
void InitDevices()
Initialize all devices.
Definition: NMEA2000.cpp:710
tN2kCANMsg * N2kCANMsgBuf
Buffer for receiving messages.
Definition: NMEA2000.h:1015
-
void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Extended Single Frame Messages.
Definition: NMEA2000.cpp:1139
-
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2887
-
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2562
-
void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex))
Set the message handler for incoming ISO Requests.
Definition: NMEA2000.cpp:2669
+
void ExtendSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Extended Single Frame Messages.
Definition: NMEA2000.cpp:1153
+
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2900
+
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2577
+
void SetISORqstHandler(bool(*ISORequestHandler)(unsigned long RequestedPGN, unsigned char Requester, int DeviceIndex))
Set the message handler for incoming ISO Requests.
Definition: NMEA2000.cpp:2684
tDebugMode dbMode
Attribute that holds the actual Debug Mode (default = md_none)
Definition: NMEA2000.h:950
-
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1079
-
bool HasAllTPDTSent(int iDev)
Check if all data bytes of the multi packet message has been send successful.
Definition: NMEA2000.cpp:1766
-
void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Remove a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2675
-
void SetForwardSystemMessages(bool v=true)
Enable System Messages for forwarding.
Definition: NMEA2000.h:2901
+
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1093
+
bool HasAllTPDTSent(int iDev)
Check if all data bytes of the multi packet message has been send successful.
Definition: NMEA2000.cpp:1781
+
void RemoveGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Remove a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2690
+
void SetForwardSystemMessages(bool v=true)
Enable System Messages for forwarding.
Definition: NMEA2000.h:2914
unsigned int ForwardMode
Actual message forward operation mode (default = all messages - also system and own)
Definition: NMEA2000.h:959
-
void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Single Frame Messages.
Definition: NMEA2000.cpp:1129
-
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1023
-
const tDeviceInformation GetDeviceInformation(int iDev=0)
Get the Device Information.
Definition: NMEA2000.h:2382
-
void HandleISORequest(const tN2kMsg &N2kMsg)
Handles an Iso Request.
Definition: NMEA2000.cpp:2318
+
void SetSingleFrameMessages(const unsigned long *_SingleFrameMessages)
Set the list of known Single Frame Messages.
Definition: NMEA2000.cpp:1143
+
void SetInstallationDescription1(const char *InstallationDescription1)
Set the Installation Description 1 of this device.
Definition: NMEA2000.cpp:1037
+
const tDeviceInformation GetDeviceInformation(int iDev=0)
Get the Device Information.
Definition: NMEA2000.h:2386
+
void HandleISORequest(const tN2kMsg &N2kMsg)
Handles an Iso Request.
Definition: NMEA2000.cpp:2333
N2kStream * ForwardStream
Actual stream to be used for forward messaging.
Definition: NMEA2000.h:961
-
void SetMsgHandler(void(*_MsgHandler)(const tN2kMsg &N2kMsg))
Set the message handler for incoming NMEA2000 messages.
Definition: NMEA2000.cpp:2623
+
void SetMsgHandler(void(*_MsgHandler)(const tN2kMsg &N2kMsg))
Set the message handler for incoming NMEA2000 messages.
Definition: NMEA2000.cpp:2638
static T N2kMax(T a, T b)
Delivers Max out of A an B.
Definition: NMEA2000.h:193
-
tN2kGroupFunctionHandler * pGroupFunctionHandlers
Pointer to Buffer for GRoup Function Handlers.
Definition: NMEA2000.h:1079
-
void SetForwardStream(N2kStream *_stream)
Set the Forward Stream object.
Definition: NMEA2000.h:2594
-
bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)
Sends a single CAN frame.
Definition: NMEA2000.cpp:1320
-
bool StartSendTPMessage(const tN2kMsg &msg, int iDev)
Start sending an ISO-TP message.
Definition: NMEA2000.cpp:1911
-
void HandleGroupFunction(const tN2kMsg &N2kMsg)
Handles a Group Function.
Definition: NMEA2000.cpp:2360
-
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2249
-
bool ReadResetInstallationDescriptionChanged()
Check if this device has changed its Install Description.
Definition: NMEA2000.cpp:1069
-
void SetForwardOnlyKnownMessages(bool v=true)
Enable Only Known Messages for forwarding.
Definition: NMEA2000.h:2923
-
void SetForwardOwnMessages(bool v=true)
Enable Own Messages for forwarding.
Definition: NMEA2000.h:2935
-
bool IsInitialized()
Determines if the CAN BUS is already initialized.
Definition: NMEA2000.h:1230
-
void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs)
Set incoming CAN message (tNMEA2000::N2kCANMsgBuf) buffer size.
Definition: NMEA2000.h:1812
-
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:980
-
void AttachMsgHandler(tMsgHandler *_MsgHandler)
Attach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2628
+
tN2kGroupFunctionHandler * pGroupFunctionHandlers
Pointer to Buffer for GRoup Function Handlers.
Definition: NMEA2000.h:1083
+
void SetForwardStream(N2kStream *_stream)
Set the Forward Stream object.
Definition: NMEA2000.h:2603
+
bool SendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)
Sends a single CAN frame.
Definition: NMEA2000.cpp:1335
+
bool StartSendTPMessage(const tN2kMsg &msg, int iDev)
Start sending an ISO-TP message.
Definition: NMEA2000.cpp:1926
+
void HandleGroupFunction(const tN2kMsg &N2kMsg)
Handles a Group Function.
Definition: NMEA2000.cpp:2375
+
bool SendConfigurationInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Config Information message.
Definition: NMEA2000.cpp:2264
+
bool ReadResetInstallationDescriptionChanged()
Check if this device has changed its Install Description.
Definition: NMEA2000.cpp:1083
+
void SetForwardOnlyKnownMessages(bool v=true)
Enable Only Known Messages for forwarding.
Definition: NMEA2000.h:2936
+
void SetForwardOwnMessages(bool v=true)
Enable Own Messages for forwarding.
Definition: NMEA2000.h:2948
+
bool IsInitialized()
Determines if the CAN BUS is already initialized.
Definition: NMEA2000.h:1234
+
void SetN2kCANMsgBufSize(const uint8_t _MaxN2kCANMsgs)
Set incoming CAN message (tNMEA2000::N2kCANMsgBuf) buffer size.
Definition: NMEA2000.h:1816
+
unsigned char GetCertificationLevel(int iDev=0) const
Get the Certification Level of the device.
Definition: NMEA2000.cpp:994
+
void AttachMsgHandler(tMsgHandler *_MsgHandler)
Attach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2643
bool AddressChanged
Flag that the address has changed.
Definition: NMEA2000.h:970
-
bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket)
Check if this Message is known to the system.
Definition: NMEA2000.cpp:1564
-
void SetDebugMode(tDebugMode _dbMode)
Set the Debug Mode of the system.
Definition: NMEA2000.cpp:1532
-
bool IsValidDevice(int iDev) const
Checks if the device index on Devices is valid.
Definition: NMEA2000.h:1589
-
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1156
+
bool CheckKnownMessage(unsigned long PGN, bool &SystemMessage, bool &FastPacket)
Check if this Message is known to the system.
Definition: NMEA2000.cpp:1579
+
void SetDebugMode(tDebugMode _dbMode)
Set the Debug Mode of the system.
Definition: NMEA2000.cpp:1547
+
bool IsValidDevice(int iDev) const
Checks if the device index on Devices is valid.
Definition: NMEA2000.h:1593
+
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1170
uint8_t MaxN2kCANMsgs
Size of N2kCANMsgBuf receiving message buffer.
Definition: NMEA2000.h:1021
virtual bool CANGetFrame(unsigned long &id, unsigned char &len, unsigned char *buf)=0
Abstract class for reading frame from driver class.
-
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2977
-
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2082
-
N2kStream * GetForwardStream() const
Read current Forward Stream object.
Definition: NMEA2000.h:2601
-
bool ForwardEnabled() const
Is message forwarding enabled.
Definition: NMEA2000.h:1516
+
static bool IsBroadcast(unsigned char Source)
Checks if the given Address is a broadcast address.
Definition: NMEA2000.h:2990
+
void SendIsoAddressClaim(unsigned char Destination=0xff, int DeviceIndex=0, unsigned long FromNow=0)
Send an IsoAddressClaim message.
Definition: NMEA2000.cpp:2097
+
N2kStream * GetForwardStream() const
Read current Forward Stream object.
Definition: NMEA2000.h:2610
+
bool ForwardEnabled() const
Is message forwarding enabled.
Definition: NMEA2000.h:1520
static const int HandleModeBit_OnlyKnownMessages
Forward mode bit: -> Only known messages will be handled.
Definition: NMEA2000.h:946
-
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1186
+
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1200
tN2kMode
System mode defines how the device will behave on the NMEA2000 bus.
Definition: NMEA2000.h:683
@ N2km_ListenOnly
Definition: NMEA2000.h:689
@ N2km_NodeOnly
Definition: NMEA2000.h:695
@ N2km_SendOnly
Definition: NMEA2000.h:705
@ N2km_ListenAndNode
Definition: NMEA2000.h:699
@ N2km_ListenAndSend
Definition: NMEA2000.h:711
-
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1060
-
void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__((deprecated))
Definition: NMEA2000.cpp:1368
-
virtual void SetN2kCANSendFrameBufSize(const uint16_t _MaxCANSendFrames)
Set CAN send frame buffer size.
Definition: NMEA2000.h:1849
-
bool ForwardSystemMessages() const
Is forwarding enabled for system messages.
Definition: NMEA2000.h:1524
+
void GetManufacturerInformation(char *buf, size_t max_len)
Get the Manufacturer Information of this device.
Definition: NMEA2000.cpp:1074
+
void SetHeartbeatInterval(unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__((deprecated))
Deprecated. Use function SetHeartbeatIntervalAndOffset.
Definition: NMEA2000.cpp:1383
+
virtual void SetN2kCANSendFrameBufSize(const uint16_t _MaxCANSendFrames)
Set CAN send frame buffer size.
Definition: NMEA2000.h:1853
+
bool ForwardSystemMessages() const
Is forwarding enabled for system messages.
Definition: NMEA2000.h:1528
tForwardType
Type how to forward messages in listen mode.
Definition: NMEA2000.h:664
@ fwdt_Text
Definition: NMEA2000.h:671
@ fwdt_Actisense
Definition: NMEA2000.h:667
-
void SendPendingTPMessage(int iDev)
Send pending ISO-TP Messages.
Definition: NMEA2000.cpp:1941
-
void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets)
Send ISO Transport Protocol message End Acknowledge.
Definition: NMEA2000.cpp:1710
+
void SendPendingTPMessage(int iDev)
Send pending ISO-TP Messages.
Definition: NMEA2000.cpp:1956
+
void SendTPCM_EndAck(unsigned long PGN, unsigned char Destination, int iDev, uint16_t nBytes, unsigned char nPackets)
Send ISO Transport Protocol message End Acknowledge.
Definition: NMEA2000.cpp:1725
tN2kScheduler OpenScheduler
Definition: NMEA2000.h:966
-
bool IsFastPacketPGN(unsigned long PGN)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1537
-
void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Add a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2693
-
void Restart()
Restart the device.
Definition: NMEA2000.cpp:1249
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1149
-
uint32_t GetHeartbeatInterval(int iDev=0)
Get the Heartbeat Interval of a device.
Definition: NMEA2000.h:2509
-
bool SendTPDT(int iDev)
Send ISO Transport Protocol data packet.
Definition: NMEA2000.cpp:1747
+
bool IsFastPacketPGN(unsigned long PGN)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1552
+
void AddGroupFunctionHandler(tN2kGroupFunctionHandler *pGroupFunctionHandler)
Add a message handler for incoming Group Function messages.
Definition: NMEA2000.cpp:2708
+
void Restart()
Restart the device.
Definition: NMEA2000.cpp:1264
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1163
+
uint32_t GetHeartbeatInterval(int iDev=0)
Get the Heartbeat Interval of a device.
Definition: NMEA2000.h:2513
+
bool SendTPDT(int iDev)
Send ISO Transport Protocol data packet.
Definition: NMEA2000.cpp:1762
virtual bool CANOpen()=0
Abstract class for initializing and opening CAN interface.
-
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:569
-
void HandleISOAddressClaim(const tN2kMsg &N2kMsg)
Handles an IsoAddressClaim.
Definition: NMEA2000.cpp:2415
-
tNMEA2000()
Construct a new NMEA2000 object.
Definition: NMEA2000.cpp:646
+
static bool IsProprietaryMessage(unsigned long PGN)
Check if the given PGN is proprietary.
Definition: NMEA2000.cpp:583
+
void HandleISOAddressClaim(const tN2kMsg &N2kMsg)
Handles an IsoAddressClaim.
Definition: NMEA2000.cpp:2430
+
tNMEA2000()
Construct a new NMEA2000 object.
Definition: NMEA2000.cpp:660
uint16_t MaxCANSendFrames
Size of CANSendFrameBuf or before initialization requested total frame buffering size.
Definition: NMEA2000.h:1049
static const int FwdModeBit_OnlyKnownMessages
Forward mode bit: -> Only known messages will be forwarded. System messages will be forwarded accordi...
Definition: NMEA2000.h:941
-
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1042
+
void GetInstallationDescription1(char *buf, size_t max_len)
Get the Install Description 1 of this device.
Definition: NMEA2000.cpp:1056
static const int FwdModeBit_SystemMessages
Forward mode bit: -> System messages will be forwarded.
Definition: NMEA2000.h:938
-
unsigned char GetN2kSource(int DeviceIndex=0) const
Read address for current device.
Definition: NMEA2000.h:2814
+
unsigned char GetN2kSource(int DeviceIndex=0) const
Read address for current device.
Definition: NMEA2000.h:2827
tOpenState
Library open state.
Definition: NMEA2000.h:751
@ os_Open
State Open.
Definition: NMEA2000.h:763
@ os_None
State none.
Definition: NMEA2000.h:754
@ os_OpenCAN
State Open CAN.
Definition: NMEA2000.h:757
@ os_WaitOpen
State Wait Open.
Definition: NMEA2000.h:760
uint16_t CANSendFrameBufferRead
Next write index for the library CAN send frame buffer.
Definition: NMEA2000.h:1055
-
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1341
+
void SetHeartbeatIntervalAndOffset(uint32_t interval, uint32_t offset=0, int iDev=-1)
Set the Heartbeat Interval and Offset for a device.
Definition: NMEA2000.cpp:1356
uint16_t CANSendFrameBufferWrite
Next read index for the library CAN send frame buffer.
Definition: NMEA2000.h:1052
-
bool SendFrames()
Sends pending all frames.
Definition: NMEA2000.cpp:1303
-
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2618
-
bool IsAddressClaimStarted(int iDev)
Checks if the IsoAddressClaim is already started.
Definition: NMEA2000.cpp:2399
-
bool IsOpen() const
Test is NMEA2000 open and running.
Definition: NMEA2000.h:2625
-
virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames)
Set CAN receive frame buffer size.
Definition: NMEA2000.h:1866
-
void ExtendFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Extended Fast Packet Messages.
Definition: NMEA2000.cpp:1144
-
void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev)
Respond to an ISO request.
Definition: NMEA2000.cpp:2282
-
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2146
+
bool SendFrames()
Sends pending all frames.
Definition: NMEA2000.cpp:1318
+
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2633
+
bool IsAddressClaimStarted(int iDev)
Checks if the IsoAddressClaim is already started.
Definition: NMEA2000.cpp:2414
+
bool IsOpen() const
Test is NMEA2000 open and running.
Definition: NMEA2000.h:2634
+
virtual void SetN2kCANReceiveFrameBufSize(const uint16_t _MaxCANReceiveFrames)
Set CAN receive frame buffer size.
Definition: NMEA2000.h:1870
+
void ExtendFastPacketMessages(const unsigned long *_FastPacketMessages)
Set the list of known Extended Fast Packet Messages.
Definition: NMEA2000.cpp:1158
+
void RespondISORequest(const tN2kMsg &N2kMsg, unsigned long RequestedPGN, int iDev)
Respond to an ISO request.
Definition: NMEA2000.cpp:2297
+
void SendRxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Receive messages.
Definition: NMEA2000.cpp:2161
tMsgHandler * MsgHandlers
Pointer to a buffer for Message Handlers.
Definition: NMEA2000.h:963
-
uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf)
Function handles received CAN frame and adds it to tN2kCANMsg.
Definition: NMEA2000.cpp:1962
-
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2113
-
void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex)
Find index for free space for a message on N2kCANMsgBuf.
Definition: NMEA2000.cpp:1619
+
uint8_t SetN2kCANBufMsg(unsigned long canId, unsigned char len, unsigned char *buf)
Function handles received CAN frame and adds it to tN2kCANMsg.
Definition: NMEA2000.cpp:1977
+
void SendTxPGNList(unsigned char Destination, int DeviceIndex, bool UseTP=false)
Send a list with all supported Transmit messages.
Definition: NMEA2000.cpp:2128
+
void FindFreeCANMsgIndex(unsigned long PGN, unsigned char Source, unsigned char Destination, bool TPMsg, uint8_t &MsgIndex)
Find index for free space for a message on N2kCANMsgBuf.
Definition: NMEA2000.cpp:1634
static T N2kMin(T a, T b)
Delivers Min out of A an B.
Definition: NMEA2000.h:205
-
void StartAddressClaim()
Starting the ISO Address Claim for all devices.
Definition: NMEA2000.cpp:2391
-
tCANSendFrame * GetNextFreeCANSendFrame()
Get the Next Free CAN Frame from CANSendFrameBuf.
Definition: NMEA2000.cpp:1402
+
void StartAddressClaim()
Starting the ISO Address Claim for all devices.
Definition: NMEA2000.cpp:2406
+
tCANSendFrame * GetNextFreeCANSendFrame()
Get the Next Free CAN Frame from CANSendFrameBuf.
Definition: NMEA2000.cpp:1417
tConfigurationInformation ConfigurationInformation
Configuration Information of the device.
Definition: NMEA2000.h:983
-
void SetProgmemConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information located on PROGMEM.
Definition: NMEA2000.cpp:788
-
void GetModelVersion(char *buf, size_t max_len, int iDev=0) const
Get the Model Version of the device.
Definition: NMEA2000.cpp:948
-
int GetSequenceCounter(unsigned long PGN, int iDev)
Get the Sequence Counter for the PGN.
Definition: NMEA2000.cpp:817
-
const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const
Get the Product Information of the device.
Definition: NMEA2000.cpp:877
-
void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode)
Send ISO Transport Protocol message Abort.
Definition: NMEA2000.cpp:1727
-
void EndSendTPMessage(int iDev)
Ends sending of ISO-TP message.
Definition: NMEA2000.cpp:1934
+
void SetProgmemConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information located on PROGMEM.
Definition: NMEA2000.cpp:802
+
void GetModelVersion(char *buf, size_t max_len, int iDev=0) const
Get the Model Version of the device.
Definition: NMEA2000.cpp:962
+
int GetSequenceCounter(unsigned long PGN, int iDev)
Get the Sequence Counter for the PGN.
Definition: NMEA2000.cpp:831
+
const tNMEA2000::tProductInformation * GetProductInformation(int iDev, bool &IsProgMem) const
Get the Product Information of the device.
Definition: NMEA2000.cpp:891
+
void SendTPCM_Abort(unsigned long PGN, unsigned char Destination, int iDev, unsigned char AbortCode)
Send ISO Transport Protocol message Abort.
Definition: NMEA2000.cpp:1742
+
void EndSendTPMessage(int iDev)
Ends sending of ISO-TP message.
Definition: NMEA2000.cpp:1949
tForwardType ForwardType
Actual message forward type (default = fwdt_Actisense)
Definition: NMEA2000.h:956
const unsigned long * SingleFrameMessages[N2kMessageGroups]
Definition: NMEA2000.h:985
-
bool HandleReceivedSystemMessage(int MsgIndex)
Handles a received system message.
Definition: NMEA2000.cpp:2528
+
bool HandleReceivedSystemMessage(int MsgIndex)
Handles a received system message.
Definition: NMEA2000.cpp:2543
tN2kMode N2kMode
Actual operation mode of this device (default = N2km_ListenOnly)
Definition: NMEA2000.h:954
tOpenState OpenState
Definition: NMEA2000.h:968
const unsigned long * FastPacketMessages[N2kMessageGroups]
Definition: NMEA2000.h:986
-
void(* MsgHandler)(const tN2kMsg &N2kMsg)
Handler callbacks for normal messages.
Definition: NMEA2000.h:1073
-
bool HandleOnlyKnownMessages() const
Is handle only known messages enabled.
Definition: NMEA2000.h:1548
+
void(* MsgHandler)(const tN2kMsg &N2kMsg)
Handler callbacks for normal messages.
Definition: NMEA2000.h:1077
+
bool HandleOnlyKnownMessages() const
Is handle only known messages enabled.
Definition: NMEA2000.h:1552
char * LocalConfigurationInformationData
Pointer to a buffer for local Configuration Information.
Definition: NMEA2000.h:981
-
static void SetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a Char Buffer.
Definition: NMEA2000.cpp:630
-
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:888
+
static void SetCharBuf(const char *str, size_t MaxLen, char *buf)
Setting up a Char Buffer.
Definition: NMEA2000.cpp:644
+
unsigned short GetN2kVersion(int iDev=0) const
Get the N2k standard version of the device.
Definition: NMEA2000.cpp:902
uint16_t MaxCANReceiveFrames
Max number received CAN messages that can go to the buffer.
Definition: NMEA2000.h:1061
-
int FindSourceDeviceIndex(unsigned char Source) const
Finds a device on Devices by its source address.
Definition: NMEA2000.cpp:2047
-
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2207
-
virtual void InitCANFrameBuffers()
Initialize CAN Frame buffers.
Definition: NMEA2000.cpp:1174
+
int FindSourceDeviceIndex(unsigned char Source) const
Finds a device on Devices by its source address.
Definition: NMEA2000.cpp:2062
+
bool SendProductInformation(unsigned char Destination, int DeviceIndex, bool UseTP)
Send a Product Information message.
Definition: NMEA2000.cpp:2222
+
virtual void InitCANFrameBuffers()
Initialize CAN Frame buffers.
Definition: NMEA2000.cpp:1188
bool DeviceInformationChanged
Flag that the device information has changed.
Definition: NMEA2000.h:972
-
void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber)
Send ISO Transport Protocol message CTS.
Definition: NMEA2000.cpp:1692
-
bool SendTPCM_BAM(int iDev)
Send ISO Transport Protocol message BAM.
Definition: NMEA2000.cpp:1653
-
bool IsActiveNode()
Returns if this node is active on the bus.
Definition: NMEA2000.h:1580
-
void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const
Get the Model Serial of the device.
Definition: NMEA2000.cpp:964
-
bool ReadResetAddressChanged()
Check if this device has changed its address.
Definition: NMEA2000.cpp:2481
-
void SetHandleOnlyKnownMessages(bool v=true)
Set the Handle Only Known Messages.
Definition: NMEA2000.h:2953
-
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1163
-
void ForwardMessage(const tN2kMsg &N2kMsg)
Forwards a N2k message.
Definition: NMEA2000.cpp:2063
-
uint32_t GetHeartbeatOffset(int iDev=0)
Get the Heartbeat Offset of a device.
Definition: NMEA2000.h:2520
-
bool ForwardOnlyKnownMessages() const
Is forwarding enabled for known messages only.
Definition: NMEA2000.h:1532
+
void SendTPCM_CTS(unsigned long PGN, unsigned char Destination, int iDev, unsigned char nPackets, unsigned char NextPacketNumber)
Send ISO Transport Protocol message CTS.
Definition: NMEA2000.cpp:1707
+
bool SendTPCM_BAM(int iDev)
Send ISO Transport Protocol message BAM.
Definition: NMEA2000.cpp:1668
+
bool IsActiveNode()
Returns if this node is active on the bus.
Definition: NMEA2000.h:1584
+
void GetModelSerialCode(char *buf, size_t max_len, int iDev=0) const
Get the Model Serial of the device.
Definition: NMEA2000.cpp:978
+
bool ReadResetAddressChanged()
Check if this device has changed its address.
Definition: NMEA2000.cpp:2496
+
void SetHandleOnlyKnownMessages(bool v=true)
Set the Handle Only Known Messages.
Definition: NMEA2000.h:2966
+
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1177
+
void ForwardMessage(const tN2kMsg &N2kMsg)
Forwards a N2k message.
Definition: NMEA2000.cpp:2078
+
uint32_t GetHeartbeatOffset(int iDev=0)
Get the Heartbeat Offset of a device.
Definition: NMEA2000.h:2524
+
bool ForwardOnlyKnownMessages() const
Is forwarding enabled for known messages only.
Definition: NMEA2000.h:1536
virtual bool CANSendFrame(unsigned long id, unsigned char len, const unsigned char *buf, bool wait_sent=true)=0
Abstract class for sending a CAN Frame.
-
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1033
-
bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination, unsigned char len, unsigned char *buf, uint8_t &MsgIndex)
ISO Transport Protocol handlers for multi packet support.
Definition: NMEA2000.cpp:1771
-
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1096
-
void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev)
Handles if we get commanded to set a new address.
Definition: NMEA2000.cpp:2440
-
bool IsFastPacket(const tN2kMsg &N2kMsg)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1557
+
void SetInstallationDescription2(const char *InstallationDescription2)
Set the Installation Description 2 of this device.
Definition: NMEA2000.cpp:1047
+
bool TestHandleTPMessage(unsigned long PGN, unsigned char Source, unsigned char Destination, unsigned char len, unsigned char *buf, uint8_t &MsgIndex)
ISO Transport Protocol handlers for multi packet support.
Definition: NMEA2000.cpp:1786
+
void SetDeviceInformationInstances(uint8_t _DeviceInstanceLower=0xff, uint8_t _DeviceInstanceUpper=0xff, uint8_t _SystemInstance=0xff, int iDev=0)
Set the Device Information Instances.
Definition: NMEA2000.cpp:1110
+
void HandleCommandedAddress(uint64_t CommandedName, unsigned char NewAddress, int iDev)
Handles if we get commanded to set a new address.
Definition: NMEA2000.cpp:2455
+
bool IsFastPacket(const tN2kMsg &N2kMsg)
Check if this PNG is a fast packet message.
Definition: NMEA2000.cpp:1572
static const int FwdModeBit_EnableForward
Forward mode bit: -> If set, forward is enabled.
Definition: NMEA2000.h:936
-
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1051
-
bool ForwardOwnMessages() const
Is forwarding enabled for own messages.
Definition: NMEA2000.h:1540
-
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:902
+
void GetInstallationDescription2(char *buf, size_t max_len)
Get the Install Description 2 of this device.
Definition: NMEA2000.cpp:1065
+
bool ForwardOwnMessages() const
Is forwarding enabled for own messages.
Definition: NMEA2000.h:1544
+
unsigned short GetProductCode(int iDev=0) const
Get the Product Code of the device.
Definition: NMEA2000.cpp:916
tDebugMode
For debugging we have some cases for SendMsg.
Definition: NMEA2000.h:718
@ dm_ClearText
Definition: NMEA2000.h:724
@ dm_Actisense
Definition: NMEA2000.h:727
-
bool ReadResetDeviceInformationChanged()
Check if this device has changed its DeviceInstances or SystemInstance.
Definition: NMEA2000.cpp:2489
-
void GetSwCode(char *buf, size_t max_len, int iDev=0) const
Get the Sw Code of the device.
Definition: NMEA2000.cpp:932
-
void SetN2kSource(unsigned char _iAddr, int _iDev=0)
Set source for the given device.
Definition: NMEA2000.cpp:2473
-
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:916
-
void DetachMsgHandler(tMsgHandler *_MsgHandler)
Detach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2653
-
bool HandleReceivedMessage(unsigned char Destination)
Should received message be handled depending on the destination of the received message.
Definition: NMEA2000.h:1568
-
void CopyProgmemConfigurationInformationToLocal()
Copy Configuration Information to local memory.
Definition: NMEA2000.cpp:1008
-
void(* OnOpen)()
Callback function, which will be called when library start bus communicaion.
Definition: NMEA2000.h:1070
-
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:994
-
void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false)
Get the next free address for the device.
Definition: NMEA2000.cpp:2497
-
void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev)
Respond to an Group Function.
Definition: NMEA2000.cpp:2338
+
bool ReadResetDeviceInformationChanged()
Check if this device has changed its DeviceInstances or SystemInstance.
Definition: NMEA2000.cpp:2504
+
void GetSwCode(char *buf, size_t max_len, int iDev=0) const
Get the Sw Code of the device.
Definition: NMEA2000.cpp:946
+
void SetN2kSource(unsigned char _iAddr, int _iDev=0)
Set source for the given device.
Definition: NMEA2000.cpp:2488
+
void GetModelID(char *buf, size_t max_len, int iDev=0) const
Get the ModelID of the device.
Definition: NMEA2000.cpp:930
+
void DetachMsgHandler(tMsgHandler *_MsgHandler)
Detach a message handler for incoming N2kMessages.
Definition: NMEA2000.cpp:2668
+
bool HandleReceivedMessage(unsigned char Destination)
Should received message be handled depending on the destination of the received message.
Definition: NMEA2000.h:1572
+
void CopyProgmemConfigurationInformationToLocal()
Copy Configuration Information to local memory.
Definition: NMEA2000.cpp:1022
+
void(* OnOpen)()
Callback function, which will be called when library start bus communicaion.
Definition: NMEA2000.h:1074
+
unsigned char GetLoadEquivalency(int iDev=0) const
Get the Load Equivalency of this device.
Definition: NMEA2000.cpp:1008
+
void GetNextAddress(int DeviceIndex, bool RestartAtEnd=false)
Get the next free address for the device.
Definition: NMEA2000.cpp:2512
+
void RespondGroupFunction(const tN2kMsg &N2kMsg, tN2kGroupFunctionCode GroupFunctionCode, unsigned long PGNForGroupFunction, int iDev)
Respond to an Group Function.
Definition: NMEA2000.cpp:2353
static const int FwdModeBit_OwnMessages
Forward mode bit: -> Forward also all messages, what this device will send.
Definition: NMEA2000.h:944
-
void SetForwardType(tForwardType fwdType)
Set the Forward Streaming Type.
Definition: NMEA2000.h:2582
-
bool InstallationDescriptionChanged
Flag the Installation description has changed.
Definition: NMEA2000.h:1742
-
void SetConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information of this device.
Definition: NMEA2000.cpp:750
+
void SetForwardType(tForwardType fwdType)
Set the Forward Streaming Type.
Definition: NMEA2000.h:2591
+
bool InstallationDescriptionChanged
Flag the Installation description has changed.
Definition: NMEA2000.h:1746
+
void SetConfigurationInformation(const char *ManufacturerInformation, const char *InstallationDescription1=0, const char *InstallationDescription2=0)
Set the Configuration Information of this device.
Definition: NMEA2000.cpp:764
tInternalDevice * Devices
Pointer to a buffer for all internal devices.
Definition: NMEA2000.h:975
-
void SetDeviceCount(const uint8_t _DeviceCount)
Set the count of devices library shows on bus.
Definition: NMEA2000.cpp:690
+
void SetDeviceCount(const uint8_t _DeviceCount)
Set the count of devices library shows on bus.
Definition: NMEA2000.cpp:704
tCANSendFrame * CANSendFrameBuf
Buffer for library send out CAN frames.
Definition: NMEA2000.h:1035
-
void RunMessageHandlers(const tN2kMsg &N2kMsg)
Run all message handlers.
Definition: NMEA2000.cpp:2605
+
void RunMessageHandlers(const tN2kMsg &N2kMsg)
Run all message handlers.
Definition: NMEA2000.cpp:2620
Structure that holds the Configuration Information of this device.
Definition: NMEA2000.h:734
const char * InstallationDescription2
pointer to char array holding the installation description 2
Definition: NMEA2000.h:740
const char * InstallationDescription1
pointer to char array holding the installation description 1
Definition: NMEA2000.h:738
@@ -1493,8 +1493,8 @@
unsigned char LoadEquivalency
Load Equivalency of the device A Load Equivalence Number express the amount of current that is drawn ...
Definition: NMEA2000.h:243
unsigned char CertificationLevel
Certification level of the device.
Definition: NMEA2000.h:236
char N2kModelVersion[Max_N2kModelVersion_len+1]
Max length of Model Version Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:231
-
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:618
-
void Clear()
Clears out all data
Definition: NMEA2000.cpp:613
+
bool IsSame(const tProductInformation &Other)
Compares two product information structures.
Definition: NMEA2000.cpp:632
+
void Clear()
Clears out all data
Definition: NMEA2000.cpp:627
char N2kSwCode[Max_N2kSwCode_len+1]
Max length of Software Code Note that we reserve one extra char for null termination
Definition: NMEA2000.h:228
char N2kModelSerialCode[Max_N2kModelSerialCode_len+1]
Max length of Serial Code Note that we reserve one extra char for null termination.
Definition: NMEA2000.h:234
void Set(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff)
Set all the product infomation data of the structure.
Definition: NMEA2000.h:262
diff --git a/_ring_buffer_8h.html b/_ring_buffer_8h.html index 7741729b..c72ef618 100644 --- a/_ring_buffer_8h.html +++ b/_ring_buffer_8h.html @@ -120,7 +120,7 @@
-

Simple tRingBuffer and tPriorityRingBuffer template classes. +

Simple tRingBuffer and tPriorityRingBuffer template classes. More...

#include <cstdint>
#include "RingBuffer.tpp"
@@ -140,7 +140,7 @@

Classes

class  tPriorityRingBuffer< T > - Template Class that holds simple data structures with given priorities in a ring buffer. More...
+ Template Class that holds values with given priorities in a ring buffer. More...
  struct  tPriorityRingBuffer< T >::tPriorityRef  Structure handles meta data for each priority. More...
@@ -149,7 +149,7 @@  Structure that holds the actual value and meta data. More...
  class  tRingBuffer< T > - Template Class that holds simple data structures in a ring buffer. More...
+ Template Class that holds values in a ring buffer. More...
 

@@ -162,9 +162,9 @@

 

Detailed Description

-

Simple tRingBuffer and tPriorityRingBuffer template classes.

-

With tRingBuffer one can save simple data structures to a ring buffer.

-
Note
You have to take care of data locking from other threads or interrupts for copy time.
+

Simple tRingBuffer and tPriorityRingBuffer template classes.

+

With tRingBuffer one can save values to a ring buffer. Value can be simple value or data structure.

+
Note
You have to take care of data locking from other threads or interrupts around calls using buffer handling routines.

Example of ring buffer usage

struct tCANData {
@@ -184,24 +184,25 @@

CANMessages.add(msgOut);
releaseData();
}
-
Template Class that holds simple data structures with given priorities in a ring buffer.
Definition: RingBuffer.h:215
-

As an alternative if you want to avoid data copying twice, you can request reference to next data to be saved and copy data directly to it.

+
Template Class that holds values with given priorities in a ring buffer.
Definition: RingBuffer.h:255
+

As an alternative if you want to avoid data copying twice, you can request pointer to next value to be saved and copy data directly to it.

void SendMessage() {
tCANData *msgOut;
lockData();
-
if ( (msgOut=CANMessages)!=0 ) {
+
if ( (msgOut=CANMessages.getAddRef())!=0 ) {
msgOut->id=1;
msgOut->len=1;
msgOut->data[0]=1;
}
releaseData();
}
-

tPriorityRingBuffer is similar as tRingBuffer, but it extends functionality with item priority. When you add items to buffer, you can give them priority and when you read them, highest priority item will be read out first.

-

+

tPriorityRingBuffer is similar as tRingBuffer, but it extends functionality with value priority. When you add values to buffer, you can give them priority and when during read you can define which priority value should be read out or read highest priority value.

+

Debugging

To improve the debugging of the module there is the possibility to enable some print out to the DebugStream

#define RING_BUFFER_ERROR_DEBUG
#define RING_BUFFER_DEBUG
+
#define RING_BUFFER_INIT_DEBUG

Definition in file RingBuffer.h.

Macro Definition Documentation

@@ -219,7 +220,7 @@

Definition at line 220 of file RingBuffer.h.

+

Definition at line 260 of file RingBuffer.h.

@@ -237,7 +238,7 @@

Definition at line 218 of file RingBuffer.h.

+

Definition at line 258 of file RingBuffer.h.

diff --git a/_ring_buffer_8h_source.html b/_ring_buffer_8h_source.html index 209fb2e6..ee87c0e3 100644 --- a/_ring_buffer_8h_source.html +++ b/_ring_buffer_8h_source.html @@ -140,155 +140,159 @@
22*/
23
24/*************************************************************************/
-
90#ifndef _RING_BUFFER_H_
-
91#define _RING_BUFFER_H_
-
92
-
93#include <cstdint>
-
94/************************************************************************/
-
109template <typename T> class tRingBuffer {
-
110
-
111protected:
- -
115 uint16_t head;
-
117 uint16_t tail;
-
119 uint16_t size;
-
120
-
121public:
-
122 /************************************************************************/
-
129 tRingBuffer(uint16_t _size);
-
130 /************************************************************************/
-
135 virtual ~tRingBuffer();
-
136 /************************************************************************/
-
140 uint16_t getSize() const { return size; }
-
141 /************************************************************************/
-
147 bool isEmpty() const;
-
148 /************************************************************************/
-
150 void clear();
-
151 /************************************************************************/
-
155 uint16_t count();
-
156
-
157 /************************************************************************/
- -
163
-
164 /************************************************************************/
-
171 bool add(const T &val);
-
172
-
173 /************************************************************************/
-
178 const T *getReadRef();
-
179
-
180 /************************************************************************/
-
185 T *peek();
-
186
-
187 /************************************************************************/
-
194 bool read(T &val);
-
195};
-
196
-
197/************************************************************************/
-
215template <typename T> class tPriorityRingBuffer {
-
216protected:
-
218 #define INVALID_RING_REF (uint16_t)(-1)
-
220 #define INVALID_PRIORITY_REF (uint8_t)(-1)
-
221
-
222 /************************************************************************/
-
230 struct tValueSlot {
- -
234 uint16_t next;
-
236 uint8_t priority;
-
237 };
-
238 /************************************************************************/
- -
244 uint16_t next;
-
246 uint16_t last;
- - -
251 };
-
252protected:
-
254 uint16_t head;
-
256 uint16_t tail;
-
258 uint16_t size;
- - - -
265
-
266public:
-
267 /************************************************************************/
-
275 tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1);
-
276 /************************************************************************/
- -
281
-
282 uint16_t getSize() const { return size; }
-
283 /************************************************************************/
-
287 bool isEmpty(uint8_t _priority=0xff) const;
-
288 /************************************************************************/
-
290 void clear();
-
291 /************************************************************************/
-
293 void clean();
-
294 /************************************************************************/
-
298 uint16_t count();
-
299 /************************************************************************/
-
307 bool add(const T &val, uint8_t _priority=0);
-
308 /************************************************************************/
-
315 bool read(T &val);
-
316
-
317 /************************************************************************/
-
323 T *getAddRef(uint8_t _priority=0);
-
324
-
325 /************************************************************************/
-
331 const T *getReadRef(uint8_t _priority);
-
332
-
333 /************************************************************************/
-
339 const T *getReadRef(uint8_t *_priority=0);
-
340};
-
341
-
342
-
343#include "RingBuffer.tpp"
-
344
-
345#endif
-
#define INVALID_RING_REF
Constant for an invalid index reference for the buffer.
Definition: RingBuffer.h:218
-
Template Class that holds simple data structures with given priorities in a ring buffer.
Definition: RingBuffer.h:215
-
bool isEmpty(uint8_t _priority=0xff) const
Get the Size of the ring buffer.
-
tPriorityRef * priorityReferencies
Definition: RingBuffer.h:264
-
uint16_t size
Number of data structures that can be stored in the ring buffer.
Definition: RingBuffer.h:258
+
93#ifndef _RING_BUFFER_H_
+
94#define _RING_BUFFER_H_
+
95
+
96#include <cstdint>
+
97/************************************************************************/
+
113template <typename T> class tRingBuffer {
+
114
+
115protected:
+ +
119 uint16_t head;
+
121 uint16_t tail;
+
123 uint16_t size;
+
124
+
125public:
+
126 /************************************************************************/
+
133 tRingBuffer(uint16_t _size);
+
134 /************************************************************************/
+
139 virtual ~tRingBuffer();
+
140 /************************************************************************/
+
144 uint16_t getSize() const { return size; }
+
145 /************************************************************************/
+
151 bool isEmpty() const;
+
152 /************************************************************************/
+
154 void clear();
+
155 /************************************************************************/
+
159 uint16_t count();
+
160
+
161 /************************************************************************/
+ +
177
+
178 /************************************************************************/
+
188 bool add(const T &val);
+
189
+
190 /************************************************************************/
+
205 const T *getReadRef();
+
206
+
207 /************************************************************************/
+
215 T *peek();
+
216
+
217 /************************************************************************/
+
229 bool read(T &val);
+
230};
+
231
+
232/************************************************************************/
+
255template <typename T> class tPriorityRingBuffer {
+
256protected:
+
258 #define INVALID_RING_REF (uint16_t)(-1)
+
260 #define INVALID_PRIORITY_REF (uint8_t)(-1)
+
261
+
262 /************************************************************************/
+
270 struct tValueSlot {
+ +
274 uint16_t next;
+
276 uint8_t priority;
+
277 };
+
278 /************************************************************************/
+ +
284 uint16_t next;
+
286 uint16_t last;
+ + +
291 };
+
292protected:
+ + +
298 uint16_t head;
+
300 uint16_t tail;
+
302 uint16_t size;
+ +
305
+
306public:
+
307 /************************************************************************/
+
315 tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1);
+
316 /************************************************************************/
+ +
321
+
322 /************************************************************************/
+
326 uint16_t getSize() const { return size; }
+
327 /************************************************************************/
+
337 static uint32_t getMemSize(uint16_t _size, uint8_t _maxPriorities=1);
+
338 /************************************************************************/
+
348 bool isEmpty(uint8_t _priority=0xff) const;
+
349 /************************************************************************/
+
351 void clear();
+
352 /************************************************************************/
+
354 void clean();
+
355 /************************************************************************/
+
363 uint16_t count();
+
364 /************************************************************************/
+
375 bool add(const T &val, uint8_t _priority=0);
+
376 /************************************************************************/
+
388 bool read(T &val);
+
389
+
390 /************************************************************************/
+
406 T *getAddRef(uint8_t _priority=0);
+
407
+
408 /************************************************************************/
+
424 const T *getReadRef(uint8_t _priority);
+
425
+
426 /************************************************************************/
+
443 const T *getReadRef(uint8_t *_priority=0);
+
444};
+
445
+
446
+
447#include "RingBuffer.tpp"
+
448
+
449#endif
+
#define INVALID_RING_REF
Constant for an invalid index reference for the buffer.
Definition: RingBuffer.h:258
+
Template Class that holds values with given priorities in a ring buffer.
Definition: RingBuffer.h:255
+
bool isEmpty(uint8_t _priority=0xff) const
Check is ring buffer empty.
+
tPriorityRef * priorityReferencies
Pointer to priority referencies in buffer.
Definition: RingBuffer.h:296
+
uint16_t size
Number of values that can be stored in the ring buffer.
Definition: RingBuffer.h:302
void clean()
This function does nothing at the moment!
-
uint16_t getSize() const
Definition: RingBuffer.h:282
-
uint8_t maxPriorities
highest priority possible
Definition: RingBuffer.h:260
+
uint16_t getSize() const
Get the size of the ring buffer.
Definition: RingBuffer.h:326
+
uint8_t maxPriorities
highest priority possible
Definition: RingBuffer.h:304
void clear()
Clears the whole ring buffer.
-
tValueSlot * buffer
Pointer to the ring puffer in memory.
Definition: RingBuffer.h:262
-
virtual ~tPriorityRingBuffer()
Destroy the t Priority Ring Buffer object Frees all memory.
-
uint16_t count()
Returns the number of Entries in the ring buffer.
+
tValueSlot * buffer
Pointer to the ring puffer in memory.
Definition: RingBuffer.h:294
+
virtual ~tPriorityRingBuffer()
Destroy the priority ring buffer object Frees all memory.
+
uint16_t count()
Returns the number of values in the ring buffer.
bool add(const T &val, uint8_t _priority=0)
Add a value to the ring buffer with a given priority.
-
T * getAddRef(uint8_t _priority=0)
Get the Reference for the next Add.
-
const T * getReadRef(uint8_t _priority)
Get the Reference for the next Read.
-
uint16_t tail
Index of the last occupied index in the ring buffer.
Definition: RingBuffer.h:256
-
uint16_t head
Index of the first free index in the ring buffer.
Definition: RingBuffer.h:254
-
bool read(T &val)
Reads a value from the ring buffer.
-
const T * getReadRef(uint8_t *_priority=0)
Get reference to highest available.
-
tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1)
Construct a new Priority Ring Buffer object.
-
Template Class that holds simple data structures in a ring buffer.
Definition: RingBuffer.h:109
-
uint16_t getSize() const
Get the Size of the ring buffer.
Definition: RingBuffer.h:140
+
T * getAddRef(uint8_t _priority=0)
Get the pointer to new value added to the ring buffer.
+
const T * getReadRef(uint8_t _priority)
Get the pointer to value with given priority read out from the ring buffer.
+
uint16_t tail
Index of the last occupied index in the ring buffer.
Definition: RingBuffer.h:300
+
static uint32_t getMemSize(uint16_t _size, uint8_t _maxPriorities=1)
Get the size of memory required by ring buffer.
+
uint16_t head
Index of the first free index in the ring buffer.
Definition: RingBuffer.h:298
+
bool read(T &val)
Reads highest priority value out from the ring buffer.
+
const T * getReadRef(uint8_t *_priority=0)
Get pointer to highest priority value read out from the the ring buffer.
+
tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1)
Construct a new Priority ring buffer object.
+
Template Class that holds values in a ring buffer.
Definition: RingBuffer.h:113
+
uint16_t getSize() const
Get the size of the ring buffer.
Definition: RingBuffer.h:144
bool add(const T &val)
Adds a new value to the ring buffer.
-
bool read(T &val)
Reads a value from the ring buffer.
-
T * getAddRef()
Get pointer to next add item if available. Write pointer will be incremented.
-
uint16_t tail
Index of the last data structure in the ring buffer.
Definition: RingBuffer.h:117
+
bool read(T &val)
Reads a value out from the ring buffer.
+
T * getAddRef()
Get the pointer to new value added to the ring buffer.
+
uint16_t tail
Index of the last value in the ring buffer.
Definition: RingBuffer.h:121
bool isEmpty() const
Checks if the ring buffer is empty.
-
uint16_t count()
Returns the number of Entries in the ring buffer.
-
uint16_t size
Number of data structures that can be stored in the ring buffer.
Definition: RingBuffer.h:119
-
virtual ~tRingBuffer()
Destroy the Ring Buffer object.
-
T * buffer
Pointer to the buffer in memory.
Definition: RingBuffer.h:113
-
uint16_t head
Index of the first data structure in the ring buffer.
Definition: RingBuffer.h:115
-
T * peek()
Get pointer to next read item if available. Does not affect to read pointer.
-
const T * getReadRef()
Get pointer to next read item if available. Read pointer will be inremented.
+
uint16_t count()
Returns the number of values in the ring buffer.
+
uint16_t size
Number of values that can be stored in the ring buffer.
Definition: RingBuffer.h:123
+
virtual ~tRingBuffer()
Destroy the ring buffer object.
+
T * buffer
Pointer to the ring buffer of values in memory.
Definition: RingBuffer.h:117
+
uint16_t head
Index of the first value in the ring buffer.
Definition: RingBuffer.h:119
+
T * peek()
Get pointer to next value to be read out from the ring buffer. Function does not read value out from ...
+
const T * getReadRef()
Get the pointer to value read out from the ring buffer.
void clear()
Clears the whole ring buffer.
-
tRingBuffer(uint16_t _size)
Construct a new Ring Buffer object.
-
Structure handles meta data for each priority.
Definition: RingBuffer.h:242
-
void clear()
Initialize all attributes to default.
Definition: RingBuffer.h:250
-
uint16_t next
Index of the next value for this priority in the ring buffer.
Definition: RingBuffer.h:244
-
uint16_t last
Index of the last value for this priority in the ring buffer.
Definition: RingBuffer.h:246
-
tPriorityRef()
Initialize all attributes to default.
Definition: RingBuffer.h:248
-
Structure that holds the actual value and meta data.
Definition: RingBuffer.h:230
-
uint16_t next
Index of the next value in the ring buffer (???)
Definition: RingBuffer.h:234
-
T Value
Value stored in ring buffer.
Definition: RingBuffer.h:232
-
uint8_t priority
Priority of this value.
Definition: RingBuffer.h:236
+
tRingBuffer(uint16_t _size)
Construct a new ring buffer object.
+
Structure handles meta data for each priority.
Definition: RingBuffer.h:282
+
void clear()
Initialize all attributes to default.
Definition: RingBuffer.h:290
+
uint16_t next
Index of the next value for this priority in the ring buffer.
Definition: RingBuffer.h:284
+
uint16_t last
Index of the last value for this priority in the ring buffer.
Definition: RingBuffer.h:286
+
tPriorityRef()
Initialize all attributes to default.
Definition: RingBuffer.h:288
+
Structure that holds the actual value and meta data.
Definition: RingBuffer.h:270
+
uint16_t next
Index of the next value in the ring buffer (???)
Definition: RingBuffer.h:274
+
T Value
Value stored in ring buffer.
Definition: RingBuffer.h:272
+
uint8_t priority
Priority of this value.
Definition: RingBuffer.h:276
diff --git a/_temperature_monitor_8ino_source.html b/_temperature_monitor_8ino_source.html index b6fd551a..a21b55f6 100644 --- a/_temperature_monitor_8ino_source.html +++ b/_temperature_monitor_8ino_source.html @@ -244,16 +244,16 @@
Synchronized Scheduler for timed message sending.
Definition: N2kTimer.h:124
bool IsTime()
Check if ít is time.
Definition: N2kTimer.h:181
void UpdateNextTime()
Update the timestamp for NextTime.
Definition: N2kTimer.h:242
-
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:731
-
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2887
-
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2562
-
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1079
-
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1186
+
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:745
+
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2900
+
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2577
+
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1093
+
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1200
@ N2km_ListenAndNode
Definition: NMEA2000.h:699
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1149
-
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2618
-
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1163
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1163
+
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2633
+
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1177
void SetN2kOutsideEnvironmentalParameters(tN2kMsg &N2kMsg, unsigned char SID, double WaterTemperature, double OutsideAmbientAirTemperature=N2kDoubleNA, double AtmosphericPressure=N2kDoubleNA)
Setting up Message "Environmental Parameters - DEPRECATED" - PGN 130310.
Definition: N2kMessages.h:4782
void SetN2kTemperature(tN2kMsg &N2kMsg, unsigned char SID, unsigned char TempInstance, tN2kTempSource TempSource, double ActualTemperature, double SetTemperature=N2kDoubleNA)
Setting up Message "Temperature - DEPRECATED" - PGN 130312.
Definition: N2kMessages.h:4951
void SetN2kEnvironmentalParameters(tN2kMsg &N2kMsg, unsigned char SID, tN2kTempSource TempSource, double Temperature, tN2kHumiditySource HumiditySource=N2khs_Undef, double Humidity=N2kDoubleNA, double AtmosphericPressure=N2kDoubleNA)
Setting up Message "Environmental Parameters - DEPRECATED" - PGN 130311.
Definition: N2kMessages.h:4865
diff --git a/_wind_monitor_8ino_source.html b/_wind_monitor_8ino_source.html index 29cf1555..8c5455d2 100644 --- a/_wind_monitor_8ino_source.html +++ b/_wind_monitor_8ino_source.html @@ -224,16 +224,16 @@
Synchronized Scheduler for timed message sending.
Definition: N2kTimer.h:124
bool IsTime()
Check if ít is time.
Definition: N2kTimer.h:181
void UpdateNextTime()
Update the timestamp for NextTime.
Definition: N2kTimer.h:242
-
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:731
-
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2887
-
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2562
-
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1079
-
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1186
+
void SetProductInformation(const char *_ModelSerialCode, unsigned short _ProductCode=0xffff, const char *_ModelID=0, const char *_SwCode=0, const char *_ModelVersion=0, unsigned char _LoadEquivalency=0xff, unsigned short _N2kVersion=0xffff, unsigned char _CertificationLevel=0xff, int iDev=0)
Set the Product Information of this device.
Definition: NMEA2000.cpp:745
+
void EnableForward(bool v=true)
Enable message forwarding to stream.
Definition: NMEA2000.h:2900
+
void ParseMessages()
Parse all incoming Messages.
Definition: NMEA2000.cpp:2577
+
void SetDeviceInformation(unsigned long _UniqueNumber, unsigned char _DeviceFunction=0xff, unsigned char _DeviceClass=0xff, uint16_t _ManufacturerCode=0xffff, unsigned char _IndustryGroup=4, int iDev=0)
Set the Device Information. See also NAME.
Definition: NMEA2000.cpp:1093
+
bool Open()
Open the CAN device.
Definition: NMEA2000.cpp:1200
@ N2km_NodeOnly
Definition: NMEA2000.h:695
-
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1435
-
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1149
-
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2618
-
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1163
+
bool SendMsg(const tN2kMsg &N2kMsg, int DeviceIndex=0)
Send message to the NMEA2000 bus.
Definition: NMEA2000.cpp:1450
+
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1163
+
void SetOnOpen(void(*_OnOpen)())
Set OnOpen callback function.
Definition: NMEA2000.cpp:2633
+
void SetMode(tN2kMode _N2kMode, uint8_t _N2kSource=15)
Set the library mode and start source address.
Definition: NMEA2000.cpp:1177
void SetN2kWindSpeed(tN2kMsg &N2kMsg, unsigned char SID, double WindSpeed, double WindAngle, tN2kWindReference WindReference)
Setting up Message "Wind Data" - PGN 130306.
Definition: N2kMessages.h:4706
diff --git a/annotated.html b/annotated.html index 9c3deb4e..50572cdc 100644 --- a/annotated.html +++ b/annotated.html @@ -150,10 +150,10 @@  CtInternalDeviceThis class represents an internal device  CtMsgHandlerMessage handler class  CtProductInformationStructure that holds all the product information - CtPriorityRingBufferTemplate Class that holds simple data structures with given priorities in a ring buffer + CtPriorityRingBufferTemplate Class that holds values with given priorities in a ring buffer  CtPriorityRefStructure handles meta data for each priority  CtValueSlotStructure that holds the actual value and meta data - CtRingBufferTemplate Class that holds simple data structures in a ring buffer + CtRingBufferTemplate Class that holds values in a ring buffer  CtSatelliteInfoDedicated structure to handle GNSS satellite information diff --git a/changes.html b/changes.html index 139a9689..7f20ed95 100644 --- a/changes.html +++ b/changes.html @@ -117,140 +117,151 @@

Table of Contents

-

+06.02.2024

+
    +
  • Fix tPriorityRingBuffer. It did not freed values properly. tPriorityRingBuffer is used on tNMEA2000_Teensyx driver.
  • +
  • Ring buffer documentation update.
  • +
  • Fixed SetN2kPGN129284 and ParseN2kPGN129284. Changed OriginWaypointNumber and DestinationWaypointNumber parameter to uint32_t. This causes compatibility issue for users used ParseN2kPGN129284 and they have to update reference parameter type. Also if SetN2kPGN129284 was used with related parameters value N2kUint8NA, they must be updated to use N2kUint32NA
  • +
  • Moved OnOpen call on Open after setting Heartbeat interval and offset. If Heartbeat settings were set on OnOpen, settings were reset.
  • +
  • Added note to documentation for OnOpen about coming change.
  • +
  • Added lightning PGNs to fastpacket list.
  • +
+

02.02.2024

  • Document update. Updates on document sources and code sources.
-

+

22.01.2024

-

+

21.01.2024

  • Document update. Updates on document sources and code sources.
-

+

13.01.2024

  • Fixed PGN129539 reader and parser.
  • Added #include "N2kTypes.h" to N2kMaretron.h
  • Fixed PGN130316 default period information
  • -
  • Added missing methods to tRingBuffer template
  • +
  • Added missing methods to tRingBuffer template
  • Updated copyright
-

+

08.12.2023

  • Added entertainment fastpacket PGNs to fastpacket list.
  • @@ -263,12 +274,12 @@

  • Added fluid type enum to N2kMessagesEnumToStr.h
  • Added support for NMEA2000_ArduinoCAN to NMEA2000_CAN.h by jboynes
-

+

04.10.2023

  • Fix use N2kMillis instead of millis on N2kDeviceList by nicklasb.
-

+

12.09.2023

-

+

25.07.2023

  • Changed INT32_MAX instead of LONG_MAX on N2kTimer.h by Sam Meredith
  • @@ -285,12 +296,12 @@

  • Cleaner CMakeLists.txt by Paul Abbott
  • Example ActisenseListener update
-

+

20.05.2023

  • Example N2kDataToNMEA0183 update by Andrei Errapart
-

+

19.05.2023

  • Catch update to version 2.13.10 by Andrei Errapart
  • @@ -298,24 +309,24 @@

  • CMakeLists compatible as ESP-IDF by Paul Abbott
  • N2kCANMsg.h: Changed #include <N2kMSG.h> to use quotes.
-

+

08.02.2023

  • Fixed priority setting on SetN2kPGN130577.
  • Fixed "set temperature" field to unsigned on ParseN2kPGN130316 and SetN2kPGN130316.
-

+

01.02.2023

  • Copyright update.
  • Document update. Still some lost NMEA document.
-

+

21.12.2022

  • Creating Doxygen based documentation for the library. There will be more documentation updating in future, when I have time to read it through. I also encourage users to read documentation and fix errors, spelling, grammar. I prefer to make pure documentation update PRs to keep them separate from new features. + Great thanks for matthias-mv for excellent and big job!
-

+

27.11.2022

  • Updated test and added missing source file, thanks to PeterFromSweden.
  • @@ -323,13 +334,13 @@

  • Added optional SID to SetN2kPGN129039, noted by matthias-mw
  • Added N2kts_ShaftSealTemperature, noted by gorlanovmax
-

+

27.10.2022

  • Compatibility change for PGN 129794 setter function: Replaced tN2kAISTranceiverInfo with tN2kAISTransceiverInformation. tN2kAISTranceiverInfo was duplicate for tN2kAISTransceiverInformation. It has been also removed from N2kTypes.h.
  • Compatibility change for PGN 129038 setter function: Added tN2kAISTransceiverInformation as parameter. I pop up that at least some MFD:s does not show class A AIS objects, if transceiver information has not been properly set. + Thanks to usauerbrey.
-

+

26.10.2022

  • Version confirmed to pass NMEA2000 certification tests.
  • @@ -338,7 +349,7 @@

  • Fix: Group function request turn off transmission for heartbeat (PGN 126993) did no nack.
  • Added possibility to select CAN alternative pins for Teensyx.
-

+

03.10.2022

-

+

11.08.2022

-

+

06.07.2022

  • Fix: use proper array delete operator in RingBuffer, thanks garaminowicz
  • Fix: PGN 127251 rate of turn type, thanks BerndCirotzki and for remind speters.
  • Fix: PGN 129794 setter.
-

+

07.04.2022

  • Changed "#include cstring" to "#include string.h" cstring is not available on all environments.
  • @@ -379,12 +390,12 @@

  • Added support for PGN127237, 127233, 130577 and more detail for 129039. Thanks to aydosj.
  • Copyright update.
-

+

05.09.2021

  • Documentation update.
-

+

23.08.2021

  • Added manufacturer bits to engine discrete status ( PGN 127489 )
  • @@ -397,17 +408,17 @@

  • Fixed tN2kGroupFunctionHandlerForPGN126993::HandleRequest. System must not respond to pure 126208 request for 126993. Also TransmissionInterval setting is limited to 1000 - 60000 ms.
  • Modified debug messages.
-

+

04.03.2021

  • Fix for engine discrete status 2.
-

+

10.02.2021

  • Added definition to NMEA2000_CAN.h to select CAN device for Arduino DUE
-

+

06.02.2021

  • Added handlers for PGN 129540 GNSS satellites in view
  • @@ -417,33 +428,33 @@

  • Redesigned example MessageSender. Now it is more usefull for testing, since each message can be individually enabled/disabled.
  • Added PGN 129540 handler for test example MessageSender
-

+

15.01.2021

  • Added better inline ParseN2kEngineDynamicParam to N2kMessages
  • Copyright update
-

+

05.01.2021

  • Added better engine discrete status handling to N2kMessages
-

+

08.10.2020

  • Fix for 'memcpy' overflow for float reading on N2kMsg.cpp
-

+

23.08.2020

  • Add support for Teensy 4.x
-

+

05.08.2020

  • Add support for Windlass Network Messages PGN 128776, 128777 & 128778 by Paul Reeve
-

+

16.07.2020

  • Fixed setting buffered frame length to min instead of max length on NMEA2000.cpp SendFrame
  • @@ -455,13 +466,13 @@

  • Added FindDeviceByProduct to N2kDeviceList
  • Extented list of fast packet messages to all known fast packet messages. This also leads to situation that all fast packet messages are known messages and may effect to setting SetHandleOnlyKnownMessages behaviour. To limit known messages, one should have provided list with SetFastPacketMessages.
-

+

27.06.2020

  • Fixed PGN 130314 and PGN 130315 pressure type to signed.
  • Added pressure enums.
-

+

28.01.2019

  • NOTE! Compatibility change! PGN 127506 TimeRemaining should have been in seconds as it is SI unit. If you have used that on your code, provide value in seconds. Parse function also return in seconds now.
  • @@ -469,21 +480,21 @@

  • Fixed MaretronProprietary test on N2kMaretron.cpp
  • Some comment fixes.
-

+

20.10.2019

  • Added support for Maretron proprietary PGNs 130823,65286, 65287. See N2kMaretron.h. Thanks to Vassilis Bourdakis.
  • Added proprietary fast packet message test as default. So now proprietary fast packet messages will be automatically parsed right without need to use ExtendFastPacketMessages
  • Fixed strings on product information. Unused characters will be filled with 0xff.
-

+

17.10.2019

  • Fixed Rate of turn (PGN 127251) and AIS position report ROT (PGN 129038) value multiplier.
  • Separated N2k enums to own file N2kTypes.h
  • Fixed PGNs 127251, 127258, 130576 length for sending by padding with reserved. Some devices refuces to listen message, if length is wrong.
-

+

07.07.2019

  • Fixed: PGN 127513 was accidently defined also as single frame message.
  • @@ -491,82 +502,82 @@

  • Added: More PGN:s to default fast packet list.
  • Updated: Examples MessageSender and DataDisplay2, which can be used for testing messages.
-

+

03.03.2019

  • Added: Charger status PGN 127507.
  • Added: Possibility to delay ISO address claim. Due to some devices CAN priority, it was sent too fast.
  • Added: Count for tDeviceList
-

+

14.01.2019

  • Fix: Device list handler fix. Some tools may use source 254 and that was checked wrong.
  • Fix: Message priorities.
-

+

04.08.2018

  • Fix: NMEA2000.h/NMEA2000.cpp, just in parameter N2kSource type change by mrbubble62
-

+

18.07.2018

-

+

09.05.2018

  • Fix: NMEA2000_CAN.h, make ESP32 work with ESP-IDF framework, by Sarfata
-

+

10.04.2018

  • Fix: Handling of humidity PGN 130313.
-

+

06.04.2018

  • Added: Support for ESP32. See also NMEA2000_esp32
  • Fix: Changed some names to avoid conflicts with some stupid define macros on some environments.
-

+

04.04.2018

  • Fix: NextHeartbeatSentTime initial value.
  • Added: New example NMEA2000ToNMEA0183. This has been tested on RPi3B, Arduino DUE, Arduino Mega, Teensy.
-

+

26.03.2018

  • Added: Strings for Magnetic Variation enum by mrbubble62
-

+

13.03.2018

  • Added: PGN129033 Local offset
-

+

23.02.2018

  • Port config ability for SockeCAN by Al Thomason
-

+

16.02.2018

  • SetN2kSource for other devices by jpilet
-

+

29.01.2018

  • Added: PGN130576 Small Craft Status / Trim Tab Position definition by Nicholas Agro
-

+

15.01.2018

  • Fix: ParseN2kPGN129284, Index was not initialized to 0, which caused unpredictable read.
-

+

07.01.2018

  • Fix: Fast packet sequence counter must be related to PGN.
  • @@ -579,7 +590,7 @@

  • Added: Support for sending messages by using Transport Protocol. This is mandatory for NMEA 2000
  • Updated: License to 2018
-

+

02.12.2017

  • Changes effect only use of tN2kDeviceList and AttachMsgHandler callbacks.
  • @@ -589,53 +600,53 @@

  • Fix: If there was NMEA2000 library device with same name, they handshaked both addresses to null. The problem still appears, if both devices will be started at same time. I need to add some random start delay
  • Cleaned spaces from end of lines on updated code.
-

+

29.11.2017

-

+

27.11.2017

  • Fix some build errors due to missing include statements (did not affect Arduino, only other platforms)
-

+

14.11.2017

  • Fix: Default responces to Complex Group Function.
-

+

09.11.2017

  • Added library.json, thanks for ronzeiller.
-

+

31.10.2017

  • Fix: fill unused chars on fastpacket messages with 0xff
  • Fix: fill unused chars on message fixed sized strings with 0xff. One sample is e.g. PGN 126996, Product Information.
-

+

14.10.2017

  • Changed tActisenseReader class to handle also Actisense N2k request message types. This type will be used by applications, which sends data through NGT-1.
  • Updated related examples ActisenseListener and ActisenseListenerSender.
  • Renamed Min/Max to N2kMin/N2kMax, since Due code had definitions for Min/Max
-

+

12.10.2017

  • Added PGN validity check to the SendMsg()
  • Changed max/min -> own Max/Min. max/min defines does not exist on other systems and Arduino does not have std Algorithm for all boards.
-

+

10.10.2017

  • Fix: PGN 126992 TimeSource handling.
  • Fix: Added missing wind reference type.
-

+

02.10.2017

  • Added range parameter for depth PGN 128267.
  • @@ -649,24 +660,24 @@

  • Fix: Address claiming could go up to 253 and did not went to "cannot claim". Now, if address cannot be claimed, goes to "cannot claim state" and prevents all message output except ISO address claim.
  • Fix: fast packet response for less than 7 data bytes caused two frames.
-

+

26.09.2017

  • Fixed PGN 128259 parser SOG data type.
  • DataDisplay2 example update.
-

+

31.08.2017

  • Support for changing configuration information fields InstallationDescription1 and InstallationDescription2 on runtime e.g. with NMEA Reader. Meaning of those fields is define their "installation description". So if you have two engine monitor devices, you can set e.g. InstallationDescription1 field to "Port engine" for one and "Starboard engine" for other. So it is not necessary to hardcode those setting. Of coarse your code must support parameter saving to e.g. EEPROM as with other parameters (see ReadResetInstallationDescriptionChanged, ReadResetAddressChanged and ReadResetDeviceInformationChanged). I have example under construction for handling parameter changes.
  • Changed some indexes to size_t. This may effect compatibility, if you have used those functions.
-

+

31.07.2017

-

+

29.07.2017

  • Fixed setting device instances on N2kGroupFunctionDefaultHandlers
  • @@ -675,7 +686,7 @@

  • New class tN2kDeviceList. See more on library reference and on example DeviceAnalyzer.
  • Improved message type checking. This will be done for every message, so speed in important. For Arduino Mega average test time was dropped from about 90 us to 9 us and for Teensy from 3.5 us to 0.9 us.
-

+

26.06.2017

Example updates

    @@ -683,14 +694,14 @@

  • ActisenseListener uses now SetN2kCANReceiveFrameBufSize.
  • Removed FromPCToN2k. ActisenseListenerSender replaces this.
-

+

25.06.2017

Fix and cosmetic changes

  • ForwardStream initialization was accidentaly deleted
  • Clean code and more debug options.
-

+

22.06.2017

Fix and cosmetic changes

    @@ -699,10 +710,10 @@

  • Added debug definitions to avoid first bug.
  • Some cosmetic changes and tests.
-

+

19.06.2017

Changes due to different revisions of FlexCAN library for Teeansy boards. NOTE! You must update NMEA2000_Teensy library. I also forked and developed FlexCAN library from collin80 and also send pull request for him. Until updated there my fork has more features for use with NMEA2000 library.

-

+

13.06.2017

NOTE! Some compatibility changes

    @@ -710,7 +721,7 @@

  • Multi device support should work now. So you can show several devices on bus with single hw. See example MultiDevice.
  • !NOTE compatibility change. tDeviceInformation has been moved inside tNMEA2000 class. This was used only internally until 11.06.2017 release.
-

+

11.06.2017

Added NMEA 2000 mandatory features. Some bug fixes

    @@ -722,7 +733,7 @@

  • Added functions ReadResetDeviceInformationChanged, SetDeviceInformationInstances, GetDeviceInformation for checking, setting and reading device instance changes. See more info on document.
  • Added ISO Multi-packet handling. Changed logic on SetN2kCANBufMsg due this.
-

+

05.06.2017

  • Added PGN 130314 by sarfata.
  • @@ -730,7 +741,7 @@

  • Fixed Device Information, last bit must be set to 1
  • Fixed response to ISO Address Claim request. Seems that all new devices respond allways with broadcast instead of caller address.
-

+

28.05.2017

  • Changed default NMEA2000 variable definition in NMEA2000_CAN.h to reference. So now it is possible to refer it in other modules with definition:
    {code```}
    @@ -738,81 +749,81 @@

    ```endcode

-

+

08.04.2017

  • Added Binary status report (PGN 127501) handling. See updated examples MessageSender and DataDisplay2.
-

+

09.03.2017

  • Added PGN 129539 support and PGN 129283, 129284 parsers by denravonska.
-

+

07.03.2017

  • Debug mode check for DeviceReady and ParseMessages.
-

+

05.03.2017

  • RPi socketCAN auto selection and MBED compiler portability fix by thomasonw.
-

+

08.02.2017

  • Fixed Heading PGN 127250 parsing
-

+

22.01.2017

  • Replace pointer casting with memcpy to avoid unaligned access, and add endian support. Thanks to denravonska.
  • Handle for PGN 65240 "Commanded address". E.g. diagnostic device may command your device to change address.
-

+

01.01.2017

  • Document and some example fixes to match library portability changes.
-

+

20.12.2016

  • Added support for PGN 126464L, PGN List (Transmit and Receive). Library will automatically respond to this message. You need only add message lists and call to methods ExtendTransmitMessages and/or ExtendReceiveMessages. See e.g. example TemperatureMonitor.
-

+

17.12.2016

  • Fixes to avoid compiler warnings
-

+

16.12.2016

  • Portability fixes. Thanks to denravonska and thomasonw!
  • NOTE! compatibility issue! There is no more default stream set on library constuctor. So in case you are using forwarding, you need to setup it (like in examples) NMEA2000.SetForwardStream(&Serial);
  • This reduces the Arduino dependency, allowing the library to more easily be used on other platforms. Check all changes under https://github.com/ttlappalainen/NMEA2000/pull/3
-

+

01.12.2016

  • License change to MIT for more permissive
  • Also some started to remove platform dependent code.
-

+

12.11.2016

  • PGN129025 parser added and some fixes by KimBP
-

+

11.11.2016

  • Added support for PGN 127258 - magnetic variation by adwuk.
-

+

18.10.2016

  • Added parsing for PGN 130311 by adwuk. Typo fix for system date comment by sarfata.
-

+

19.09.2016

  • Lot of testing behind - hopefully works now better.
  • @@ -822,12 +833,12 @@

  • New methods SetConfigurationInformation and SetProgmemConfigurationInformation. System can now also handle Configuration Information ISO request to (PGN 126998). Default configuration information is saved to PROGMEM.
  • NOTE! Reload also NMEA2000_due!
-

+

17.09.2016

  • Temporary fix for problem to respond product information ISO request.
-

+

12.09.2016

  • Thanks for people (usauerbrey, OzOns), who noted below problems
  • @@ -836,7 +847,7 @@

  • Some fixes to avoid compiler warnings.
  • Fix for parsing PGN 127257/Attitude
-

+

09.08.2016

  • NOTE! Fixed PGN 130310, PGN 130311 and added SetHandleOnlyKnownMessages(), which effects backward compatibility. See below.
  • @@ -847,39 +858,39 @@

  • Added ExtendSingleFrameMessages and ExtendFastPacketMessages. With these one can own list of known messages so that it is not necessary to duplicate message list as, if used only SetSingleFrameMessages and SetFastPacketMessages.
  • Added discrete status flags for transmission parameters (PGN 127493), thanks for testing Jason.
-

+

06.08.2016

  • Added SetISORqstHandler for setting handler for ISO requests. Thanks thomasonw.
-

+

30.07.2016

  • NMEA 2000 Library reference update.
  • Added example TeensyActisenseListenerSender. Example contains code, schematics and document.
-

+

19.07.2016

  • Fixed discrete status on engine dynamic parameters (PGN 127489), thanks Jason.
  • Added new PGN 127257, vessel attitude. Only sending has been tested with NMEA Reader
-

+

12.07.2016

  • Added to API – Optional message lists by thomasonw
-

+

25.06.2016

  • Corrected Battery Current in ParseN2kPGN127508 by thomasonw.
-

+

23.03.2016

  • Additional PGN 129038, PGN 129039, PGN 129285, PGN 130074 support by adwuk.
-

+

13.03.2016

  • Fix of using PROGMEM. Now also product information defined to PROGMEM works right.
  • @@ -891,24 +902,24 @@

    1300, // N2kVersion
    ...

See example BatteryMonitor.ino

-

+

12.03.2016

  • Memory tuning. Currently multi device and user definable message filters has not been implemented, so I changed buffer sizes to minimum.
  • There is also new function void tNMEA2000::SetN2kCANMsgBufSize(const unsigned char _MaxN2kCANMsgs); to define buffer size for received N2k messages. Note that library has to collect fast packet frames, which may arrive fragmented from different devices, so as default this buffer size has been set to 5. If your device is only sending some data (mode is tNMEA2000::N2km_NodeOnly), you do not need to catch all fast packet messages (if any), so you can set buffer size smaller.
-

+

09.03.2016

  • Additional PGN 127250, PGN 128275 Support by adwuk.
-

+

08.03.2016

  • AVR CAN support by thomasonw.
-

+

02.02.2016

  • NOTE! Updates, which effects backward compatibility. See list below.
  • @@ -919,13 +930,13 @@

  • If you are reading values from N2k bus, you can now check does some value exist by using function N2kIsNA. So if you e.g. call + ParseN2kOutsideEnvironmentalParameters(N2kMsg,SID,WaterTemperature,OutsideAmbientAirTemperature,AtmosphericPressure); + then check pressure value with + if ( !N2kIsNA(AtmosphericPressure) ) { // It is available, so we can show it!
  • Added reference document to the documents, which hopefully helps to get started.
-

+

23.01.2016

  • Added PGN 127493 support. NMEA2000_mcp has now interrupt support. Some other fixes.
  • Added some comments to samples and several new message readers. Also added support for 130316 extended temperature. Added new include N2kMessagesEnumToStr.h for translating library enums to clear text. This is now just for preliminary so I may changes texts in coming future. Added also new examples DataDisplay2.ini and MessageSender.ino. They are extended versions of DataDisplay.ino and TemperatureMonitor.ino.
-

+

05.12.2015

  • Added NMEA2000_CAN.h and some fixes. Library has been originally developed with Arduino Software 1.6.5 On Arduino Software 1.6.6 it is possible to include libraries within included files, so now it is possible to just include one file NMEA2000_CAN.h, which automatically selects right CAN library according. So you can have same code for different hw. Currently supported CAN libraries are mcp_can, due_can and teensy. Note! NMEA2000_CAN.h is now used on examples TemperatureMonitor and WindMonitor!
  • diff --git a/classt_n_m_e_a2000.html b/classt_n_m_e_a2000.html index 52e4cbe5..e2c983dd 100644 --- a/classt_n_m_e_a2000.html +++ b/classt_n_m_e_a2000.html @@ -379,6 +379,7 @@  Set the Handle Only Known Messages. More...
      void SetHeartbeatInterval (unsigned long interval, bool SetAsDefault=true, int iDev=-1) __attribute__((deprecated)) + Deprecated. Use function SetHeartbeatIntervalAndOffset. More...
      void SetHeartbeatIntervalAndOffset (uint32_t interval, uint32_t offset=0, int iDev=-1)  Set the Heartbeat Interval and Offset for a device. More...
    @@ -882,7 +883,7 @@

    Definition at line 646 of file NMEA2000.cpp.

    +

    Definition at line 660 of file NMEA2000.cpp.

@@ -911,7 +912,7 @@

Definition at line 2693 of file NMEA2000.cpp.

+

Definition at line 2708 of file NMEA2000.cpp.

@@ -945,7 +946,7 @@

Definition at line 2628 of file NMEA2000.cpp.

+

Definition at line 2643 of file NMEA2000.cpp.

@@ -1165,7 +1166,7 @@

Definition at line 1564 of file NMEA2000.cpp.

+

Definition at line 1579 of file NMEA2000.cpp.

@@ -1212,7 +1213,7 @@

Definition at line 623 of file NMEA2000.cpp.

+

Definition at line 637 of file NMEA2000.cpp.

@@ -1267,7 +1268,7 @@

Definition at line 640 of file NMEA2000.cpp.

+

Definition at line 654 of file NMEA2000.cpp.

@@ -1302,7 +1303,7 @@

Definition at line 1008 of file NMEA2000.cpp.

+

Definition at line 1022 of file NMEA2000.cpp.

@@ -1335,7 +1336,7 @@

Definition at line 2653 of file NMEA2000.cpp.

+

Definition at line 2668 of file NMEA2000.cpp.

@@ -1374,7 +1375,7 @@

Definition at line 2887 of file NMEA2000.h.

+

Definition at line 2900 of file NMEA2000.h.

@@ -1410,7 +1411,7 @@

Definition at line 1934 of file NMEA2000.cpp.

+

Definition at line 1949 of file NMEA2000.cpp.

@@ -1447,7 +1448,7 @@

Definition at line 1144 of file NMEA2000.cpp.

+

Definition at line 1158 of file NMEA2000.cpp.

@@ -1485,7 +1486,7 @@

NMEA2000.ExtendReceiveMessages(ReceivedMessages);
#define PROGMEM
Definition: N2kDef.h:45
tNMEA2000 & NMEA2000
Definition: NMEA2000_CAN.h:350
-
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1156
+
void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
Extend the list of Received Messages.
Definition: NMEA2000.cpp:1170

Library responds automatically to PGN 126464 request about transmit or receive messages. With this function you extend library list of messages your device own logic listens.

Note
Extending receive messages is required for NMEA2000 certification.

This has only effect for device modes tNMEA2000::N2km_NodeOnly and tNMEA2000::N2km_ListenAndNode.

@@ -1497,7 +1498,7 @@

Definition at line 1156 of file NMEA2000.cpp.

+

Definition at line 1170 of file NMEA2000.cpp.

@@ -1533,7 +1534,7 @@

Definition at line 1139 of file NMEA2000.cpp.

+

Definition at line 1153 of file NMEA2000.cpp.

@@ -1569,7 +1570,7 @@

const unsigned long TransmitMessages[]
-
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1149
+
void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
Extend the list of Transmitted Messages.
Definition: NMEA2000.cpp:1163

Library responds automatically to PGN 126464 request about transmit or receive messages. With this function you extend library list of messages your device own logic sends.

Note
Extending transmit messages is required for NMEA2000 certification, may be also critical since some devices refuces to handle PGNs from devices, which does not list them on transmit messages.

This has only effect for device modes tNMEA2000::N2km_NodeOnly and tNMEA2000::N2km_ListenAndNode.

@@ -1581,7 +1582,7 @@

Definition at line 1149 of file NMEA2000.cpp.

+

Definition at line 1163 of file NMEA2000.cpp.

@@ -1650,7 +1651,7 @@

Definition at line 1619 of file NMEA2000.cpp.

+

Definition at line 1634 of file NMEA2000.cpp.

@@ -1679,7 +1680,7 @@

Returns
int DeviceIndex, not found = -1
-

Definition at line 2047 of file NMEA2000.cpp.

+

Definition at line 2062 of file NMEA2000.cpp.

@@ -1721,7 +1722,7 @@

Definition at line 1516 of file NMEA2000.h.

+

Definition at line 1520 of file NMEA2000.h.

@@ -1758,7 +1759,7 @@

Definition at line 2077 of file NMEA2000.cpp.

+

Definition at line 2092 of file NMEA2000.cpp.

@@ -1795,7 +1796,7 @@

Definition at line 2063 of file NMEA2000.cpp.

+

Definition at line 2078 of file NMEA2000.cpp.

@@ -1832,7 +1833,7 @@

Definition at line 1532 of file NMEA2000.h.

+

Definition at line 1536 of file NMEA2000.h.

@@ -1869,7 +1870,7 @@

Definition at line 1540 of file NMEA2000.h.

+

Definition at line 1544 of file NMEA2000.h.

@@ -1906,7 +1907,7 @@

Definition at line 1524 of file NMEA2000.h.

+

Definition at line 1528 of file NMEA2000.h.

@@ -1935,7 +1936,7 @@

Returns
unsigned char
-

Definition at line 980 of file NMEA2000.cpp.

+

Definition at line 994 of file NMEA2000.cpp.

@@ -1979,7 +1980,7 @@

Returns
const tDeviceInformation
-

Definition at line 2382 of file NMEA2000.h.

+

Definition at line 2386 of file NMEA2000.h.

@@ -2016,7 +2017,7 @@

Returns
size_t
-

Definition at line 799 of file NMEA2000.cpp.

+

Definition at line 813 of file NMEA2000.cpp.

@@ -2046,7 +2047,7 @@

Returns
current Forward Stream object or 0 if not set.
-

Definition at line 2601 of file NMEA2000.h.

+

Definition at line 2610 of file NMEA2000.h.

@@ -2082,9 +2083,14 @@

Returns
uint_32 -> Device heartbeat interval in ms
+
Return values
+ + +
uint_32Device heartbeat interval in ms
+
+
-

Definition at line 2509 of file NMEA2000.h.

+

Definition at line 2513 of file NMEA2000.h.

@@ -2120,9 +2126,14 @@

Returns
uint_32 -> Device heartbeat Offset in ms
+
Return values
+ + +
uint_32Device heartbeat Offset in ms
+
+
-

Definition at line 2520 of file NMEA2000.h.

+

Definition at line 2524 of file NMEA2000.h.

@@ -2161,7 +2172,7 @@

Definition at line 1042 of file NMEA2000.cpp.

+

Definition at line 1056 of file NMEA2000.cpp.

@@ -2200,7 +2211,7 @@

Definition at line 1051 of file NMEA2000.cpp.

+

Definition at line 1065 of file NMEA2000.cpp.

@@ -2230,7 +2241,7 @@

Returns
unsigned char
-

Definition at line 994 of file NMEA2000.cpp.

+

Definition at line 1008 of file NMEA2000.cpp.

@@ -2269,7 +2280,7 @@

Definition at line 1060 of file NMEA2000.cpp.

+

Definition at line 1074 of file NMEA2000.cpp.

@@ -2315,7 +2326,7 @@

Definition at line 916 of file NMEA2000.cpp.

+

Definition at line 930 of file NMEA2000.cpp.

@@ -2361,7 +2372,7 @@

Definition at line 964 of file NMEA2000.cpp.

+

Definition at line 978 of file NMEA2000.cpp.

@@ -2407,7 +2418,7 @@

Definition at line 948 of file NMEA2000.cpp.

+

Definition at line 962 of file NMEA2000.cpp.

@@ -2451,7 +2462,7 @@

Returns
unsigned char -> Address of the device
-

Definition at line 2814 of file NMEA2000.h.

+

Definition at line 2827 of file NMEA2000.h.

@@ -2480,7 +2491,7 @@

Returns
unsigned short
-

Definition at line 888 of file NMEA2000.cpp.

+

Definition at line 902 of file NMEA2000.cpp.

@@ -2527,7 +2538,7 @@

Definition at line 2497 of file NMEA2000.cpp.

+

Definition at line 2512 of file NMEA2000.cpp.

@@ -2557,7 +2568,7 @@

CANSendFrameBuf.

Returns
tCANSendFrame*
-

Definition at line 1402 of file NMEA2000.cpp.

+

Definition at line 1417 of file NMEA2000.cpp.

@@ -2586,7 +2597,7 @@

Returns
unsigned short
-

Definition at line 902 of file NMEA2000.cpp.

+

Definition at line 916 of file NMEA2000.cpp.

@@ -2626,7 +2637,7 @@

Returns
const tNMEA2000::tProductInformation*
-

Definition at line 877 of file NMEA2000.cpp.

+

Definition at line 891 of file NMEA2000.cpp.

@@ -2674,7 +2685,7 @@

Returns
int Sequence Counter, non valid iDEV = 0
-

Definition at line 817 of file NMEA2000.cpp.

+

Definition at line 831 of file NMEA2000.cpp.

@@ -2720,7 +2731,7 @@

Definition at line 932 of file NMEA2000.cpp.

+

Definition at line 946 of file NMEA2000.cpp.

@@ -2756,7 +2767,7 @@

Definition at line 2452 of file NMEA2000.cpp.

+

Definition at line 2467 of file NMEA2000.cpp.

@@ -2811,7 +2822,7 @@

Definition at line 2440 of file NMEA2000.cpp.

+

Definition at line 2455 of file NMEA2000.cpp.

@@ -2848,7 +2859,7 @@

Definition at line 2360 of file NMEA2000.cpp.

+

Definition at line 2375 of file NMEA2000.cpp.

@@ -2884,7 +2895,7 @@

Definition at line 2415 of file NMEA2000.cpp.

+

Definition at line 2430 of file NMEA2000.cpp.

@@ -2921,7 +2932,7 @@

Definition at line 2318 of file NMEA2000.cpp.

+

Definition at line 2333 of file NMEA2000.cpp.

@@ -2957,7 +2968,7 @@

Definition at line 1548 of file NMEA2000.h.

+

Definition at line 1552 of file NMEA2000.h.

@@ -3001,7 +3012,7 @@

Definition at line 1568 of file NMEA2000.h.

+

Definition at line 1572 of file NMEA2000.h.

@@ -3052,7 +3063,7 @@

Definition at line 2528 of file NMEA2000.cpp.

+

Definition at line 2543 of file NMEA2000.cpp.

@@ -3095,7 +3106,7 @@

Definition at line 1766 of file NMEA2000.cpp.

+

Definition at line 1781 of file NMEA2000.cpp.

@@ -3133,7 +3144,7 @@

Definition at line 1174 of file NMEA2000.cpp.

+

Definition at line 1188 of file NMEA2000.cpp.

@@ -3175,7 +3186,7 @@

Definition at line 696 of file NMEA2000.cpp.

+

Definition at line 710 of file NMEA2000.cpp.

@@ -3211,7 +3222,7 @@

Definition at line 1580 of file NMEA2000.h.

+

Definition at line 1584 of file NMEA2000.h.

@@ -3254,7 +3265,7 @@

Definition at line 2399 of file NMEA2000.cpp.

+

Definition at line 2414 of file NMEA2000.cpp.

@@ -3297,7 +3308,7 @@

Definition at line 2977 of file NMEA2000.h.

+

Definition at line 2990 of file NMEA2000.h.

@@ -3341,7 +3352,7 @@

Definition at line 1557 of file NMEA2000.cpp.

+

Definition at line 1572 of file NMEA2000.cpp.

@@ -3385,7 +3396,7 @@

Definition at line 1537 of file NMEA2000.cpp.

+

Definition at line 1552 of file NMEA2000.cpp.

@@ -3421,7 +3432,7 @@

Definition at line 1230 of file NMEA2000.h.

+

Definition at line 1234 of file NMEA2000.h.

@@ -3464,7 +3475,7 @@

Definition at line 2058 of file NMEA2000.cpp.

+

Definition at line 2073 of file NMEA2000.cpp.

@@ -3500,7 +3511,7 @@

Definition at line 2625 of file NMEA2000.h.

+

Definition at line 2634 of file NMEA2000.h.

@@ -3549,7 +3560,7 @@

Definition at line 569 of file NMEA2000.cpp.

+

Definition at line 583 of file NMEA2000.cpp.

@@ -3585,7 +3596,7 @@

Definition at line 1597 of file NMEA2000.h.

+

Definition at line 1601 of file NMEA2000.h.

@@ -3631,7 +3642,7 @@

Definition at line 861 of file NMEA2000.cpp.

+

Definition at line 875 of file NMEA2000.cpp.

@@ -3674,7 +3685,7 @@

Definition at line 1589 of file NMEA2000.h.

+

Definition at line 1593 of file NMEA2000.h.

@@ -3818,7 +3829,7 @@

Definition at line 1186 of file NMEA2000.cpp.

+

Definition at line 1200 of file NMEA2000.cpp.

@@ -3849,7 +3860,7 @@

Note
Even if you only send e.g. temperature to the bus, you should call this so the node will automatically inform about itself to others.

See example TemperatureMonitor.ino.

-

Definition at line 2562 of file NMEA2000.cpp.

+

Definition at line 2577 of file NMEA2000.cpp.

@@ -3886,7 +3897,7 @@

Definition at line 2481 of file NMEA2000.cpp.

+

Definition at line 2496 of file NMEA2000.cpp.

@@ -3922,7 +3933,7 @@

Definition at line 2489 of file NMEA2000.cpp.

+

Definition at line 2504 of file NMEA2000.cpp.

@@ -3956,7 +3967,7 @@

Definition at line 1069 of file NMEA2000.cpp.

+

Definition at line 1083 of file NMEA2000.cpp.

@@ -3984,7 +3995,7 @@

Definition at line 2675 of file NMEA2000.cpp.

+

Definition at line 2690 of file NMEA2000.cpp.

@@ -4046,7 +4057,7 @@

Definition at line 2338 of file NMEA2000.cpp.

+

Definition at line 2353 of file NMEA2000.cpp.

@@ -4102,7 +4113,7 @@

Definition at line 2282 of file NMEA2000.cpp.

+

Definition at line 2297 of file NMEA2000.cpp.

@@ -4125,7 +4136,7 @@

Note
At the moment this functions just restarts the IsoAddressClaim
-

Definition at line 1249 of file NMEA2000.cpp.

+

Definition at line 1264 of file NMEA2000.cpp.

@@ -4161,7 +4172,7 @@

Definition at line 2605 of file NMEA2000.cpp.

+

Definition at line 2620 of file NMEA2000.cpp.

@@ -4197,7 +4208,7 @@

Definition at line 2245 of file NMEA2000.cpp.

+

Definition at line 2260 of file NMEA2000.cpp.

@@ -4251,7 +4262,7 @@

Definition at line 2249 of file NMEA2000.cpp.

+

Definition at line 2264 of file NMEA2000.cpp.

@@ -4320,7 +4331,7 @@

Definition at line 1320 of file NMEA2000.cpp.

+

Definition at line 1335 of file NMEA2000.cpp.

@@ -4356,7 +4367,7 @@

Definition at line 1303 of file NMEA2000.cpp.

+

Definition at line 1318 of file NMEA2000.cpp.

@@ -4385,7 +4396,7 @@

Definition at line 1381 of file NMEA2000.cpp.

+

Definition at line 1396 of file NMEA2000.cpp.

@@ -4406,6 +4417,7 @@

Send heartbeat for specific device.

+

Library will automatically send heartbeat, if interval is >0. You can also manually send it any time or force sent, if interval=0;

Parameters
@@ -4413,7 +4425,7 @@

Definition at line 1373 of file NMEA2000.cpp.

+

Definition at line 1388 of file NMEA2000.cpp.

@@ -4460,7 +4472,7 @@

Definition at line 2082 of file NMEA2000.cpp.

+

Definition at line 2097 of file NMEA2000.cpp.

@@ -4515,7 +4527,7 @@

Definition at line 1435 of file NMEA2000.cpp.

+

Definition at line 1450 of file NMEA2000.cpp.

@@ -4550,7 +4562,7 @@

Definition at line 1416 of file NMEA2000.cpp.

+

Definition at line 1431 of file NMEA2000.cpp.

@@ -4586,7 +4598,7 @@

Definition at line 1941 of file NMEA2000.cpp.

+

Definition at line 1956 of file NMEA2000.cpp.

@@ -4622,7 +4634,7 @@

Definition at line 2203 of file NMEA2000.cpp.

+

Definition at line 2218 of file NMEA2000.cpp.

@@ -4676,7 +4688,7 @@

Definition at line 2207 of file NMEA2000.cpp.

+

Definition at line 2222 of file NMEA2000.cpp.

@@ -4723,7 +4735,7 @@

Definition at line 2146 of file NMEA2000.cpp.

+

Definition at line 2161 of file NMEA2000.cpp.

@@ -4785,7 +4797,7 @@

Definition at line 1727 of file NMEA2000.cpp.

+

Definition at line 1742 of file NMEA2000.cpp.

@@ -4829,7 +4841,7 @@

Definition at line 1653 of file NMEA2000.cpp.

+

Definition at line 1668 of file NMEA2000.cpp.

@@ -4898,7 +4910,7 @@

Definition at line 1692 of file NMEA2000.cpp.

+

Definition at line 1707 of file NMEA2000.cpp.

@@ -4967,7 +4979,7 @@

Definition at line 1710 of file NMEA2000.cpp.

+

Definition at line 1725 of file NMEA2000.cpp.

@@ -5010,7 +5022,7 @@

Definition at line 1672 of file NMEA2000.cpp.

+

Definition at line 1687 of file NMEA2000.cpp.

@@ -5054,7 +5066,7 @@

Definition at line 1747 of file NMEA2000.cpp.

+

Definition at line 1762 of file NMEA2000.cpp.

@@ -5101,7 +5113,7 @@

Definition at line 2113 of file NMEA2000.cpp.

+

Definition at line 2128 of file NMEA2000.cpp.

@@ -5156,7 +5168,7 @@

Definition at line 630 of file NMEA2000.cpp.

+

Definition at line 644 of file NMEA2000.cpp.

@@ -5212,7 +5224,7 @@

Definition at line 750 of file NMEA2000.cpp.

+

Definition at line 764 of file NMEA2000.cpp.

@@ -5246,7 +5258,7 @@

Definition at line 1532 of file NMEA2000.cpp.

+

Definition at line 1547 of file NMEA2000.cpp.

@@ -5277,7 +5289,7 @@

Definition at line 690 of file NMEA2000.cpp.

+

Definition at line 704 of file NMEA2000.cpp.

@@ -5350,7 +5362,7 @@

Definition at line 1079 of file NMEA2000.cpp.

+

Definition at line 1093 of file NMEA2000.cpp.

@@ -5411,7 +5423,7 @@

Definition at line 1096 of file NMEA2000.cpp.

+

Definition at line 1110 of file NMEA2000.cpp.

@@ -5446,7 +5458,7 @@

Definition at line 1134 of file NMEA2000.cpp.

+

Definition at line 1148 of file NMEA2000.cpp.

@@ -5492,7 +5504,7 @@

Definition at line 2923 of file NMEA2000.h.

+

Definition at line 2936 of file NMEA2000.h.

@@ -5529,7 +5541,7 @@

Definition at line 2935 of file NMEA2000.h.

+

Definition at line 2948 of file NMEA2000.h.

@@ -5567,7 +5579,7 @@

Definition at line 2594 of file NMEA2000.h.

+

Definition at line 2603 of file NMEA2000.h.

@@ -5604,7 +5616,7 @@

Definition at line 2901 of file NMEA2000.h.

+

Definition at line 2914 of file NMEA2000.h.

@@ -5644,7 +5656,7 @@

Definition at line 2582 of file NMEA2000.h.

+

Definition at line 2591 of file NMEA2000.h.

@@ -5688,7 +5700,7 @@

Definition at line 2953 of file NMEA2000.h.

+

Definition at line 2966 of file NMEA2000.h.

@@ -5724,7 +5736,9 @@

-

Definition at line 1368 of file NMEA2000.cpp.

+

Deprecated. Use function SetHeartbeatIntervalAndOffset.

+ +

Definition at line 1383 of file NMEA2000.cpp.

@@ -5761,18 +5775,19 @@

Set the Heartbeat Interval and Offset for a device.

-

According to document NMEA Heartbeat Corrigendum all NMEA devices shall transmit heartbeat PGN 126993. With this function you can set transmission interval in ms (range 1000-655320ms , default 60000). Set <1000 to disable it. You can temporally change interval by setting SetAsDefault parameter to false. Then you can restore default interval with interval parameter value 0xfffffffe

+

Library will automatically start heartbeat with default interval 60 s and offset 10 s.

+

According to document NMEA Heartbeat Corrigendum all NMEA devices shall transmit heartbeat PGN 126993. With this function you can set transmission interval in ms (range 1000-655320ms , default 60000). Set interval 0 to disable heartbeat

Function allows to set interval over 60 s or 0 to disable sending for test purposes.

Parameters

iDevindex of the device on Devices
- - - + + +
intervalHeartbeat Interval in ms
offsetHeartbeat Offset in ms
iDevindex of the device on Devices
intervalHeartbeat Interval in ms. 0xffffffff=keep current, 0xfffffffe=restore default
offsetHeartbeat Offset in ms. 0xffffffff=keep current, 0xfffffffe=restore default
iDevIndex of the device on Devices or -1 to set for all.
-

Definition at line 1341 of file NMEA2000.cpp.

+

Definition at line 1356 of file NMEA2000.cpp.

@@ -5801,7 +5816,7 @@

Definition at line 1023 of file NMEA2000.cpp.

+

Definition at line 1037 of file NMEA2000.cpp.

@@ -5830,7 +5845,7 @@

Definition at line 1033 of file NMEA2000.cpp.

+

Definition at line 1047 of file NMEA2000.cpp.

@@ -5862,7 +5877,7 @@

Definition at line 2669 of file NMEA2000.cpp.

+

Definition at line 2684 of file NMEA2000.cpp.

@@ -5908,7 +5923,7 @@

Definition at line 1163 of file NMEA2000.cpp.

+

Definition at line 1177 of file NMEA2000.cpp.

@@ -5939,7 +5954,7 @@

Definition at line 2623 of file NMEA2000.cpp.

+

Definition at line 2638 of file NMEA2000.cpp.

@@ -5995,7 +6010,7 @@

Returns
uint8_t -> Index of the CAN message on N2kCANMsgBuf
-

Definition at line 1962 of file NMEA2000.cpp.

+

Definition at line 1977 of file NMEA2000.cpp.

@@ -6036,7 +6051,7 @@

Definition at line 1812 of file NMEA2000.h.

+

Definition at line 1816 of file NMEA2000.h.

@@ -6078,7 +6093,7 @@

Definition at line 1866 of file NMEA2000.h.

+

Definition at line 1870 of file NMEA2000.h.

@@ -6124,7 +6139,7 @@

Definition at line 1849 of file NMEA2000.h.

+

Definition at line 1853 of file NMEA2000.h.

@@ -6171,7 +6186,7 @@

Definition at line 2473 of file NMEA2000.cpp.

+

Definition at line 2488 of file NMEA2000.cpp.

@@ -6192,9 +6207,10 @@

Set OnOpen callback function.

-

OnOpen will be called, when communication really opens and starts initial address claiming. You can use this to init your message sending to syncronize them with e.g., heartbeat.

+

OnOpen will be called, when communication really opens and starts initial address claiming. You can use this to init your message sending to syncronize them with e.g., heartbeat.

+
Note
In future OnOpen may be called several times, if communication will be reopened by Restart or driver error. Developer must take care that possible memory initializations will be handled properly in case OnOpen is called several times.
-

Definition at line 2618 of file NMEA2000.cpp.

+

Definition at line 2633 of file NMEA2000.cpp.

@@ -6286,7 +6302,7 @@

Definition at line 731 of file NMEA2000.cpp.

+

Definition at line 745 of file NMEA2000.cpp.

@@ -6327,7 +6343,7 @@

Definition at line 722 of file NMEA2000.cpp.

+

Definition at line 736 of file NMEA2000.cpp.

@@ -6377,7 +6393,7 @@

Definition at line 788 of file NMEA2000.cpp.

+

Definition at line 802 of file NMEA2000.cpp.

@@ -6414,7 +6430,7 @@

Definition at line 1129 of file NMEA2000.cpp.

+

Definition at line 1143 of file NMEA2000.cpp.

@@ -6443,7 +6459,7 @@

Definition at line 2391 of file NMEA2000.cpp.

+

Definition at line 2406 of file NMEA2000.cpp.

@@ -6479,7 +6495,7 @@

Definition at line 2378 of file NMEA2000.cpp.

+

Definition at line 2393 of file NMEA2000.cpp.

@@ -6533,7 +6549,7 @@

Definition at line 1911 of file NMEA2000.cpp.

+

Definition at line 1926 of file NMEA2000.cpp.

@@ -6615,7 +6631,7 @@

Definition at line 1771 of file NMEA2000.cpp.

+

Definition at line 1786 of file NMEA2000.cpp.

@@ -7111,7 +7127,7 @@

Definition at line 1742 of file NMEA2000.h.

+

Definition at line 1746 of file NMEA2000.h.

@@ -7137,7 +7153,7 @@

Definition at line 1075 of file NMEA2000.h.

+

Definition at line 1079 of file NMEA2000.h.

@@ -7284,7 +7300,7 @@

Definition at line 1073 of file NMEA2000.h.

+

Definition at line 1077 of file NMEA2000.h.

@@ -7392,9 +7408,10 @@

Callback function, which will be called when library start bus communicaion.

-

OnOpen Will be called when library starts bus communication. At open library first starts address claming and after it has been accepted, other communication can start. OnOpen can be used e.g., for message timing synchronization so that every time device starts messages will have same sent offset. See also SetOnOpen().

+

OnOpen Will be called when library starts bus communication. At open library first starts address claming and after it has been accepted, other communication can start. OnOpen can be used e.g., for message timing synchronization so that every time device starts messages will have same sent offset. See also SetOnOpen().

+
Note
In future OnOpen may be called several times, if communication will be reopened by Restart or driver error. Developer must take care that possible memory initializations will be handled properly in case OnOpen is called several times.
-

Definition at line 1070 of file NMEA2000.h.

+

Definition at line 1074 of file NMEA2000.h.

@@ -7470,7 +7487,7 @@

Definition at line 1079 of file NMEA2000.h.

+

Definition at line 1083 of file NMEA2000.h.

diff --git a/classt_priority_ring_buffer-members.html b/classt_priority_ring_buffer-members.html index 5e336a07..c7229b5a 100644 --- a/classt_priority_ring_buffer-members.html +++ b/classt_priority_ring_buffer-members.html @@ -125,18 +125,19 @@ clear()tPriorityRingBuffer< T > count()tPriorityRingBuffer< T > getAddRef(uint8_t _priority=0)tPriorityRingBuffer< T > - getReadRef(uint8_t _priority)tPriorityRingBuffer< T > - getReadRef(uint8_t *_priority=0)tPriorityRingBuffer< T > - getSize() consttPriorityRingBuffer< T >inline - headtPriorityRingBuffer< T >protected - isEmpty(uint8_t _priority=0xff) consttPriorityRingBuffer< T > - maxPrioritiestPriorityRingBuffer< T >protected - priorityReferenciestPriorityRingBuffer< T >protected - read(T &val)tPriorityRingBuffer< T > - sizetPriorityRingBuffer< T >protected - tailtPriorityRingBuffer< T >protected - tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1)tPriorityRingBuffer< T > - ~tPriorityRingBuffer()tPriorityRingBuffer< T >virtual + getMemSize(uint16_t _size, uint8_t _maxPriorities=1)tPriorityRingBuffer< T >static + getReadRef(uint8_t _priority)tPriorityRingBuffer< T > + getReadRef(uint8_t *_priority=0)tPriorityRingBuffer< T > + getSize() consttPriorityRingBuffer< T >inline + headtPriorityRingBuffer< T >protected + isEmpty(uint8_t _priority=0xff) consttPriorityRingBuffer< T > + maxPrioritiestPriorityRingBuffer< T >protected + priorityReferenciestPriorityRingBuffer< T >protected + read(T &val)tPriorityRingBuffer< T > + sizetPriorityRingBuffer< T >protected + tailtPriorityRingBuffer< T >protected + tPriorityRingBuffer(uint16_t _size, uint8_t _maxPriorities=1)tPriorityRingBuffer< T > + ~tPriorityRingBuffer()tPriorityRingBuffer< T >virtual diff --git a/classt_priority_ring_buffer.html b/classt_priority_ring_buffer.html index 43c86b37..b695f1c2 100644 --- a/classt_priority_ring_buffer.html +++ b/classt_priority_ring_buffer.html @@ -116,13 +116,14 @@
tPriorityRingBuffer< T > Class Template Reference
-

Template Class that holds simple data structures with given priorities in a ring buffer. +

Template Class that holds values with given priorities in a ring buffer. More...

#include <RingBuffer.h>

@@ -131,7 +132,7 @@
Collaboration graph
- + @@ -149,10 +150,10 @@

Public Member Functions

 tPriorityRingBuffer (uint16_t _size, uint8_t _maxPriorities=1) - Construct a new Priority Ring Buffer object. More...
+ Construct a new Priority ring buffer object. More...
  virtual ~tPriorityRingBuffer () - Destroy the t Priority Ring Buffer object Frees all memory. More...
+ Destroy the priority ring buffer object Frees all memory. More...
  bool add (const T &val, uint8_t _priority=0)  Add a value to the ring buffer with a given priority. More...
@@ -164,26 +165,33 @@  Clears the whole ring buffer. More...
  uint16_t count () - Returns the number of Entries in the ring buffer. More...
+ Returns the number of values in the ring buffer. More...
  T * getAddRef (uint8_t _priority=0) - Get the Reference for the next Add. More...
+ Get the pointer to new value added to the ring buffer. More...
  const T * getReadRef (uint8_t *_priority=0) - Get reference to highest available. More...
+ Get pointer to highest priority value read out from the the ring buffer. More...
  const T * getReadRef (uint8_t _priority) - Get the Reference for the next Read. More...
+ Get the pointer to value with given priority read out from the ring buffer. More...
  uint16_t getSize () const + Get the size of the ring buffer. More...
  bool isEmpty (uint8_t _priority=0xff) const - Get the Size of the ring buffer. More...
+ Check is ring buffer empty. More...
  bool read (T &val) - Reads a value from the ring buffer. More...
+ Reads highest priority value out from the ring buffer. More...
  + + + + +

+Static Public Member Functions

static uint32_t getMemSize (uint16_t _size, uint8_t _maxPriorities=1)
 Get the size of memory required by ring buffer. More...
 
@@ -196,9 +204,10 @@ + - + @@ -206,9 +215,11 @@

Protected Attributes

tValueSlotbuffer
 highest priority possible More...
 
tPriorityRefpriorityReferencies
 Pointer to priority referencies in buffer. More...
 
uint16_t size
 Number of data structures that can be stored in the ring buffer. More...
 Number of values that can be stored in the ring buffer. More...
 
uint16_t tail
 Index of the last occupied index in the ring buffer. More...

Detailed Description

template<typename T>
-class tPriorityRingBuffer< T >

Template Class that holds simple data structures with given priorities in a ring buffer.

-

tPriorityRingBuffer is similar as tRingBuffer, but it extends functionality with item priority. When you add items to buffer, you can give them priority and when you read them, highest priority item will be read out first.

See also
Example of ring buffer usage
-
Note
You have to take care of data locking from other threads or interrupts for copy time.
+class tPriorityRingBuffer< T >

Template Class that holds values with given priorities in a ring buffer.

+

tPriorityRingBuffer is similar as tRingBuffer, but it extends functionality with value priority. When you add values to the buffer, you can give them priority. When you read them out you can get highest priority or request specific priority value.

+

The advantage of tPriorityRingBuffer is that it will reserve one continuous block for all priorities instead of reserve one buffer for each priority.

+
Note
You have to take care of data locking from other threads or interrupts around calls using buffer handling routines.
+
See also
Example of ring buffer usage
Template Parameters
@@ -216,7 +227,7 @@ -

Definition at line 215 of file RingBuffer.h.

+

Definition at line 255 of file RingBuffer.h.

Constructor & Destructor Documentation

◆ tPriorityRingBuffer()

@@ -246,8 +257,8 @@

-

Construct a new Priority Ring Buffer object.

-

Allocates all the memory needed and initialize attributes and priorities.

+

Construct a new Priority ring buffer object.

+

Allocates all the memory needed, initialize attributes and priorities.

Parameters

TTemplate used for the class
@@ -283,7 +294,7 @@

-

Destroy the t Priority Ring Buffer object Frees all memory.

+

Destroy the priority ring buffer object Frees all memory.

@@ -317,6 +328,10 @@

Add a value to the ring buffer with a given priority.

+
See also
+
Parameters

_sizeSize of the ring buffer
@@ -324,9 +339,13 @@

Returns
true
-
-false -> ring buffer is already full
+
Return values
+

valValue to be added
+ + +
trueAdd succeeded
falseBuffer is full
+
+
@@ -389,8 +408,14 @@

-

Returns the number of Entries in the ring buffer.

-
Returns
uint16_t Number of entries
+

Returns the number of values in the ring buffer.

+

Currently function returns simple buffer count instead of true value count. Priority ring buffer may have values released between other values.

+
Return values
+ + +
uint16_tNumber of values in buffer
+
+
@@ -412,14 +437,64 @@

-

Get the Reference for the next Add.

+

Get the pointer to new value added to the ring buffer.

+

Using getAddRef instead of add saves data copying between values. By using add, one must first setup value, which will be then copied to buffer within add. By using getAddRef one can request pointer to next buffer value and copy data directly to it.

+
Note
In multitasking or with interrupts one must take care that buffer will no be used before data handling has been finished. This differs from add, where it is enough to use locking only around calling add.
Parameters
_priorityPriority for the value (default = 0)
-
Returns
T* -> Null, if buffer is full
+
Return values
+ + + +
T *Pointer to added new value
0Buffer is full
+
+
+ + + +
+

◆ getMemSize()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static uint32_t tPriorityRingBuffer< T >::getMemSize (uint16_t _size,
uint8_t _maxPriorities = 1 
)
+
+static
+
+ +

Get the size of memory required by ring buffer.

+

This is static function and can be used to test how much ring buffer would require memory with given size and count of priorities. Function can be used e.g., for checking available memory or possible memory "bank" handling.

+
Returns
uint32_t Memory required by ring buffer
@@ -441,14 +516,22 @@

-

Get reference to highest available.

+

Get pointer to highest priority value read out from the the ring buffer.

+

Using getReadRef instead of read saves data copying between values. By using read data will be copied to value, which one then may forward elsewhere. By using getReadRef one can request pointer to value and forward data directly from it.

+
Note
In multitasking or with interrupts one must take care that buffer will no be used before data handling has been finished. This differs from read, where it is enough to use locking only around calling read.
Parameters
- + +
*_priorityPriority for the value (default = 0)
*_priorityPointer to priority, which will be set to priority of the value readed out.
+
+
+
Return values
+ + +
const T*Pointer to value read out from the ring buffer
0No values available.
-
Returns
const T*
@@ -470,14 +553,22 @@

-

Get the Reference for the next Read.

+

Get the pointer to value with given priority read out from the ring buffer.

+

Using getReadRef instead of read saves data copying between values. By using read data will be copied to value, which one then may forward elsewhere. By using getReadRef one can request pointer to value and forward data directly from it.

+
Note
In multitasking or with interrupts one must take care that buffer will no be used before data handling has been finished. This differs from read, where it is enough to use locking only around calling read.
Parameters
- + +
_priorityPriority for the value
_priorityPriority for the value read out
+
+
+
Return values
+ + +
const T*Pointer to value read out from the ring buffer
0No values available with given priority
-
Returns
const T*
@@ -506,7 +597,15 @@

-

Definition at line 282 of file RingBuffer.h.

+

Get the size of the ring buffer.

+
Return values
+ + +
uint16_tSize of ring buffer
+
+
+ +

Definition at line 326 of file RingBuffer.h.

@@ -528,8 +627,20 @@

-

Get the Size of the ring buffer.

-
Returns
uint16_t Size of ring buffer
+

Check is ring buffer empty.

+

Result depends of _priority parameter. If valid priority within initial _maxPriorities is provided, function returns empty state of given priority. Otherwise it returns empty state of whole buffer.

+
Parameters
+ + +
_priorityWhich buffer
+
+
+
Return values
+ + +
boolBuffer empty state
+
+
@@ -551,17 +662,24 @@

-

Reads a value from the ring buffer.

+

Reads highest priority value out from the ring buffer.

+
See also
+
Parameters
- + +
valReference to the value that have to be read out
valReference to the value read out from buffer
+
+
+
Return values
+ + +
trueValue read out from buffer. Value has been copied to paramater val
falseThere is no data available inside the buffer. Parameter val will be unchanged.
-
Returns
true
-
-
-false -> There is no data available inside the buffer
@@ -590,7 +708,7 @@

Definition at line 262 of file RingBuffer.h.

+

Definition at line 294 of file RingBuffer.h.

@@ -618,7 +736,7 @@

Definition at line 254 of file RingBuffer.h.

+

Definition at line 298 of file RingBuffer.h.

@@ -646,7 +764,7 @@

Definition at line 260 of file RingBuffer.h.

+

Definition at line 304 of file RingBuffer.h.

@@ -672,7 +790,9 @@

-

Definition at line 264 of file RingBuffer.h.

+

Pointer to priority referencies in buffer.

+ +

Definition at line 296 of file RingBuffer.h.

@@ -698,9 +818,9 @@

-

Number of data structures that can be stored in the ring buffer.

+

Number of values that can be stored in the ring buffer.

-

Definition at line 258 of file RingBuffer.h.

+

Definition at line 302 of file RingBuffer.h.

@@ -728,7 +848,7 @@

Definition at line 256 of file RingBuffer.h.

+

Definition at line 300 of file RingBuffer.h.

diff --git a/classt_priority_ring_buffer.js b/classt_priority_ring_buffer.js index ea527c26..13ef585d 100644 --- a/classt_priority_ring_buffer.js +++ b/classt_priority_ring_buffer.js @@ -9,6 +9,7 @@ var classt_priority_ring_buffer = [ "clear", "classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986", null ], [ "count", "classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0", null ], [ "getAddRef", "classt_priority_ring_buffer.html#aaac14529cd5845d9968af93ea5c075fb", null ], + [ "getMemSize", "classt_priority_ring_buffer.html#ac96cbedf4ae5f450f4abc71c2544c8c6", null ], [ "getReadRef", "classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226", null ], [ "getReadRef", "classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d", null ], [ "getSize", "classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a", null ], diff --git a/classt_priority_ring_buffer__coll__graph.map b/classt_priority_ring_buffer__coll__graph.map index 3b2ae87d..158d007e 100644 --- a/classt_priority_ring_buffer__coll__graph.map +++ b/classt_priority_ring_buffer__coll__graph.map @@ -1,5 +1,5 @@ - + diff --git a/classt_priority_ring_buffer__coll__graph.md5 b/classt_priority_ring_buffer__coll__graph.md5 index 6416121c..4f0ba99a 100644 --- a/classt_priority_ring_buffer__coll__graph.md5 +++ b/classt_priority_ring_buffer__coll__graph.md5 @@ -1 +1 @@ -474de2b993a8f1603ed91f6f985f0a98 \ No newline at end of file +017d6ed6131ae9f6b21fc56ba4ec138a \ No newline at end of file diff --git a/classt_ring_buffer.html b/classt_ring_buffer.html index bcad1094..aa90309c 100644 --- a/classt_ring_buffer.html +++ b/classt_ring_buffer.html @@ -121,7 +121,7 @@
-

Template Class that holds simple data structures in a ring buffer. +

Template Class that holds values in a ring buffer. More...

#include <RingBuffer.h>

@@ -129,10 +129,10 @@

Public Member Functions

 tRingBuffer (uint16_t _size) - Construct a new Ring Buffer object. More...
+ Construct a new ring buffer object. More...
  virtual ~tRingBuffer () - Destroy the Ring Buffer object. More...
+ Destroy the ring buffer object. More...
  bool add (const T &val)  Adds a new value to the ring buffer. More...
@@ -141,48 +141,51 @@  Clears the whole ring buffer. More...
  uint16_t count () - Returns the number of Entries in the ring buffer. More...
+ Returns the number of values in the ring buffer. More...
  T * getAddRef () - Get pointer to next add item if available. Write pointer will be incremented. More...
+ Get the pointer to new value added to the ring buffer. More...
  const T * getReadRef () - Get pointer to next read item if available. Read pointer will be inremented. More...
+ Get the pointer to value read out from the ring buffer. More...
  uint16_t getSize () const - Get the Size of the ring buffer. More...
+ Get the size of the ring buffer. More...
  bool isEmpty () const  Checks if the ring buffer is empty. More...
  T * peek () - Get pointer to next read item if available. Does not affect to read pointer. More...
+ Get pointer to next value to be read out from the ring buffer. Function does not read value out from the ring buffer. More...
  bool read (T &val) - Reads a value from the ring buffer. More...
+ Reads a value out from the ring buffer. More...
  - + - + - + - +

Protected Attributes

T * buffer
 Pointer to the buffer in memory. More...
 Pointer to the ring buffer of values in memory. More...
 
uint16_t head
 Index of the first data structure in the ring buffer. More...
 Index of the first value in the ring buffer. More...
 
uint16_t size
 Number of data structures that can be stored in the ring buffer. More...
 Number of values that can be stored in the ring buffer. More...
 
uint16_t tail
 Index of the last data structure in the ring buffer. More...
 Index of the last value in the ring buffer. More...
 

Detailed Description

template<typename T>
-class tRingBuffer< T >

Template Class that holds simple data structures in a ring buffer.

-

With tRingBuffer one can save simple data structures to a ring buffer.

-
See also
Example of ring buffer usage
-
Note
You have to take care of data locking from other threads or interrupts for copy time.
+class tRingBuffer< T >

Template Class that holds values in a ring buffer.

+

With tRingBuffer one can save values to a ring buffer. Value can be simple value or data structure.

+
Note
You have to take care of data locking from other threads or interrupts around calls using buffer handling routines.
+
See also
+
Template Parameters
@@ -190,7 +193,7 @@ -

Definition at line 109 of file RingBuffer.h.

+

Definition at line 113 of file RingBuffer.h.

Constructor & Destructor Documentation

◆ tRingBuffer()

@@ -210,8 +213,8 @@

-

Construct a new Ring Buffer object.

-

A buffer with the corresponding size is allocated inside the memory.

+

Construct a new ring buffer object.

+

A buffer with the corresponding size of values will be allocated to the memory.

Parameters

TTemplate used for the class
@@ -246,8 +249,8 @@

-

Destroy the Ring Buffer object.

-

All Memory will be freed

+

Destroy the ring buffer object.

+

All memory will be freed

@@ -271,15 +274,23 @@

Adds a new value to the ring buffer.

+
See also
+
Parameters

_sizeSize of the ring buffer
valValue to be added
-
Returns
true
-
-false -> ring buffer is already full
+
Return values
+ + + +
trueAdd succeeded
falseBuffer is full
+
+
@@ -321,8 +332,13 @@

-

Returns the number of Entries in the ring buffer.

-
Returns
uint16_t Number of entries
+

Returns the number of values in the ring buffer.

+
Return values
+ + +
uint16_tNumber of values in the ring buffer
+
+
@@ -343,8 +359,16 @@

-

Get pointer to next add item if available. Write pointer will be incremented.

-
Returns
T*
+

Get the pointer to new value added to the ring buffer.

+

Using getAddRef instead of add saves data copying between values. By using add, one must first setup value, which will be then copied to buffer within add. By using getAddRef one can request pointer to next buffer value and copy data directly to it.

+
Note
In multitasking or with interrupts one must take care that buffer will no be used before data handling has been finished. This differs from add, where it is enough to use locking only around calling add.
+
Return values
+ + + +
T *Pointer to added new value
0Buffer is full
+
+
@@ -365,8 +389,16 @@

-

Get pointer to next read item if available. Read pointer will be inremented.

-
Returns
const T*
+

Get the pointer to value read out from the ring buffer.

+

Using getReadRef instead of read saves data copying between values. By using read data will be copied to value, which one then may forward elsewhere. By using getReadRef one can request pointer to value and forward data directly from it.

+
Note
In multitasking or with interrupts one must take care that buffer will no be used before data handling has been finished. This differs from read, where it is enough to use locking only around calling read.
+
Return values
+ + + +
const T*Pointer to value read out from the ring buffer
0No values available
+
+
@@ -395,10 +427,15 @@

-

Get the Size of the ring buffer.

-
Returns
uint16_t Size of ring buffer
+

Get the size of the ring buffer.

+
Return values
+ + +
uint16_tsize of ring buffer
+
+
-

Definition at line 140 of file RingBuffer.h.

+

Definition at line 144 of file RingBuffer.h.

@@ -420,9 +457,13 @@

Checks if the ring buffer is empty.

-
Returns
true
-
-false
+
Return values
+ + + +
trueBuffer is empty
falseBuffer has data
+
+
@@ -443,8 +484,14 @@

-

Get pointer to next read item if available. Does not affect to read pointer.

-
Returns
const T*
+

Get pointer to next value to be read out from the ring buffer. Function does not read value out from the ring buffer.

+
Return values
+ + + +
const T*Pointer to value, which would be next read out from the ring buffer
0No values available, buffer is empty.
+
+
@@ -466,17 +513,24 @@

-

Reads a value from the ring buffer.

+

Reads a value out from the ring buffer.

+
See also
+
Parameters
- + +
valReference to the value that have to be read out
valReference to the value read out from the ring buffer
+
+
+
Return values
+ + +
trueValue read out from buffer. Value has been copied to paramater val
falseThere is no data available inside the buffer. Parameter val will be unchanged.
-
Returns
true
-
-
-false -> There is no data available inside the buffer
@@ -503,9 +557,9 @@

-

Pointer to the buffer in memory.

+

Pointer to the ring buffer of values in memory.

-

Definition at line 113 of file RingBuffer.h.

+

Definition at line 117 of file RingBuffer.h.

@@ -531,9 +585,9 @@

-

Index of the first data structure in the ring buffer.

+

Index of the first value in the ring buffer.

-

Definition at line 115 of file RingBuffer.h.

+

Definition at line 119 of file RingBuffer.h.

@@ -559,9 +613,9 @@

-

Number of data structures that can be stored in the ring buffer.

+

Number of values that can be stored in the ring buffer.

-

Definition at line 119 of file RingBuffer.h.

+

Definition at line 123 of file RingBuffer.h.

@@ -587,9 +641,9 @@

-

Index of the last data structure in the ring buffer.

+

Index of the last value in the ring buffer.

-

Definition at line 117 of file RingBuffer.h.

+

Definition at line 121 of file RingBuffer.h.

diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 39cd11e6..4e01e1a9 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -191,7 +191,7 @@  NMEA2000 standard type definitions.
  file  RingBuffer.h [code] - Simple tRingBuffer and tPriorityRingBuffer template classes.
+ Simple tRingBuffer and tPriorityRingBuffer template classes.
  file  Seasmart.cpp [code]   diff --git a/files.html b/files.html index 0ec1b3ed..3721274f 100644 --- a/files.html +++ b/files.html @@ -153,7 +153,7 @@  NMEA2000_CAN.hAutomatic library selection according to the selected board  NMEA2000_CompilerDefns.hSpecific compiler definition to adapt the library to your needs  NMEA2000StdTypes.hNMEA2000 standard type definitions - RingBuffer.hSimple tRingBuffer and tPriorityRingBuffer template classes + RingBuffer.hSimple tRingBuffer and tPriorityRingBuffer template classes  Seasmart.cpp  Seasmart.hConversion functions between N2k and Seasmart diff --git a/functions_func_g.html b/functions_func_g.html index 31cf7bc4..1d13cff8 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -151,7 +151,8 @@

- g -

  • GetInstallationDescription2() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • GetLoadEquivalency() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • GetManufacturerCode() : tNMEA2000::tDevice, tNMEA2000::tDeviceInformation
  • -
  • GetManufacturerInformation() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • +
  • GetManufacturerInformation() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • +
  • getMemSize() : tPriorityRingBuffer< T >
  • GetMessageFromStream() : tActisenseReader
  • GetModelID() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • GetModelSerialCode() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
  • diff --git a/functions_g.html b/functions_g.html index 364a8557..47ba9230 100644 --- a/functions_g.html +++ b/functions_g.html @@ -152,6 +152,7 @@

    - g -

    • GetLoadEquivalency() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
    • GetManufacturerCode() : tNMEA2000::tDevice, tNMEA2000::tDeviceInformation
    • GetManufacturerInformation() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
    • +
    • getMemSize() : tPriorityRingBuffer< T >
    • GetMessageFromStream() : tActisenseReader
    • GetModelID() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
    • GetModelSerialCode() : tN2kDeviceList::tInternalDevice, tNMEA2000, tNMEA2000::tDevice
    • diff --git a/globals_func_p.html b/globals_func_p.html index 93862442..4eaaefc3 100644 --- a/globals_func_p.html +++ b/globals_func_p.html @@ -155,7 +155,7 @@

      - p -

      • ParseN2kMaretronTripVolume() : N2kMaretron.h
      • ParseN2kMeteorlogicalStationData() : N2kMessages.h
      • ParseN2kMOBNotification() : N2kMessages.h
      • -
      • ParseN2kNavigationInfo() : N2kMessages.h
      • +
      • ParseN2kNavigationInfo() : N2kMessages.h
      • ParseN2kOutsideEnvironmentalParameters() : N2kMessages.h
      • ParseN2kPGN126992() : N2kMessages.cpp, N2kMessages.h
      • ParseN2kPGN126996() : NMEA2000.cpp, NMEA2000.h
      • @@ -194,7 +194,7 @@

        - p -

        • ParseN2kPGN129039() : N2kMessages.cpp, N2kMessages.h
        • ParseN2kPGN129041() : N2kMessages.h, N2kMessages.cpp
        • ParseN2kPGN129283() : N2kMessages.cpp, N2kMessages.h
        • -
        • ParseN2kPGN129284() : N2kMessages.cpp, N2kMessages.h
        • +
        • ParseN2kPGN129284() : N2kMessages.cpp, N2kMessages.h
        • ParseN2kPgn129539() : N2kMessages.cpp, N2kMessages.h
        • ParseN2kPGN129540() : N2kMessages.cpp, N2kMessages.h
        • ParseN2kPGN129794() : N2kMessages.h, N2kMessages.cpp
        • diff --git a/globals_func_s.html b/globals_func_s.html index deb4bc8f..a4d93292 100644 --- a/globals_func_s.html +++ b/globals_func_s.html @@ -181,7 +181,7 @@

          - s -

          • SetN2kMaretronTripVolume() : N2kMaretron.h
          • SetN2kMeteorlogicalStationData() : N2kMessages.h
          • SetN2kMOBNotification() : N2kMessages.h
          • -
          • SetN2kNavigationInfo() : N2kMessages.h
          • +
          • SetN2kNavigationInfo() : N2kMessages.h
          • SetN2kOutsideEnvironmentalParameters() : N2kMessages.h
          • SetN2kPGN126464() : NMEA2000.cpp, NMEA2000.h
          • SetN2kPGN126992() : N2kMessages.h, N2kMessages.cpp
          • @@ -223,7 +223,7 @@

            - s -

            • SetN2kPGN129039() : N2kMessages.cpp, N2kMessages.h
            • SetN2kPGN129041() : N2kMessages.cpp, N2kMessages.h
            • SetN2kPGN129283() : N2kMessages.cpp, N2kMessages.h
            • -
            • SetN2kPGN129284() : N2kMessages.cpp, N2kMessages.h
            • +
            • SetN2kPGN129284() : N2kMessages.cpp, N2kMessages.h
            • SetN2kPGN129285() : N2kMessages.cpp, N2kMessages.h
            • SetN2kPGN129539() : N2kMessages.cpp, N2kMessages.h
            • SetN2kPGN129540() : N2kMessages.cpp, N2kMessages.h
            • diff --git a/globals_p.html b/globals_p.html index 3058b4bd..f4063eed 100644 --- a/globals_p.html +++ b/globals_p.html @@ -155,7 +155,7 @@

              - p -

              • ParseN2kMaretronTripVolume() : N2kMaretron.h
              • ParseN2kMeteorlogicalStationData() : N2kMessages.h
              • ParseN2kMOBNotification() : N2kMessages.h
              • -
              • ParseN2kNavigationInfo() : N2kMessages.h
              • +
              • ParseN2kNavigationInfo() : N2kMessages.h
              • ParseN2kOutsideEnvironmentalParameters() : N2kMessages.h
              • ParseN2kPGN126992() : N2kMessages.cpp, N2kMessages.h
              • ParseN2kPGN126996() : NMEA2000.cpp, NMEA2000.h
              • @@ -194,7 +194,7 @@

                - p -

                • ParseN2kPGN129039() : N2kMessages.cpp, N2kMessages.h
                • ParseN2kPGN129041() : N2kMessages.cpp, N2kMessages.h
                • ParseN2kPGN129283() : N2kMessages.cpp, N2kMessages.h
                • -
                • ParseN2kPGN129284() : N2kMessages.h, N2kMessages.cpp
                • +
                • ParseN2kPGN129284() : N2kMessages.h, N2kMessages.cpp
                • ParseN2kPgn129539() : N2kMessages.cpp, N2kMessages.h
                • ParseN2kPGN129540() : N2kMessages.cpp, N2kMessages.h
                • ParseN2kPGN129794() : N2kMessages.cpp, N2kMessages.h
                • diff --git a/globals_s.html b/globals_s.html index febbb963..4b59bbc2 100644 --- a/globals_s.html +++ b/globals_s.html @@ -181,7 +181,7 @@

                  - s -

                  • SetN2kMaretronTripVolume() : N2kMaretron.h
                  • SetN2kMeteorlogicalStationData() : N2kMessages.h
                  • SetN2kMOBNotification() : N2kMessages.h
                  • -
                  • SetN2kNavigationInfo() : N2kMessages.h
                  • +
                  • SetN2kNavigationInfo() : N2kMessages.h
                  • SetN2kOutsideEnvironmentalParameters() : N2kMessages.h
                  • SetN2kPGN126464() : NMEA2000.cpp, NMEA2000.h
                  • SetN2kPGN126992() : N2kMessages.cpp, N2kMessages.h
                  • @@ -223,7 +223,7 @@

                    - s -

                    • SetN2kPGN129039() : N2kMessages.cpp, N2kMessages.h
                    • SetN2kPGN129041() : N2kMessages.cpp, N2kMessages.h
                    • SetN2kPGN129283() : N2kMessages.cpp, N2kMessages.h
                    • -
                    • SetN2kPGN129284() : N2kMessages.h, N2kMessages.cpp
                    • +
                    • SetN2kPGN129284() : N2kMessages.h, N2kMessages.cpp
                    • SetN2kPGN129285() : N2kMessages.cpp, N2kMessages.h
                    • SetN2kPGN129539() : N2kMessages.cpp, N2kMessages.h
                    • SetN2kPGN129540() : N2kMessages.cpp, N2kMessages.h
                    • diff --git a/group__group__core_supplementary.html b/group__group__core_supplementary.html index 7b9ea649..8630d637 100644 --- a/group__group__core_supplementary.html +++ b/group__group__core_supplementary.html @@ -146,10 +146,10 @@  Default Group Function Handler for PGN 60928 - "ISO Address Claim". More...
                        class  tPriorityRingBuffer< T > - Template Class that holds simple data structures with given priorities in a ring buffer. More...
                      + Template Class that holds values with given priorities in a ring buffer. More...
                        class  tRingBuffer< T > - Template Class that holds simple data structures in a ring buffer. More...
                      + Template Class that holds values in a ring buffer. More...
                       

                      Detailed Description

                      diff --git a/group__group__core_supplementary.js b/group__group__core_supplementary.js index 5799fd12..3b4d4e99 100644 --- a/group__group__core_supplementary.js +++ b/group__group__core_supplementary.js @@ -84,6 +84,7 @@ var group__group__core_supplementary = [ "clear", "classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986", null ], [ "count", "classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0", null ], [ "getAddRef", "classt_priority_ring_buffer.html#aaac14529cd5845d9968af93ea5c075fb", null ], + [ "getMemSize", "classt_priority_ring_buffer.html#ac96cbedf4ae5f450f4abc71c2544c8c6", null ], [ "getReadRef", "classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226", null ], [ "getReadRef", "classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d", null ], [ "getSize", "classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a", null ], diff --git a/group__group__msg_parsers.html b/group__group__msg_parsers.html index 464b746d..2f3ccfcf 100644 --- a/group__group__msg_parsers.html +++ b/group__group__msg_parsers.html @@ -247,9 +247,9 @@ bool ParseN2kMOBNotification (const tN2kMsg &N2kMsg, unsigned char &SID, uint32_t &MobEmitterId, tN2kMOBStatus &MOBStatus, double &ActivationTime, tN2kMOBPositionSource &PositionSource, uint16_t &PositionDate, double &PositionTime, double &Latitude, double &Longitude, tN2kHeadingReference &COGReference, double &COG, double &SOG, uint32_t &MMSI, tN2kMOBEmitterBatteryStatus &MOBEmitterBatteryStatus)  Parsing the content of a "Man Overboard Notification" message - PGN 127233. More...
                        -bool ParseN2kNavigationInfo (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) - Parsing the content of a "Navigation Data" message - PGN 129284. More...
                      -  +bool ParseN2kNavigationInfo (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) + Parsing the content of a "Navigation Data" message - PGN 129284. More...
                      +  bool ParseN2kOutsideEnvironmentalParameters (const tN2kMsg &N2kMsg, unsigned char &SID, double &WaterTemperature, double &OutsideAmbientAirTemperature, double &AtmosphericPressure)  Parsing the content of a "Environmental Parameters - DEPRECATED" message - PGN 130310. More...
                        @@ -375,9 +375,9 @@ bool ParseN2kPGN129283 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE)  Parsing the content of Message PGN 129283 Message "Cross Track Error". More...
                        -bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) - Parsing the content of message PGN 129284 "Navigation Data". More...
                      -  +bool ParseN2kPGN129284 (const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity) + Parsing the content of message PGN 129284 "Navigation Data". More...
                      +  bool ParseN2kPgn129539 (const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP)  Parsing the content of message PGN 129539 "GNSS DOP data". More...
                        @@ -3512,8 +3512,8 @@

                      -

                      ◆ ParseN2kNavigationInfo()

                      + +

                      ◆ ParseN2kNavigationInfo()

                      @@ -3590,13 +3590,13 @@

                      - uint8_t &  + uint32_t &  OriginWaypointNumber, - uint8_t &  + uint32_t &  DestinationWaypointNumber, @@ -3631,7 +3631,7 @@

                      Parsing the content of a "Navigation Data" message - PGN 129284.

                      -

                      Alias of PGN 129284. This alias was introduced to improve the readability of the source code. See parameter details on ParseN2kPGN129284

                      +

                      Alias of PGN 129284. This alias was introduced to improve the readability of the source code. See parameter details on ParseN2kPGN129284

                      Definition at line 3952 of file N2kMessages.h.

                      @@ -6757,8 +6757,8 @@

                      -

                      ◆ ParseN2kPGN129284()

                      + +

                      ◆ ParseN2kPGN129284()

                      @@ -6832,13 +6832,13 @@

                      - uint8_t &  + uint32_t &  OriginWaypointNumber, - uint8_t &  + uint32_t &  DestinationWaypointNumber, diff --git a/group__group__msg_parsers.js b/group__group__msg_parsers.js index 01d4b720..878a8046 100644 --- a/group__group__msg_parsers.js +++ b/group__group__msg_parsers.js @@ -38,7 +38,7 @@ var group__group__msg_parsers = [ "ParseN2kMagneticVariation", "group__group__msg_parsers.html#ga24bf517beb9ec3eb063f53b2c998dfea", null ], [ "ParseN2kMeteorlogicalStationData", "group__group__msg_parsers.html#ga6eaf27ccf78506df754fa017b7952a6c", null ], [ "ParseN2kMOBNotification", "group__group__msg_parsers.html#ga7510cf2dcd3c5e2f881145d9ee8e3924", null ], - [ "ParseN2kNavigationInfo", "group__group__msg_parsers.html#ga80ba7520f2adbcb00c29c457c8734c5a", null ], + [ "ParseN2kNavigationInfo", "group__group__msg_parsers.html#gaa317ce136342611a1e964d13c9a36250", null ], [ "ParseN2kOutsideEnvironmentalParameters", "group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2", null ], [ "ParseN2kPGN126992", "group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d", null ], [ "ParseN2kPGN127233", "group__group__msg_parsers.html#ga823a92e4ac25ca2f7433198d8041f1b4", null ], @@ -77,7 +77,7 @@ var group__group__msg_parsers = [ "ParseN2kPGN129039", "group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9", null ], [ "ParseN2kPGN129041", "group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877", null ], [ "ParseN2kPGN129283", "group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab", null ], - [ "ParseN2kPGN129284", "group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48", null ], + [ "ParseN2kPGN129284", "group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3", null ], [ "ParseN2kPgn129539", "group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a", null ], [ "ParseN2kPGN129540", "group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319", null ], diff --git a/group__group__msg_set_up.html b/group__group__msg_set_up.html index b3843abc..126435b0 100644 --- a/group__group__msg_set_up.html +++ b/group__group__msg_set_up.html @@ -274,9 +274,9 @@ void SetN2kMOBNotification (tN2kMsg &N2kMsg, unsigned char SID, uint32_t MobEmitterId, tN2kMOBStatus MOBStatus, double ActivationTime, tN2kMOBPositionSource PositionSource, uint16_t PositionDate, double PositionTime, double Latitude, double Longitude, tN2kHeadingReference COGReference, double COG, double SOG, uint32_t MMSI, tN2kMOBEmitterBatteryStatus MOBEmitterBatteryStatus)  Setting up Message "Man Overboard Notification" - PGN 127233. More...
                        -void SetN2kNavigationInfo (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) - Setting up Message "Navigation Data" - PGN 129284. More...
                      -  +void SetN2kNavigationInfo (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) + Setting up Message "Navigation Data" - PGN 129284. More...
                      +  void SetN2kOutsideEnvironmentalParameters (tN2kMsg &N2kMsg, unsigned char SID, double WaterTemperature, double OutsideAmbientAirTemperature=N2kDoubleNA, double AtmosphericPressure=N2kDoubleNA)  Setting up Message "Environmental Parameters - DEPRECATED" - PGN 130310. More...
                        @@ -391,9 +391,9 @@ void SetN2kPGN129283 (tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE)  Setting up PGN 129283 Message "Cross Track Error". More...
                        -void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) - Setting up PGN 129284 Message "Navigation Data". More...
                      -  +void SetN2kPGN129284 (tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity) + Setting up PGN 129284 Message "Navigation Data". More...
                      +  void SetN2kPGN129285 (tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, bool NavDirection, bool SupplementaryData, char *RouteName)  Setting up Message "Route/WP information" - PGN 129285 (for backwards compatibility) More...
                        @@ -3986,8 +3986,8 @@

                      -

                      ◆ SetN2kNavigationInfo()

                      + +

                      ◆ SetN2kNavigationInfo()

                      @@ -4064,13 +4064,13 @@

                      - uint8_t  + uint32_t  OriginWaypointNumber, - uint8_t  + uint32_t  DestinationWaypointNumber, @@ -4105,7 +4105,7 @@

                      Setting up Message "Navigation Data" - PGN 129284.

                      -

                      Alias of PGN 129284. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN129284

                      +

                      Alias of PGN 129284. This alias was introduced to improve the readability of the source code. See parameter details on SetN2kPGN129284

                      Definition at line 3890 of file N2kMessages.h.

                      @@ -7355,8 +7355,8 @@

                      -

                      ◆ SetN2kPGN129284()

                      + +

                      ◆ SetN2kPGN129284()

                      @@ -7430,13 +7430,13 @@

                      - uint8_t  + uint32_t  OriginWaypointNumber, - uint8_t  + uint32_t  DestinationWaypointNumber, diff --git a/group__group__msg_set_up.js b/group__group__msg_set_up.js index 0afe6462..0145b5f7 100644 --- a/group__group__msg_set_up.js +++ b/group__group__msg_set_up.js @@ -52,7 +52,7 @@ var group__group__msg_set_up = [ "SetN2kMagneticVariation", "group__group__msg_set_up.html#gad71219a4554305258186c4bf6e941d4c", null ], [ "SetN2kMeteorlogicalStationData", "group__group__msg_set_up.html#ga4052813ff407b4ef9689a186d04d3a28", null ], [ "SetN2kMOBNotification", "group__group__msg_set_up.html#ga96d16a01e7d797c575e6e1598ae50c9c", null ], - [ "SetN2kNavigationInfo", "group__group__msg_set_up.html#ga91c729a2e3f2e16484c5d2646de7b9d3", null ], + [ "SetN2kNavigationInfo", "group__group__msg_set_up.html#ga1b3f15b9d6b0dabb6e1c1d7eb2ffe297", null ], [ "SetN2kOutsideEnvironmentalParameters", "group__group__msg_set_up.html#ga3586af539282bfc244944c444495f105", null ], [ "SetN2kPGN126992", "group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573", null ], [ "SetN2kPGN127233", "group__group__msg_set_up.html#gab0745362d010c308e8c28edc9ab04ed5", null ], @@ -91,7 +91,7 @@ var group__group__msg_set_up = [ "SetN2kPGN129039", "group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808", null ], [ "SetN2kPGN129041", "group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053", null ], [ "SetN2kPGN129283", "group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53", null ], - [ "SetN2kPGN129284", "group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54", null ], + [ "SetN2kPGN129284", "group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362", null ], [ "SetN2kPGN129285", "group__group__msg_set_up.html#gae590b48d9bdcf6ac759ccc961fc26d73", null ], [ "SetN2kPGN129285", "group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b", null ], [ "SetN2kPGN129539", "group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496", null ], diff --git a/hierarchy.html b/hierarchy.html index eb900362..e4f296cd 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -152,10 +152,10 @@  CtNMEA2000::tMsgHandlerMessage handler class  CtN2kDeviceListHelper class to keep track of all devices on the bus  CtNMEA2000::tProductInformationStructure that holds all the product information - CtPriorityRingBuffer< T >Template Class that holds simple data structures with given priorities in a ring buffer + CtPriorityRingBuffer< T >Template Class that holds values with given priorities in a ring buffer  CtPriorityRingBuffer< T >::tPriorityRefStructure handles meta data for each priority  CtPriorityRingBuffer< T >::tValueSlotStructure that holds the actual value and meta data - CtRingBuffer< T >Template Class that holds simple data structures in a ring buffer + CtRingBuffer< T >Template Class that holds values in a ring buffer  CtSatelliteInfoDedicated structure to handle GNSS satellite information

                      diff --git a/inherit_graph_25.map b/inherit_graph_25.map index 4cdf9c37..d3fc051f 100644 --- a/inherit_graph_25.map +++ b/inherit_graph_25.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_25.md5 b/inherit_graph_25.md5 index 292bf036..545d5914 100644 --- a/inherit_graph_25.md5 +++ b/inherit_graph_25.md5 @@ -1 +1 @@ -0f249918bb71a68cca61f7298dd8f079 \ No newline at end of file +e5eb96b4dc47cda9bc6053aa68383f0e \ No newline at end of file diff --git a/inherit_graph_28.map b/inherit_graph_28.map index 1ce1e9e7..0d24ed00 100644 --- a/inherit_graph_28.map +++ b/inherit_graph_28.map @@ -1,3 +1,3 @@ - + diff --git a/inherit_graph_28.md5 b/inherit_graph_28.md5 index 9f75620f..9246dded 100644 --- a/inherit_graph_28.md5 +++ b/inherit_graph_28.md5 @@ -1 +1 @@ -cc25d34eaa680378dfdadf6f8e8efff0 \ No newline at end of file +3728e49217bd885d37435e9f8e46c1d9 \ No newline at end of file diff --git a/inherits.html b/inherits.html index 2c720e85..3daf6f34 100644 --- a/inherits.html +++ b/inherits.html @@ -253,7 +253,7 @@ - + @@ -268,7 +268,7 @@ - + diff --git a/list_msg.html b/list_msg.html index 2c738390..ab2d5514 100644 --- a/list_msg.html +++ b/list_msg.html @@ -203,7 +203,7 @@ 129283 x x Cross Track Error -129284 x x Navigation Data +129284 x x Navigation Data 129285 x Navigation - Route/WP information diff --git a/navtreedata.js b/navtreedata.js index 87fa8ac0..2d0abaf0 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -178,110 +178,111 @@ var NAVTREE = [ "List of registered manufacturer codes", "md_7_glossary.html#secRefMfgCodes", null ] ] ], [ "Changes to the Library", "changes.html", [ - [ "02.02.2024", "changes.html#autotoc_md170", null ], - [ "22.01.2024", "changes.html#autotoc_md171", null ], - [ "21.01.2024", "changes.html#autotoc_md172", null ], - [ "13.01.2024", "changes.html#autotoc_md173", null ], - [ "08.12.2023", "changes.html#autotoc_md174", null ], - [ "04.10.2023", "changes.html#autotoc_md175", null ], - [ "12.09.2023", "changes.html#autotoc_md176", null ], - [ "25.07.2023", "changes.html#autotoc_md177", null ], - [ "20.05.2023", "changes.html#autotoc_md178", null ], - [ "19.05.2023", "changes.html#autotoc_md179", null ], - [ "08.02.2023", "changes.html#autotoc_md180", null ], - [ "01.02.2023", "changes.html#autotoc_md181", null ], - [ "21.12.2022", "changes.html#autotoc_md182", null ], - [ "27.11.2022", "changes.html#autotoc_md183", null ], - [ "27.10.2022", "changes.html#autotoc_md184", null ], - [ "26.10.2022", "changes.html#autotoc_md185", null ], - [ "03.10.2022", "changes.html#autotoc_md186", null ], - [ "11.08.2022", "changes.html#autotoc_md187", null ], - [ "06.07.2022", "changes.html#autotoc_md188", null ], - [ "07.04.2022", "changes.html#autotoc_md189", null ], - [ "05.09.2021", "changes.html#autotoc_md190", null ], - [ "23.08.2021", "changes.html#autotoc_md191", null ], - [ "04.03.2021", "changes.html#autotoc_md192", null ], - [ "10.02.2021", "changes.html#autotoc_md193", null ], - [ "06.02.2021", "changes.html#autotoc_md194", null ], - [ "15.01.2021", "changes.html#autotoc_md195", null ], - [ "05.01.2021", "changes.html#autotoc_md196", null ], - [ "08.10.2020", "changes.html#autotoc_md197", null ], - [ "23.08.2020", "changes.html#autotoc_md198", null ], - [ "05.08.2020", "changes.html#autotoc_md199", null ], - [ "16.07.2020", "changes.html#autotoc_md200", null ], - [ "27.06.2020", "changes.html#autotoc_md201", null ], - [ "28.01.2019", "changes.html#autotoc_md202", null ], - [ "20.10.2019", "changes.html#autotoc_md203", null ], - [ "17.10.2019", "changes.html#autotoc_md204", null ], - [ "07.07.2019", "changes.html#autotoc_md205", null ], - [ "03.03.2019", "changes.html#autotoc_md206", null ], - [ "14.01.2019", "changes.html#autotoc_md207", null ], - [ "04.08.2018", "changes.html#autotoc_md208", null ], - [ "18.07.2018", "changes.html#autotoc_md209", null ], - [ "09.05.2018", "changes.html#autotoc_md210", null ], - [ "10.04.2018", "changes.html#autotoc_md211", null ], - [ "06.04.2018", "changes.html#autotoc_md212", null ], - [ "04.04.2018", "changes.html#autotoc_md213", null ], - [ "26.03.2018", "changes.html#autotoc_md214", null ], - [ "13.03.2018", "changes.html#autotoc_md215", null ], - [ "23.02.2018", "changes.html#autotoc_md216", null ], - [ "16.02.2018", "changes.html#autotoc_md217", null ], - [ "29.01.2018", "changes.html#autotoc_md218", null ], - [ "15.01.2018", "changes.html#autotoc_md219", null ], - [ "07.01.2018", "changes.html#autotoc_md220", null ], - [ "02.12.2017", "changes.html#autotoc_md221", null ], - [ "29.11.2017", "changes.html#autotoc_md222", null ], - [ "27.11.2017", "changes.html#autotoc_md223", null ], - [ "14.11.2017", "changes.html#autotoc_md224", null ], - [ "09.11.2017", "changes.html#autotoc_md225", null ], - [ "31.10.2017", "changes.html#autotoc_md226", null ], - [ "14.10.2017", "changes.html#autotoc_md227", null ], - [ "12.10.2017", "changes.html#autotoc_md228", null ], - [ "10.10.2017", "changes.html#autotoc_md229", null ], - [ "02.10.2017", "changes.html#autotoc_md230", null ], - [ "26.09.2017", "changes.html#autotoc_md231", null ], - [ "31.08.2017", "changes.html#autotoc_md232", null ], - [ "31.07.2017", "changes.html#autotoc_md233", null ], - [ "29.07.2017", "changes.html#autotoc_md234", null ], - [ "26.06.2017", "changes.html#autotoc_md235", null ], - [ "25.06.2017", "changes.html#autotoc_md236", null ], - [ "22.06.2017", "changes.html#autotoc_md237", null ], - [ "19.06.2017", "changes.html#autotoc_md238", null ], - [ "13.06.2017", "changes.html#autotoc_md239", null ], - [ "11.06.2017", "changes.html#autotoc_md240", null ], - [ "05.06.2017", "changes.html#autotoc_md241", null ], - [ "28.05.2017", "changes.html#autotoc_md242", null ], - [ "08.04.2017", "changes.html#autotoc_md243", null ], - [ "09.03.2017", "changes.html#autotoc_md244", null ], - [ "07.03.2017", "changes.html#autotoc_md245", null ], - [ "05.03.2017", "changes.html#autotoc_md246", null ], - [ "08.02.2017", "changes.html#autotoc_md247", null ], - [ "22.01.2017", "changes.html#autotoc_md248", null ], - [ "01.01.2017", "changes.html#autotoc_md249", null ], - [ "20.12.2016", "changes.html#autotoc_md250", null ], - [ "17.12.2016", "changes.html#autotoc_md251", null ], - [ "16.12.2016", "changes.html#autotoc_md252", null ], - [ "01.12.2016", "changes.html#autotoc_md253", null ], - [ "12.11.2016", "changes.html#autotoc_md254", null ], - [ "11.11.2016", "changes.html#autotoc_md255", null ], - [ "18.10.2016", "changes.html#autotoc_md256", null ], - [ "19.09.2016", "changes.html#autotoc_md257", null ], - [ "17.09.2016", "changes.html#autotoc_md258", null ], - [ "12.09.2016", "changes.html#autotoc_md259", null ], - [ "09.08.2016", "changes.html#autotoc_md260", null ], - [ "06.08.2016", "changes.html#autotoc_md261", null ], - [ "30.07.2016", "changes.html#autotoc_md262", null ], - [ "19.07.2016", "changes.html#autotoc_md263", null ], - [ "12.07.2016", "changes.html#autotoc_md264", null ], - [ "25.06.2016", "changes.html#autotoc_md265", null ], - [ "23.03.2016", "changes.html#autotoc_md266", null ], - [ "13.03.2016", "changes.html#autotoc_md267", null ], - [ "12.03.2016", "changes.html#autotoc_md268", null ], - [ "09.03.2016", "changes.html#autotoc_md269", null ], - [ "08.03.2016", "changes.html#autotoc_md270", null ], - [ "02.02.2016", "changes.html#autotoc_md271", null ], - [ "23.01.2016", "changes.html#autotoc_md272", null ], - [ "05.12.2015", "changes.html#autotoc_md273", null ] + [ "06.02.2024", "changes.html#autotoc_md170", null ], + [ "02.02.2024", "changes.html#autotoc_md171", null ], + [ "22.01.2024", "changes.html#autotoc_md172", null ], + [ "21.01.2024", "changes.html#autotoc_md173", null ], + [ "13.01.2024", "changes.html#autotoc_md174", null ], + [ "08.12.2023", "changes.html#autotoc_md175", null ], + [ "04.10.2023", "changes.html#autotoc_md176", null ], + [ "12.09.2023", "changes.html#autotoc_md177", null ], + [ "25.07.2023", "changes.html#autotoc_md178", null ], + [ "20.05.2023", "changes.html#autotoc_md179", null ], + [ "19.05.2023", "changes.html#autotoc_md180", null ], + [ "08.02.2023", "changes.html#autotoc_md181", null ], + [ "01.02.2023", "changes.html#autotoc_md182", null ], + [ "21.12.2022", "changes.html#autotoc_md183", null ], + [ "27.11.2022", "changes.html#autotoc_md184", null ], + [ "27.10.2022", "changes.html#autotoc_md185", null ], + [ "26.10.2022", "changes.html#autotoc_md186", null ], + [ "03.10.2022", "changes.html#autotoc_md187", null ], + [ "11.08.2022", "changes.html#autotoc_md188", null ], + [ "06.07.2022", "changes.html#autotoc_md189", null ], + [ "07.04.2022", "changes.html#autotoc_md190", null ], + [ "05.09.2021", "changes.html#autotoc_md191", null ], + [ "23.08.2021", "changes.html#autotoc_md192", null ], + [ "04.03.2021", "changes.html#autotoc_md193", null ], + [ "10.02.2021", "changes.html#autotoc_md194", null ], + [ "06.02.2021", "changes.html#autotoc_md195", null ], + [ "15.01.2021", "changes.html#autotoc_md196", null ], + [ "05.01.2021", "changes.html#autotoc_md197", null ], + [ "08.10.2020", "changes.html#autotoc_md198", null ], + [ "23.08.2020", "changes.html#autotoc_md199", null ], + [ "05.08.2020", "changes.html#autotoc_md200", null ], + [ "16.07.2020", "changes.html#autotoc_md201", null ], + [ "27.06.2020", "changes.html#autotoc_md202", null ], + [ "28.01.2019", "changes.html#autotoc_md203", null ], + [ "20.10.2019", "changes.html#autotoc_md204", null ], + [ "17.10.2019", "changes.html#autotoc_md205", null ], + [ "07.07.2019", "changes.html#autotoc_md206", null ], + [ "03.03.2019", "changes.html#autotoc_md207", null ], + [ "14.01.2019", "changes.html#autotoc_md208", null ], + [ "04.08.2018", "changes.html#autotoc_md209", null ], + [ "18.07.2018", "changes.html#autotoc_md210", null ], + [ "09.05.2018", "changes.html#autotoc_md211", null ], + [ "10.04.2018", "changes.html#autotoc_md212", null ], + [ "06.04.2018", "changes.html#autotoc_md213", null ], + [ "04.04.2018", "changes.html#autotoc_md214", null ], + [ "26.03.2018", "changes.html#autotoc_md215", null ], + [ "13.03.2018", "changes.html#autotoc_md216", null ], + [ "23.02.2018", "changes.html#autotoc_md217", null ], + [ "16.02.2018", "changes.html#autotoc_md218", null ], + [ "29.01.2018", "changes.html#autotoc_md219", null ], + [ "15.01.2018", "changes.html#autotoc_md220", null ], + [ "07.01.2018", "changes.html#autotoc_md221", null ], + [ "02.12.2017", "changes.html#autotoc_md222", null ], + [ "29.11.2017", "changes.html#autotoc_md223", null ], + [ "27.11.2017", "changes.html#autotoc_md224", null ], + [ "14.11.2017", "changes.html#autotoc_md225", null ], + [ "09.11.2017", "changes.html#autotoc_md226", null ], + [ "31.10.2017", "changes.html#autotoc_md227", null ], + [ "14.10.2017", "changes.html#autotoc_md228", null ], + [ "12.10.2017", "changes.html#autotoc_md229", null ], + [ "10.10.2017", "changes.html#autotoc_md230", null ], + [ "02.10.2017", "changes.html#autotoc_md231", null ], + [ "26.09.2017", "changes.html#autotoc_md232", null ], + [ "31.08.2017", "changes.html#autotoc_md233", null ], + [ "31.07.2017", "changes.html#autotoc_md234", null ], + [ "29.07.2017", "changes.html#autotoc_md235", null ], + [ "26.06.2017", "changes.html#autotoc_md236", null ], + [ "25.06.2017", "changes.html#autotoc_md237", null ], + [ "22.06.2017", "changes.html#autotoc_md238", null ], + [ "19.06.2017", "changes.html#autotoc_md239", null ], + [ "13.06.2017", "changes.html#autotoc_md240", null ], + [ "11.06.2017", "changes.html#autotoc_md241", null ], + [ "05.06.2017", "changes.html#autotoc_md242", null ], + [ "28.05.2017", "changes.html#autotoc_md243", null ], + [ "08.04.2017", "changes.html#autotoc_md244", null ], + [ "09.03.2017", "changes.html#autotoc_md245", null ], + [ "07.03.2017", "changes.html#autotoc_md246", null ], + [ "05.03.2017", "changes.html#autotoc_md247", null ], + [ "08.02.2017", "changes.html#autotoc_md248", null ], + [ "22.01.2017", "changes.html#autotoc_md249", null ], + [ "01.01.2017", "changes.html#autotoc_md250", null ], + [ "20.12.2016", "changes.html#autotoc_md251", null ], + [ "17.12.2016", "changes.html#autotoc_md252", null ], + [ "16.12.2016", "changes.html#autotoc_md253", null ], + [ "01.12.2016", "changes.html#autotoc_md254", null ], + [ "12.11.2016", "changes.html#autotoc_md255", null ], + [ "11.11.2016", "changes.html#autotoc_md256", null ], + [ "18.10.2016", "changes.html#autotoc_md257", null ], + [ "19.09.2016", "changes.html#autotoc_md258", null ], + [ "17.09.2016", "changes.html#autotoc_md259", null ], + [ "12.09.2016", "changes.html#autotoc_md260", null ], + [ "09.08.2016", "changes.html#autotoc_md261", null ], + [ "06.08.2016", "changes.html#autotoc_md262", null ], + [ "30.07.2016", "changes.html#autotoc_md263", null ], + [ "19.07.2016", "changes.html#autotoc_md264", null ], + [ "12.07.2016", "changes.html#autotoc_md265", null ], + [ "25.06.2016", "changes.html#autotoc_md266", null ], + [ "23.03.2016", "changes.html#autotoc_md267", null ], + [ "13.03.2016", "changes.html#autotoc_md268", null ], + [ "12.03.2016", "changes.html#autotoc_md269", null ], + [ "09.03.2016", "changes.html#autotoc_md270", null ], + [ "08.03.2016", "changes.html#autotoc_md271", null ], + [ "02.02.2016", "changes.html#autotoc_md272", null ], + [ "23.01.2016", "changes.html#autotoc_md273", null ], + [ "05.12.2015", "changes.html#autotoc_md274", null ] ] ], [ "Todo List", "todo.html", null ], [ "Modules", "modules.html", "modules" ], @@ -320,12 +321,12 @@ var NAVTREEINDEX = "_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a8bda5620ddb9b759dd8ec72a28b26de0", "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a6c65b86b7a5de0f4293cf3ab52160aa5", "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1aff80811073a9253ecf1efb19e3aec349", -"classt_actisense_reader.html#aee2d7ad88a2b2ff4dd4ad1e614210251", -"classt_n_m_e_a2000.html", -"classt_n_m_e_a2000_1_1t_internal_device.html#a22baadc9df75443f9f09bea257473bb6", -"group__group__msg_parsers.html#ga21589bc7f863312f1a98274f6115d1c8", -"group__group__msg_types.html#ga6f360c10d61b4c8559979a1a447222f0", -"uniont_n2k_d_d223.html#ad53d1b2bc9d325ef5cfa30c2f1cd6246" +"classt_actisense_reader.html#ae68b15c17cff1dbf77ec8f42f381f317", +"classt_n2k_sync_scheduler.html#ae7da88a074cd3a946c4716c7fc1f4c74", +"classt_n_m_e_a2000_1_1t_internal_device.html#a18098ca4225f60058438817f9931925f", +"group__group__msg_parsers.html#ga1f8fb868e329076f651588d4c666b647", +"group__group__msg_types.html#ga64396d290128543a10f29a721f629028", +"uniont_n2k_d_d223.html#a6e35bedda20551749b9bd401fcfc39c8" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex1.js b/navtreeindex1.js index fb3d58c3..2c7eaef8 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -86,30 +86,30 @@ var NAVTREEINDEX1 = "_n2k_types_8h.html":[11,0,1,21], "_n2k_types_8h.html#ga02c7a0305cd371219c5756503b7b4433a5e605613d2708ee272e0a6dfdaac3757":[9,3,2,49,0], "_n2k_types_8h.html#ga02c7a0305cd371219c5756503b7b4433a5e605613d2708ee272e0a6dfdaac3757":[11,0,1,21,35,0], -"_n2k_types_8h.html#ga02c7a0305cd371219c5756503b7b4433a841d88ce3b577f1aabffd28e07dcd006":[11,0,1,21,35,1], "_n2k_types_8h.html#ga02c7a0305cd371219c5756503b7b4433a841d88ce3b577f1aabffd28e07dcd006":[9,3,2,49,1], -"_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa116c5845f082149b4cb22ac04300b3bd":[11,0,1,21,32,1], +"_n2k_types_8h.html#ga02c7a0305cd371219c5756503b7b4433a841d88ce3b577f1aabffd28e07dcd006":[11,0,1,21,35,1], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa116c5845f082149b4cb22ac04300b3bd":[9,3,2,32,1], +"_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa116c5845f082149b4cb22ac04300b3bd":[11,0,1,21,32,1], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa56b5fd56a1078bce2b830d5cd688af85":[11,0,1,21,32,2], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa56b5fd56a1078bce2b830d5cd688af85":[9,3,2,32,2], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa6c2fff0b110020193fa5e80643e89b0d":[11,0,1,21,32,3], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa6c2fff0b110020193fa5e80643e89b0d":[9,3,2,32,3], -"_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa7c67a335f373430a446ec4c793dbe619":[11,0,1,21,32,0], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa7c67a335f373430a446ec4c793dbe619":[9,3,2,32,0], +"_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afa7c67a335f373430a446ec4c793dbe619":[11,0,1,21,32,0], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afafa163ad6e35071784f3e70e509e345c1":[11,0,1,21,32,4], "_n2k_types_8h.html#ga0c142dce99c98d79265651d5cf7679afafa163ad6e35071784f3e70e509e345c1":[9,3,2,32,4], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a08515bd19c32f2f9c90d16cae337ea5e":[11,0,1,21,40,1], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a08515bd19c32f2f9c90d16cae337ea5e":[9,3,2,54,1], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a10156e26c3b423294be4fadd8f079cf3":[11,0,1,21,40,0], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a10156e26c3b423294be4fadd8f079cf3":[9,3,2,54,0], -"_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a83489f03fee12a8a4927753a1d3703a8":[11,0,1,21,40,2], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a83489f03fee12a8a4927753a1d3703a8":[9,3,2,54,2], -"_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727ad5e5727360e14ed4ba24e55182cee99b":[11,0,1,21,40,3], +"_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727a83489f03fee12a8a4927753a1d3703a8":[11,0,1,21,40,2], "_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727ad5e5727360e14ed4ba24e55182cee99b":[9,3,2,54,3], +"_n2k_types_8h.html#ga14ed764d736a6d1f43e85b5df2acd727ad5e5727360e14ed4ba24e55182cee99b":[11,0,1,21,40,3], "_n2k_types_8h.html#ga15e6ecae32fe7903ff0bfea36775181ea74692b355c662bdf1e6cc6ffb54a86f0":[9,3,2,22,1], "_n2k_types_8h.html#ga15e6ecae32fe7903ff0bfea36775181ea74692b355c662bdf1e6cc6ffb54a86f0":[11,0,1,21,22,1], -"_n2k_types_8h.html#ga15e6ecae32fe7903ff0bfea36775181eaf39e7593b78dd88c5f1e405d3dac3703":[11,0,1,21,22,0], "_n2k_types_8h.html#ga15e6ecae32fe7903ff0bfea36775181eaf39e7593b78dd88c5f1e405d3dac3703":[9,3,2,22,0], +"_n2k_types_8h.html#ga15e6ecae32fe7903ff0bfea36775181eaf39e7593b78dd88c5f1e405d3dac3703":[11,0,1,21,22,0], "_n2k_types_8h.html#ga19fcb4aaa8814904b89835d2657bb67eaa0ac3f197ded2e0a0c07b282ab01e899":[9,3,2,21,1], "_n2k_types_8h.html#ga19fcb4aaa8814904b89835d2657bb67eaa0ac3f197ded2e0a0c07b282ab01e899":[11,0,1,21,21,1], "_n2k_types_8h.html#ga19fcb4aaa8814904b89835d2657bb67ead57a2d87f23006a38e2f550a57d3cbf5":[9,3,2,21,0], @@ -120,30 +120,30 @@ var NAVTREEINDEX1 = "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa1d27670b0444168b09b28cb6d69f7dfe":[11,0,1,21,30,5], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa1f5ca6bf6832988d0b81451f6ef99fd0":[9,3,2,30,1], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa1f5ca6bf6832988d0b81451f6ef99fd0":[11,0,1,21,30,1], -"_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa57fa50015e931228a4a5a2c955edb8a8":[11,0,1,21,30,6], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa57fa50015e931228a4a5a2c955edb8a8":[9,3,2,30,6], +"_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa57fa50015e931228a4a5a2c955edb8a8":[11,0,1,21,30,6], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa7a759e5be1e678df39ef2923797160a1":[11,0,1,21,30,2], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa7a759e5be1e678df39ef2923797160a1":[9,3,2,30,2], -"_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa7b099a3a11a0c6e9ca84d5c4e7e3b9de":[11,0,1,21,30,0], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa7b099a3a11a0c6e9ca84d5c4e7e3b9de":[9,3,2,30,0], +"_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aa7b099a3a11a0c6e9ca84d5c4e7e3b9de":[11,0,1,21,30,0], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aaa64906c7b462e667b327b0340ce4b9cb":[11,0,1,21,30,3], "_n2k_types_8h.html#ga236f04b90b570bf56b96f1d9c4ca587aaa64906c7b462e667b327b0340ce4b9cb":[9,3,2,30,3], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a26d8dcd93524883a7596c37e778e7153":[9,3,2,60,2], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a26d8dcd93524883a7596c37e778e7153":[11,0,1,21,46,2], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a29714d05a6495920cc4a41566d41d69f":[9,3,2,60,4], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a29714d05a6495920cc4a41566d41d69f":[11,0,1,21,46,4], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a533d89a3e40d79c20d4452df085c127f":[11,0,1,21,46,6], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a533d89a3e40d79c20d4452df085c127f":[9,3,2,60,6], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a60c6aea8212fc515dbba102ce77bcaff":[11,0,1,21,46,1], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a533d89a3e40d79c20d4452df085c127f":[11,0,1,21,46,6], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a60c6aea8212fc515dbba102ce77bcaff":[9,3,2,60,1], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a64baf162a88a9a5fb39c75c43be929c0":[11,0,1,21,46,0], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a60c6aea8212fc515dbba102ce77bcaff":[11,0,1,21,46,1], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a64baf162a88a9a5fb39c75c43be929c0":[9,3,2,60,0], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a7c843a040322d612622cdc4c62221a0e":[11,0,1,21,46,3], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a64baf162a88a9a5fb39c75c43be929c0":[11,0,1,21,46,0], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a7c843a040322d612622cdc4c62221a0e":[9,3,2,60,3], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a92814cbfe23d6b795a3b6e5b24f66715":[9,3,2,60,5], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a7c843a040322d612622cdc4c62221a0e":[11,0,1,21,46,3], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a92814cbfe23d6b795a3b6e5b24f66715":[11,0,1,21,46,5], -"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512acb976a0756fbd6f52edf89fd6a0fe1b7":[9,3,2,60,7], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512a92814cbfe23d6b795a3b6e5b24f66715":[9,3,2,60,5], "_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512acb976a0756fbd6f52edf89fd6a0fe1b7":[11,0,1,21,46,7], +"_n2k_types_8h.html#ga2fe61775899a8c487358880611fec512acb976a0756fbd6f52edf89fd6a0fe1b7":[9,3,2,60,7], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645a1690f055bd5780069ca7f4d87d5bdf4e":[11,0,1,21,53,4], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645a1690f055bd5780069ca7f4d87d5bdf4e":[9,3,2,67,4], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645a3120fdfe970864fe94e9fcb15261d7dc":[9,3,2,67,2], @@ -154,88 +154,88 @@ var NAVTREEINDEX1 = "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645adeea651d1448470403b28b26e10e65f4":[11,0,1,21,53,5], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645ae054537b6966bb136528503e2f49d902":[9,3,2,67,1], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645ae054537b6966bb136528503e2f49d902":[11,0,1,21,53,1], -"_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645ae40278ac74d59c35ecbb9c4411cd7977":[9,3,2,67,3], "_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645ae40278ac74d59c35ecbb9c4411cd7977":[11,0,1,21,53,3], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a581d1c23ef7f6847c08932f3f9fea099":[11,0,1,21,33,5], +"_n2k_types_8h.html#ga30a60f42828cc285a520e3a26d5a6645ae40278ac74d59c35ecbb9c4411cd7977":[9,3,2,67,3], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a581d1c23ef7f6847c08932f3f9fea099":[9,3,2,33,5], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a581d1c23ef7f6847c08932f3f9fea099":[11,0,1,21,33,5], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a5e35bb1e6ef1edd911eeb38855e3ebe1":[9,3,2,33,7], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a5e35bb1e6ef1edd911eeb38855e3ebe1":[11,0,1,21,33,7], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a7fbe24ffadaa05e444645a2dd266b359":[9,3,2,33,2], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a7fbe24ffadaa05e444645a2dd266b359":[11,0,1,21,33,2], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a8ef36309179dadd0f69ef1d84fff66aa":[9,3,2,33,1], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a7fbe24ffadaa05e444645a2dd266b359":[9,3,2,33,2], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a8ef36309179dadd0f69ef1d84fff66aa":[11,0,1,21,33,1], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5ab93f435b0f9b713065165bf104141080":[9,3,2,33,4], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5a8ef36309179dadd0f69ef1d84fff66aa":[9,3,2,33,1], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5ab93f435b0f9b713065165bf104141080":[11,0,1,21,33,4], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5abc8016cf51b955904beaf0cabe884372":[11,0,1,21,33,10], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5ab93f435b0f9b713065165bf104141080":[9,3,2,33,4], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5abc8016cf51b955904beaf0cabe884372":[9,3,2,33,10], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5abc8016cf51b955904beaf0cabe884372":[11,0,1,21,33,10], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5ace149992334fc834871f988e5be1e46f":[11,0,1,21,33,9], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5ace149992334fc834871f988e5be1e46f":[9,3,2,33,9], -"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5add59ba62775e3e1b501b3f49071e1042":[9,3,2,33,0], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5add59ba62775e3e1b501b3f49071e1042":[11,0,1,21,33,0], +"_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5add59ba62775e3e1b501b3f49071e1042":[9,3,2,33,0], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5adda3eda3e21037e057457862132a6b2f":[11,0,1,21,33,8], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5adda3eda3e21037e057457862132a6b2f":[9,3,2,33,8], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5aefa971168536d5c21ad881bf4b8dab41":[9,3,2,33,6], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5aefa971168536d5c21ad881bf4b8dab41":[11,0,1,21,33,6], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5af2723e23ee3dc2aa33a8a21f596feecb":[11,0,1,21,33,3], "_n2k_types_8h.html#ga30c2d8d084d6ec9d9115dded189470f5af2723e23ee3dc2aa33a8a21f596feecb":[9,3,2,33,3], -"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca08d0b47f1ea9027d14f1840c14722480":[9,3,2,56,2], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca08d0b47f1ea9027d14f1840c14722480":[11,0,1,21,42,2], +"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca08d0b47f1ea9027d14f1840c14722480":[9,3,2,56,2], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca17b4df914581a028dad8db24bf97e675":[9,3,2,56,5], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca17b4df914581a028dad8db24bf97e675":[11,0,1,21,42,5], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca1c595b9fbcc669ded08e973e26514f21":[11,0,1,21,42,8], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca1c595b9fbcc669ded08e973e26514f21":[9,3,2,56,8], -"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b3a84457f8f531157de72fe778d5b91":[9,3,2,56,3], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b3a84457f8f531157de72fe778d5b91":[11,0,1,21,42,3], -"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b9c71ae8ccdb370423687bf310c38f9":[9,3,2,56,6], +"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b3a84457f8f531157de72fe778d5b91":[9,3,2,56,3], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b9c71ae8ccdb370423687bf310c38f9":[11,0,1,21,42,6], +"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca4b9c71ae8ccdb370423687bf310c38f9":[9,3,2,56,6], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca51e1989f0d29174a967efc7516892188":[9,3,2,56,1], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca51e1989f0d29174a967efc7516892188":[11,0,1,21,42,1], -"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca8017408c37cbe4451b9b7017d5707bbf":[11,0,1,21,42,7], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca8017408c37cbe4451b9b7017d5707bbf":[9,3,2,56,7], +"_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca8017408c37cbe4451b9b7017d5707bbf":[11,0,1,21,42,7], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca9fd000f1638fef8f53eebe3daab50b8c":[11,0,1,21,42,0], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6ca9fd000f1638fef8f53eebe3daab50b8c":[9,3,2,56,0], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6cae20fe7479c54c2ce8e452abddb8c5e35":[9,3,2,56,4], "_n2k_types_8h.html#ga320323d038dcec3a2009a48c745edd6cae20fe7479c54c2ce8e452abddb8c5e35":[11,0,1,21,42,4], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8a53b2fff41e9c7006e31d977f6a427623":[11,0,1,21,49,3], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8a53b2fff41e9c7006e31d977f6a427623":[9,3,2,63,3], -"_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8a78770525d742598429f15a143fa2b002":[9,3,2,63,2], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8a78770525d742598429f15a143fa2b002":[11,0,1,21,49,2], -"_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8ac34e010042d4159fd1f5f5ac3e543ac5":[9,3,2,63,1], +"_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8a78770525d742598429f15a143fa2b002":[9,3,2,63,2], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8ac34e010042d4159fd1f5f5ac3e543ac5":[11,0,1,21,49,1], +"_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8ac34e010042d4159fd1f5f5ac3e543ac5":[9,3,2,63,1], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8ac908e524f9b755d80435eec386669b06":[11,0,1,21,49,0], "_n2k_types_8h.html#ga3b3d52b25e9585adc2dfbc2d8ff37bc8ac908e524f9b755d80435eec386669b06":[9,3,2,63,0], -"_n2k_types_8h.html#ga5a2a9a35649031cdeebd0df5ac413227a29f7b2a4b73e679b9499ba8f01f7be10":[11,0,1,21,44,1], "_n2k_types_8h.html#ga5a2a9a35649031cdeebd0df5ac413227a29f7b2a4b73e679b9499ba8f01f7be10":[9,3,2,58,1], +"_n2k_types_8h.html#ga5a2a9a35649031cdeebd0df5ac413227a29f7b2a4b73e679b9499ba8f01f7be10":[11,0,1,21,44,1], "_n2k_types_8h.html#ga5a2a9a35649031cdeebd0df5ac413227af29c5a7539ef7cdf15a576909b43a2ad":[9,3,2,58,0], "_n2k_types_8h.html#ga5a2a9a35649031cdeebd0df5ac413227af29c5a7539ef7cdf15a576909b43a2ad":[11,0,1,21,44,0], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a2014ef72c696bc64c6083d5e3eeccc75":[9,3,2,52,1], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a2014ef72c696bc64c6083d5e3eeccc75":[11,0,1,21,38,1], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a3379f6441c0811244d78d62e8c6c56c8":[9,3,2,52,5], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a3379f6441c0811244d78d62e8c6c56c8":[11,0,1,21,38,5], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a48bcc4ffc85cc48cdbaae16d787056af":[9,3,2,52,3], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a3379f6441c0811244d78d62e8c6c56c8":[9,3,2,52,5], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a48bcc4ffc85cc48cdbaae16d787056af":[11,0,1,21,38,3], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a710f1174b358e46ef99c98d8053dbcf8":[9,3,2,52,2], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a48bcc4ffc85cc48cdbaae16d787056af":[9,3,2,52,3], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a710f1174b358e46ef99c98d8053dbcf8":[11,0,1,21,38,2], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001aaa8cff5986b80475d2e0128bedd47ab4":[9,3,2,52,0], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001a710f1174b358e46ef99c98d8053dbcf8":[9,3,2,52,2], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001aaa8cff5986b80475d2e0128bedd47ab4":[11,0,1,21,38,0], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001aaa8cff5986b80475d2e0128bedd47ab4":[9,3,2,52,0], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001abce67fe9a50537e943c9b41a2986f558":[11,0,1,21,38,7], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001abce67fe9a50537e943c9b41a2986f558":[9,3,2,52,7], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ad9a0c85c90df2196c1104c514720ae4d":[11,0,1,21,38,4], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ad9a0c85c90df2196c1104c514720ae4d":[9,3,2,52,4], -"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ae860ff56f8ac21bf98273995dd442e00":[11,0,1,21,38,6], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ad9a0c85c90df2196c1104c514720ae4d":[11,0,1,21,38,4], "_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ae860ff56f8ac21bf98273995dd442e00":[9,3,2,52,6], +"_n2k_types_8h.html#ga5d2068cf598e5b52b7f552473246e001ae860ff56f8ac21bf98273995dd442e00":[11,0,1,21,38,6], "_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320a0d0275b93f03586c005fd120a26628b6":[11,0,1,21,54,0], "_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320a0d0275b93f03586c005fd120a26628b6":[9,3,2,68,0], -"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ab4c80a0e64841bdd6d05119c0944acf7":[9,3,2,68,2], "_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ab4c80a0e64841bdd6d05119c0944acf7":[11,0,1,21,54,2], -"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ac3b98ffbdd28b32f8d1a2b1c69e4a720":[9,3,2,68,3], +"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ab4c80a0e64841bdd6d05119c0944acf7":[9,3,2,68,2], "_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ac3b98ffbdd28b32f8d1a2b1c69e4a720":[11,0,1,21,54,3], -"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320af8f023617e4950a01aacd8641a077636":[11,0,1,21,54,1], +"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320ac3b98ffbdd28b32f8d1a2b1c69e4a720":[9,3,2,68,3], "_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320af8f023617e4950a01aacd8641a077636":[9,3,2,68,1], +"_n2k_types_8h.html#ga5d4d08a6e1a5c19215dac98773275320af8f023617e4950a01aacd8641a077636":[11,0,1,21,54,1], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a1ca3dc87f52315e76c50631e99a48f15":[11,0,1,21,34,1], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a1ca3dc87f52315e76c50631e99a48f15":[9,3,2,34,1], -"_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a43b29660c1ff1d780c4dbb447c5c7efc":[9,3,2,34,2], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a43b29660c1ff1d780c4dbb447c5c7efc":[11,0,1,21,34,2], +"_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a43b29660c1ff1d780c4dbb447c5c7efc":[9,3,2,34,2], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a606e98e6c354f9b9782e28e5b45a7a5f":[11,0,1,21,34,4], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466a606e98e6c354f9b9782e28e5b45a7a5f":[9,3,2,34,4], "_n2k_types_8h.html#ga60a7fbbb637e2eed35ca0014458e4466aaea894a719bd6e7170472520556d64f4":[11,0,1,21,34,0], @@ -246,8 +246,8 @@ var NAVTREEINDEX1 = "_n2k_types_8h.html#ga6dabae21fc4a6b2f22a328332139580ca7a352a3dd2accc1dd65a4538c3754ee8":[11,0,1,21,43,1], "_n2k_types_8h.html#ga6dabae21fc4a6b2f22a328332139580caa9e10f610083e262e7aa4004c9b68fe9":[11,0,1,21,43,0], "_n2k_types_8h.html#ga6dabae21fc4a6b2f22a328332139580caa9e10f610083e262e7aa4004c9b68fe9":[9,3,2,57,0], -"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a31d029ca23709b86f4d1879fb282ef9a":[9,3,2,69,2], "_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a31d029ca23709b86f4d1879fb282ef9a":[11,0,1,21,55,2], -"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a3fb6d844c21f58a692204661a48eb274":[11,0,1,21,55,1], -"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a3fb6d844c21f58a692204661a48eb274":[9,3,2,69,1] +"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a31d029ca23709b86f4d1879fb282ef9a":[9,3,2,69,2], +"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a3fb6d844c21f58a692204661a48eb274":[9,3,2,69,1], +"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a3fb6d844c21f58a692204661a48eb274":[11,0,1,21,55,1] }; diff --git a/navtreeindex10.js b/navtreeindex10.js index 4bcff846..503abfd9 100644 --- a/navtreeindex10.js +++ b/navtreeindex10.js @@ -1,5 +1,7 @@ var NAVTREEINDEX10 = { +"uniont_n2k_d_d223.html#a6e35bedda20551749b9bd401fcfc39c8":[10,0,5,14], +"uniont_n2k_d_d223.html#acf234d744eaf9bdf5b1c914292be48e5":[10,0,5,1], "uniont_n2k_d_d223.html#ad53d1b2bc9d325ef5cfa30c2f1cd6246":[10,0,5,6], "uniont_n2k_d_d223.html#ae5581f0c067762406313ff934a272ab9":[10,0,5,7], "uniont_n2k_d_d223.html#ae8df74290a165b7086d5b2df89f699e8":[10,0,5,13], diff --git a/navtreeindex2.js b/navtreeindex2.js index 77f9a834..0d56696c 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,51 +1,51 @@ var NAVTREEINDEX2 = { -"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a8bda5620ddb9b759dd8ec72a28b26de0":[11,0,1,21,55,3], "_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a8bda5620ddb9b759dd8ec72a28b26de0":[9,3,2,69,3], -"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0aa0227c67040734ce04b4977cfb405aa7":[11,0,1,21,55,0], +"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0a8bda5620ddb9b759dd8ec72a28b26de0":[11,0,1,21,55,3], "_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0aa0227c67040734ce04b4977cfb405aa7":[9,3,2,69,0], +"_n2k_types_8h.html#ga6f360c10d61b4c8559979a1a447222f0aa0227c67040734ce04b4977cfb405aa7":[11,0,1,21,55,0], "_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8ba3cb7d1562f400617cfaf52e78de2b97b":[9,3,2,61,0], "_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8ba3cb7d1562f400617cfaf52e78de2b97b":[11,0,1,21,47,0], -"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8baa43583342c9dac7e107efc2b239a0dc2":[9,3,2,61,3], "_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8baa43583342c9dac7e107efc2b239a0dc2":[11,0,1,21,47,3], -"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8babd4abbd7d032ce6c788b16ce09be4c4b":[9,3,2,61,1], +"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8baa43583342c9dac7e107efc2b239a0dc2":[9,3,2,61,3], "_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8babd4abbd7d032ce6c788b16ce09be4c4b":[11,0,1,21,47,1], -"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8bad19278f21a92c6ad1704410d25a8f7e8":[9,3,2,61,2], +"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8babd4abbd7d032ce6c788b16ce09be4c4b":[9,3,2,61,1], "_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8bad19278f21a92c6ad1704410d25a8f7e8":[11,0,1,21,47,2], +"_n2k_types_8h.html#ga6faddb97b85e2205c3c76a561b48de8bad19278f21a92c6ad1704410d25a8f7e8":[9,3,2,61,2], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fa963ca6ff3e3868e8d821b43632de08f2":[9,3,2,70,4], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fa963ca6ff3e3868e8d821b43632de08f2":[11,0,1,21,56,4], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741faba1e77a2b48b38ad96fcfc731f15b075":[9,3,2,70,7], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741faba1e77a2b48b38ad96fcfc731f15b075":[11,0,1,21,56,7], -"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fabb5f9bd09248fe863dd5a6394218dfea":[9,3,2,70,1], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fabb5f9bd09248fe863dd5a6394218dfea":[11,0,1,21,56,1], -"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad2f77ca5883e0d563b53d3170cdcb3c8":[9,3,2,70,3], +"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fabb5f9bd09248fe863dd5a6394218dfea":[9,3,2,70,1], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad2f77ca5883e0d563b53d3170cdcb3c8":[11,0,1,21,56,3], -"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad50a2ba32505f693833795f4ad4e3cb8":[9,3,2,70,6], +"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad2f77ca5883e0d563b53d3170cdcb3c8":[9,3,2,70,3], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad50a2ba32505f693833795f4ad4e3cb8":[11,0,1,21,56,6], +"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad50a2ba32505f693833795f4ad4e3cb8":[9,3,2,70,6], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad88a730f9dfd90f134510bd712b2a610":[11,0,1,21,56,5], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fad88a730f9dfd90f134510bd712b2a610":[9,3,2,70,5], -"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fadc63125128a147c5e910f835f2b0fe10":[9,3,2,70,2], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fadc63125128a147c5e910f835f2b0fe10":[11,0,1,21,56,2], +"_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fadc63125128a147c5e910f835f2b0fe10":[9,3,2,70,2], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fae054cf6e43d72dea873cdcdf049a52e6":[11,0,1,21,56,0], "_n2k_types_8h.html#ga7e2df5fcd75db7834060bc276d1b741fae054cf6e43d72dea873cdcdf049a52e6":[9,3,2,70,0], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a00d0595b0809fe779d67bd21e2e5fb4f":[11,0,1,21,51,2], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a00d0595b0809fe779d67bd21e2e5fb4f":[9,3,2,65,2], -"_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a2be1b8daf6b27f057efabeb41e979cf8":[11,0,1,21,51,4], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a2be1b8daf6b27f057efabeb41e979cf8":[9,3,2,65,4], +"_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a2be1b8daf6b27f057efabeb41e979cf8":[11,0,1,21,51,4], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a5f8d8715f63459e521d9a3ad6d6f0acf":[11,0,1,21,51,5], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a5f8d8715f63459e521d9a3ad6d6f0acf":[9,3,2,65,5], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a730a296db2e66ca8b3431b6cb49d3042":[11,0,1,21,51,0], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a730a296db2e66ca8b3431b6cb49d3042":[9,3,2,65,0], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a9cdfe020099179d813eed6a2affeffee":[11,0,1,21,51,1], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8a9cdfe020099179d813eed6a2affeffee":[9,3,2,65,1], -"_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8ac078a70ade71d668b4965631b7cf40c1":[9,3,2,65,6], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8ac078a70ade71d668b4965631b7cf40c1":[11,0,1,21,51,6], +"_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8ac078a70ade71d668b4965631b7cf40c1":[9,3,2,65,6], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8aff974209d3cac4c7cedde26da1f822c5":[9,3,2,65,3], "_n2k_types_8h.html#ga8101d2e7e0c51a15bd5d107900f6d1d8aff974209d3cac4c7cedde26da1f822c5":[11,0,1,21,51,3], -"_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a2ef1d88a88f614d70f3ca81d5a5301ad":[11,0,1,21,26,0], "_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a2ef1d88a88f614d70f3ca81d5a5301ad":[9,3,2,26,0], -"_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a48ca70ad55ab2ceb6a5c75d50ad1fbc3":[9,3,2,26,1], +"_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a2ef1d88a88f614d70f3ca81d5a5301ad":[11,0,1,21,26,0], "_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a48ca70ad55ab2ceb6a5c75d50ad1fbc3":[11,0,1,21,26,1], +"_n2k_types_8h.html#ga83ba87b4811d1e75daa47358bee034b8a48ca70ad55ab2ceb6a5c75d50ad1fbc3":[9,3,2,26,1], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a03393a65b26ec2bd1961c7eddd962d31":[11,0,1,21,52,13], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a03393a65b26ec2bd1961c7eddd962d31":[9,3,2,66,13], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a11ac7d2decc117ffff066f022b20c3e7":[11,0,1,21,52,14], @@ -56,8 +56,8 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a4ffc09f667ed1c2a41c7afe51a9b2c61":[11,0,1,21,52,0], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a521c12a1b9136530f8d88d1a1c0214de":[11,0,1,21,52,9], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a521c12a1b9136530f8d88d1a1c0214de":[9,3,2,66,9], -"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a5b4a39860846300b35236f6b2ddc13ce":[11,0,1,21,52,4], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a5b4a39860846300b35236f6b2ddc13ce":[9,3,2,66,4], +"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a5b4a39860846300b35236f6b2ddc13ce":[11,0,1,21,52,4], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a6071266cfe6b87f170717fd967bf12be":[9,3,2,66,3], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a6071266cfe6b87f170717fd967bf12be":[11,0,1,21,52,3], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a64aa95a26fe97c7a59e71b27ba63b760":[9,3,2,66,15], @@ -66,8 +66,8 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a9007e60fad35035ce7ad999f358cced9":[9,3,2,66,2], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a94c987ec810c6f32514488c3db3f1f06":[11,0,1,21,52,5], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828a94c987ec810c6f32514488c3db3f1f06":[9,3,2,66,5], -"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828abfb8ae38cd10596e7b48769190824300":[9,3,2,66,11], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828abfb8ae38cd10596e7b48769190824300":[11,0,1,21,52,11], +"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828abfb8ae38cd10596e7b48769190824300":[9,3,2,66,11], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828ad1eb625c23d096f767e04a13aa851a7f":[9,3,2,66,6], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828ad1eb625c23d096f767e04a13aa851a7f":[11,0,1,21,52,6], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828ae98a23e69f4b725d0f5e5ae8b644230c":[9,3,2,66,7], @@ -76,28 +76,28 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aeef6f6b102b8b7206e0703b2c594db68":[11,0,1,21,52,10], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aff379aec75b8183ee61c402d443d3ad1":[9,3,2,66,8], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aff379aec75b8183ee61c402d443d3ad1":[11,0,1,21,52,8], -"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aff7510ec65fe71302ff3aaa8c2ca77d5":[11,0,1,21,52,12], "_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aff7510ec65fe71302ff3aaa8c2ca77d5":[9,3,2,66,12], +"_n2k_types_8h.html#ga8a1e9646b80c46fb414fa44bcfdca828aff7510ec65fe71302ff3aaa8c2ca77d5":[11,0,1,21,52,12], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca0a139057f0be51dcff0d3f486e5b4516":[11,0,1,21,45,2], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca0a139057f0be51dcff0d3f486e5b4516":[9,3,2,59,2], -"_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca80e6ecb379e934713278f01bde997d4b":[9,3,2,59,3], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca80e6ecb379e934713278f01bde997d4b":[11,0,1,21,45,3], +"_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca80e6ecb379e934713278f01bde997d4b":[9,3,2,59,3], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca89968d09f5a74fed0c380c30118cff9c":[11,0,1,21,45,1], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca89968d09f5a74fed0c380c30118cff9c":[9,3,2,59,1], -"_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca8b41f14f8ede3f120e92a1379f46b551":[11,0,1,21,45,0], "_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca8b41f14f8ede3f120e92a1379f46b551":[9,3,2,59,0], +"_n2k_types_8h.html#ga8b6a1fbd879b0ffc011cc14896abf33ca8b41f14f8ede3f120e92a1379f46b551":[11,0,1,21,45,0], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fba25ab9330f8957941ff4bd60ee1596945":[9,3,2,51,0], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fba25ab9330f8957941ff4bd60ee1596945":[11,0,1,21,37,0], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fba5d742ccb8e930150a3469ec89a2184ce":[11,0,1,21,37,6], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fba5d742ccb8e930150a3469ec89a2184ce":[9,3,2,51,6], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaa61784798eddfdc379d4d1b928a9df90":[11,0,1,21,37,3], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaa61784798eddfdc379d4d1b928a9df90":[9,3,2,51,3], -"_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaa86dafe91816b5e12e77a5fa5ccd1ff2":[11,0,1,21,37,2], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaa86dafe91816b5e12e77a5fa5ccd1ff2":[9,3,2,51,2], +"_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaa86dafe91816b5e12e77a5fa5ccd1ff2":[11,0,1,21,37,2], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaba86d30959c5b901afec7a8329f53e57":[11,0,1,21,37,5], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbaba86d30959c5b901afec7a8329f53e57":[9,3,2,51,5], -"_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbabe78621e18342c35c2151fbc73d1e3b4":[9,3,2,51,7], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbabe78621e18342c35c2151fbc73d1e3b4":[11,0,1,21,37,7], +"_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbabe78621e18342c35c2151fbc73d1e3b4":[9,3,2,51,7], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbade04225e2282e454af2714cf7c50d976":[11,0,1,21,37,1], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbade04225e2282e454af2714cf7c50d976":[9,3,2,51,1], "_n2k_types_8h.html#ga95bb0c22b8d09ab7e9993d0927b7a1fbae4ea824dfa93c2743339ce214c64c1d8":[9,3,2,51,4], @@ -106,12 +106,12 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aa9be9db15698824ca48a3e32439f33cc1":[9,3,2,28,3], "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaaa77b471d1d866ad8dae44068e3b1009":[9,3,2,28,1], "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaaa77b471d1d866ad8dae44068e3b1009":[11,0,1,21,28,1], -"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaebf4042de82b249d21e90e8c3ceedc99":[9,3,2,28,0], "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaebf4042de82b249d21e90e8c3ceedc99":[11,0,1,21,28,0], -"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf03ec79482e66155a2346658229b794d":[11,0,1,21,28,4], +"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaebf4042de82b249d21e90e8c3ceedc99":[9,3,2,28,0], "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf03ec79482e66155a2346658229b794d":[9,3,2,28,4], -"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf8c3bb8efdaf084af150aa0774e9e3c7":[11,0,1,21,28,2], +"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf03ec79482e66155a2346658229b794d":[11,0,1,21,28,4], "_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf8c3bb8efdaf084af150aa0774e9e3c7":[9,3,2,28,2], +"_n2k_types_8h.html#gab176017bf781c4cc22bfa340a3b43e0aaf8c3bb8efdaf084af150aa0774e9e3c7":[11,0,1,21,28,2], "_n2k_types_8h.html#gab1fb3a15dd2280870f83241c69aa6536a333a131d41ecddb1bfe78b0b223358f1":[11,0,1,21,31,1], "_n2k_types_8h.html#gab1fb3a15dd2280870f83241c69aa6536a333a131d41ecddb1bfe78b0b223358f1":[9,3,2,31,1], "_n2k_types_8h.html#gab1fb3a15dd2280870f83241c69aa6536a4080ba93d2a48a471c04a5aeb45abfa4":[11,0,1,21,31,2], @@ -122,70 +122,70 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a187d44e091da92c188e3d193c6dc353c":[9,3,2,53,4], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a260d47c5e54828dbdc6c4529e72beb4e":[9,3,2,53,6], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a260d47c5e54828dbdc6c4529e72beb4e":[11,0,1,21,39,6], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6b9649792e8e2a74dbc967a10f889c31":[11,0,1,21,39,2], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6b9649792e8e2a74dbc967a10f889c31":[9,3,2,53,2], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6f6e245520e137846ff47be165cd1f16":[11,0,1,21,39,5], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6b9649792e8e2a74dbc967a10f889c31":[11,0,1,21,39,2], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6f6e245520e137846ff47be165cd1f16":[9,3,2,53,5], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a7b052ccd12d1efbf076e5f26726f6ef9":[11,0,1,21,39,8], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a6f6e245520e137846ff47be165cd1f16":[11,0,1,21,39,5], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a7b052ccd12d1efbf076e5f26726f6ef9":[9,3,2,53,8], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a8b7118ce0af951465a76dd55842293c3":[11,0,1,21,39,0], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a7b052ccd12d1efbf076e5f26726f6ef9":[11,0,1,21,39,8], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a8b7118ce0af951465a76dd55842293c3":[9,3,2,53,0], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394af1a3adeed3ff9ce6d4475c3be70d39f9":[11,0,1,21,39,3], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394a8b7118ce0af951465a76dd55842293c3":[11,0,1,21,39,0], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394af1a3adeed3ff9ce6d4475c3be70d39f9":[9,3,2,53,3], -"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394afc57b5ad02a7dadc6a6d21ec955965dd":[11,0,1,21,39,1], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394af1a3adeed3ff9ce6d4475c3be70d39f9":[11,0,1,21,39,3], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394afc57b5ad02a7dadc6a6d21ec955965dd":[9,3,2,53,1], +"_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394afc57b5ad02a7dadc6a6d21ec955965dd":[11,0,1,21,39,1], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394afd19d7f173495f7c4776a63a12a0e5bc":[11,0,1,21,39,7], "_n2k_types_8h.html#gab26b91bc9eb6c85000e2d2e0c1f23394afd19d7f173495f7c4776a63a12a0e5bc":[9,3,2,53,7], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a03807de95951e6b51737f8f1d48bd26a":[11,0,1,21,23,5], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a03807de95951e6b51737f8f1d48bd26a":[9,3,2,23,5], -"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a07e546f78911fa877685ef744511139b":[11,0,1,21,23,2], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a07e546f78911fa877685ef744511139b":[9,3,2,23,2], +"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a07e546f78911fa877685ef744511139b":[11,0,1,21,23,2], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a0e5132176602a2df09b4356447856495":[9,3,2,23,9], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a0e5132176602a2df09b4356447856495":[11,0,1,21,23,9], -"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a1022cd5200c251d6c76c728b1d43a335":[11,0,1,21,23,4], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a1022cd5200c251d6c76c728b1d43a335":[9,3,2,23,4], +"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a1022cd5200c251d6c76c728b1d43a335":[11,0,1,21,23,4], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a326848fa44664228948bff0e04d64d70":[9,3,2,23,8], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a326848fa44664228948bff0e04d64d70":[11,0,1,21,23,8], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a5c8b1b87964f0ad1788d3d4763a015bc":[9,3,2,23,10], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a5c8b1b87964f0ad1788d3d4763a015bc":[11,0,1,21,23,10], -"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a5f7cd1c9c474f9525032949d1a5392d0":[9,3,2,23,1], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a5f7cd1c9c474f9525032949d1a5392d0":[11,0,1,21,23,1], +"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a5f7cd1c9c474f9525032949d1a5392d0":[9,3,2,23,1], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a76ee1738dc4c46df55e8e3659c05af58":[9,3,2,23,11], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8a76ee1738dc4c46df55e8e3659c05af58":[11,0,1,21,23,11], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8aad808e2ec02f9d2d75dffde98bee6731":[11,0,1,21,23,3], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8aad808e2ec02f9d2d75dffde98bee6731":[9,3,2,23,3], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ab610357235b6b2717a1dbd65efaab481":[11,0,1,21,23,7], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ab610357235b6b2717a1dbd65efaab481":[9,3,2,23,7], -"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ad83dbfc786cf5ad48f4ab0a18e6e8533":[9,3,2,23,0], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ad83dbfc786cf5ad48f4ab0a18e6e8533":[11,0,1,21,23,0], +"_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ad83dbfc786cf5ad48f4ab0a18e6e8533":[9,3,2,23,0], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ae47cd711eb4e44aa890e4fc1ee7daa69":[11,0,1,21,23,6], "_n2k_types_8h.html#gab46a3ab176299c0d16320449b9ca61f8ae47cd711eb4e44aa890e4fc1ee7daa69":[9,3,2,23,6], -"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a17c486d4b835b893f117420fd9f4ea43":[9,3,2,64,1], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a17c486d4b835b893f117420fd9f4ea43":[11,0,1,21,50,1], +"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a17c486d4b835b893f117420fd9f4ea43":[9,3,2,64,1], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a57c7d7514b8ca9a3786fbcea61aa0c08":[11,0,1,21,50,3], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a57c7d7514b8ca9a3786fbcea61aa0c08":[9,3,2,64,3], -"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a6276da474c27035062caebd62b8b62e9":[9,3,2,64,2], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a6276da474c27035062caebd62b8b62e9":[11,0,1,21,50,2], -"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a843cb6928cd28d240090caa8d3cb10c6":[9,3,2,64,0], +"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a6276da474c27035062caebd62b8b62e9":[9,3,2,64,2], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a843cb6928cd28d240090caa8d3cb10c6":[11,0,1,21,50,0], +"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342a843cb6928cd28d240090caa8d3cb10c6":[9,3,2,64,0], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342ada815c702de6832c0fd5876818ac8237":[9,3,2,64,5], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342ada815c702de6832c0fd5876818ac8237":[11,0,1,21,50,5], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342ae3d41359412e083ffe4fdf563858f364":[9,3,2,64,6], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342ae3d41359412e083ffe4fdf563858f364":[11,0,1,21,50,6], -"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342af46dca7b896ba83562ad04aed9ca0e86":[9,3,2,64,4], "_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342af46dca7b896ba83562ad04aed9ca0e86":[11,0,1,21,50,4], +"_n2k_types_8h.html#gababa4fa7b370393ba663c3eb26efd342af46dca7b896ba83562ad04aed9ca0e86":[9,3,2,64,4], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba4d49ca0c0cf9a2bb087ccdc52e093306":[11,0,1,21,29,2], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba4d49ca0c0cf9a2bb087ccdc52e093306":[9,3,2,29,2], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba591c0dacb526b5fbb09c7415ffa54e0b":[11,0,1,21,29,3], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba591c0dacb526b5fbb09c7415ffa54e0b":[9,3,2,29,3], -"_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba6341b6ec9a33acc7cceee1a22bc6b6b5":[11,0,1,21,29,1], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba6341b6ec9a33acc7cceee1a22bc6b6b5":[9,3,2,29,1], +"_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba6341b6ec9a33acc7cceee1a22bc6b6b5":[11,0,1,21,29,1], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba95895a2925c8356ab922eb4b055acd2f":[9,3,2,29,0], "_n2k_types_8h.html#gadca5f1106aa9e8e84ad7a75986a5f7eba95895a2925c8356ab922eb4b055acd2f":[11,0,1,21,29,0], -"_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a4fa68670662227e1ffe63027c91b200a":[9,3,2,55,0], "_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a4fa68670662227e1ffe63027c91b200a":[11,0,1,21,41,0], -"_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a62f5ffaa79f2849fb00d2359439ea6a9":[9,3,2,55,1], +"_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a4fa68670662227e1ffe63027c91b200a":[9,3,2,55,0], "_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a62f5ffaa79f2849fb00d2359439ea6a9":[11,0,1,21,41,1], +"_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90a62f5ffaa79f2849fb00d2359439ea6a9":[9,3,2,55,1], "_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90aa698d8d6e361f3b78b1c9f51531e0c8f":[9,3,2,55,2], "_n2k_types_8h.html#gae0192b5ddd2902009e5f324689fe2d90aa698d8d6e361f3b78b1c9f51531e0c8f":[11,0,1,21,41,2], "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aa0a06ca65391d01c014c01a43f9b8fe90":[11,0,1,21,25,4], @@ -194,60 +194,60 @@ var NAVTREEINDEX2 = "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aa2690cf92a1733bc6c77c2b22d951d57f":[11,0,1,21,25,2], "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aa41aa9519790616ee2a4006cae62acf35":[9,3,2,25,1], "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aa41aa9519790616ee2a4006cae62acf35":[11,0,1,21,25,1], -"_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aaf58cacecc5ab4e01e39b1f5524e30079":[9,3,2,25,3], "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aaf58cacecc5ab4e01e39b1f5524e30079":[11,0,1,21,25,3], -"_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aafcc24a65ad9b4cd696eca0bbf6139331":[11,0,1,21,25,0], +"_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aaf58cacecc5ab4e01e39b1f5524e30079":[9,3,2,25,3], "_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aafcc24a65ad9b4cd696eca0bbf6139331":[9,3,2,25,0], +"_n2k_types_8h.html#gae7f8142668a3c9396ada7d2e725eb15aafcc24a65ad9b4cd696eca0bbf6139331":[11,0,1,21,25,0], "_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a00daf325bea127432c09549bddaaad26":[9,3,2,24,0], "_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a00daf325bea127432c09549bddaaad26":[11,0,1,21,24,0], -"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a3c00e906cccc9fd15657d7877c477b32":[9,3,2,24,2], "_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a3c00e906cccc9fd15657d7877c477b32":[11,0,1,21,24,2], -"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a74e2419b3f37b0a177c2d98ea4a04662":[9,3,2,24,3], +"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a3c00e906cccc9fd15657d7877c477b32":[9,3,2,24,2], "_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a74e2419b3f37b0a177c2d98ea4a04662":[11,0,1,21,24,3], -"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612ad921eb3a418318fbfc0eea2d47c0460f":[9,3,2,24,1], +"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612a74e2419b3f37b0a177c2d98ea4a04662":[9,3,2,24,3], "_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612ad921eb3a418318fbfc0eea2d47c0460f":[11,0,1,21,24,1], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a14e8f71d4baae36835c959c4023052ed":[9,3,2,62,9], +"_n2k_types_8h.html#gae803e241caab3b8d2846b5481e78e612ad921eb3a418318fbfc0eea2d47c0460f":[9,3,2,24,1], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a14e8f71d4baae36835c959c4023052ed":[11,0,1,21,48,9], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a14e8f71d4baae36835c959c4023052ed":[9,3,2,62,9], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a38895bff4d99488272936d021a40293a":[9,3,2,62,8], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a38895bff4d99488272936d021a40293a":[11,0,1,21,48,8], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a3925583562dd6a72698d37478cd34d9c":[9,3,2,62,11], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a3925583562dd6a72698d37478cd34d9c":[11,0,1,21,48,11], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a4257cb760cd159d18adceed85f3e5a45":[9,3,2,62,3], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a4257cb760cd159d18adceed85f3e5a45":[11,0,1,21,48,3], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a5ec9c97eb80de23da2a2bd973145df88":[11,0,1,21,48,10], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a4257cb760cd159d18adceed85f3e5a45":[9,3,2,62,3], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a5ec9c97eb80de23da2a2bd973145df88":[9,3,2,62,10], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a72e891c11f27cac7923d63929f752beb":[11,0,1,21,48,5], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a5ec9c97eb80de23da2a2bd973145df88":[11,0,1,21,48,10], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a72e891c11f27cac7923d63929f752beb":[9,3,2,62,5], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a72e891c11f27cac7923d63929f752beb":[11,0,1,21,48,5], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a7a6dd7a5aad15f09a79da89547afb321":[11,0,1,21,48,0], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a7a6dd7a5aad15f09a79da89547afb321":[9,3,2,62,0], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a849eb48577b6cca62623259e48b41bcc":[11,0,1,21,48,4], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a849eb48577b6cca62623259e48b41bcc":[9,3,2,62,4], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a98b478f13d2cf80b8ed5b19c03989120":[11,0,1,21,48,6], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a98b478f13d2cf80b8ed5b19c03989120":[9,3,2,62,6], -"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2aa8c9e592ce16645e8cbfca36839d9fb8":[11,0,1,21,48,7], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2a98b478f13d2cf80b8ed5b19c03989120":[11,0,1,21,48,6], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2aa8c9e592ce16645e8cbfca36839d9fb8":[9,3,2,62,7], +"_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2aa8c9e592ce16645e8cbfca36839d9fb8":[11,0,1,21,48,7], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2ab49bc3ac2218926130a2abab878933f5":[11,0,1,21,48,1], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2ab49bc3ac2218926130a2abab878933f5":[9,3,2,62,1], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2afc2bc0b79488598f6768dcd2bf827ffe":[9,3,2,62,2], "_n2k_types_8h.html#gaea827abbd807a9e6c0bebf49ce656ed2afc2bc0b79488598f6768dcd2bf827ffe":[11,0,1,21,48,2], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa14cbd0772b8098a1e5270410a00de848":[11,0,1,21,36,8], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa14cbd0772b8098a1e5270410a00de848":[9,3,2,50,8], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa1726f7c576b4edc48103809ba711021c":[11,0,1,21,36,6], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa1726f7c576b4edc48103809ba711021c":[9,3,2,50,6], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa1726f7c576b4edc48103809ba711021c":[11,0,1,21,36,6], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa1bf92f5029c02c1fedacab2650a9d8c5":[9,3,2,50,2], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa1bf92f5029c02c1fedacab2650a9d8c5":[11,0,1,21,36,2], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa202b758c0ade353e196e380a36a9a6bc":[9,3,2,50,1], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa202b758c0ade353e196e380a36a9a6bc":[11,0,1,21,36,1], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3223524849ee02d30411fc40c7453957":[11,0,1,21,36,5], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa202b758c0ade353e196e380a36a9a6bc":[9,3,2,50,1], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3223524849ee02d30411fc40c7453957":[9,3,2,50,5], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3b4f1f5c3a2cb882b6833b59cb97d65c":[11,0,1,21,36,7], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3223524849ee02d30411fc40c7453957":[11,0,1,21,36,5], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3b4f1f5c3a2cb882b6833b59cb97d65c":[9,3,2,50,7], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa6618d1b0b7e612d4e55d18b10e0b63e8":[9,3,2,50,0], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa3b4f1f5c3a2cb882b6833b59cb97d65c":[11,0,1,21,36,7], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa6618d1b0b7e612d4e55d18b10e0b63e8":[11,0,1,21,36,0], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa6618d1b0b7e612d4e55d18b10e0b63e8":[9,3,2,50,0], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa6fcfbe3e786be61f6264bd42e67559b6":[9,3,2,50,4], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfa6fcfbe3e786be61f6264bd42e67559b6":[11,0,1,21,36,4], -"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfac35e19a506277226101606d3a61408f3":[11,0,1,21,36,3], "_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfac35e19a506277226101606d3a61408f3":[9,3,2,50,3], +"_n2k_types_8h.html#gaebff1affd21cdcb4962682017d8a18dfac35e19a506277226101606d3a61408f3":[11,0,1,21,36,3], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a04bb984e29399dec02bc2b3f2f1f706d":[11,0,1,21,57,4], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a04bb984e29399dec02bc2b3f2f1f706d":[9,3,2,71,4] }; diff --git a/navtreeindex3.js b/navtreeindex3.js index 3fe1f56a..1ee426ea 100644 --- a/navtreeindex3.js +++ b/navtreeindex3.js @@ -1,17 +1,17 @@ var NAVTREEINDEX3 = { -"_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a6c65b86b7a5de0f4293cf3ab52160aa5":[11,0,1,21,57,1], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a6c65b86b7a5de0f4293cf3ab52160aa5":[9,3,2,71,1], +"_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a6c65b86b7a5de0f4293cf3ab52160aa5":[11,0,1,21,57,1], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a86023b20fa53c3fe979a51cdb1b984ff":[11,0,1,21,57,3], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1a86023b20fa53c3fe979a51cdb1b984ff":[9,3,2,71,3], -"_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1aa2194f8bd0c2087d29dc4d631684bdcb":[11,0,1,21,57,2], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1aa2194f8bd0c2087d29dc4d631684bdcb":[9,3,2,71,2], +"_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1aa2194f8bd0c2087d29dc4d631684bdcb":[11,0,1,21,57,2], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1af8d2188a8fe18a8d00a6f6d455671221":[11,0,1,21,57,0], "_n2k_types_8h.html#gaf6a4cf563abea3f9d3a1addb314b2dd1af8d2188a8fe18a8d00a6f6d455671221":[9,3,2,71,0], "_n2k_types_8h.html#gafe82863123cd5621f27436c38fb430c4a1d443fe8cb0bed1bafd097ee44cc3757":[11,0,1,21,27,0], "_n2k_types_8h.html#gafe82863123cd5621f27436c38fb430c4a1d443fe8cb0bed1bafd097ee44cc3757":[9,3,2,27,0], -"_n2k_types_8h.html#gafe82863123cd5621f27436c38fb430c4a542509b92267c88256218151ebee78e6":[11,0,1,21,27,1], "_n2k_types_8h.html#gafe82863123cd5621f27436c38fb430c4a542509b92267c88256218151ebee78e6":[9,3,2,27,1], +"_n2k_types_8h.html#gafe82863123cd5621f27436c38fb430c4a542509b92267c88256218151ebee78e6":[11,0,1,21,27,1], "_n2k_types_8h_source.html":[11,0,1,21], "_n_m_e_a2000_8cpp.html":[11,0,1,22], "_n_m_e_a2000_8cpp.html#a01a02a5b8429a411f51f06485de21411":[11,0,1,22,16], @@ -141,12 +141,12 @@ var NAVTREEINDEX3 = "_n_m_e_a2000_std_types_8h.html":[11,0,1,26], "_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a34b5785f50df0e382b85a421e85867e2":[9,3,2,44,0], "_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a34b5785f50df0e382b85a421e85867e2":[11,0,1,26,16,0], -"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a869ed1a663ead82d9adf6adca4aa5976":[9,3,2,44,2], "_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a869ed1a663ead82d9adf6adca4aa5976":[11,0,1,26,16,2], -"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a9d835c412a6899bb6df774d6cfb86620":[9,3,2,44,1], +"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a869ed1a663ead82d9adf6adca4aa5976":[9,3,2,44,2], "_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a9d835c412a6899bb6df774d6cfb86620":[11,0,1,26,16,1], -"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348aebe67c08887979a44485a2addb212965":[9,3,2,44,3], +"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348a9d835c412a6899bb6df774d6cfb86620":[9,3,2,44,1], "_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348aebe67c08887979a44485a2addb212965":[11,0,1,26,16,3], +"_n_m_e_a2000_std_types_8h.html#ga07fe8ae611b7fa9c40426670c46a2348aebe67c08887979a44485a2addb212965":[9,3,2,44,3], "_n_m_e_a2000_std_types_8h.html#ga313f8a569b4f4718833153b0b9421034a1c11bf3b48a89c48f945a300848ab211":[11,0,1,26,14,1], "_n_m_e_a2000_std_types_8h.html#ga313f8a569b4f4718833153b0b9421034a1c11bf3b48a89c48f945a300848ab211":[9,3,2,42,1], "_n_m_e_a2000_std_types_8h.html#ga313f8a569b4f4718833153b0b9421034a5842f1c304a607bf9cd91fd2a08a0756":[9,3,2,42,2], @@ -157,72 +157,72 @@ var NAVTREEINDEX3 = "_n_m_e_a2000_std_types_8h.html#ga313f8a569b4f4718833153b0b9421034ace276e7b4d7829687320837326b47bec":[11,0,1,26,14,3], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a389339d937972b98492d607af0317db6":[9,3,2,45,2], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a389339d937972b98492d607af0317db6":[11,0,1,26,17,2], -"_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a530ae6e94fad82bf113e98d28a34494a":[9,3,2,45,1], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a530ae6e94fad82bf113e98d28a34494a":[11,0,1,26,17,1], +"_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a530ae6e94fad82bf113e98d28a34494a":[9,3,2,45,1], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a813cfaa67da22d1eadb2e66160c8c285":[9,3,2,45,0], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5a813cfaa67da22d1eadb2e66160c8c285":[11,0,1,26,17,0], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5ab14f270ccf71247f725abdc9f42cf104":[9,3,2,45,3], "_n_m_e_a2000_std_types_8h.html#ga41041126ffc78860caa451e87a19c7e5ab14f270ccf71247f725abdc9f42cf104":[11,0,1,26,17,3], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a0efee1999df8af238b454ca5db340299":[9,3,2,38,4], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a0efee1999df8af238b454ca5db340299":[11,0,1,26,10,4], -"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a2e25782c7babe65f0527c44a7a68802d":[9,3,2,38,1], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a2e25782c7babe65f0527c44a7a68802d":[11,0,1,26,10,1], +"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a2e25782c7babe65f0527c44a7a68802d":[9,3,2,38,1], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a546ad3dcb50adc7baa2984bd7c21b012":[11,0,1,26,10,3], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a546ad3dcb50adc7baa2984bd7c21b012":[9,3,2,38,3], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a6f7656220c0f2a35c81bcafd5474e1c3":[9,3,2,38,5], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a6f7656220c0f2a35c81bcafd5474e1c3":[11,0,1,26,10,5], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a74f606147de5e36ea2b1f1446986ed06":[9,3,2,38,7], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3a74f606147de5e36ea2b1f1446986ed06":[11,0,1,26,10,7], -"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3aa9aff9ed516c4436bc09cbf7f8ea9cf1":[9,3,2,38,6], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3aa9aff9ed516c4436bc09cbf7f8ea9cf1":[11,0,1,26,10,6], -"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3ab446d218b66f9a14d9319fdd5f0dd75a":[9,3,2,38,2], +"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3aa9aff9ed516c4436bc09cbf7f8ea9cf1":[9,3,2,38,6], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3ab446d218b66f9a14d9319fdd5f0dd75a":[11,0,1,26,10,2], -"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3af626a438c1013ea19b372d6ea1bb05de":[9,3,2,38,0], +"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3ab446d218b66f9a14d9319fdd5f0dd75a":[9,3,2,38,2], "_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3af626a438c1013ea19b372d6ea1bb05de":[11,0,1,26,10,0], +"_n_m_e_a2000_std_types_8h.html#ga557ef409cb31124f5c79b361bd8fbfe3af626a438c1013ea19b372d6ea1bb05de":[9,3,2,38,0], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0639b115051b2e7327459733cb1f580b":[9,3,2,39,28], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0639b115051b2e7327459733cb1f580b":[11,0,1,26,11,28], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a07914e7d7673b767f3ac55f5c91dc66c":[11,0,1,26,11,27], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a07914e7d7673b767f3ac55f5c91dc66c":[9,3,2,39,27], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0dcf5f1705491541c7decc4a561f91a0":[9,3,2,39,29], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0dcf5f1705491541c7decc4a561f91a0":[11,0,1,26,11,29], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0e7f8a1b21a4ca37541e0dad8ef8c06c":[9,3,2,39,6], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0e7f8a1b21a4ca37541e0dad8ef8c06c":[11,0,1,26,11,6], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a0e7f8a1b21a4ca37541e0dad8ef8c06c":[9,3,2,39,6], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a1ac43cafb99f36c99ce80368d8c0cca7":[9,3,2,39,31], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a1ac43cafb99f36c99ce80368d8c0cca7":[11,0,1,26,11,31], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a20eea1d38464dec5abd28300617ea447":[11,0,1,26,11,2], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a20eea1d38464dec5abd28300617ea447":[9,3,2,39,2], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a348c5d34a5b58567f0628901fa3d2a3e":[9,3,2,39,14], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a348c5d34a5b58567f0628901fa3d2a3e":[11,0,1,26,11,14], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a44a3ea71efddca3282ae731c7e031bba":[9,3,2,39,13], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a348c5d34a5b58567f0628901fa3d2a3e":[9,3,2,39,14], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a44a3ea71efddca3282ae731c7e031bba":[11,0,1,26,11,13], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a44a3ea71efddca3282ae731c7e031bba":[9,3,2,39,13], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a4d4f3f2c6c5953930d9a1263c2803fce":[11,0,1,26,11,26], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a4d4f3f2c6c5953930d9a1263c2803fce":[9,3,2,39,26], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a5613c906d7381a999f89be42399eb82a":[9,3,2,39,22], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a5613c906d7381a999f89be42399eb82a":[11,0,1,26,11,22], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a6416355bf6ab20b66d8e696c0c0365d4":[11,0,1,26,11,0], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a6416355bf6ab20b66d8e696c0c0365d4":[9,3,2,39,0], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7a9e81bdc586dcd0ad0ac55d7eb22d57":[11,0,1,26,11,19], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a6416355bf6ab20b66d8e696c0c0365d4":[11,0,1,26,11,0], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7a9e81bdc586dcd0ad0ac55d7eb22d57":[9,3,2,39,19], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7a9e81bdc586dcd0ad0ac55d7eb22d57":[11,0,1,26,11,19], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7b1c76870bd5e8007ac466afaf98c8a0":[11,0,1,26,11,20], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7b1c76870bd5e8007ac466afaf98c8a0":[9,3,2,39,20], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7be772227d82e13e8f9796de0b8fcff8":[9,3,2,39,7], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a7be772227d82e13e8f9796de0b8fcff8":[11,0,1,26,11,7], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a8a77a963e1c3d97de67fb8378cd6aff0":[9,3,2,39,21], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a8a77a963e1c3d97de67fb8378cd6aff0":[11,0,1,26,11,21], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aa1a229f0f99239603af2c14327fdbfb3":[11,0,1,26,11,10], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6a8a77a963e1c3d97de67fb8378cd6aff0":[9,3,2,39,21], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aa1a229f0f99239603af2c14327fdbfb3":[9,3,2,39,10], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aa1a229f0f99239603af2c14327fdbfb3":[11,0,1,26,11,10], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ab55523e66d922526461960ff28c99f75":[11,0,1,26,11,8], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ab55523e66d922526461960ff28c99f75":[9,3,2,39,8], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ab572e50f27435ba69174fcd76e7ad842":[11,0,1,26,11,30], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ab572e50f27435ba69174fcd76e7ad842":[9,3,2,39,30], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ab572e50f27435ba69174fcd76e7ad842":[11,0,1,26,11,30], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aba7068cc8c6499b195703b203c17e9c0":[11,0,1,26,11,23], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aba7068cc8c6499b195703b203c17e9c0":[9,3,2,39,23], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac1365953494c59243bd55a653390c4f9":[11,0,1,26,11,18], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac1365953494c59243bd55a653390c4f9":[9,3,2,39,18], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac1365953494c59243bd55a653390c4f9":[11,0,1,26,11,18], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac20a865208e713d17b8f9a1cf2beb958":[9,3,2,39,11], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac20a865208e713d17b8f9a1cf2beb958":[11,0,1,26,11,11], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac2385b0f4a9f0c766fcffdd7b41dbc70":[9,3,2,39,15], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac2385b0f4a9f0c766fcffdd7b41dbc70":[11,0,1,26,11,15], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac2385b0f4a9f0c766fcffdd7b41dbc70":[9,3,2,39,15], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac7de646f2aab4a785f3511020588152e":[9,3,2,39,17], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac7de646f2aab4a785f3511020588152e":[11,0,1,26,11,17], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ac9eaa98679e05cfdf860ad6749f2b342":[11,0,1,26,11,12], @@ -235,19 +235,19 @@ var NAVTREEINDEX3 = "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6ae75d106dc1c2e82f16dad8ea95471eac":[11,0,1,26,11,3], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aeb5e3fe69530eb117dbc8bbce0c35f15":[9,3,2,39,24], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aeb5e3fe69530eb117dbc8bbce0c35f15":[11,0,1,26,11,24], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aec48e5d0a28cd67ca9e1751c9d149fea":[9,3,2,39,25], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aec48e5d0a28cd67ca9e1751c9d149fea":[11,0,1,26,11,25], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aeeb1463a0d0534befcd7d68f40569221":[11,0,1,26,11,16], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aec48e5d0a28cd67ca9e1751c9d149fea":[9,3,2,39,25], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aeeb1463a0d0534befcd7d68f40569221":[9,3,2,39,16], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aeeb1463a0d0534befcd7d68f40569221":[11,0,1,26,11,16], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aef3e5bab8dd337aca48bd0208d8f9c8d":[11,0,1,26,11,9], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6aef3e5bab8dd337aca48bd0208d8f9c8d":[9,3,2,39,9], -"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6af38f7b1e0f2ebbcbb8bbaa38759ed3d1":[11,0,1,26,11,1], "_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6af38f7b1e0f2ebbcbb8bbaa38759ed3d1":[9,3,2,39,1], -"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1a6f1c186b9e3967fbe634e253f127187c":[11,0,1,26,9,0], +"_n_m_e_a2000_std_types_8h.html#ga59a823dcb7456fe7bad874bf971e1bd6af38f7b1e0f2ebbcbb8bbaa38759ed3d1":[11,0,1,26,11,1], "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1a6f1c186b9e3967fbe634e253f127187c":[9,3,2,37,0], +"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1a6f1c186b9e3967fbe634e253f127187c":[11,0,1,26,9,0], "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1adb3c9d048ec7fb2592df867c089eae74":[9,3,2,37,3], "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1adb3c9d048ec7fb2592df867c089eae74":[11,0,1,26,9,3], "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1af185b628ab9c2b8b313d8e06b2df9ab8":[9,3,2,37,2], "_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1af185b628ab9c2b8b313d8e06b2df9ab8":[11,0,1,26,9,2], -"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1aff80811073a9253ecf1efb19e3aec349":[11,0,1,26,9,1] +"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1aff80811073a9253ecf1efb19e3aec349":[9,3,2,37,1] }; diff --git a/navtreeindex4.js b/navtreeindex4.js index 533866ef..a8cc35cc 100644 --- a/navtreeindex4.js +++ b/navtreeindex4.js @@ -1,30 +1,30 @@ var NAVTREEINDEX4 = { -"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1aff80811073a9253ecf1efb19e3aec349":[9,3,2,37,1], +"_n_m_e_a2000_std_types_8h.html#ga618c24960fcbfb338c5d29ef034c5cc1aff80811073a9253ecf1efb19e3aec349":[11,0,1,26,9,1], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a3b631c99e61c1acb5ad613edc0994484":[9,3,2,36,1], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a3b631c99e61c1acb5ad613edc0994484":[11,0,1,26,8,1], -"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a6b59751d2541b51e859300c42324c639":[11,0,1,26,8,2], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a6b59751d2541b51e859300c42324c639":[9,3,2,36,2], -"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a7415ea0098368e606231e806d3fd9173":[11,0,1,26,8,3], +"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a6b59751d2541b51e859300c42324c639":[11,0,1,26,8,2], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a7415ea0098368e606231e806d3fd9173":[9,3,2,36,3], +"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a7415ea0098368e606231e806d3fd9173":[11,0,1,26,8,3], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a777a8d17ae9c19b89d8bb68df2d9baac":[9,3,2,36,6], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a777a8d17ae9c19b89d8bb68df2d9baac":[11,0,1,26,8,6], -"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a811945aca9990be3bb30556faeb12700":[9,3,2,36,0], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a811945aca9990be3bb30556faeb12700":[11,0,1,26,8,0], +"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a811945aca9990be3bb30556faeb12700":[9,3,2,36,0], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a882d4f86a476d3341b45d5f88b58b8b0":[11,0,1,26,8,4], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028a882d4f86a476d3341b45d5f88b58b8b0":[9,3,2,36,4], -"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028af751878d8d1195439b5103789b0fd656":[11,0,1,26,8,5], "_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028af751878d8d1195439b5103789b0fd656":[9,3,2,36,5], +"_n_m_e_a2000_std_types_8h.html#ga64396d290128543a10f29a721f629028af751878d8d1195439b5103789b0fd656":[11,0,1,26,8,5], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a64f13b92002e65862e9f25910b64bcc2":[11,0,1,26,19,2], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a64f13b92002e65862e9f25910b64bcc2":[9,3,2,47,2], -"_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a673b0ab6b20f2025b363163a13fb6418":[9,3,2,47,1], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a673b0ab6b20f2025b363163a13fb6418":[11,0,1,26,19,1], +"_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a673b0ab6b20f2025b363163a13fb6418":[9,3,2,47,1], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a81bbbe4237e3e7024a735db5ae75206d":[11,0,1,26,19,3], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7a81bbbe4237e3e7024a735db5ae75206d":[9,3,2,47,3], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7aac8d734e94dda14bd30dbfeca1971d52":[11,0,1,26,19,4], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7aac8d734e94dda14bd30dbfeca1971d52":[9,3,2,47,4], -"_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7aed30005c69e08f66a13e6acf775b05ea":[9,3,2,47,0], "_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7aed30005c69e08f66a13e6acf775b05ea":[11,0,1,26,19,0], +"_n_m_e_a2000_std_types_8h.html#ga7f9a43c81c4e5bfa3dd645f545926ea7aed30005c69e08f66a13e6acf775b05ea":[9,3,2,47,0], "_n_m_e_a2000_std_types_8h.html#ga806e3e52f1b9e5b5e068ab8b767294baa444b1a2814255e719e09353af11fcc5e":[9,3,2,41,0], "_n_m_e_a2000_std_types_8h.html#ga806e3e52f1b9e5b5e068ab8b767294baa444b1a2814255e719e09353af11fcc5e":[11,0,1,26,13,0], "_n_m_e_a2000_std_types_8h.html#ga806e3e52f1b9e5b5e068ab8b767294baa66d89bd7ce38a5cfe34444cbf2e84970":[11,0,1,26,13,1], @@ -39,60 +39,60 @@ var NAVTREEINDEX4 = "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a3d2540761b1315e30750619dfc95bf11":[11,0,1,26,12,0], "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a3dcac87d57da691f46d2d95e61ab5e7c":[9,3,2,40,4], "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a3dcac87d57da691f46d2d95e61ab5e7c":[11,0,1,26,12,4], -"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a6f57bf9beee1e1823b69bfa145456fad":[11,0,1,26,12,5], "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a6f57bf9beee1e1823b69bfa145456fad":[9,3,2,40,5], -"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884aa3fe9395c8b2a09d985fe6251fea4db2":[11,0,1,26,12,2], +"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884a6f57bf9beee1e1823b69bfa145456fad":[11,0,1,26,12,5], "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884aa3fe9395c8b2a09d985fe6251fea4db2":[9,3,2,40,2], -"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884ae0ab510e8de15fed7cd1feaf68aba9ea":[11,0,1,26,12,3], +"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884aa3fe9395c8b2a09d985fe6251fea4db2":[11,0,1,26,12,2], "_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884ae0ab510e8de15fed7cd1feaf68aba9ea":[9,3,2,40,3], +"_n_m_e_a2000_std_types_8h.html#ga851033c0988bb1f058836950f92a3884ae0ab510e8de15fed7cd1feaf68aba9ea":[11,0,1,26,12,3], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a0e504a045954233c29b56f3be3af6ed2":[9,3,2,35,4], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a0e504a045954233c29b56f3be3af6ed2":[11,0,1,26,7,4], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a12a35f91cec00f1e13409049752c142b":[11,0,1,26,7,0], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a12a35f91cec00f1e13409049752c142b":[9,3,2,35,0], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a12a35f91cec00f1e13409049752c142b":[11,0,1,26,7,0], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a1c8e2e346d3b4bd164c98ff4b22fcbe3":[11,0,1,26,7,11], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a1c8e2e346d3b4bd164c98ff4b22fcbe3":[9,3,2,35,11], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a25db69ec04335fd67db4c0dcfb627da8":[11,0,1,26,7,10], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a25db69ec04335fd67db4c0dcfb627da8":[9,3,2,35,10], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a3b4aa2233b25a2c911e268947ca2225b":[11,0,1,26,7,7], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a25db69ec04335fd67db4c0dcfb627da8":[11,0,1,26,7,10], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a3b4aa2233b25a2c911e268947ca2225b":[9,3,2,35,7], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a3b4aa2233b25a2c911e268947ca2225b":[11,0,1,26,7,7], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a3b6429425d105b7875a07d74ec79d3f1":[11,0,1,26,7,8], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a3b6429425d105b7875a07d74ec79d3f1":[9,3,2,35,8], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a655381adf00fb618bd606d7a78b42555":[11,0,1,26,7,12], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a655381adf00fb618bd606d7a78b42555":[9,3,2,35,12], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a6f85a92a37281fba9413bb5d382a98b3":[9,3,2,35,2], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a655381adf00fb618bd606d7a78b42555":[11,0,1,26,7,12], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a6f85a92a37281fba9413bb5d382a98b3":[11,0,1,26,7,2], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4ab97bc9d5a4a58bc912a50dcd026607ae":[9,3,2,35,6], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4a6f85a92a37281fba9413bb5d382a98b3":[9,3,2,35,2], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4ab97bc9d5a4a58bc912a50dcd026607ae":[11,0,1,26,7,6], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4abf329172e8566e31fe6a63698fa6c15f":[9,3,2,35,3], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4ab97bc9d5a4a58bc912a50dcd026607ae":[9,3,2,35,6], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4abf329172e8566e31fe6a63698fa6c15f":[11,0,1,26,7,3], -"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4aca4f6edc9ed7c4dbf2a2f56cf74f4ebb":[9,3,2,35,5], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4abf329172e8566e31fe6a63698fa6c15f":[9,3,2,35,3], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4aca4f6edc9ed7c4dbf2a2f56cf74f4ebb":[11,0,1,26,7,5], +"_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4aca4f6edc9ed7c4dbf2a2f56cf74f4ebb":[9,3,2,35,5], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4ad49f59479e2a38cf98997e815464228a":[9,3,2,35,1], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4ad49f59479e2a38cf98997e815464228a":[11,0,1,26,7,1], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4af73b3d7632fcdf383d5e7e78febe64c7":[9,3,2,35,9], "_n_m_e_a2000_std_types_8h.html#ga9b3af1938b0500dabdd11de87fa577d4af73b3d7632fcdf383d5e7e78febe64c7":[11,0,1,26,7,9], "_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a19a7b58f7404ad214cc18b152e0a1f1b":[11,0,1,26,20,3], "_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a19a7b58f7404ad214cc18b152e0a1f1b":[9,3,2,48,3], -"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a3c82b7e50efd9290d533e8a1d73a8c97":[11,0,1,26,20,2], "_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a3c82b7e50efd9290d533e8a1d73a8c97":[9,3,2,48,2], -"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a75cd69279bbe32a359724a749fd20516":[11,0,1,26,20,1], +"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a3c82b7e50efd9290d533e8a1d73a8c97":[11,0,1,26,20,2], "_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a75cd69279bbe32a359724a749fd20516":[9,3,2,48,1], -"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a8d38c912744bcb47c8d8e51879a63429":[9,3,2,48,0], +"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a75cd69279bbe32a359724a749fd20516":[11,0,1,26,20,1], "_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a8d38c912744bcb47c8d8e51879a63429":[11,0,1,26,20,0], +"_n_m_e_a2000_std_types_8h.html#gad29092cc71c83d37eebd0e5c6994c353a8d38c912744bcb47c8d8e51879a63429":[9,3,2,48,0], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36a766cd0fdb76a68cb500fada1b48b2fca":[9,3,2,43,3], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36a766cd0fdb76a68cb500fada1b48b2fca":[11,0,1,26,15,3], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36ab556ead74b5dc9ca400a2dbb1ad8eaac":[9,3,2,43,1], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36ab556ead74b5dc9ca400a2dbb1ad8eaac":[11,0,1,26,15,1], -"_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36aefe1219d7701f0cf04c9e458d67528da":[9,3,2,43,0], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36aefe1219d7701f0cf04c9e458d67528da":[11,0,1,26,15,0], -"_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36af33047b7a0b49824d94ac2a1db108458":[9,3,2,43,2], +"_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36aefe1219d7701f0cf04c9e458d67528da":[9,3,2,43,0], "_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36af33047b7a0b49824d94ac2a1db108458":[11,0,1,26,15,2], -"_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a2e60112349f521e9aff4ee5986f7347a":[9,3,2,46,0], +"_n_m_e_a2000_std_types_8h.html#gae12f69d3e7352ea6a531314ea0cc8d36af33047b7a0b49824d94ac2a1db108458":[9,3,2,43,2], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a2e60112349f521e9aff4ee5986f7347a":[11,0,1,26,18,0], +"_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a2e60112349f521e9aff4ee5986f7347a":[9,3,2,46,0], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a53e2d9af9152c080c03573992a2cd2f8":[9,3,2,46,3], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a53e2d9af9152c080c03573992a2cd2f8":[11,0,1,26,18,3], -"_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a7e92f3dcd29bd20a4d459113bff65c8f":[9,3,2,46,1], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a7e92f3dcd29bd20a4d459113bff65c8f":[11,0,1,26,18,1], +"_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31a7e92f3dcd29bd20a4d459113bff65c8f":[9,3,2,46,1], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31ad53e116ce5d01b5d4c5d8edd5038a3f6":[11,0,1,26,18,2], "_n_m_e_a2000_std_types_8h.html#gaf338271ac220b2b8f5594caf6ce70a31ad53e116ce5d01b5d4c5d8edd5038a3f6":[9,3,2,46,2], "_n_m_e_a2000_std_types_8h_source.html":[11,0,1,26], @@ -222,6 +222,7 @@ var NAVTREEINDEX4 = "changes.html#autotoc_md271":[7,101], "changes.html#autotoc_md272":[7,102], "changes.html#autotoc_md273":[7,103], +"changes.html#autotoc_md274":[7,104], "class_n2k_stream.html":[9,1,0], "class_n2k_stream.html#a2503a1f5f20e00837c56608343d56543":[9,1,0,0], "class_n2k_stream.html#a68843a7f04d65175515057777ea0adc2":[9,1,0,5], @@ -248,6 +249,5 @@ var NAVTREEINDEX4 = "classt_actisense_reader.html#ac8dd6305e0e490d4a5db6096300fe78a":[9,2,0,14], "classt_actisense_reader.html#ad1bac81fdc3d11308bde1660eb10edaf":[9,2,0,17], "classt_actisense_reader.html#ad4b67f887f3f5045220548107f6bb361":[9,2,0,2], -"classt_actisense_reader.html#ae1d7d55c931d15af44e036e392791da2":[9,2,0,16], -"classt_actisense_reader.html#ae68b15c17cff1dbf77ec8f42f381f317":[9,2,0,19] +"classt_actisense_reader.html#ae1d7d55c931d15af44e036e392791da2":[9,2,0,16] }; diff --git a/navtreeindex5.js b/navtreeindex5.js index 997c3a69..0c9df755 100644 --- a/navtreeindex5.js +++ b/navtreeindex5.js @@ -1,5 +1,6 @@ var NAVTREEINDEX5 = { +"classt_actisense_reader.html#ae68b15c17cff1dbf77ec8f42f381f317":[9,2,0,19], "classt_actisense_reader.html#aee2d7ad88a2b2ff4dd4ad1e614210251":[9,2,0,15], "classt_actisense_reader.html#af4c0bdf677e93ba527d3e48123f884b1":[9,2,0,18], "classt_n2k_c_a_n_msg.html":[9,0,0], @@ -248,6 +249,5 @@ var NAVTREEINDEX5 = "classt_n2k_sync_scheduler.html#ab923d917020ed62b3debdee4e788a473":[10,0,21,3], "classt_n2k_sync_scheduler.html#ab9325db87f77258a87d109e66378ea4d":[10,0,21,4], "classt_n2k_sync_scheduler.html#abb7a77a00739baac72ed2d53833d9ef6":[10,0,21,13], -"classt_n2k_sync_scheduler.html#ae631faca16a9be1cffd6379ad3107c7c":[10,0,21,0], -"classt_n2k_sync_scheduler.html#ae7da88a074cd3a946c4716c7fc1f4c74":[10,0,21,1] +"classt_n2k_sync_scheduler.html#ae631faca16a9be1cffd6379ad3107c7c":[10,0,21,0] }; diff --git a/navtreeindex6.js b/navtreeindex6.js index da80d5ce..a088f764 100644 --- a/navtreeindex6.js +++ b/navtreeindex6.js @@ -1,5 +1,6 @@ var NAVTREEINDEX6 = { +"classt_n2k_sync_scheduler.html#ae7da88a074cd3a946c4716c7fc1f4c74":[10,0,21,1], "classt_n_m_e_a2000.html":[9,0,2], "classt_n_m_e_a2000.html#a012062d5380745b7d1c0ef9e53d576b5":[9,0,2,109], "classt_n_m_e_a2000.html#a036fe26544030720e760c305f1405b7b":[9,0,2,74], @@ -248,6 +249,5 @@ var NAVTREEINDEX6 = "classt_n_m_e_a2000_1_1t_device_information.html#add89d904f296935bc54138cc18e6dec7":[9,0,2,3,19], "classt_n_m_e_a2000_1_1t_device_information.html#aeeb02545cbf3942ee32fd6e9989d4569":[9,0,2,3,1], "classt_n_m_e_a2000_1_1t_internal_device.html":[9,0,2,4], -"classt_n_m_e_a2000_1_1t_internal_device.html#a08cf97fc8d7bb983287ad78fecd61532":[9,0,2,4,10], -"classt_n_m_e_a2000_1_1t_internal_device.html#a18098ca4225f60058438817f9931925f":[9,0,2,4,5] +"classt_n_m_e_a2000_1_1t_internal_device.html#a08cf97fc8d7bb983287ad78fecd61532":[9,0,2,4,10] }; diff --git a/navtreeindex7.js b/navtreeindex7.js index 01dc96c7..362c6e00 100644 --- a/navtreeindex7.js +++ b/navtreeindex7.js @@ -1,5 +1,6 @@ var NAVTREEINDEX7 = { +"classt_n_m_e_a2000_1_1t_internal_device.html#a18098ca4225f60058438817f9931925f":[9,0,2,4,5], "classt_n_m_e_a2000_1_1t_internal_device.html#a22baadc9df75443f9f09bea257473bb6":[9,0,2,4,15], "classt_n_m_e_a2000_1_1t_internal_device.html#a259aefdd0c07c27dd33ffdfeccb108c6":[9,0,2,4,30], "classt_n_m_e_a2000_1_1t_internal_device.html#a2b188e0d0f8a072309493c5ffe25a13b":[9,0,2,4,25], @@ -39,23 +40,24 @@ var NAVTREEINDEX7 = "classt_n_m_e_a2000_1_1t_msg_handler.html#a97e7c5481cdf674f2129613dbe4b5e2f":[9,0,2,5,2], "classt_n_m_e_a2000_1_1t_msg_handler.html#aec153066b8bd6bbac3319122ea332fac":[9,0,2,5,4], "classt_priority_ring_buffer.html":[9,1,7], -"classt_priority_ring_buffer.html#a14bc06e70f0bd20a4ecb60a20596aa67":[9,1,7,12], -"classt_priority_ring_buffer.html#a176f87590c1b2075c2ef35073b193655":[9,1,7,17], -"classt_priority_ring_buffer.html#a194d5c6c9fccb4c383253a7f58551c64":[9,1,7,18], +"classt_priority_ring_buffer.html#a14bc06e70f0bd20a4ecb60a20596aa67":[9,1,7,13], +"classt_priority_ring_buffer.html#a176f87590c1b2075c2ef35073b193655":[9,1,7,18], +"classt_priority_ring_buffer.html#a194d5c6c9fccb4c383253a7f58551c64":[9,1,7,19], "classt_priority_ring_buffer.html#a1c861c4858577e9ae5ca0961f785514d":[9,1,7,5], -"classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a":[9,1,7,11], -"classt_priority_ring_buffer.html#a2aa5f3d42750f9cade1040c22f4a2f9b":[9,1,7,16], +"classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a":[9,1,7,12], +"classt_priority_ring_buffer.html#a2aa5f3d42750f9cade1040c22f4a2f9b":[9,1,7,17], "classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986":[9,1,7,6], -"classt_priority_ring_buffer.html#a2f6c7d613e12a9d701a95964e07c58a8":[9,1,7,14], +"classt_priority_ring_buffer.html#a2f6c7d613e12a9d701a95964e07c58a8":[9,1,7,15], "classt_priority_ring_buffer.html#a79e0618b34273d48d0adaaa161002943":[9,1,7,3], "classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0":[9,1,7,7], "classt_priority_ring_buffer.html#a9d65a6f051f8e9d452be8ef56ff96b49":[9,1,7,4], "classt_priority_ring_buffer.html#aaac14529cd5845d9968af93ea5c075fb":[9,1,7,8], -"classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d":[9,1,7,10], -"classt_priority_ring_buffer.html#ab77e3bb17aa319701151169b6540275a":[9,1,7,19], -"classt_priority_ring_buffer.html#ad093ee83069f37270124dc331707fa3a":[9,1,7,15], -"classt_priority_ring_buffer.html#ad36d7714ee7d96ca7d3e2a1d167dc8ff":[9,1,7,13], -"classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226":[9,1,7,9], +"classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d":[9,1,7,11], +"classt_priority_ring_buffer.html#ab77e3bb17aa319701151169b6540275a":[9,1,7,20], +"classt_priority_ring_buffer.html#ac96cbedf4ae5f450f4abc71c2544c8c6":[9,1,7,9], +"classt_priority_ring_buffer.html#ad093ee83069f37270124dc331707fa3a":[9,1,7,16], +"classt_priority_ring_buffer.html#ad36d7714ee7d96ca7d3e2a1d167dc8ff":[9,1,7,14], +"classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226":[9,1,7,10], "classt_priority_ring_buffer.html#af1bf7c6b0f703a64fa71a999e1873115":[9,1,7,2], "classt_ring_buffer.html":[9,1,8], "classt_ring_buffer.html#a0394394ef1e515f5410309c0cd637669":[9,1,8,7], @@ -79,8 +81,8 @@ var NAVTREEINDEX7 = "dir_83e5851bc933ad505eb1bb0e7fa3c4ba.html":[11,0,0,2], "dir_f091ad9ef23c717da7afa7e4cea33370.html":[11,0,0,1], "files.html":[11,0], -"functions.html":[10,3,0], "functions.html":[10,3,0,0], +"functions.html":[10,3,0], "functions_b.html":[10,3,0,1], "functions_c.html":[10,3,0,2], "functions_d.html":[10,3,0,3], @@ -125,8 +127,8 @@ var NAVTREEINDEX7 = "functions_t.html":[10,3,0,18], "functions_u.html":[10,3,0,19], "functions_v.html":[10,3,0,20], -"functions_vars.html":[10,3,2,0], "functions_vars.html":[10,3,2], +"functions_vars.html":[10,3,2,0], "functions_vars_b.html":[10,3,2,1], "functions_vars_c.html":[10,3,2,2], "functions_vars_d.html":[10,3,2,3], @@ -247,7 +249,5 @@ var NAVTREEINDEX7 = "group__group__msg_parsers.html#ga174bf4e659f80789db377b290433ad99":[9,3,0,69], "group__group__msg_parsers.html#ga18f6969c8da3da57a6740feda66f4d4f":[9,3,0,66], "group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9":[9,3,0,74], -"group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2":[9,3,0,39], -"group__group__msg_parsers.html#ga1f8fb868e329076f651588d4c666b647":[9,3,0,15], -"group__group__msg_parsers.html#ga2044470893e2341b8f757bad5fbe4cc2":[9,3,0,67] +"group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2":[9,3,0,39] }; diff --git a/navtreeindex8.js b/navtreeindex8.js index e2d21fcd..1ddaa827 100644 --- a/navtreeindex8.js +++ b/navtreeindex8.js @@ -1,5 +1,7 @@ var NAVTREEINDEX8 = { +"group__group__msg_parsers.html#ga1f8fb868e329076f651588d4c666b647":[9,3,0,15], +"group__group__msg_parsers.html#ga2044470893e2341b8f757bad5fbe4cc2":[9,3,0,67], "group__group__msg_parsers.html#ga21589bc7f863312f1a98274f6115d1c8":[9,3,0,10], "group__group__msg_parsers.html#ga225cec518a369cea4bff4e1edd72a42b":[9,3,0,64], "group__group__msg_parsers.html#ga22de3f7bedc38d2a2467100475dad794":[9,3,0,106], @@ -45,7 +47,6 @@ var NAVTREEINDEX8 = "group__group__msg_parsers.html#ga7d06946d5d821d68ebdc1b249fe8e983":[9,3,0,26], "group__group__msg_parsers.html#ga7e7f323fa2a47d9d951cc57b2f5f46b0":[9,3,0,32], "group__group__msg_parsers.html#ga7f4974bf6486b778a8022ccfe3fcb5ec":[9,3,0,23], -"group__group__msg_parsers.html#ga80ba7520f2adbcb00c29c457c8734c5a":[9,3,0,38], "group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab":[9,3,0,76], "group__group__msg_parsers.html#ga8120a6e187d266f80cf624355b42a5a0":[9,3,0,16], "group__group__msg_parsers.html#ga823a92e4ac25ca2f7433198d8041f1b4":[9,3,0,41], @@ -65,12 +66,13 @@ var NAVTREEINDEX8 = "group__group__msg_parsers.html#ga93afed30c03278896cfcc829fe949ad5":[9,3,0,3], "group__group__msg_parsers.html#ga9513dd76009ea44eb09041862c1a5d7b":[9,3,0,112], "group__group__msg_parsers.html#ga96aaf91c99a9a9a6a8514a4862c6029f":[9,3,0,92], +"group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3":[9,3,0,77], "group__group__msg_parsers.html#ga9823503bcbb68aa015ecc056f5be74be":[9,3,0,53], "group__group__msg_parsers.html#ga9a1d705d0d5d0706a1c24659e98ea291":[9,3,0,71], "group__group__msg_parsers.html#ga9c4c18fbe1d2e7a69b8ce0c3258a8ad5":[9,3,0,24], "group__group__msg_parsers.html#ga9d8e625789a861b110353c230134ffd7":[9,3,0,63], "group__group__msg_parsers.html#gaa0f92417cdf87dd324e064703841f525":[9,3,0,8], -"group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48":[9,3,0,77], +"group__group__msg_parsers.html#gaa317ce136342611a1e964d13c9a36250":[9,3,0,38], "group__group__msg_parsers.html#gaa99413ca32356dea2d0a5d7620fc3ec6":[9,3,0,33], "group__group__msg_parsers.html#gaaa5ebe5f666cdf57401c2eda5d7d5dc1":[9,3,0,60], "group__group__msg_parsers.html#gaaadc96fd7fd3b4ccc942704c103d444a":[9,3,0,56], @@ -101,6 +103,7 @@ var NAVTREEINDEX8 = "group__group__msg_parsers.html#gaff8be7f1277b66078ee16a21a248982f":[9,3,0,2], "group__group__msg_set_up.html":[9,3,1], "group__group__msg_set_up.html#ga01f06b3a4a17509dd212f6be981da680":[9,3,1,28], +"group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362":[9,3,1,84], "group__group__msg_set_up.html#ga03d1d171164b18cb03031a86deac6b6c":[9,3,1,57], "group__group__msg_set_up.html#ga05cdd4fa3c946475f0cb07c2d4fcac77":[9,3,1,50], "group__group__msg_set_up.html#ga06ab61f68627318df8a2a063d4d584fd":[9,3,1,105], @@ -111,6 +114,7 @@ var NAVTREEINDEX8 = "group__group__msg_set_up.html#ga1154976263cc389dec079ba86d039797":[9,3,1,63], "group__group__msg_set_up.html#ga1299bda7ab160bc23e6093f2d95149c4":[9,3,1,23], "group__group__msg_set_up.html#ga16b4cf5864e5a3748b4068c0fc521bb1":[9,3,1,78], +"group__group__msg_set_up.html#ga1b3f15b9d6b0dabb6e1c1d7eb2ffe297":[9,3,1,45], "group__group__msg_set_up.html#ga207216b8d42656ca8c00d53cf774fd9e":[9,3,1,14], "group__group__msg_set_up.html#ga26c3aaa27a4781ee97c35ee021c8d7fe":[9,3,1,36], "group__group__msg_set_up.html#ga28c071fd9eb5030eccd26afacd2dc7d2":[9,3,1,53], @@ -155,7 +159,6 @@ var NAVTREEINDEX8 = "group__group__msg_set_up.html#ga81d28f3032e1bf0dd9e0bbeb923e5f6f":[9,3,1,61], "group__group__msg_set_up.html#ga83322312439c3230305d232c788008da":[9,3,1,26], "group__group__msg_set_up.html#ga854211cd421da9de14615fc5aaa5ec95":[9,3,1,51], -"group__group__msg_set_up.html#ga91c729a2e3f2e16484c5d2646de7b9d3":[9,3,1,45], "group__group__msg_set_up.html#ga959eb9eaad2fba38f216ebf465970a7a":[9,3,1,67], "group__group__msg_set_up.html#ga96d16a01e7d797c575e6e1598ae50c9c":[9,3,1,44], "group__group__msg_set_up.html#ga97171f3b70545bba581338d914704771":[9,3,1,32], @@ -219,7 +222,6 @@ var NAVTREEINDEX8 = "group__group__msg_set_up.html#gaf3dcc1aab2d59d4022041a9d3b66b7fd":[9,3,1,117], "group__group__msg_set_up.html#gaf726b26f963a32367a20758a0fb7286f":[9,3,1,40], "group__group__msg_set_up.html#gaf7c275a53527206e9802af493f56e9e4":[9,3,1,12], -"group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54":[9,3,1,84], "group__group__msg_set_up.html#gaf931949ad6801a94d87590e9fb54d5f3":[9,3,1,111], "group__group__msg_types.html":[9,3,2], "group__group__msg_types.html#ga02c7a0305cd371219c5756503b7b4433":[9,3,2,49], @@ -247,7 +249,5 @@ var NAVTREEINDEX8 = "group__group__msg_types.html#ga5d4d08a6e1a5c19215dac98773275320":[9,3,2,68], "group__group__msg_types.html#ga5fcffca6251703ba7b7101b4f3107cc1":[9,3,2,2], "group__group__msg_types.html#ga60a7fbbb637e2eed35ca0014458e4466":[9,3,2,34], -"group__group__msg_types.html#ga618c24960fcbfb338c5d29ef034c5cc1":[9,3,2,37], -"group__group__msg_types.html#ga64396d290128543a10f29a721f629028":[9,3,2,36], -"group__group__msg_types.html#ga6dabae21fc4a6b2f22a328332139580c":[9,3,2,57] +"group__group__msg_types.html#ga618c24960fcbfb338c5d29ef034c5cc1":[9,3,2,37] }; diff --git a/navtreeindex9.js b/navtreeindex9.js index 061bd171..81faa421 100644 --- a/navtreeindex9.js +++ b/navtreeindex9.js @@ -1,5 +1,7 @@ var NAVTREEINDEX9 = { +"group__group__msg_types.html#ga64396d290128543a10f29a721f629028":[9,3,2,36], +"group__group__msg_types.html#ga6dabae21fc4a6b2f22a328332139580c":[9,3,2,57], "group__group__msg_types.html#ga6f360c10d61b4c8559979a1a447222f0":[9,3,2,69], "group__group__msg_types.html#ga6faddb97b85e2205c3c76a561b48de8b":[9,3,2,61], "group__group__msg_types.html#ga77554985279196101d310d532ca76304":[9,3,2,11], @@ -247,7 +249,5 @@ var NAVTREEINDEX9 = "uniont_n2k_d_d223.html#a4acca9bfe8376bcc20994913c8f592c9":[10,0,5,5], "uniont_n2k_d_d223.html#a4cfc4ded766738f5c539dc0bb8a9594d":[10,0,5,19], "uniont_n2k_d_d223.html#a547387475db75b0fe1a783002ac1d5dd":[10,0,5,18], -"uniont_n2k_d_d223.html#a6b9b065f28da5843b7ef29d8012acaa2":[10,0,5,9], -"uniont_n2k_d_d223.html#a6e35bedda20551749b9bd401fcfc39c8":[10,0,5,14], -"uniont_n2k_d_d223.html#acf234d744eaf9bdf5b1c914292be48e5":[10,0,5,1] +"uniont_n2k_d_d223.html#a6b9b065f28da5843b7ef29d8012acaa2":[10,0,5,9] }; diff --git a/pg_lib_ref.html b/pg_lib_ref.html index 6928f301..2a133a7b 100644 --- a/pg_lib_ref.html +++ b/pg_lib_ref.html @@ -208,7 +208,7 @@

                      and comment line

                      tNMEA2000 & NMEA2000
                      Definition: NMEA2000_CAN.h:350
                      -
                      void EnableForward(bool v=true)
                      Enable message forwarding to stream.
                      Definition: NMEA2000.h:2887
                      +
                      void EnableForward(bool v=true)
                      Enable message forwarding to stream.
                      Definition: NMEA2000.h:2900

                      within setup() function.

                      So as you see, you do not need to know much about tN2kMsg to use it. It is simple container.

                      Note
                      There are functions SetN2k130312 and inline function SetN2kTemperature, which simply calls SetN2kPGN130312. This makes code easier to read (I hope), since you do not need to see PGN numbers there. But it’s your choice, which function you will use.
                      @@ -690,9 +690,9 @@

                      void SendN2kTemperature()
                      void setup()
                      void loop()
                      -
                      void ParseMessages()
                      Parse all incoming Messages.
                      Definition: NMEA2000.cpp:2562
                      +
                      void ParseMessages()
                      Parse all incoming Messages.
                      Definition: NMEA2000.cpp:2577
                      @ N2km_NodeOnly
                      Definition: NMEA2000.h:695
                      -
                      bool ReadResetAddressChanged()
                      Check if this device has changed its address.
                      Definition: NMEA2000.cpp:2481
                      +
                      bool ReadResetAddressChanged()
                      Check if this device has changed its address.
                      Definition: NMEA2000.cpp:2496


                      tNMEA2000::ExtendTransmitMessages

                      Extend the list of Transmitted Messages. Define list of extra PGNs, what your system will transmit. System messages will be automatically included. Pointers must be in PROGMEM

                      @@ -701,7 +701,7 @@

                      #define PROGMEM
                      Definition: N2kDef.h:45
                      const unsigned long TransmitMessages[]
                      -
                      void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
                      Extend the list of Transmitted Messages.
                      Definition: NMEA2000.cpp:1149
                      +
                      void ExtendTransmitMessages(const unsigned long *_TransmitMessages, int iDev=0)
                      Extend the list of Transmitted Messages.
                      Definition: NMEA2000.cpp:1163

                      Library responds automatically to PGN 126464 request about transmit or receive messages. With this function you extend library list of messages your device own logic sends.

                      Note
                      Extending transmit messages is required for NMEA2000 certification, may be also critical since some devices refuces to handle PGNs from devices, which does not list them on transmit messages.

                      This has only effect for device modes tNMEA2000::N2km_NodeOnly and tNMEA2000::N2km_ListenAndNode.

                      @@ -719,7 +719,7 @@

                      const unsigned ReceivedMessages[] PROGMEM={130310L,130311L,130312L,0};
                      NMEA2000.ExtendReceiveMessages(ReceivedMessages);
                      -
                      void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
                      Extend the list of Received Messages.
                      Definition: NMEA2000.cpp:1156
                      +
                      void ExtendReceiveMessages(const unsigned long *_ReceiveMessages, int iDev=0)
                      Extend the list of Received Messages.
                      Definition: NMEA2000.cpp:1170

                      Library responds automatically to PGN 126464 request about transmit or receive messages. With this function you extend library list of messages your device own logic listens.

                      Note
                      Extending receive messages is required for NMEA2000 certification.

                      This has only effect for device modes tNMEA2000::N2km_NodeOnly and tNMEA2000::N2km_ListenAndNode.

                      @@ -733,6 +733,7 @@


                      tNMEA2000::SetOnOpen

                      Set OnOpen callback function. OnOpen will be called, when communication really opens and starts initial address claiming. You can use this to init your message sending to syncronize them with e.g., heartbeat.

                      +
                      Note
                      In future OnOpen may be called several times, if communication will be reopened by Restart or driver error. Developer must take care that possible memory initializations will be handled properly in case OnOpen is called several times.

                      tNMEA2000::SendMsg

                      Send message to the NMEA2000 bus. Call this to send message to NMEA2000 bus. Before calling SendMsg() you have to prepare tN2kMsg type of message e.g. by using PGN specific function in N2kMessages.h.
                      @@ -1034,13 +1035,14 @@

                      This is automatically used by class. You only need to use this, if you want to write your own behavior for providing configuration information.


                      tNMEA2000::SetHeartbeatIntervalAndOffset
                      -

                      Set the Heartbeat Interval and Offset for a device. According to document NMEA Heartbeat Corrigendum all NMEA devices shall transmit heartbeat PGN 126993. With this function you can set transmission interval in ms (range 1000-655320ms , default 60000). Set <1000 to disable it. You can temporally change interval by setting SetAsDefault parameter to false. Then you can restore default interval with interval parameter value 0xfffffffe

                      +

                      Set the Heartbeat Interval and Offset for a device. Library will automatically start heartbeat with default interval 60 s and offset 10 s.

                      +

                      According to document NMEA Heartbeat Corrigendum all NMEA devices shall transmit heartbeat PGN 126993. With this function you can set transmission interval in ms (range 1000-655320ms , default 60000). Set interval 0 to disable heartbeat

                      Function allows to set interval over 60 s or 0 to disable sending for test purposes.

                      Parameters
                      - - - + + +
                      intervalHeartbeat Interval in ms
                      offsetHeartbeat Offset in ms
                      iDevindex of the device on Devices
                      intervalHeartbeat Interval in ms. 0xffffffff=keep current, 0xfffffffe=restore default
                      offsetHeartbeat Offset in ms. 0xffffffff=keep current, 0xfffffffe=restore default
                      iDevIndex of the device on Devices or -1 to set for all.
                      @@ -1053,7 +1055,12 @@

                      -
                      Returns
                      uint_32 -> Device heartbeat interval in ms
                      +
                      Return values
                      + + +
                      uint_32Device heartbeat interval in ms
                      +
                      +

                      tNMEA2000::SendHeartbeat

                      Library will automatically send heartbeat, if interval is >0. You can also manually send it any time or force sent, if interval=0;

                      diff --git a/search/all_15.js b/search/all_15.js index bbe1e0b0..7f41c812 100644 --- a/search/all_15.js +++ b/search/all_15.js @@ -43,7 +43,7 @@ var searchData= ['parsen2kmaretrontripvolume_40',['ParseN2kMaretronTripVolume',['../_n2k_maretron_8h.html#a0660b8f3c882c33e3013328638303b1c',1,'N2kMaretron.h']]], ['parsen2kmeteorlogicalstationdata_41',['ParseN2kMeteorlogicalStationData',['../group__group__msg_parsers.html#ga6eaf27ccf78506df754fa017b7952a6c',1,'N2kMessages.h']]], ['parsen2kmobnotification_42',['ParseN2kMOBNotification',['../group__group__msg_parsers.html#ga7510cf2dcd3c5e2f881145d9ee8e3924',1,'N2kMessages.h']]], - ['parsen2knavigationinfo_43',['ParseN2kNavigationInfo',['../group__group__msg_parsers.html#ga80ba7520f2adbcb00c29c457c8734c5a',1,'N2kMessages.h']]], + ['parsen2knavigationinfo_43',['ParseN2kNavigationInfo',['../group__group__msg_parsers.html#gaa317ce136342611a1e964d13c9a36250',1,'N2kMessages.h']]], ['parsen2koutsideenvironmentalparameters_44',['ParseN2kOutsideEnvironmentalParameters',['../group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2',1,'N2kMessages.h']]], ['parsen2kpgn126992_45',['ParseN2kPGN126992',['../group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d',1,'ParseN2kPGN126992(const tN2kMsg &N2kMsg, unsigned char &SID, uint16_t &SystemDate, double &SystemTime, tN2kTimeSource &TimeSource): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d',1,'ParseN2kPGN126992(const tN2kMsg &N2kMsg, unsigned char &SID, uint16_t &SystemDate, double &SystemTime, tN2kTimeSource &TimeSource): N2kMessages.cpp']]], ['parsen2kpgn126996_46',['ParseN2kPGN126996',['../_n_m_e_a2000_8cpp.html#a4110ca1a5bf9efa63fdd7ea895866d7e',1,'ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency): NMEA2000.cpp'],['../_n_m_e_a2000_8h.html#a4110ca1a5bf9efa63fdd7ea895866d7e',1,'ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency): NMEA2000.cpp']]], @@ -82,7 +82,7 @@ var searchData= ['parsen2kpgn129039_79',['ParseN2kPGN129039',['../group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9',1,'ParseN2kPGN129039(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, double &Latitude, double &Longitude, bool &Accuracy, bool &RAIM, uint8_t &Seconds, double &COG, double &SOG, tN2kAISTransceiverInformation &AISTransceiverInformation, double &Heading, tN2kAISUnit &Unit, bool &Display, bool &DSC, bool &Band, bool &Msg22, tN2kAISMode &Mode, bool &State): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9',1,'ParseN2kPGN129039(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, double &Latitude, double &Longitude, bool &Accuracy, bool &RAIM, uint8_t &Seconds, double &COG, double &SOG, tN2kAISTransceiverInformation &AISTransceiverInformation, double &Heading, tN2kAISUnit &Unit, bool &Display, bool &DSC, bool &Band, bool &Msg22, tN2kAISMode &Mode, bool &State): N2kMessages.cpp']]], ['parsen2kpgn129041_80',['ParseN2kPGN129041',['../group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877',1,'ParseN2kPGN129041(const tN2kMsg &N2kMsg, tN2kAISAtoNReportData &N2kData): N2kMessages.cpp'],['../group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877',1,'ParseN2kPGN129041(const tN2kMsg &N2kMsg, tN2kAISAtoNReportData &N2kData): N2kMessages.cpp']]], ['parsen2kpgn129283_81',['ParseN2kPGN129283',['../group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab',1,'ParseN2kPGN129283(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab',1,'ParseN2kPGN129283(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE): N2kMessages.cpp']]], - ['parsen2kpgn129284_82',['ParseN2kPGN129284',['../group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp']]], + ['parsen2kpgn129284_82',['ParseN2kPGN129284',['../group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp']]], ['parsen2kpgn129539_83',['ParseN2kPgn129539',['../group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf',1,'ParseN2kPgn129539(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf',1,'ParseN2kPgn129539(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP): N2kMessages.cpp']]], ['parsen2kpgn129540_84',['ParseN2kPGN129540',['../group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kRangeResidualMode &Mode, uint8_t &NumberOfSVs): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, uint8_t SVIndex, tSatelliteInfo &SatelliteInfo): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kRangeResidualMode &Mode, uint8_t &NumberOfSVs): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, uint8_t SVIndex, tSatelliteInfo &SatelliteInfo): N2kMessages.cpp']]], ['parsen2kpgn129794_85',['ParseN2kPGN129794',['../group__group__msg_parsers.html#ga0466b88325e5d6440221f868b6dff8ec',1,'ParseN2kPGN129794(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint32_t &IMOnumber, char *Callsign, char *Name, uint8_t &VesselType, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint16_t &ETAdate, double &ETAtime, double &Draught, char *Destination, tN2kAISVersion &AISversion, tN2kGNSStype &GNSStype, tN2kAISDTE &DTE, tN2kAISTransceiverInformation &AISinfo): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga0466b88325e5d6440221f868b6dff8ec',1,'ParseN2kPGN129794(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint32_t &IMOnumber, char *Callsign, char *Name, uint8_t &VesselType, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint16_t &ETAdate, double &ETAtime, double &Draught, char *Destination, tN2kAISVersion &AISversion, tN2kGNSStype &GNSStype, tN2kAISDTE &DTE, tN2kAISTransceiverInformation &AISinfo): N2kMessages.cpp']]], @@ -149,8 +149,8 @@ var searchData= ['printn2kenumtype_146',['PrintN2kEnumType',['../_n2k_messages_enum_to_str_8h.html#ad9f28ddab7c08db270fbf0cec785a98b',1,'N2kMessagesEnumToStr.h']]], ['printtext_147',['PrintText',['../_device_analyzer_8ino.html#ab76400fc70ea175f539f37fd65ea0ec1',1,'DeviceAnalyzer.ino']]], ['printulonglist_148',['PrintUlongList',['../_device_analyzer_8ino.html#a97c92ffaa6a878948f1296e72647fad6',1,'DeviceAnalyzer.ino']]], - ['priority_149',['Priority',['../classt_n2k_msg.html#a7645bd9aec82bc0263d421cb307852e4',1,'tN2kMsg']]], - ['priority_150',['priority',['../structt_priority_ring_buffer_1_1t_value_slot.html#ae7eaed46a1952118e6a219d25ad35367',1,'tPriorityRingBuffer::tValueSlot']]], + ['priority_149',['priority',['../structt_priority_ring_buffer_1_1t_value_slot.html#ae7eaed46a1952118e6a219d25ad35367',1,'tPriorityRingBuffer::tValueSlot']]], + ['priority_150',['Priority',['../classt_n2k_msg.html#a7645bd9aec82bc0263d421cb307852e4',1,'tN2kMsg']]], ['priorityreferencies_151',['priorityReferencies',['../classt_priority_ring_buffer.html#a176f87590c1b2075c2ef35073b193655',1,'tPriorityRingBuffer']]], ['prn_152',['PRN',['../structt_satellite_info.html#aa680b10f730bf3402673708a8e447c2f',1,'tSatelliteInfo']]], ['prodi_153',['ProdI',['../classt_n2k_device_list_1_1t_internal_device.html#acdeb4f0637df08624c13ef20fb1eac1c',1,'tN2kDeviceList::tInternalDevice']]], diff --git a/search/all_18.js b/search/all_18.js index 5afdd3ad..fdfeeb6e 100644 --- a/search/all_18.js +++ b/search/all_18.js @@ -126,7 +126,7 @@ var searchData= ['setn2kmaretrontripvolume_123',['SetN2kMaretronTripVolume',['../_n2k_maretron_8h.html#a6575776aa6a568968bc2b441b7b4ad65',1,'N2kMaretron.h']]], ['setn2kmeteorlogicalstationdata_124',['SetN2kMeteorlogicalStationData',['../group__group__msg_set_up.html#ga4052813ff407b4ef9689a186d04d3a28',1,'N2kMessages.h']]], ['setn2kmobnotification_125',['SetN2kMOBNotification',['../group__group__msg_set_up.html#ga96d16a01e7d797c575e6e1598ae50c9c',1,'N2kMessages.h']]], - ['setn2knavigationinfo_126',['SetN2kNavigationInfo',['../group__group__msg_set_up.html#ga91c729a2e3f2e16484c5d2646de7b9d3',1,'N2kMessages.h']]], + ['setn2knavigationinfo_126',['SetN2kNavigationInfo',['../group__group__msg_set_up.html#ga1b3f15b9d6b0dabb6e1c1d7eb2ffe297',1,'N2kMessages.h']]], ['setn2koutsideenvironmentalparameters_127',['SetN2kOutsideEnvironmentalParameters',['../group__group__msg_set_up.html#ga3586af539282bfc244944c444495f105',1,'N2kMessages.h']]], ['setn2kpgn126464_128',['SetN2kPGN126464',['../_n_m_e_a2000_8cpp.html#a6758abf82bbde509d0bb8879b492d9ae',1,'SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs): NMEA2000.cpp'],['../_n_m_e_a2000_8h.html#a6758abf82bbde509d0bb8879b492d9ae',1,'SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs): NMEA2000.cpp']]], ['setn2kpgn126992_129',['SetN2kPGN126992',['../group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573',1,'SetN2kPGN126992(tN2kMsg &N2kMsg, unsigned char SID, uint16_t SystemDate, double SystemTime, tN2kTimeSource TimeSource=N2ktimes_GPS): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573',1,'SetN2kPGN126992(tN2kMsg &N2kMsg, unsigned char SID, uint16_t SystemDate, double SystemTime, tN2kTimeSource TimeSource): N2kMessages.cpp']]], @@ -168,7 +168,7 @@ var searchData= ['setn2kpgn129039_165',['SetN2kPGN129039',['../group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808',1,'SetN2kPGN129039(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t UserID, double Latitude, double Longitude, bool Accuracy, bool RAIM, uint8_t Seconds, double COG, double SOG, tN2kAISTransceiverInformation AISTransceiverInformation, double Heading, tN2kAISUnit Unit, bool Display, bool DSC, bool Band, bool Msg22, tN2kAISMode Mode, bool State, unsigned char SID): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808',1,'SetN2kPGN129039(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t UserID, double Latitude, double Longitude, bool Accuracy, bool RAIM, uint8_t Seconds, double COG, double SOG, tN2kAISTransceiverInformation AISTransceiverInformation, double Heading, tN2kAISUnit Unit, bool Display, bool DSC, bool Band, bool Msg22, tN2kAISMode Mode, bool State, unsigned char SID=0xff): N2kMessages.cpp']]], ['setn2kpgn129041_166',['SetN2kPGN129041',['../group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053',1,'SetN2kPGN129041(tN2kMsg &N2kMsg, const tN2kAISAtoNReportData &N2kData): N2kMessages.cpp'],['../group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053',1,'SetN2kPGN129041(tN2kMsg &N2kMsg, const tN2kAISAtoNReportData &N2kData): N2kMessages.cpp']]], ['setn2kpgn129283_167',['SetN2kPGN129283',['../group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53',1,'SetN2kPGN129283(tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE): N2kMessages.cpp'],['../group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53',1,'SetN2kPGN129283(tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE): N2kMessages.cpp']]], - ['setn2kpgn129284_168',['SetN2kPGN129284',['../group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp']]], + ['setn2kpgn129284_168',['SetN2kPGN129284',['../group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp']]], ['setn2kpgn129285_169',['SetN2kPGN129285',['../group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, tN2kNavigationDirection NavDirection, const char *RouteName, tN2kGenericStatusPair SupplementaryData): N2kMessages.cpp'],['../group__group__msg_set_up.html#gae590b48d9bdcf6ac759ccc961fc26d73',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, bool NavDirection, bool SupplementaryData, char *RouteName): N2kMessages.h'],['../group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, tN2kNavigationDirection NavDirection, const char *RouteName, tN2kGenericStatusPair SupplementaryData=N2kDD002_No): N2kMessages.cpp']]], ['setn2kpgn129539_170',['SetN2kPGN129539',['../group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496',1,'SetN2kPGN129539(tN2kMsg &N2kMsg, unsigned char SID, tN2kGNSSDOPmode DesiredMode, tN2kGNSSDOPmode ActualMode, double HDOP, double VDOP, double TDOP): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496',1,'SetN2kPGN129539(tN2kMsg &N2kMsg, unsigned char SID, tN2kGNSSDOPmode DesiredMode, tN2kGNSSDOPmode ActualMode, double HDOP, double VDOP, double TDOP): N2kMessages.cpp']]], ['setn2kpgn129540_171',['SetN2kPGN129540',['../group__group__msg_set_up.html#ga0777897e14fe643f19afb53fd7114867',1,'SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID, tN2kRangeResidualMode Mode): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga0777897e14fe643f19afb53fd7114867',1,'SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID=0xff, tN2kRangeResidualMode Mode=N2kDD072_Unavailable): N2kMessages.cpp']]], diff --git a/search/all_9.js b/search/all_9.js index 959dba00..5314a54f 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -19,10 +19,10 @@ var searchData= ['checkknownmessage_16',['CheckKnownMessage',['../classt_n_m_e_a2000.html#a43e2de66d5bfdde92a14beba2879c234',1,'tNMEA2000']]], ['checkmessage_17',['CheckMessage',['../classt_actisense_reader.html#ad4b67f887f3f5045220548107f6bb361',1,'tActisenseReader']]], ['clean_18',['clean',['../classt_priority_ring_buffer.html#a1c861c4858577e9ae5ca0961f785514d',1,'tPriorityRingBuffer']]], - ['clear_19',['Clear',['../classt_n2k_msg.html#a97d5b6696759b5a0ae8f4788d4853f13',1,'tN2kMsg']]], - ['clear_20',['clear',['../classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986',1,'tPriorityRingBuffer::clear()'],['../structt_priority_ring_buffer_1_1t_priority_ref.html#a0dc273b3a2953ad470b7c774c7e5ba06',1,'tPriorityRingBuffer::tPriorityRef::clear()']]], - ['clear_21',['Clear',['../structt_n_m_e_a2000_1_1t_product_information.html#ac5f3a06a91547a869d710ee950bf7a91',1,'tNMEA2000::tProductInformation::Clear()'],['../classt_n_m_e_a2000_1_1t_c_a_n_send_frame.html#af26a85c34e32b74806437d8bd489316c',1,'tNMEA2000::tCANSendFrame::Clear()']]], - ['clear_22',['clear',['../classt_ring_buffer.html#ac50c6a140affd5d01cabea7b0e347a52',1,'tRingBuffer']]], + ['clear_19',['clear',['../classt_ring_buffer.html#ac50c6a140affd5d01cabea7b0e347a52',1,'tRingBuffer']]], + ['clear_20',['Clear',['../classt_n_m_e_a2000_1_1t_c_a_n_send_frame.html#af26a85c34e32b74806437d8bd489316c',1,'tNMEA2000::tCANSendFrame::Clear()'],['../structt_n_m_e_a2000_1_1t_product_information.html#ac5f3a06a91547a869d710ee950bf7a91',1,'tNMEA2000::tProductInformation::Clear()']]], + ['clear_21',['clear',['../structt_priority_ring_buffer_1_1t_priority_ref.html#a0dc273b3a2953ad470b7c774c7e5ba06',1,'tPriorityRingBuffer::tPriorityRef::clear()'],['../classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986',1,'tPriorityRingBuffer::clear()']]], + ['clear_22',['Clear',['../classt_n2k_msg.html#a97d5b6696759b5a0ae8f4788d4853f13',1,'tN2kMsg']]], ['clearbuffer_23',['ClearBuffer',['../classt_actisense_reader.html#abab06ffc7dd4499b5059bb413b797b2a',1,'tActisenseReader']]], ['clearcharbuf_24',['ClearCharBuf',['../classt_n_m_e_a2000.html#a16adf8c5fbb7bd64865dda04c2fc4576',1,'tNMEA2000']]], ['clearconfigurationinformationloaded_25',['ClearConfigurationInformationLoaded',['../classt_n2k_device_list_1_1t_internal_device.html#a0d4f2f07dc8a5d75ca8b3e2c6ad0d8cc',1,'tN2kDeviceList::tInternalDevice']]], @@ -46,8 +46,8 @@ var searchData= ['copyprogmemconfigurationinformationtolocal_43',['CopyProgmemConfigurationInformationToLocal',['../classt_n_m_e_a2000.html#ae98acb667695dc2b5dbb65721a1f217d',1,'tNMEA2000']]], ['copyprogmemstring_44',['CopyProgmemString',['../_n_m_e_a2000_8cpp.html#ad642d761f60d509c69bb47b85d1a9c69',1,'NMEA2000.cpp']]], ['coulombtoah_45',['CoulombToAh',['../_n2k_messages_8h.html#aa14ad9b5b95319be715db097454771ae',1,'N2kMessages.h']]], - ['count_46',['Count',['../classt_n2k_device_list.html#a4f523fb8f2e032d4426c78270bd40b99',1,'tN2kDeviceList']]], - ['count_47',['count',['../classt_ring_buffer.html#a4daf53062a32f57678d73bf1cd201378',1,'tRingBuffer::count()'],['../classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0',1,'tPriorityRingBuffer::count()']]], + ['count_46',['count',['../classt_ring_buffer.html#a4daf53062a32f57678d73bf1cd201378',1,'tRingBuffer::count()'],['../classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0',1,'tPriorityRingBuffer::count()']]], + ['count_47',['Count',['../classt_n2k_device_list.html#a4f523fb8f2e032d4426c78270bd40b99',1,'tN2kDeviceList']]], ['createtime_48',['CreateTime',['../classt_n_m_e_a2000_1_1t_device.html#a9a46a63b6e08ffc6c132acbf67b4524e',1,'tNMEA2000::tDevice']]], ['ctokelvin_49',['CToKelvin',['../_n2k_messages_8h.html#a186587bc824ba3b8e9997c652cdcfb74',1,'N2kMessages.h']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 53d5d8bb..14ebcfc6 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -37,9 +37,9 @@ var searchData= ['getdeviceclass_34',['GetDeviceClass',['../classt_n_m_e_a2000_1_1t_device_information.html#acba2e23e3f008c0e55bf178ce482f747',1,'tNMEA2000::tDeviceInformation::GetDeviceClass()'],['../classt_n_m_e_a2000_1_1t_device.html#aefcc0b3553e1cc43bf368731e13e1079',1,'tNMEA2000::tDevice::GetDeviceClass()']]], ['getdevicefunction_35',['GetDeviceFunction',['../classt_n_m_e_a2000_1_1t_device_information.html#aa442e11242a5f4fe074f1ea6fe957b13',1,'tNMEA2000::tDeviceInformation::GetDeviceFunction()'],['../classt_n_m_e_a2000_1_1t_device.html#ad165c504704e92e371948e18be2b5495',1,'tNMEA2000::tDevice::GetDeviceFunction()']]], ['getdeviceinformation_36',['GetDeviceInformation',['../classt_n_m_e_a2000.html#a254973b61424c1303c6f3c38dcabe9aa',1,'tNMEA2000']]], - ['getdeviceinstance_37',['GetDeviceInstance',['../classt_n_m_e_a2000_1_1t_device.html#aa5b9676d34308dfad8f767469fdbbc68',1,'tNMEA2000::tDevice::GetDeviceInstance()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a3ea7ca9b93558b804a59e856963453d3',1,'tNMEA2000::tDeviceInformation::GetDeviceInstance() const']]], - ['getdeviceinstancelower_38',['GetDeviceInstanceLower',['../classt_n_m_e_a2000_1_1t_device_information.html#a59e4dae4d12e86f00b515f15af5367f7',1,'tNMEA2000::tDeviceInformation::GetDeviceInstanceLower()'],['../classt_n_m_e_a2000_1_1t_device.html#a741a22882e2a9aa48041ab429d177776',1,'tNMEA2000::tDevice::GetDeviceInstanceLower() const']]], - ['getdeviceinstanceupper_39',['GetDeviceInstanceUpper',['../classt_n_m_e_a2000_1_1t_device.html#a72f89c9e39504c98befd83deeee5f334',1,'tNMEA2000::tDevice::GetDeviceInstanceUpper()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a7704a97eab382bb95283683b9014494a',1,'tNMEA2000::tDeviceInformation::GetDeviceInstanceUpper()']]], + ['getdeviceinstance_37',['GetDeviceInstance',['../classt_n_m_e_a2000_1_1t_device_information.html#a3ea7ca9b93558b804a59e856963453d3',1,'tNMEA2000::tDeviceInformation::GetDeviceInstance()'],['../classt_n_m_e_a2000_1_1t_device.html#aa5b9676d34308dfad8f767469fdbbc68',1,'tNMEA2000::tDevice::GetDeviceInstance()']]], + ['getdeviceinstancelower_38',['GetDeviceInstanceLower',['../classt_n_m_e_a2000_1_1t_device_information.html#a59e4dae4d12e86f00b515f15af5367f7',1,'tNMEA2000::tDeviceInformation::GetDeviceInstanceLower()'],['../classt_n_m_e_a2000_1_1t_device.html#a741a22882e2a9aa48041ab429d177776',1,'tNMEA2000::tDevice::GetDeviceInstanceLower()']]], + ['getdeviceinstanceupper_39',['GetDeviceInstanceUpper',['../classt_n_m_e_a2000_1_1t_device_information.html#a7704a97eab382bb95283683b9014494a',1,'tNMEA2000::tDeviceInformation::GetDeviceInstanceUpper()'],['../classt_n_m_e_a2000_1_1t_device.html#a72f89c9e39504c98befd83deeee5f334',1,'tNMEA2000::tDevice::GetDeviceInstanceUpper()']]], ['getdevicelastmessagetime_40',['GetDeviceLastMessageTime',['../classt_n2k_device_list.html#a77d9d5437323e020db9eeebe5a10c4f5',1,'tN2kDeviceList']]], ['getfastpackettxpgncount_41',['GetFastPacketTxPGNCount',['../classt_n_m_e_a2000.html#a117e742342a9d11372dfa49d72649152',1,'tNMEA2000']]], ['getfloat_42',['GetFloat',['../classt_n2k_msg.html#a70132d59fe946911380ed599a5a3f74c',1,'tN2kMsg']]], @@ -48,42 +48,43 @@ var searchData= ['getheartbeatoffset_45',['GetHeartbeatOffset',['../classt_n_m_e_a2000.html#ad65991333961420ebd7f74d675e51ae7',1,'tNMEA2000']]], ['getindustrygroup_46',['GetIndustryGroup',['../classt_n_m_e_a2000_1_1t_device.html#a43e56bfcf814cd89901c6fbe988794e1',1,'tNMEA2000::tDevice::GetIndustryGroup()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a4d1ac420b837a6a76b81c93b4a032b61',1,'tNMEA2000::tDeviceInformation::GetIndustryGroup()']]], ['getinstallationdescription1_47',['GetInstallationDescription1',['../classt_n_m_e_a2000.html#a7db046fd7bc50a013a7931b1c3b0b0a5',1,'tNMEA2000::GetInstallationDescription1()'],['../classt_n_m_e_a2000_1_1t_device.html#af930a87a4677a81e4f569c96206b4b89',1,'tNMEA2000::tDevice::GetInstallationDescription1()'],['../classt_n2k_device_list_1_1t_internal_device.html#a9fc0d0115c2b496e3ba700cfc99e70c2',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription1()'],['../classt_n2k_device_list_1_1t_internal_device.html#a2a3982d295829d8e8cc6b0aa359bf48f',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription1() const']]], - ['getinstallationdescription2_48',['GetInstallationDescription2',['../classt_n_m_e_a2000.html#adefc5cb31bfa2f40e6b0145da501e366',1,'tNMEA2000::GetInstallationDescription2()'],['../classt_n2k_device_list_1_1t_internal_device.html#a3f64a4aca1ce493afee605846f08911e',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription2() const'],['../classt_n2k_device_list_1_1t_internal_device.html#a638f855c1bd6d3a0da2f5de0985f7c74',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription2()'],['../classt_n_m_e_a2000_1_1t_device.html#aea836ce82f96b61da09f1b3c2f1a0b13',1,'tNMEA2000::tDevice::GetInstallationDescription2()']]], + ['getinstallationdescription2_48',['GetInstallationDescription2',['../classt_n2k_device_list_1_1t_internal_device.html#a638f855c1bd6d3a0da2f5de0985f7c74',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription2()'],['../classt_n_m_e_a2000.html#adefc5cb31bfa2f40e6b0145da501e366',1,'tNMEA2000::GetInstallationDescription2()'],['../classt_n2k_device_list_1_1t_internal_device.html#a3f64a4aca1ce493afee605846f08911e',1,'tN2kDeviceList::tInternalDevice::GetInstallationDescription2()'],['../classt_n_m_e_a2000_1_1t_device.html#aea836ce82f96b61da09f1b3c2f1a0b13',1,'tNMEA2000::tDevice::GetInstallationDescription2()']]], ['getloadequivalency_49',['GetLoadEquivalency',['../classt_n_m_e_a2000.html#af247d8e3197a3b5cf9cd0138b87a6739',1,'tNMEA2000::GetLoadEquivalency()'],['../classt_n2k_device_list_1_1t_internal_device.html#a1534f42b7b6a8b1f43ecdf667273f771',1,'tN2kDeviceList::tInternalDevice::GetLoadEquivalency()'],['../classt_n_m_e_a2000_1_1t_device.html#ac87c58a692972bbf77c9f0668e798247',1,'tNMEA2000::tDevice::GetLoadEquivalency() const =0']]], ['getmanufacturercode_50',['GetManufacturerCode',['../classt_n_m_e_a2000_1_1t_device.html#a99d25a7d7e8c7406f65af4d01b44f8d3',1,'tNMEA2000::tDevice::GetManufacturerCode()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a076e1b7e8f17d6a731ac60482d2c27a2',1,'tNMEA2000::tDeviceInformation::GetManufacturerCode()']]], ['getmanufacturerinformation_51',['GetManufacturerInformation',['../classt_n_m_e_a2000.html#a5be60bd8f83488787a873d3978339456',1,'tNMEA2000::GetManufacturerInformation()'],['../classt_n_m_e_a2000_1_1t_device.html#a63ef1fc733d6fd0ac9db2a6f6ec30460',1,'tNMEA2000::tDevice::GetManufacturerInformation()'],['../classt_n2k_device_list_1_1t_internal_device.html#a5f8ea6da126cdf969296298a795713d0',1,'tN2kDeviceList::tInternalDevice::GetManufacturerInformation()'],['../classt_n2k_device_list_1_1t_internal_device.html#a69936e9a3b869e2c9618b0692a19c1b1',1,'tN2kDeviceList::tInternalDevice::GetManufacturerInformation() const']]], - ['getmessagefromstream_52',['GetMessageFromStream',['../classt_actisense_reader.html#a4d60abae0039ce1d23261c7a71385faa',1,'tActisenseReader']]], - ['getmodelid_53',['GetModelID',['../classt_n_m_e_a2000_1_1t_device.html#ab1d4cd9be08fc6013ae3b36363749adc',1,'tNMEA2000::tDevice::GetModelID()'],['../classt_n_m_e_a2000.html#ae91a9a99311f5e98f0fe2bee504a6c7b',1,'tNMEA2000::GetModelID()'],['../classt_n2k_device_list_1_1t_internal_device.html#aae4e5d67de31a637f55c7bcde7533a2a',1,'tN2kDeviceList::tInternalDevice::GetModelID()']]], - ['getmodelserialcode_54',['GetModelSerialCode',['../classt_n_m_e_a2000.html#ad06794366484cb4ea1a3ca70a69c4ef4',1,'tNMEA2000::GetModelSerialCode()'],['../classt_n_m_e_a2000_1_1t_device.html#abfed65174f87106a283eb32174262adc',1,'tNMEA2000::tDevice::GetModelSerialCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a6424a4e70c271499c4c193381f8113e6',1,'tN2kDeviceList::tInternalDevice::GetModelSerialCode()']]], - ['getmodelversion_55',['GetModelVersion',['../classt_n_m_e_a2000.html#aa90bab2a8b2822a75588f09fe0d824cc',1,'tNMEA2000::GetModelVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#a7ec9593aa1eab0687e9837e7ee46307e',1,'tNMEA2000::tDevice::GetModelVersion()'],['../classt_n2k_device_list_1_1t_internal_device.html#a4685d73dd5db48e12a45be7076598943',1,'tN2kDeviceList::tInternalDevice::GetModelVersion()']]], - ['getn2ksource_56',['GetN2kSource',['../classt_n_m_e_a2000.html#a7e56a37f568be6dc1862eee512ded770',1,'tNMEA2000']]], - ['getn2kversion_57',['GetN2kVersion',['../classt_n_m_e_a2000.html#ac307bcf4338a36597a39c2e175edc441',1,'tNMEA2000::GetN2kVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#ab5b04760d15370c3c133bf1cb65a0c2e',1,'tNMEA2000::tDevice::GetN2kVersion()'],['../classt_n2k_device_list_1_1t_internal_device.html#ae44033c55a66f44a80a37f0c2f9e22cb',1,'tN2kDeviceList::tInternalDevice::GetN2kVersion()']]], - ['getname_58',['GetName',['../classt_n_m_e_a2000_1_1t_device.html#a6e9c38c616b31d12f8f7e796d7f6fe77',1,'tNMEA2000::tDevice::GetName()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a2070692c90c6e0ce1d99be15e95cfa62',1,'tNMEA2000::tDeviceInformation::GetName()']]], - ['getnextaddress_59',['GetNextAddress',['../classt_n_m_e_a2000.html#af24a69ae45476c3593f411294ed92ac3',1,'tNMEA2000']]], - ['getnextfreecansendframe_60',['GetNextFreeCANSendFrame',['../classt_n_m_e_a2000.html#aa616f107303da1cce30e9ea27713105d',1,'tNMEA2000']]], - ['getnexttime_61',['GetNextTime',['../classt_n2k_sync_scheduler.html#a426652500aaec6c4250e9e0509bf5151',1,'tN2kSyncScheduler']]], - ['getnmea2000_62',['GetNMEA2000',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a97e7c5481cdf674f2129613dbe4b5e2f',1,'tNMEA2000::tMsgHandler']]], - ['getoffset_63',['GetOffset',['../classt_n2k_sync_scheduler.html#ab923d917020ed62b3debdee4e788a473',1,'tN2kSyncScheduler']]], - ['getperiod_64',['GetPeriod',['../classt_n2k_sync_scheduler.html#ab9325db87f77258a87d109e66378ea4d',1,'tN2kSyncScheduler']]], - ['getpgn_65',['GetPGN',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a0eb117b2f49250cc577ea3166c3df59f',1,'tNMEA2000::tMsgHandler']]], - ['getpgnforgroupfunction_66',['GetPGNForGroupFunction',['../classt_n2k_group_function_handler.html#a83a32d69380616320185314bde557f4e',1,'tN2kGroupFunctionHandler']]], - ['getproductcode_67',['GetProductCode',['../classt_n2k_device_list_1_1t_internal_device.html#a589f5e36a5d9fc81cdfb194d43bed77f',1,'tN2kDeviceList::tInternalDevice::GetProductCode()'],['../classt_n_m_e_a2000.html#ae30d8dd330642654e5faa83977937c88',1,'tNMEA2000::GetProductCode()'],['../classt_n_m_e_a2000_1_1t_device.html#a166c01963e98167bf0e465864f3e246f',1,'tNMEA2000::tDevice::GetProductCode()']]], - ['getproductinformation_68',['GetProductInformation',['../classt_n_m_e_a2000.html#aabf258d9383a9c08b0e5bfc96c70407e',1,'tNMEA2000']]], - ['getreadref_69',['getReadRef',['../classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226',1,'tPriorityRingBuffer::getReadRef(uint8_t *_priority=0)'],['../classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d',1,'tPriorityRingBuffer::getReadRef(uint8_t _priority)'],['../classt_ring_buffer.html#abdc058cbc237d9d23f61e8cd374c6b6f',1,'tRingBuffer::getReadRef()']]], - ['getreceivepgns_70',['GetReceivePGNs',['../classt_n_m_e_a2000_1_1t_device.html#a5a924436f0c8ef396553cfca2c8ee7e3',1,'tNMEA2000::tDevice::GetReceivePGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#a491180af32e63e0212accb29c292f6c9',1,'tN2kDeviceList::tInternalDevice::GetReceivePGNs()']]], - ['getremainingdatalength_71',['GetRemainingDataLength',['../classt_n2k_msg.html#a36af763fa7d6d3929c9bbea63a6a95d4',1,'tN2kMsg']]], - ['getrequestgroupfunctiontransmissionorpriorityerrorcode_72',['GetRequestGroupFunctionTransmissionOrPriorityErrorCode',['../classt_n2k_group_function_handler.html#ab25065d4fe7b0ace9252a09be88f42d6',1,'tN2kGroupFunctionHandler']]], - ['getsequencecounter_73',['GetSequenceCounter',['../classt_n_m_e_a2000.html#aab1127bebac5402479b34e2b1415aed3',1,'tNMEA2000']]], - ['getsize_74',['getSize',['../classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a',1,'tPriorityRingBuffer::getSize()'],['../classt_ring_buffer.html#a0394394ef1e515f5410309c0cd637669',1,'tRingBuffer::getSize()']]], - ['getsource_75',['GetSource',['../classt_n_m_e_a2000_1_1t_device.html#a15d0a76a0389dd4df915ddd99fffa81f',1,'tNMEA2000::tDevice']]], - ['getstr_76',['GetStr',['../classt_n2k_msg.html#a9024d8745b958feb6237325c50fc447b',1,'tN2kMsg::GetStr(size_t StrBufSize, char *StrBuf, size_t Length, unsigned char nulChar, int &Index) const'],['../classt_n2k_msg.html#ad862d140ed228b644bf33a46ddae3cbb',1,'tN2kMsg::GetStr(char *StrBuf, size_t Length, int &Index) const']]], - ['getswcode_77',['GetSwCode',['../classt_n_m_e_a2000_1_1t_device.html#aa713ace8e5060fae17b01fc20e3e2f4c',1,'tNMEA2000::tDevice::GetSwCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a2bc87ee4907243d4d9710995a3fc92c2',1,'tN2kDeviceList::tInternalDevice::GetSwCode()'],['../classt_n_m_e_a2000.html#ae4ca1e433eb4a1963afdf063786919c1',1,'tNMEA2000::GetSwCode()']]], - ['getsysteminstance_78',['GetSystemInstance',['../classt_n_m_e_a2000_1_1t_device_information.html#a45ea5cd4aadb46c7d418e43ebb08d489',1,'tNMEA2000::tDeviceInformation::GetSystemInstance()'],['../classt_n_m_e_a2000_1_1t_device.html#a64e146c6b85b2b87a60bb992e0e99d35',1,'tNMEA2000::tDevice::GetSystemInstance() const']]], - ['gettransmitpgns_79',['GetTransmitPGNs',['../classt_n_m_e_a2000_1_1t_device.html#a4708720c4cfe8fdba62ad720db5cff42',1,'tNMEA2000::tDevice::GetTransmitPGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#aaec8c080c6ba4c7bb552cbb46873fa2b',1,'tN2kDeviceList::tInternalDevice::GetTransmitPGNs()']]], - ['getuint64_80',['GetUInt64',['../classt_n2k_msg.html#aba773ee38ba53c94e0c9c25af80dd24a',1,'tN2kMsg']]], - ['getuniquenumber_81',['GetUniqueNumber',['../classt_n_m_e_a2000_1_1t_device.html#a92fad6f17a5987a6b80ecf5fc1808013',1,'tNMEA2000::tDevice::GetUniqueNumber()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a9d1129e7ea6e96da5f0c18b3966aca64',1,'tNMEA2000::tDeviceInformation::GetUniqueNumber()']]], - ['getvarstr_82',['GetVarStr',['../classt_n2k_msg.html#a2fa9d6983da6de6729568ab7f334d7ac',1,'tN2kMsg']]], - ['gnsstype_83',['GNSSType',['../structt_n2k_a_i_s_ato_n_report_data.html#a0cdd4b233cfbe7770e51e6ec663308d7',1,'tN2kAISAtoNReportData']]], - ['good_84',['Good',['../_n2k_types_8h.html#ga6dabae21fc4a6b2f22a328332139580caa9e10f610083e262e7aa4004c9b68fe9',1,'N2kTypes.h']]], - ['groupdef_2edox_85',['groupdef.dox',['../groupdef_8dox.html',1,'']]] + ['getmemsize_52',['getMemSize',['../classt_priority_ring_buffer.html#ac96cbedf4ae5f450f4abc71c2544c8c6',1,'tPriorityRingBuffer']]], + ['getmessagefromstream_53',['GetMessageFromStream',['../classt_actisense_reader.html#a4d60abae0039ce1d23261c7a71385faa',1,'tActisenseReader']]], + ['getmodelid_54',['GetModelID',['../classt_n_m_e_a2000_1_1t_device.html#ab1d4cd9be08fc6013ae3b36363749adc',1,'tNMEA2000::tDevice::GetModelID()'],['../classt_n_m_e_a2000.html#ae91a9a99311f5e98f0fe2bee504a6c7b',1,'tNMEA2000::GetModelID()'],['../classt_n2k_device_list_1_1t_internal_device.html#aae4e5d67de31a637f55c7bcde7533a2a',1,'tN2kDeviceList::tInternalDevice::GetModelID()']]], + ['getmodelserialcode_55',['GetModelSerialCode',['../classt_n_m_e_a2000.html#ad06794366484cb4ea1a3ca70a69c4ef4',1,'tNMEA2000::GetModelSerialCode()'],['../classt_n_m_e_a2000_1_1t_device.html#abfed65174f87106a283eb32174262adc',1,'tNMEA2000::tDevice::GetModelSerialCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a6424a4e70c271499c4c193381f8113e6',1,'tN2kDeviceList::tInternalDevice::GetModelSerialCode()']]], + ['getmodelversion_56',['GetModelVersion',['../classt_n_m_e_a2000.html#aa90bab2a8b2822a75588f09fe0d824cc',1,'tNMEA2000::GetModelVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#a7ec9593aa1eab0687e9837e7ee46307e',1,'tNMEA2000::tDevice::GetModelVersion()'],['../classt_n2k_device_list_1_1t_internal_device.html#a4685d73dd5db48e12a45be7076598943',1,'tN2kDeviceList::tInternalDevice::GetModelVersion()']]], + ['getn2ksource_57',['GetN2kSource',['../classt_n_m_e_a2000.html#a7e56a37f568be6dc1862eee512ded770',1,'tNMEA2000']]], + ['getn2kversion_58',['GetN2kVersion',['../classt_n_m_e_a2000.html#ac307bcf4338a36597a39c2e175edc441',1,'tNMEA2000::GetN2kVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#ab5b04760d15370c3c133bf1cb65a0c2e',1,'tNMEA2000::tDevice::GetN2kVersion()'],['../classt_n2k_device_list_1_1t_internal_device.html#ae44033c55a66f44a80a37f0c2f9e22cb',1,'tN2kDeviceList::tInternalDevice::GetN2kVersion()']]], + ['getname_59',['GetName',['../classt_n_m_e_a2000_1_1t_device_information.html#a2070692c90c6e0ce1d99be15e95cfa62',1,'tNMEA2000::tDeviceInformation::GetName()'],['../classt_n_m_e_a2000_1_1t_device.html#a6e9c38c616b31d12f8f7e796d7f6fe77',1,'tNMEA2000::tDevice::GetName()']]], + ['getnextaddress_60',['GetNextAddress',['../classt_n_m_e_a2000.html#af24a69ae45476c3593f411294ed92ac3',1,'tNMEA2000']]], + ['getnextfreecansendframe_61',['GetNextFreeCANSendFrame',['../classt_n_m_e_a2000.html#aa616f107303da1cce30e9ea27713105d',1,'tNMEA2000']]], + ['getnexttime_62',['GetNextTime',['../classt_n2k_sync_scheduler.html#a426652500aaec6c4250e9e0509bf5151',1,'tN2kSyncScheduler']]], + ['getnmea2000_63',['GetNMEA2000',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a97e7c5481cdf674f2129613dbe4b5e2f',1,'tNMEA2000::tMsgHandler']]], + ['getoffset_64',['GetOffset',['../classt_n2k_sync_scheduler.html#ab923d917020ed62b3debdee4e788a473',1,'tN2kSyncScheduler']]], + ['getperiod_65',['GetPeriod',['../classt_n2k_sync_scheduler.html#ab9325db87f77258a87d109e66378ea4d',1,'tN2kSyncScheduler']]], + ['getpgn_66',['GetPGN',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a0eb117b2f49250cc577ea3166c3df59f',1,'tNMEA2000::tMsgHandler']]], + ['getpgnforgroupfunction_67',['GetPGNForGroupFunction',['../classt_n2k_group_function_handler.html#a83a32d69380616320185314bde557f4e',1,'tN2kGroupFunctionHandler']]], + ['getproductcode_68',['GetProductCode',['../classt_n2k_device_list_1_1t_internal_device.html#a589f5e36a5d9fc81cdfb194d43bed77f',1,'tN2kDeviceList::tInternalDevice::GetProductCode()'],['../classt_n_m_e_a2000.html#ae30d8dd330642654e5faa83977937c88',1,'tNMEA2000::GetProductCode()'],['../classt_n_m_e_a2000_1_1t_device.html#a166c01963e98167bf0e465864f3e246f',1,'tNMEA2000::tDevice::GetProductCode()']]], + ['getproductinformation_69',['GetProductInformation',['../classt_n_m_e_a2000.html#aabf258d9383a9c08b0e5bfc96c70407e',1,'tNMEA2000']]], + ['getreadref_70',['getReadRef',['../classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226',1,'tPriorityRingBuffer::getReadRef(uint8_t *_priority=0)'],['../classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d',1,'tPriorityRingBuffer::getReadRef(uint8_t _priority)'],['../classt_ring_buffer.html#abdc058cbc237d9d23f61e8cd374c6b6f',1,'tRingBuffer::getReadRef()']]], + ['getreceivepgns_71',['GetReceivePGNs',['../classt_n_m_e_a2000_1_1t_device.html#a5a924436f0c8ef396553cfca2c8ee7e3',1,'tNMEA2000::tDevice::GetReceivePGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#a491180af32e63e0212accb29c292f6c9',1,'tN2kDeviceList::tInternalDevice::GetReceivePGNs()']]], + ['getremainingdatalength_72',['GetRemainingDataLength',['../classt_n2k_msg.html#a36af763fa7d6d3929c9bbea63a6a95d4',1,'tN2kMsg']]], + ['getrequestgroupfunctiontransmissionorpriorityerrorcode_73',['GetRequestGroupFunctionTransmissionOrPriorityErrorCode',['../classt_n2k_group_function_handler.html#ab25065d4fe7b0ace9252a09be88f42d6',1,'tN2kGroupFunctionHandler']]], + ['getsequencecounter_74',['GetSequenceCounter',['../classt_n_m_e_a2000.html#aab1127bebac5402479b34e2b1415aed3',1,'tNMEA2000']]], + ['getsize_75',['getSize',['../classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a',1,'tPriorityRingBuffer::getSize()'],['../classt_ring_buffer.html#a0394394ef1e515f5410309c0cd637669',1,'tRingBuffer::getSize()']]], + ['getsource_76',['GetSource',['../classt_n_m_e_a2000_1_1t_device.html#a15d0a76a0389dd4df915ddd99fffa81f',1,'tNMEA2000::tDevice']]], + ['getstr_77',['GetStr',['../classt_n2k_msg.html#a9024d8745b958feb6237325c50fc447b',1,'tN2kMsg::GetStr(size_t StrBufSize, char *StrBuf, size_t Length, unsigned char nulChar, int &Index) const'],['../classt_n2k_msg.html#ad862d140ed228b644bf33a46ddae3cbb',1,'tN2kMsg::GetStr(char *StrBuf, size_t Length, int &Index) const']]], + ['getswcode_78',['GetSwCode',['../classt_n_m_e_a2000_1_1t_device.html#aa713ace8e5060fae17b01fc20e3e2f4c',1,'tNMEA2000::tDevice::GetSwCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a2bc87ee4907243d4d9710995a3fc92c2',1,'tN2kDeviceList::tInternalDevice::GetSwCode()'],['../classt_n_m_e_a2000.html#ae4ca1e433eb4a1963afdf063786919c1',1,'tNMEA2000::GetSwCode()']]], + ['getsysteminstance_79',['GetSystemInstance',['../classt_n_m_e_a2000_1_1t_device_information.html#a45ea5cd4aadb46c7d418e43ebb08d489',1,'tNMEA2000::tDeviceInformation::GetSystemInstance()'],['../classt_n_m_e_a2000_1_1t_device.html#a64e146c6b85b2b87a60bb992e0e99d35',1,'tNMEA2000::tDevice::GetSystemInstance() const']]], + ['gettransmitpgns_80',['GetTransmitPGNs',['../classt_n_m_e_a2000_1_1t_device.html#a4708720c4cfe8fdba62ad720db5cff42',1,'tNMEA2000::tDevice::GetTransmitPGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#aaec8c080c6ba4c7bb552cbb46873fa2b',1,'tN2kDeviceList::tInternalDevice::GetTransmitPGNs()']]], + ['getuint64_81',['GetUInt64',['../classt_n2k_msg.html#aba773ee38ba53c94e0c9c25af80dd24a',1,'tN2kMsg']]], + ['getuniquenumber_82',['GetUniqueNumber',['../classt_n_m_e_a2000_1_1t_device.html#a92fad6f17a5987a6b80ecf5fc1808013',1,'tNMEA2000::tDevice::GetUniqueNumber()'],['../classt_n_m_e_a2000_1_1t_device_information.html#a9d1129e7ea6e96da5f0c18b3966aca64',1,'tNMEA2000::tDeviceInformation::GetUniqueNumber()']]], + ['getvarstr_83',['GetVarStr',['../classt_n2k_msg.html#a2fa9d6983da6de6729568ab7f334d7ac',1,'tN2kMsg']]], + ['gnsstype_84',['GNSSType',['../structt_n2k_a_i_s_ato_n_report_data.html#a0cdd4b233cfbe7770e51e6ec663308d7',1,'tN2kAISAtoNReportData']]], + ['good_85',['Good',['../_n2k_types_8h.html#ga6dabae21fc4a6b2f22a328332139580caa9e10f610083e262e7aa4004c9b68fe9',1,'N2kTypes.h']]], + ['groupdef_2edox_86',['groupdef.dox',['../groupdef_8dox.html',1,'']]] ]; diff --git a/search/functions_11.js b/search/functions_11.js index 58e5801d..6ec71a95 100644 --- a/search/functions_11.js +++ b/search/functions_11.js @@ -122,7 +122,7 @@ var searchData= ['setn2kmaretrontripvolume_119',['SetN2kMaretronTripVolume',['../_n2k_maretron_8h.html#a6575776aa6a568968bc2b441b7b4ad65',1,'N2kMaretron.h']]], ['setn2kmeteorlogicalstationdata_120',['SetN2kMeteorlogicalStationData',['../group__group__msg_set_up.html#ga4052813ff407b4ef9689a186d04d3a28',1,'N2kMessages.h']]], ['setn2kmobnotification_121',['SetN2kMOBNotification',['../group__group__msg_set_up.html#ga96d16a01e7d797c575e6e1598ae50c9c',1,'N2kMessages.h']]], - ['setn2knavigationinfo_122',['SetN2kNavigationInfo',['../group__group__msg_set_up.html#ga91c729a2e3f2e16484c5d2646de7b9d3',1,'N2kMessages.h']]], + ['setn2knavigationinfo_122',['SetN2kNavigationInfo',['../group__group__msg_set_up.html#ga1b3f15b9d6b0dabb6e1c1d7eb2ffe297',1,'N2kMessages.h']]], ['setn2koutsideenvironmentalparameters_123',['SetN2kOutsideEnvironmentalParameters',['../group__group__msg_set_up.html#ga3586af539282bfc244944c444495f105',1,'N2kMessages.h']]], ['setn2kpgn126464_124',['SetN2kPGN126464',['../_n_m_e_a2000_8cpp.html#a6758abf82bbde509d0bb8879b492d9ae',1,'SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs): NMEA2000.cpp'],['../_n_m_e_a2000_8h.html#a6758abf82bbde509d0bb8879b492d9ae',1,'SetN2kPGN126464(tN2kMsg &N2kMsg, uint8_t Destination, tN2kPGNList tr, const unsigned long *PGNs): NMEA2000.cpp']]], ['setn2kpgn126992_125',['SetN2kPGN126992',['../group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573',1,'SetN2kPGN126992(tN2kMsg &N2kMsg, unsigned char SID, uint16_t SystemDate, double SystemTime, tN2kTimeSource TimeSource): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga333ebc64cfa9725432c21a5001a46573',1,'SetN2kPGN126992(tN2kMsg &N2kMsg, unsigned char SID, uint16_t SystemDate, double SystemTime, tN2kTimeSource TimeSource=N2ktimes_GPS): N2kMessages.cpp']]], @@ -164,7 +164,7 @@ var searchData= ['setn2kpgn129039_161',['SetN2kPGN129039',['../group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808',1,'SetN2kPGN129039(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t UserID, double Latitude, double Longitude, bool Accuracy, bool RAIM, uint8_t Seconds, double COG, double SOG, tN2kAISTransceiverInformation AISTransceiverInformation, double Heading, tN2kAISUnit Unit, bool Display, bool DSC, bool Band, bool Msg22, tN2kAISMode Mode, bool State, unsigned char SID): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga4cb9ec1b12f6892a533d9c3ff1dfb808',1,'SetN2kPGN129039(tN2kMsg &N2kMsg, uint8_t MessageID, tN2kAISRepeat Repeat, uint32_t UserID, double Latitude, double Longitude, bool Accuracy, bool RAIM, uint8_t Seconds, double COG, double SOG, tN2kAISTransceiverInformation AISTransceiverInformation, double Heading, tN2kAISUnit Unit, bool Display, bool DSC, bool Band, bool Msg22, tN2kAISMode Mode, bool State, unsigned char SID=0xff): N2kMessages.cpp']]], ['setn2kpgn129041_162',['SetN2kPGN129041',['../group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053',1,'SetN2kPGN129041(tN2kMsg &N2kMsg, const tN2kAISAtoNReportData &N2kData): N2kMessages.cpp'],['../group__group__msg_set_up.html#gad37276fda23d6c050c0eafe04a6b9053',1,'SetN2kPGN129041(tN2kMsg &N2kMsg, const tN2kAISAtoNReportData &N2kData): N2kMessages.cpp']]], ['setn2kpgn129283_163',['SetN2kPGN129283',['../group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53',1,'SetN2kPGN129283(tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE): N2kMessages.cpp'],['../group__group__msg_set_up.html#gad6860148a966e80d1db34ea56b85db53',1,'SetN2kPGN129283(tN2kMsg &N2kMsg, unsigned char SID, tN2kXTEMode XTEMode, bool NavigationTerminated, double XTE): N2kMessages.cpp']]], - ['setn2kpgn129284_164',['SetN2kPGN129284',['../group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_set_up.html#gaf7e5f5c663afa028f30f895f50afba54',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp']]], + ['setn2kpgn129284_164',['SetN2kPGN129284',['../group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga03670e35a04501b5317bd4b32246a362',1,'SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference, bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType, double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint, uint32_t OriginWaypointNumber, uint32_t DestinationWaypointNumber, double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity): N2kMessages.cpp']]], ['setn2kpgn129285_165',['SetN2kPGN129285',['../group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, tN2kNavigationDirection NavDirection, const char *RouteName, tN2kGenericStatusPair SupplementaryData): N2kMessages.cpp'],['../group__group__msg_set_up.html#gaab20482cbb7555b03d2784429ffa234b',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, tN2kNavigationDirection NavDirection, const char *RouteName, tN2kGenericStatusPair SupplementaryData=N2kDD002_No): N2kMessages.cpp'],['../group__group__msg_set_up.html#gae590b48d9bdcf6ac759ccc961fc26d73',1,'SetN2kPGN129285(tN2kMsg &N2kMsg, uint16_t Start, uint16_t Database, uint16_t Route, bool NavDirection, bool SupplementaryData, char *RouteName): N2kMessages.h']]], ['setn2kpgn129539_166',['SetN2kPGN129539',['../group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496',1,'SetN2kPGN129539(tN2kMsg &N2kMsg, unsigned char SID, tN2kGNSSDOPmode DesiredMode, tN2kGNSSDOPmode ActualMode, double HDOP, double VDOP, double TDOP): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga526577486ab226a54890365cc4094496',1,'SetN2kPGN129539(tN2kMsg &N2kMsg, unsigned char SID, tN2kGNSSDOPmode DesiredMode, tN2kGNSSDOPmode ActualMode, double HDOP, double VDOP, double TDOP): N2kMessages.cpp']]], ['setn2kpgn129540_167',['SetN2kPGN129540',['../group__group__msg_set_up.html#ga0777897e14fe643f19afb53fd7114867',1,'SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID, tN2kRangeResidualMode Mode): N2kMessages.cpp'],['../group__group__msg_set_up.html#ga0777897e14fe643f19afb53fd7114867',1,'SetN2kPGN129540(tN2kMsg &N2kMsg, unsigned char SID=0xff, tN2kRangeResidualMode Mode=N2kDD072_Unavailable): N2kMessages.cpp']]], diff --git a/search/functions_2.js b/search/functions_2.js index 4e27fb4e..355ca8eb 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -11,9 +11,9 @@ var searchData= ['checkknownmessage_8',['CheckKnownMessage',['../classt_n_m_e_a2000.html#a43e2de66d5bfdde92a14beba2879c234',1,'tNMEA2000']]], ['checkmessage_9',['CheckMessage',['../classt_actisense_reader.html#ad4b67f887f3f5045220548107f6bb361',1,'tActisenseReader']]], ['clean_10',['clean',['../classt_priority_ring_buffer.html#a1c861c4858577e9ae5ca0961f785514d',1,'tPriorityRingBuffer']]], - ['clear_11',['Clear',['../classt_n_m_e_a2000_1_1t_c_a_n_send_frame.html#af26a85c34e32b74806437d8bd489316c',1,'tNMEA2000::tCANSendFrame']]], - ['clear_12',['clear',['../classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986',1,'tPriorityRingBuffer::clear()'],['../structt_priority_ring_buffer_1_1t_priority_ref.html#a0dc273b3a2953ad470b7c774c7e5ba06',1,'tPriorityRingBuffer::tPriorityRef::clear()'],['../classt_ring_buffer.html#ac50c6a140affd5d01cabea7b0e347a52',1,'tRingBuffer::clear()']]], - ['clear_13',['Clear',['../structt_n_m_e_a2000_1_1t_product_information.html#ac5f3a06a91547a869d710ee950bf7a91',1,'tNMEA2000::tProductInformation::Clear()'],['../classt_n2k_msg.html#a97d5b6696759b5a0ae8f4788d4853f13',1,'tN2kMsg::Clear()']]], + ['clear_11',['clear',['../classt_priority_ring_buffer.html#a2e667019d06a15ac8ddf8d732df61986',1,'tPriorityRingBuffer']]], + ['clear_12',['Clear',['../classt_n_m_e_a2000_1_1t_c_a_n_send_frame.html#af26a85c34e32b74806437d8bd489316c',1,'tNMEA2000::tCANSendFrame::Clear()'],['../structt_n_m_e_a2000_1_1t_product_information.html#ac5f3a06a91547a869d710ee950bf7a91',1,'tNMEA2000::tProductInformation::Clear()'],['../classt_n2k_msg.html#a97d5b6696759b5a0ae8f4788d4853f13',1,'tN2kMsg::Clear()']]], + ['clear_13',['clear',['../structt_priority_ring_buffer_1_1t_priority_ref.html#a0dc273b3a2953ad470b7c774c7e5ba06',1,'tPriorityRingBuffer::tPriorityRef::clear()'],['../classt_ring_buffer.html#ac50c6a140affd5d01cabea7b0e347a52',1,'tRingBuffer::clear()']]], ['clearbuffer_14',['ClearBuffer',['../classt_actisense_reader.html#abab06ffc7dd4499b5059bb413b797b2a',1,'tActisenseReader']]], ['clearcharbuf_15',['ClearCharBuf',['../classt_n_m_e_a2000.html#a16adf8c5fbb7bd64865dda04c2fc4576',1,'tNMEA2000']]], ['clearconfigurationinformationloaded_16',['ClearConfigurationInformationLoaded',['../classt_n2k_device_list_1_1t_internal_device.html#a0d4f2f07dc8a5d75ca8b3e2c6ad0d8cc',1,'tN2kDeviceList::tInternalDevice']]], @@ -28,7 +28,7 @@ var searchData= ['copyprogmemconfigurationinformationtolocal_25',['CopyProgmemConfigurationInformationToLocal',['../classt_n_m_e_a2000.html#ae98acb667695dc2b5dbb65721a1f217d',1,'tNMEA2000']]], ['copyprogmemstring_26',['CopyProgmemString',['../_n_m_e_a2000_8cpp.html#ad642d761f60d509c69bb47b85d1a9c69',1,'NMEA2000.cpp']]], ['coulombtoah_27',['CoulombToAh',['../_n2k_messages_8h.html#aa14ad9b5b95319be715db097454771ae',1,'N2kMessages.h']]], - ['count_28',['Count',['../classt_n2k_device_list.html#a4f523fb8f2e032d4426c78270bd40b99',1,'tN2kDeviceList']]], - ['count_29',['count',['../classt_ring_buffer.html#a4daf53062a32f57678d73bf1cd201378',1,'tRingBuffer::count()'],['../classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0',1,'tPriorityRingBuffer::count()']]], + ['count_28',['count',['../classt_ring_buffer.html#a4daf53062a32f57678d73bf1cd201378',1,'tRingBuffer::count()'],['../classt_priority_ring_buffer.html#a96125b81c3bf4289aee42606fb3ee5e0',1,'tPriorityRingBuffer::count()']]], + ['count_29',['Count',['../classt_n2k_device_list.html#a4f523fb8f2e032d4426c78270bd40b99',1,'tN2kDeviceList']]], ['ctokelvin_30',['CToKelvin',['../_n2k_messages_8h.html#a186587bc824ba3b8e9997c652cdcfb74',1,'N2kMessages.h']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index 2a15501a..f0a78b0d 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -51,35 +51,36 @@ var searchData= ['getloadequivalency_48',['GetLoadEquivalency',['../classt_n2k_device_list_1_1t_internal_device.html#a1534f42b7b6a8b1f43ecdf667273f771',1,'tN2kDeviceList::tInternalDevice::GetLoadEquivalency()'],['../classt_n_m_e_a2000_1_1t_device.html#ac87c58a692972bbf77c9f0668e798247',1,'tNMEA2000::tDevice::GetLoadEquivalency()'],['../classt_n_m_e_a2000.html#af247d8e3197a3b5cf9cd0138b87a6739',1,'tNMEA2000::GetLoadEquivalency()']]], ['getmanufacturercode_49',['GetManufacturerCode',['../classt_n_m_e_a2000_1_1t_device_information.html#a076e1b7e8f17d6a731ac60482d2c27a2',1,'tNMEA2000::tDeviceInformation::GetManufacturerCode()'],['../classt_n_m_e_a2000_1_1t_device.html#a99d25a7d7e8c7406f65af4d01b44f8d3',1,'tNMEA2000::tDevice::GetManufacturerCode()']]], ['getmanufacturerinformation_50',['GetManufacturerInformation',['../classt_n2k_device_list_1_1t_internal_device.html#a69936e9a3b869e2c9618b0692a19c1b1',1,'tN2kDeviceList::tInternalDevice::GetManufacturerInformation() const'],['../classt_n2k_device_list_1_1t_internal_device.html#a5f8ea6da126cdf969296298a795713d0',1,'tN2kDeviceList::tInternalDevice::GetManufacturerInformation()'],['../classt_n_m_e_a2000_1_1t_device.html#a63ef1fc733d6fd0ac9db2a6f6ec30460',1,'tNMEA2000::tDevice::GetManufacturerInformation()'],['../classt_n_m_e_a2000.html#a5be60bd8f83488787a873d3978339456',1,'tNMEA2000::GetManufacturerInformation()']]], - ['getmessagefromstream_51',['GetMessageFromStream',['../classt_actisense_reader.html#a4d60abae0039ce1d23261c7a71385faa',1,'tActisenseReader']]], - ['getmodelid_52',['GetModelID',['../classt_n2k_device_list_1_1t_internal_device.html#aae4e5d67de31a637f55c7bcde7533a2a',1,'tN2kDeviceList::tInternalDevice::GetModelID()'],['../classt_n_m_e_a2000_1_1t_device.html#ab1d4cd9be08fc6013ae3b36363749adc',1,'tNMEA2000::tDevice::GetModelID()'],['../classt_n_m_e_a2000.html#ae91a9a99311f5e98f0fe2bee504a6c7b',1,'tNMEA2000::GetModelID(char *buf, size_t max_len, int iDev=0) const']]], - ['getmodelserialcode_53',['GetModelSerialCode',['../classt_n_m_e_a2000.html#ad06794366484cb4ea1a3ca70a69c4ef4',1,'tNMEA2000::GetModelSerialCode()'],['../classt_n_m_e_a2000_1_1t_device.html#abfed65174f87106a283eb32174262adc',1,'tNMEA2000::tDevice::GetModelSerialCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a6424a4e70c271499c4c193381f8113e6',1,'tN2kDeviceList::tInternalDevice::GetModelSerialCode() const']]], - ['getmodelversion_54',['GetModelVersion',['../classt_n2k_device_list_1_1t_internal_device.html#a4685d73dd5db48e12a45be7076598943',1,'tN2kDeviceList::tInternalDevice::GetModelVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#a7ec9593aa1eab0687e9837e7ee46307e',1,'tNMEA2000::tDevice::GetModelVersion()'],['../classt_n_m_e_a2000.html#aa90bab2a8b2822a75588f09fe0d824cc',1,'tNMEA2000::GetModelVersion(char *buf, size_t max_len, int iDev=0) const']]], - ['getn2ksource_55',['GetN2kSource',['../classt_n_m_e_a2000.html#a7e56a37f568be6dc1862eee512ded770',1,'tNMEA2000']]], - ['getn2kversion_56',['GetN2kVersion',['../classt_n2k_device_list_1_1t_internal_device.html#ae44033c55a66f44a80a37f0c2f9e22cb',1,'tN2kDeviceList::tInternalDevice::GetN2kVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#ab5b04760d15370c3c133bf1cb65a0c2e',1,'tNMEA2000::tDevice::GetN2kVersion()'],['../classt_n_m_e_a2000.html#ac307bcf4338a36597a39c2e175edc441',1,'tNMEA2000::GetN2kVersion()']]], - ['getname_57',['GetName',['../classt_n_m_e_a2000_1_1t_device_information.html#a2070692c90c6e0ce1d99be15e95cfa62',1,'tNMEA2000::tDeviceInformation::GetName()'],['../classt_n_m_e_a2000_1_1t_device.html#a6e9c38c616b31d12f8f7e796d7f6fe77',1,'tNMEA2000::tDevice::GetName()']]], - ['getnextaddress_58',['GetNextAddress',['../classt_n_m_e_a2000.html#af24a69ae45476c3593f411294ed92ac3',1,'tNMEA2000']]], - ['getnextfreecansendframe_59',['GetNextFreeCANSendFrame',['../classt_n_m_e_a2000.html#aa616f107303da1cce30e9ea27713105d',1,'tNMEA2000']]], - ['getnexttime_60',['GetNextTime',['../classt_n2k_sync_scheduler.html#a426652500aaec6c4250e9e0509bf5151',1,'tN2kSyncScheduler']]], - ['getnmea2000_61',['GetNMEA2000',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a97e7c5481cdf674f2129613dbe4b5e2f',1,'tNMEA2000::tMsgHandler']]], - ['getoffset_62',['GetOffset',['../classt_n2k_sync_scheduler.html#ab923d917020ed62b3debdee4e788a473',1,'tN2kSyncScheduler']]], - ['getperiod_63',['GetPeriod',['../classt_n2k_sync_scheduler.html#ab9325db87f77258a87d109e66378ea4d',1,'tN2kSyncScheduler']]], - ['getpgn_64',['GetPGN',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a0eb117b2f49250cc577ea3166c3df59f',1,'tNMEA2000::tMsgHandler']]], - ['getpgnforgroupfunction_65',['GetPGNForGroupFunction',['../classt_n2k_group_function_handler.html#a83a32d69380616320185314bde557f4e',1,'tN2kGroupFunctionHandler']]], - ['getproductcode_66',['GetProductCode',['../classt_n2k_device_list_1_1t_internal_device.html#a589f5e36a5d9fc81cdfb194d43bed77f',1,'tN2kDeviceList::tInternalDevice::GetProductCode()'],['../classt_n_m_e_a2000_1_1t_device.html#a166c01963e98167bf0e465864f3e246f',1,'tNMEA2000::tDevice::GetProductCode()'],['../classt_n_m_e_a2000.html#ae30d8dd330642654e5faa83977937c88',1,'tNMEA2000::GetProductCode(int iDev=0) const']]], - ['getproductinformation_67',['GetProductInformation',['../classt_n_m_e_a2000.html#aabf258d9383a9c08b0e5bfc96c70407e',1,'tNMEA2000']]], - ['getreadref_68',['getReadRef',['../classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d',1,'tPriorityRingBuffer::getReadRef(uint8_t _priority)'],['../classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226',1,'tPriorityRingBuffer::getReadRef(uint8_t *_priority=0)'],['../classt_ring_buffer.html#abdc058cbc237d9d23f61e8cd374c6b6f',1,'tRingBuffer::getReadRef()']]], - ['getreceivepgns_69',['GetReceivePGNs',['../classt_n_m_e_a2000_1_1t_device.html#a5a924436f0c8ef396553cfca2c8ee7e3',1,'tNMEA2000::tDevice::GetReceivePGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#a491180af32e63e0212accb29c292f6c9',1,'tN2kDeviceList::tInternalDevice::GetReceivePGNs()']]], - ['getremainingdatalength_70',['GetRemainingDataLength',['../classt_n2k_msg.html#a36af763fa7d6d3929c9bbea63a6a95d4',1,'tN2kMsg']]], - ['getrequestgroupfunctiontransmissionorpriorityerrorcode_71',['GetRequestGroupFunctionTransmissionOrPriorityErrorCode',['../classt_n2k_group_function_handler.html#ab25065d4fe7b0ace9252a09be88f42d6',1,'tN2kGroupFunctionHandler']]], - ['getsequencecounter_72',['GetSequenceCounter',['../classt_n_m_e_a2000.html#aab1127bebac5402479b34e2b1415aed3',1,'tNMEA2000']]], - ['getsize_73',['getSize',['../classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a',1,'tPriorityRingBuffer::getSize()'],['../classt_ring_buffer.html#a0394394ef1e515f5410309c0cd637669',1,'tRingBuffer::getSize()']]], - ['getsource_74',['GetSource',['../classt_n_m_e_a2000_1_1t_device.html#a15d0a76a0389dd4df915ddd99fffa81f',1,'tNMEA2000::tDevice']]], - ['getstr_75',['GetStr',['../classt_n2k_msg.html#a9024d8745b958feb6237325c50fc447b',1,'tN2kMsg::GetStr(size_t StrBufSize, char *StrBuf, size_t Length, unsigned char nulChar, int &Index) const'],['../classt_n2k_msg.html#ad862d140ed228b644bf33a46ddae3cbb',1,'tN2kMsg::GetStr(char *StrBuf, size_t Length, int &Index) const']]], - ['getswcode_76',['GetSwCode',['../classt_n_m_e_a2000.html#ae4ca1e433eb4a1963afdf063786919c1',1,'tNMEA2000::GetSwCode()'],['../classt_n_m_e_a2000_1_1t_device.html#aa713ace8e5060fae17b01fc20e3e2f4c',1,'tNMEA2000::tDevice::GetSwCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a2bc87ee4907243d4d9710995a3fc92c2',1,'tN2kDeviceList::tInternalDevice::GetSwCode()']]], - ['getsysteminstance_77',['GetSystemInstance',['../classt_n_m_e_a2000_1_1t_device_information.html#a45ea5cd4aadb46c7d418e43ebb08d489',1,'tNMEA2000::tDeviceInformation::GetSystemInstance()'],['../classt_n_m_e_a2000_1_1t_device.html#a64e146c6b85b2b87a60bb992e0e99d35',1,'tNMEA2000::tDevice::GetSystemInstance() const']]], - ['gettransmitpgns_78',['GetTransmitPGNs',['../classt_n_m_e_a2000_1_1t_device.html#a4708720c4cfe8fdba62ad720db5cff42',1,'tNMEA2000::tDevice::GetTransmitPGNs()'],['../classt_n2k_device_list_1_1t_internal_device.html#aaec8c080c6ba4c7bb552cbb46873fa2b',1,'tN2kDeviceList::tInternalDevice::GetTransmitPGNs()']]], - ['getuint64_79',['GetUInt64',['../classt_n2k_msg.html#aba773ee38ba53c94e0c9c25af80dd24a',1,'tN2kMsg']]], - ['getuniquenumber_80',['GetUniqueNumber',['../classt_n_m_e_a2000_1_1t_device_information.html#a9d1129e7ea6e96da5f0c18b3966aca64',1,'tNMEA2000::tDeviceInformation::GetUniqueNumber()'],['../classt_n_m_e_a2000_1_1t_device.html#a92fad6f17a5987a6b80ecf5fc1808013',1,'tNMEA2000::tDevice::GetUniqueNumber()']]], - ['getvarstr_81',['GetVarStr',['../classt_n2k_msg.html#a2fa9d6983da6de6729568ab7f334d7ac',1,'tN2kMsg']]] + ['getmemsize_51',['getMemSize',['../classt_priority_ring_buffer.html#ac96cbedf4ae5f450f4abc71c2544c8c6',1,'tPriorityRingBuffer']]], + ['getmessagefromstream_52',['GetMessageFromStream',['../classt_actisense_reader.html#a4d60abae0039ce1d23261c7a71385faa',1,'tActisenseReader']]], + ['getmodelid_53',['GetModelID',['../classt_n2k_device_list_1_1t_internal_device.html#aae4e5d67de31a637f55c7bcde7533a2a',1,'tN2kDeviceList::tInternalDevice::GetModelID()'],['../classt_n_m_e_a2000_1_1t_device.html#ab1d4cd9be08fc6013ae3b36363749adc',1,'tNMEA2000::tDevice::GetModelID()'],['../classt_n_m_e_a2000.html#ae91a9a99311f5e98f0fe2bee504a6c7b',1,'tNMEA2000::GetModelID()']]], + ['getmodelserialcode_54',['GetModelSerialCode',['../classt_n_m_e_a2000_1_1t_device.html#abfed65174f87106a283eb32174262adc',1,'tNMEA2000::tDevice::GetModelSerialCode()'],['../classt_n_m_e_a2000.html#ad06794366484cb4ea1a3ca70a69c4ef4',1,'tNMEA2000::GetModelSerialCode()'],['../classt_n2k_device_list_1_1t_internal_device.html#a6424a4e70c271499c4c193381f8113e6',1,'tN2kDeviceList::tInternalDevice::GetModelSerialCode() const']]], + ['getmodelversion_55',['GetModelVersion',['../classt_n2k_device_list_1_1t_internal_device.html#a4685d73dd5db48e12a45be7076598943',1,'tN2kDeviceList::tInternalDevice::GetModelVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#a7ec9593aa1eab0687e9837e7ee46307e',1,'tNMEA2000::tDevice::GetModelVersion()'],['../classt_n_m_e_a2000.html#aa90bab2a8b2822a75588f09fe0d824cc',1,'tNMEA2000::GetModelVersion(char *buf, size_t max_len, int iDev=0) const']]], + ['getn2ksource_56',['GetN2kSource',['../classt_n_m_e_a2000.html#a7e56a37f568be6dc1862eee512ded770',1,'tNMEA2000']]], + ['getn2kversion_57',['GetN2kVersion',['../classt_n2k_device_list_1_1t_internal_device.html#ae44033c55a66f44a80a37f0c2f9e22cb',1,'tN2kDeviceList::tInternalDevice::GetN2kVersion()'],['../classt_n_m_e_a2000_1_1t_device.html#ab5b04760d15370c3c133bf1cb65a0c2e',1,'tNMEA2000::tDevice::GetN2kVersion()'],['../classt_n_m_e_a2000.html#ac307bcf4338a36597a39c2e175edc441',1,'tNMEA2000::GetN2kVersion()']]], + ['getname_58',['GetName',['../classt_n_m_e_a2000_1_1t_device_information.html#a2070692c90c6e0ce1d99be15e95cfa62',1,'tNMEA2000::tDeviceInformation::GetName()'],['../classt_n_m_e_a2000_1_1t_device.html#a6e9c38c616b31d12f8f7e796d7f6fe77',1,'tNMEA2000::tDevice::GetName()']]], + ['getnextaddress_59',['GetNextAddress',['../classt_n_m_e_a2000.html#af24a69ae45476c3593f411294ed92ac3',1,'tNMEA2000']]], + ['getnextfreecansendframe_60',['GetNextFreeCANSendFrame',['../classt_n_m_e_a2000.html#aa616f107303da1cce30e9ea27713105d',1,'tNMEA2000']]], + ['getnexttime_61',['GetNextTime',['../classt_n2k_sync_scheduler.html#a426652500aaec6c4250e9e0509bf5151',1,'tN2kSyncScheduler']]], + ['getnmea2000_62',['GetNMEA2000',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a97e7c5481cdf674f2129613dbe4b5e2f',1,'tNMEA2000::tMsgHandler']]], + ['getoffset_63',['GetOffset',['../classt_n2k_sync_scheduler.html#ab923d917020ed62b3debdee4e788a473',1,'tN2kSyncScheduler']]], + ['getperiod_64',['GetPeriod',['../classt_n2k_sync_scheduler.html#ab9325db87f77258a87d109e66378ea4d',1,'tN2kSyncScheduler']]], + ['getpgn_65',['GetPGN',['../classt_n_m_e_a2000_1_1t_msg_handler.html#a0eb117b2f49250cc577ea3166c3df59f',1,'tNMEA2000::tMsgHandler']]], + ['getpgnforgroupfunction_66',['GetPGNForGroupFunction',['../classt_n2k_group_function_handler.html#a83a32d69380616320185314bde557f4e',1,'tN2kGroupFunctionHandler']]], + ['getproductcode_67',['GetProductCode',['../classt_n2k_device_list_1_1t_internal_device.html#a589f5e36a5d9fc81cdfb194d43bed77f',1,'tN2kDeviceList::tInternalDevice::GetProductCode()'],['../classt_n_m_e_a2000_1_1t_device.html#a166c01963e98167bf0e465864f3e246f',1,'tNMEA2000::tDevice::GetProductCode()'],['../classt_n_m_e_a2000.html#ae30d8dd330642654e5faa83977937c88',1,'tNMEA2000::GetProductCode(int iDev=0) const']]], + ['getproductinformation_68',['GetProductInformation',['../classt_n_m_e_a2000.html#aabf258d9383a9c08b0e5bfc96c70407e',1,'tNMEA2000']]], + ['getreadref_69',['getReadRef',['../classt_ring_buffer.html#abdc058cbc237d9d23f61e8cd374c6b6f',1,'tRingBuffer::getReadRef()'],['../classt_priority_ring_buffer.html#aaea6a710e21f5f6ef30a86a730afd87d',1,'tPriorityRingBuffer::getReadRef(uint8_t _priority)'],['../classt_priority_ring_buffer.html#ae60450f5c669165b2b2be8942b03d226',1,'tPriorityRingBuffer::getReadRef(uint8_t *_priority=0)']]], + ['getreceivepgns_70',['GetReceivePGNs',['../classt_n2k_device_list_1_1t_internal_device.html#a491180af32e63e0212accb29c292f6c9',1,'tN2kDeviceList::tInternalDevice::GetReceivePGNs()'],['../classt_n_m_e_a2000_1_1t_device.html#a5a924436f0c8ef396553cfca2c8ee7e3',1,'tNMEA2000::tDevice::GetReceivePGNs()']]], + ['getremainingdatalength_71',['GetRemainingDataLength',['../classt_n2k_msg.html#a36af763fa7d6d3929c9bbea63a6a95d4',1,'tN2kMsg']]], + ['getrequestgroupfunctiontransmissionorpriorityerrorcode_72',['GetRequestGroupFunctionTransmissionOrPriorityErrorCode',['../classt_n2k_group_function_handler.html#ab25065d4fe7b0ace9252a09be88f42d6',1,'tN2kGroupFunctionHandler']]], + ['getsequencecounter_73',['GetSequenceCounter',['../classt_n_m_e_a2000.html#aab1127bebac5402479b34e2b1415aed3',1,'tNMEA2000']]], + ['getsize_74',['getSize',['../classt_priority_ring_buffer.html#a2047fced4877721e1d0f0c0278683b3a',1,'tPriorityRingBuffer::getSize()'],['../classt_ring_buffer.html#a0394394ef1e515f5410309c0cd637669',1,'tRingBuffer::getSize()']]], + ['getsource_75',['GetSource',['../classt_n_m_e_a2000_1_1t_device.html#a15d0a76a0389dd4df915ddd99fffa81f',1,'tNMEA2000::tDevice']]], + ['getstr_76',['GetStr',['../classt_n2k_msg.html#ad862d140ed228b644bf33a46ddae3cbb',1,'tN2kMsg::GetStr(char *StrBuf, size_t Length, int &Index) const'],['../classt_n2k_msg.html#a9024d8745b958feb6237325c50fc447b',1,'tN2kMsg::GetStr(size_t StrBufSize, char *StrBuf, size_t Length, unsigned char nulChar, int &Index) const']]], + ['getswcode_77',['GetSwCode',['../classt_n2k_device_list_1_1t_internal_device.html#a2bc87ee4907243d4d9710995a3fc92c2',1,'tN2kDeviceList::tInternalDevice::GetSwCode()'],['../classt_n_m_e_a2000_1_1t_device.html#aa713ace8e5060fae17b01fc20e3e2f4c',1,'tNMEA2000::tDevice::GetSwCode()'],['../classt_n_m_e_a2000.html#ae4ca1e433eb4a1963afdf063786919c1',1,'tNMEA2000::GetSwCode()']]], + ['getsysteminstance_78',['GetSystemInstance',['../classt_n_m_e_a2000_1_1t_device_information.html#a45ea5cd4aadb46c7d418e43ebb08d489',1,'tNMEA2000::tDeviceInformation::GetSystemInstance()'],['../classt_n_m_e_a2000_1_1t_device.html#a64e146c6b85b2b87a60bb992e0e99d35',1,'tNMEA2000::tDevice::GetSystemInstance()']]], + ['gettransmitpgns_79',['GetTransmitPGNs',['../classt_n2k_device_list_1_1t_internal_device.html#aaec8c080c6ba4c7bb552cbb46873fa2b',1,'tN2kDeviceList::tInternalDevice::GetTransmitPGNs()'],['../classt_n_m_e_a2000_1_1t_device.html#a4708720c4cfe8fdba62ad720db5cff42',1,'tNMEA2000::tDevice::GetTransmitPGNs()']]], + ['getuint64_80',['GetUInt64',['../classt_n2k_msg.html#aba773ee38ba53c94e0c9c25af80dd24a',1,'tN2kMsg']]], + ['getuniquenumber_81',['GetUniqueNumber',['../classt_n_m_e_a2000_1_1t_device_information.html#a9d1129e7ea6e96da5f0c18b3966aca64',1,'tNMEA2000::tDeviceInformation::GetUniqueNumber()'],['../classt_n_m_e_a2000_1_1t_device.html#a92fad6f17a5987a6b80ecf5fc1808013',1,'tNMEA2000::tDevice::GetUniqueNumber()']]], + ['getvarstr_82',['GetVarStr',['../classt_n2k_msg.html#a2fa9d6983da6de6729568ab7f334d7ac',1,'tN2kMsg']]] ]; diff --git a/search/functions_e.js b/search/functions_e.js index cac1f874..b540938a 100644 --- a/search/functions_e.js +++ b/search/functions_e.js @@ -43,7 +43,7 @@ var searchData= ['parsen2kmaretrontripvolume_40',['ParseN2kMaretronTripVolume',['../_n2k_maretron_8h.html#a0660b8f3c882c33e3013328638303b1c',1,'N2kMaretron.h']]], ['parsen2kmeteorlogicalstationdata_41',['ParseN2kMeteorlogicalStationData',['../group__group__msg_parsers.html#ga6eaf27ccf78506df754fa017b7952a6c',1,'N2kMessages.h']]], ['parsen2kmobnotification_42',['ParseN2kMOBNotification',['../group__group__msg_parsers.html#ga7510cf2dcd3c5e2f881145d9ee8e3924',1,'N2kMessages.h']]], - ['parsen2knavigationinfo_43',['ParseN2kNavigationInfo',['../group__group__msg_parsers.html#ga80ba7520f2adbcb00c29c457c8734c5a',1,'N2kMessages.h']]], + ['parsen2knavigationinfo_43',['ParseN2kNavigationInfo',['../group__group__msg_parsers.html#gaa317ce136342611a1e964d13c9a36250',1,'N2kMessages.h']]], ['parsen2koutsideenvironmentalparameters_44',['ParseN2kOutsideEnvironmentalParameters',['../group__group__msg_parsers.html#ga1e125b342a3d7fce03cd1034461238c2',1,'N2kMessages.h']]], ['parsen2kpgn126992_45',['ParseN2kPGN126992',['../group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d',1,'ParseN2kPGN126992(const tN2kMsg &N2kMsg, unsigned char &SID, uint16_t &SystemDate, double &SystemTime, tN2kTimeSource &TimeSource): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga8b509b3f1edb05f35e3c56e5c3f9537d',1,'ParseN2kPGN126992(const tN2kMsg &N2kMsg, unsigned char &SID, uint16_t &SystemDate, double &SystemTime, tN2kTimeSource &TimeSource): N2kMessages.cpp']]], ['parsen2kpgn126996_46',['ParseN2kPGN126996',['../_n_m_e_a2000_8cpp.html#a4110ca1a5bf9efa63fdd7ea895866d7e',1,'ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency): NMEA2000.cpp'],['../_n_m_e_a2000_8h.html#a4110ca1a5bf9efa63fdd7ea895866d7e',1,'ParseN2kPGN126996(const tN2kMsg &N2kMsg, unsigned short &N2kVersion, unsigned short &ProductCode, int ModelIDSize, char *ModelID, int SwCodeSize, char *SwCode, int ModelVersionSize, char *ModelVersion, int ModelSerialCodeSize, char *ModelSerialCode, unsigned char &CertificationLevel, unsigned char &LoadEquivalency): NMEA2000.cpp']]], @@ -82,7 +82,7 @@ var searchData= ['parsen2kpgn129039_79',['ParseN2kPGN129039',['../group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9',1,'ParseN2kPGN129039(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, double &Latitude, double &Longitude, bool &Accuracy, bool &RAIM, uint8_t &Seconds, double &COG, double &SOG, tN2kAISTransceiverInformation &AISTransceiverInformation, double &Heading, tN2kAISUnit &Unit, bool &Display, bool &DSC, bool &Band, bool &Msg22, tN2kAISMode &Mode, bool &State): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga1a94564088c252d3db90fd5f4e0ed1f9',1,'ParseN2kPGN129039(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, double &Latitude, double &Longitude, bool &Accuracy, bool &RAIM, uint8_t &Seconds, double &COG, double &SOG, tN2kAISTransceiverInformation &AISTransceiverInformation, double &Heading, tN2kAISUnit &Unit, bool &Display, bool &DSC, bool &Band, bool &Msg22, tN2kAISMode &Mode, bool &State): N2kMessages.cpp']]], ['parsen2kpgn129041_80',['ParseN2kPGN129041',['../group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877',1,'ParseN2kPGN129041(const tN2kMsg &N2kMsg, tN2kAISAtoNReportData &N2kData): N2kMessages.cpp'],['../group__group__msg_parsers.html#gad7f8e88eb5b2c431dc62ef6be4197877',1,'ParseN2kPGN129041(const tN2kMsg &N2kMsg, tN2kAISAtoNReportData &N2kData): N2kMessages.cpp']]], ['parsen2kpgn129283_81',['ParseN2kPGN129283',['../group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab',1,'ParseN2kPGN129283(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga80bc30bf5abb21103ae1055fabd3caab',1,'ParseN2kPGN129283(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kXTEMode &XTEMode, bool &NavigationTerminated, double &XTE): N2kMessages.cpp']]], - ['parsen2kpgn129284_82',['ParseN2kPGN129284',['../group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_parsers.html#gaa92c11a0eb560f9fdc879894e857de48',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint8_t &OriginWaypointNumber, uint8_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp']]], + ['parsen2kpgn129284_82',['ParseN2kPGN129284',['../group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga97df9cd218e00af75bcf9442c9d6cfe3',1,'ParseN2kPGN129284(const tN2kMsg &N2kMsg, unsigned char &SID, double &DistanceToWaypoint, tN2kHeadingReference &BearingReference, bool &PerpendicularCrossed, bool &ArrivalCircleEntered, tN2kDistanceCalculationType &CalculationType, double &ETATime, int16_t &ETADate, double &BearingOriginToDestinationWaypoint, double &BearingPositionToDestinationWaypoint, uint32_t &OriginWaypointNumber, uint32_t &DestinationWaypointNumber, double &DestinationLatitude, double &DestinationLongitude, double &WaypointClosingVelocity): N2kMessages.cpp']]], ['parsen2kpgn129539_83',['ParseN2kPgn129539',['../group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf',1,'ParseN2kPgn129539(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga48746810ae70280198d37a50bae763bf',1,'ParseN2kPgn129539(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kGNSSDOPmode &DesiredMode, tN2kGNSSDOPmode &ActualMode, double &HDOP, double &VDOP, double &TDOP): N2kMessages.cpp']]], ['parsen2kpgn129540_84',['ParseN2kPGN129540',['../group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kRangeResidualMode &Mode, uint8_t &NumberOfSVs): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, uint8_t SVIndex, tSatelliteInfo &SatelliteInfo): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga6dbd7233a8e289095e5479aae2127319',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, unsigned char &SID, tN2kRangeResidualMode &Mode, uint8_t &NumberOfSVs): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga3472b7dcf7ece7265708e20ee8bcf78a',1,'ParseN2kPGN129540(const tN2kMsg &N2kMsg, uint8_t SVIndex, tSatelliteInfo &SatelliteInfo): N2kMessages.cpp']]], ['parsen2kpgn129794_85',['ParseN2kPGN129794',['../group__group__msg_parsers.html#ga0466b88325e5d6440221f868b6dff8ec',1,'ParseN2kPGN129794(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint32_t &IMOnumber, char *Callsign, char *Name, uint8_t &VesselType, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint16_t &ETAdate, double &ETAtime, double &Draught, char *Destination, tN2kAISVersion &AISversion, tN2kGNSStype &GNSStype, tN2kAISDTE &DTE, tN2kAISTransceiverInformation &AISinfo): N2kMessages.cpp'],['../group__group__msg_parsers.html#ga0466b88325e5d6440221f868b6dff8ec',1,'ParseN2kPGN129794(const tN2kMsg &N2kMsg, uint8_t &MessageID, tN2kAISRepeat &Repeat, uint32_t &UserID, uint32_t &IMOnumber, char *Callsign, char *Name, uint8_t &VesselType, double &Length, double &Beam, double &PosRefStbd, double &PosRefBow, uint16_t &ETAdate, double &ETAtime, double &Draught, char *Destination, tN2kAISVersion &AISversion, tN2kGNSStype &GNSStype, tN2kAISDTE &DTE, tN2kAISTransceiverInformation &AISinfo): N2kMessages.cpp']]], diff --git a/search/variables_e.js b/search/variables_e.js index 54dffd9e..cb85ca66 100644 --- a/search/variables_e.js +++ b/search/variables_e.js @@ -14,8 +14,8 @@ var searchData= ['positionreferencestarboard_11',['PositionReferenceStarboard',['../structt_n2k_a_i_s_ato_n_report_data.html#a57585d50a6bc806e1b6980b5e9a39396',1,'tN2kAISAtoNReportData']]], ['positionreferencetruenorth_12',['PositionReferenceTrueNorth',['../structt_n2k_a_i_s_ato_n_report_data.html#a639a1920344aed6d291b2427ce51d0ca',1,'tN2kAISAtoNReportData']]], ['preheatindicator_13',['PreheatIndicator',['../uniont_n2k_d_d206.html#a136e5c57a5559c2ef0418b86f39be503',1,'tN2kDD206']]], - ['priority_14',['priority',['../structt_priority_ring_buffer_1_1t_value_slot.html#ae7eaed46a1952118e6a219d25ad35367',1,'tPriorityRingBuffer::tValueSlot']]], - ['priority_15',['Priority',['../classt_n2k_msg.html#a7645bd9aec82bc0263d421cb307852e4',1,'tN2kMsg']]], + ['priority_14',['Priority',['../classt_n2k_msg.html#a7645bd9aec82bc0263d421cb307852e4',1,'tN2kMsg']]], + ['priority_15',['priority',['../structt_priority_ring_buffer_1_1t_value_slot.html#ae7eaed46a1952118e6a219d25ad35367',1,'tPriorityRingBuffer::tValueSlot']]], ['priorityreferencies_16',['priorityReferencies',['../classt_priority_ring_buffer.html#a176f87590c1b2075c2ef35073b193655',1,'tPriorityRingBuffer']]], ['prn_17',['PRN',['../structt_satellite_info.html#aa680b10f730bf3402673708a8e447c2f',1,'tSatelliteInfo']]], ['prodi_18',['ProdI',['../classt_n2k_device_list_1_1t_internal_device.html#acdeb4f0637df08624c13ef20fb1eac1c',1,'tN2kDeviceList::tInternalDevice']]], diff --git a/structt_n_m_e_a2000_1_1t_product_information.html b/structt_n_m_e_a2000_1_1t_product_information.html index 8cea989d..d4447ae8 100644 --- a/structt_n_m_e_a2000_1_1t_product_information.html +++ b/structt_n_m_e_a2000_1_1t_product_information.html @@ -192,7 +192,7 @@

                      Definition at line 613 of file NMEA2000.cpp.

                      +

                      Definition at line 627 of file NMEA2000.cpp.

                      @@ -227,7 +227,7 @@

                      Definition at line 618 of file NMEA2000.cpp.

                      +

                      Definition at line 632 of file NMEA2000.cpp.

                      diff --git a/structt_priority_ring_buffer_1_1t_priority_ref.html b/structt_priority_ring_buffer_1_1t_priority_ref.html index 77f88052..391516dd 100644 --- a/structt_priority_ring_buffer_1_1t_priority_ref.html +++ b/structt_priority_ring_buffer_1_1t_priority_ref.html @@ -148,7 +148,7 @@
                      template<typename T>
                      struct tPriorityRingBuffer< T >::tPriorityRef

                      Structure handles meta data for each priority.

                      -

                      Definition at line 242 of file RingBuffer.h.

                      +

                      Definition at line 282 of file RingBuffer.h.

                      Constructor & Destructor Documentation

                      ◆ tPriorityRef()

                      @@ -177,7 +177,7 @@

                      Definition at line 248 of file RingBuffer.h.

                      +

                      Definition at line 288 of file RingBuffer.h.

                      @@ -209,7 +209,7 @@

                      Definition at line 250 of file RingBuffer.h.

                      +

                      Definition at line 290 of file RingBuffer.h.

                      @@ -230,7 +230,7 @@

                      Definition at line 246 of file RingBuffer.h.

                      +

                      Definition at line 286 of file RingBuffer.h.

                      @@ -250,7 +250,7 @@

                      Definition at line 244 of file RingBuffer.h.

                      +

                      Definition at line 284 of file RingBuffer.h.

                      diff --git a/structt_priority_ring_buffer_1_1t_value_slot.html b/structt_priority_ring_buffer_1_1t_value_slot.html index 101e70b1..566df058 100644 --- a/structt_priority_ring_buffer_1_1t_value_slot.html +++ b/structt_priority_ring_buffer_1_1t_value_slot.html @@ -142,7 +142,7 @@ struct tPriorityRingBuffer< T >::tValueSlot

                      Structure that holds the actual value and meta data.

                      In order to handle all the data entries in the ring buffer with certain priority some additional meta data has to be stored es well.

                      -

                      Definition at line 230 of file RingBuffer.h.

                      +

                      Definition at line 270 of file RingBuffer.h.

                      Member Data Documentation

                      ◆ next

                      @@ -160,7 +160,7 @@

                      Definition at line 234 of file RingBuffer.h.

                      +

                      Definition at line 274 of file RingBuffer.h.

                      @@ -180,7 +180,7 @@

                      Definition at line 236 of file RingBuffer.h.

                      +

                      Definition at line 276 of file RingBuffer.h.

                      @@ -200,7 +200,7 @@

                      Definition at line 232 of file RingBuffer.h.

                      +

                      Definition at line 272 of file RingBuffer.h.