# J1939 Error description

## Error level

Error | Code | Description
--- | --- | ---
WARNING | 0 | An error warning has occurred
ERROR | 1 | An error has occurred
FATAL | 2 | A fatal error has occurred
OK | 3 | No error has occurred yet

## Error identifier

Error | Code | Description
--- | --- | ---
ERR_ERR_ID | 0 | Error unit identifier
DLL_ERR_ID | 1 | Data link layer identifier
MEM_ERR_ID | 2 | Memory unit identifier
TPL_ERR_ID | 3 | Transport protocol identifier
NWM_ERR_ID | 4 | Network management identifier
APL_ERR_ID | 5 | Application layer identifier
CYC_ERR_ID | 6 | Cycle unit identifier
REQ_ERR_ID | 7 | Request unit identifier
L2C_ERR_ID | 8 | Layer 2 unit identifier
ADR_ERR_ID | 9 | Addressing unit identifier
NMEA_ERR_ID | 10 | NMEA 2000 module
CDP_ERR_ID | 11 | CAN Diagnostic Protocol
DIAG_ERR_ID | 12 | J1939 Diagnostic Module
USR_ERR_ID | 13 | User specific code (generated)
OK_ID | 14 | No error

## Error codes

### Data Link layer

Error | Code | Description
--- | --- | ---
DLL_ERR_TX_OVRN | 51 | Overrun in the TxQueue
DLL_ERR_START_CAN | 52 | Starting CAN failed
DLL_ERR_RESET_CAN | 53 | Reset CAN failed
DLL_ERR_INIT_CAN | 54 | Init CAN failed
DLL_ERR_BOFF | 61 | Bus error interrupt occurs on CAN
DLL_ERR_EPAS | 62 | Error warning interrupt occurs on CAN
DLL_ERR_EACT | 63 | CAN controller is in status error active
DLL_ERR_DOI | 64 | Data overrun interrupt occurs on CAN
DLL_ERR_RX_OVRN | 65 | Overrun in the RxQueue

### Memory

Error | Code | Description
--- | --- | ---
MEM_ERR_ALLOC_MEMORY | 111 | Allocate memory failed
MEM_ERR_FREE_MEMORY | 112 | Free memory failed

### Transport layer

Error | Code | Description
--- | --- | ---
TPL_ERR_TX_OVRN | 151 | No free Entry in the TxQueue of the TPL available
TPL_ERR_CONF_FILTER | 152 | Too many PGNs tried to register in the config filter
TPL_ERR_UNEXP_BAM_FRM | 161 | Unexpected BAM frame received
TPL_ERR_UNEXP_RTS_FRM | 162 | Unexpected RTS frame received
TPL_ERR_UNEXP_CTS_FRM | 163 | Unexpected CTS frame received
TPL_ERR_UNEXP_EOM_FRM | 164 | Unexpected EOM frame received
TPL_ERR_UNEXP_CA_FRM | 165 | Unexpected CA frame received
TPL_ERR_UNEXP_DT_FRM | 166 | Unexpected DT frame received
TPL_ERR_RX_OVRN | 167 | No free Rx Msg Buffer in the TPL for a global message available
TPL_ERR_TX_TIMEOUT0 | 168 | Timer overrun for Tx Timeout T0
TPL_ERR_TX_TIMEOUT2 | 169 | Timer overrun for Tx Timeout T2
TPL_ERR_RX_TIMEOUT0 | 170 | Timer overrun for Rx Timeout T0
TPL_ERR_RX_TIMEOUT1 | 171 | Timer overrun for Rx Timeout T1
TPL_ERR_RX_TIMEOUT2 | 172 | Timer overrun for Rx Timeout T2
TPL_ERR_RX_LONG | 173 | The length of the received message is too long for a seg msg
TPL_ERR_SEND_MSG | 174 | Error by Sending: Can't send a segmented message
TPL_ERR_SEND_CA | 175 | Sending a CA message failed
TPL_ERR_SEND_NACK | 176 | Sending a NACK message failed

### Network management

Error | Code | Description
--- | --- | ---
NWM_ERR_DEVICE_REG | 201 | The device is already registered in the device list
NWM_ERR_INVALID_HDL | 202 | The device handle is invalid
NWM_ERR_INVALID_ADDR | 203 | The device address is invalid
NWM_ERR_NO_COMM | 211 | The device is not able to start the CAN communication (starting CAN failed)
NWM_ERR_NO_ADDR | 212 | The device is not able to claim an address and is therefore not allowed to take part at network communication any longer
NWM_ERR_LIST_FULL | 213 | The maximum number of nodes in the network is exceeded

### Application layer

Error | Code | Description
--- | --- | ---
APL_ERR_TIME_EXCEEDED | 251 | APL_Main() was not called in the required sequence
APL_ERR_TX_LONG | 252 | The data field of the transmit message is too long
APL_ERR_NO_MEMORY | 253 | No memory for the data field of the transmit message allocated
APL_ERR_REG_REQUEST | 254 | An error occurred during registration of a request PGN
APL_ERR_TX_NO_ADDR | 255 | Device has no address claimed
APL_ERR_INVALID_PARAM | 257 | Invalid parameter passed to an API function
APL_ERR_REQ_RESPONSE | 261 | A request message couldn't be answered from the request handler due to a queue overrun

### Cyclic unit

Error | Code | Description
--- | --- | ---
CYC_ERR_NOT_INITIALIZED | 301 | The unit is not yet initialized
CYC_ERR_RX_REGISTRATION | 302 | The maximal number of receive messages is exceeded
CYC_ERR_TX_REGISTRATION | 303 | The maximal number of transmit messages is exceeded
CYC_ERR_TIME_EXCEEDED | 304 | CYC_Main() was not called in the required sequence
CYC_ERR_RX_TIMEOUT | 311 | A registered message wasn't received in the given time
CYC_ERR_TX_INVALID_HDL | 312 | A message couldn't be sent due to an invalid address handle
CYC_ERR_TX_QUEUE_OVRN | 313 | A message couldn't be sent due to an overrun of the transmit queue
CYC_ERR_RX_INVALID_LENGTH | 314 | The length of the received message is too long for the receive buffer

### Request unit

Error | Code | Description
--- | --- | ---
REQ_ERR_INVALID_PARAM | 351 | Invalid parameter passed to an API function

### CAN diagnostic

Error | Code | Description
--- | --- | ---
CDP_ERR_TIME_EXCEEDED | 551 | CDP_Main() was not called in the required sequence
CDP_ERR_ADDR_FORMAT | 552 | The addressing format of the CAN diagnostic protocol is invalid
CDP_ERR_CONF_PGN | 553 | There is no PGN entry free to register a CDP message
CDP_ERR_UNKNOWN_PGN | 554 | PGN is not registered
CDP_ERR_STATE_READY_TX | 555 | PGN is not ready for transmitting a CAN diagnostic message
CDP_ERR_STATE_READY_RX | 556 | PGN is not ready for receiving a CAN diagnostic message
CDP_ERR_NO_MEMORY | 557 | No memory for the data field allocated
CDP_ERR_ALLOC_MEMORY | 561 | Allocate memory failed
CDP_ERR_FREE_MEMORY | 562 | Free memory failed
CDP_ERR_RX_LENGTH | 563 | The length of the received CAN diagnostic protocol message is too large for the available receive buffer
CDP_ERR_RX_TIMEOUT_FC | 564 | The CAN diagnostic protocol flow control message wasn't received in the given time
CDP_ERR_RX_TIMEOUT_CF | 565 | The CAN diagnostic protocol consecutive frame message wasn't received in the given time
CDP_ERR_TX_TIMEOUT | 566 | The CAN diagnostic protocol message wasn't sent in the given time
CDP_ERR_PCI_INVALID | 567 | The CAN diagnostic protocol control information was invalid

### J1939 diagnostic

Error | Code | Description
--- | --- | ---
DIAG_ERR_MEM_ABORTED_TX | 611 | A memory access session was aborted due to a transmit problem (sending a memory access message failed)
DIAG_ERR_MEM_ABORTED_RX | 612 | A memory access session was aborted due to a receive problem (a memory access message wasn't received in the expected time)
DIAG_ERR_MEM_ABORTED_KEY | 613 | A memory access session was aborted due to security reasons (an invalid key was received)
DIAG_ERR_MEM_ABORTED_DATA | 614 | A memory access session was aborted due to addressing problems (invalid data length was received)
DIAG_ERR_MEM_BUSY | 615 | A memory access session was declined because the device is busy (another session is in process)
DIAG_ERR_MEM_BUSY_FAILED | 616 | Transmit a memory access response 'busy' failed
DIAG_ERR_MEM_INVALID_MSG | 617 | Invalid message received (the received PGN was not registered for the diagnostic unit)

### User specific error

Error | Code | Description
--- | --- | ---
USR_ERR_REQ_RESPONSE | 661 | A request message couldn't be answered from the request handler due to a queue overrun