# CANopen Error description

## Generic

Error                | Code   | Description
---------------------|--------|-----------------------------------------------------------------------------------------------------------------------
Successful           | 0x0000 | No error/successful run
IllegalInstance      | 0x0001 | The called instans does not exist
InvalidInstanceParam | 0x0002 | Invalid instance
NoFreeInstance       | 0x0003 | AddInstance was called but no free instance is available
WrongSignature       | 0x0004 | Wrong signature while writing to object 0x1010 or 0x1011
UnsupportedBtrTable  | 0x0005 | Unsupported baudrate table was configured with LSS service
UnsupportedBtrIndex  | 0x0006 | Unsupported baudrate index was configured with LSS service
InvalidNodeId        | 0x0007 | CANopen was initialized with an invalid NodeId
NoResource           | 0x0008 | Resource could not be created (Windows, PxROS, ...)
InvalidParam         | 0x0009 | Generic error code for an invalid param
OriginalBehaviour    | 0x000A | Defines an error code for callback handlers in application which needs to keep the original behaviour in CANopen stack

## CDRV

Error                  | Code   | Description
-----------------------|--------|----------------------------------------------------------------------------------
CdrvNoMsg              | 0x0010 | No CAN message was received
CdrvMsgHigh            | 0x0011 | CAN message with high priority was received
CdrvMsgLow             | 0x0012 | CAN message with low priority was received
CdrvInitError          | 0x0013 | Initialisation error
CdrvNoFreeChannel      | 0x0014 | CAN controller has not a free channel
CdrvTxBuffHighOverrun  | 0x0015 | Buffer for high priority CAN transmit messages has overrun
CdrvTxBuffLowOverrun   | 0x0016 | Buffer for low priority CAN transmit messages has overrun
CdrvIllegalBdi         | 0x0017 | Unsupported baudrate within baudrate table
CdrvBusy               | 0x0018 | Remote frame can not be updated because no bus contact or CAN
CdrvInvalidDriverType  | 0x0019 | (PC: Windows or Linux) invalid driver type
CdrvDriverNotFound     | 0x001A | (PC: Windows or Linux) driver (DLL) could not be found
CdrvInvalidBaseAddress | 0x001B | (PC: Windows or Linux) driver could not found the CAN controller
CdrvInvalidParam       | 0x001C | Invalid param in function call
CdrvInvalidDevNumber   | 0x001D | (PC: Windows or Linux) the given device number is invalid
CdrvDevAlreadyInUse    | 0x001E | (PC: Windows or Linux) the device with the given number is already in use
CdrvHostOsError        | 0x001F | (PC: Windows or Linux) OS specific internal error (e.g. malloc, y_from_user, ...)

## COB

Error                 | Code   | Description
----------------------|--------|--------------------------------------------------------------------------
CobNoFreeEntry        | 0x0020 | No free entry in RX- or TX-COB table
CobAlreadyExist       | 0x0021 | COB-ID already exists in RX- resp. TX-COB table
CobIllegalHdl         | 0x0022 | Illegal handle for a COB was assigned
CobIllegalCanId       | 0x0023 | COB-ID is not allowed (like 0x000 is reserved for NMT, ...)
CobInvalidCanId       | 0x0024 | COB-ID is switched off
CobCdrvStateSet       | 0x0025 | At least one bit of CAN driver state is set
CobNoFreeEntryHighBuf | 0x0026 | No free entry in high priotity RX- or TX-COB table
CobOwnId              | 0x0027 | COB-ID already exists in own module which calls CobDefine() or CobCheck()
CobWrongCobType       | 0x0028 | A COB which was definded as Rx-Message should be sent

## OBD

Error                | Code   | Description
---------------------|--------|-----------------------------------------------------
ObdIllegalPart       | 0x0030 | Unknown OD part
ObdIndexNotExist     | 0x0031 | Object index does not exist in OD
ObdSubindexNotExist  | 0x0032 | Subindex does not exist in object index
ObdReadViolation     | 0x0033 | Read access to a write-only object
ObdWriteViolation    | 0x0034 | Write access to a read-only object
ObdAccessViolation   | 0x0035 | Access not allowed
ObdUnknownObjectType | 0x0036 | Object type not defined/known
ObdVarEntryNotExist  | 0x0037 | Object does not contain VarEntry structure
ObdValueToLow        | 0x0038 | Value to write to an object is to low
ObdValueToHigh       | 0x0039 | Value to write to an object is to high
ObdValueLengthError  | 0x003A | Value to write is to long or to short
ObdIllegalFloat      | 0x003B | Illegal float variable
ObdWrongOdBuilderKey | 0x003F | OD was generated with demo version of tool ODBuilder

## NMT

Error                   | Code   | Description
------------------------|--------|-----------------------------------------------------------------------------------------
NmtUnknownCommand       | 0x0040 | Unknown NMT command
NmtLifeguardVsHeartbeat | 0x0041 | One of life guarding or heartbeat was configured but the other one is already configured
NmtBootupNotPossible    | 0x0042 | Bootup message can not be sent in this NMT state
NmtHbcWrongCfg          | 0x0043 | Configuration of Heartbeat Consumer was wrong
NmtmSlaveNodeExist      | 0x0044 | NMT slave node can not be added because it does already exist
NmtmNoFreeSlaveEntry    | 0x0045 | No free entry to add a new NMT slave node
NmtmSlaveEntryNotExist  | 0x0046 | NMT slave node was never added
NmtStateError           | 0x0047 | Error has occured during NMT state machine
NmtmInvalidSlaveNodeId  | 0x0048 | Not a valid Slave Node Id

## SDO client

Error                   | Code   | Description
------------------------|--------|---------------------------------------------------
SdocInitError           | 0x0050 | Initial. or changing parameter not successful
SdocInvalidParam        | 0x0051 | One of the function parameter is invalid
SdocClientNotExist      | 0x0052 | Selected SDO client does not exist
SdocBusy                | 0x0053 | SDO client is already busy
SdocTransferError       | 0x0054 | An error occured during SDO transfer
SdocWrongMultiplexor    | 0x0055 | An SDO response was received with wron multiplexor
SdocEntryAlreadyDefined | 0x0056 | Client entry is already defined
SdocNoFreeEntry         | 0x0057 | No free client entry found in SDO server table
SdocConfigOrder         | 0x0058 |

## SDO server

Error                   | Code   | Description
------------------------|--------|-----------------------------------------------
SdosInitError           | 0x0060 | Initial. or changing parameter not successful
SdosServerNotExist      | 0x0061 | Selected SDO server does not exist
SdosBusy                | 0x0062 | SDO server is already busy
SdosSizeMismatch        | 0x0063 |
SdosNoFreeEntry         | 0x0064 | No free server entry found in SDO server table
SdosEntryAlreadyDefined | 0x0065 | Server entry is already defined
SdosConfigOrder         | 0x0066 |
SdosWrongDlc            | 0x0067 |
SdosWrongCcs            | 0x0068 |

## PDO module

Error                   | Code   | Description
------------------------|--------|--------------------------------------------------------------------------------------------------------
PdoNotExist             | 0x0070 | Selected PDO does not exist
PdoLengthExceeded       | 0x0071 | Length of PDO mapping exceedes 64 bis
PdoGranularityMismatch  | 0x0072 | Configured PDO granularity is not equal to supported granularity
PdoInitError            | 0x0073 | Error during initialisation of PDO module
PdoErrorPdoEncode       | 0x0074 | Error during encoding a PDO
PdoErrorPdoDecode       | 0x0075 | Error during decoding a PDO
PdoErrorSend            | 0x0076 | Error during sending a PDO
PdoErrorSyncWin         | 0x0077 | The SYNC window runs out during sending SYNC-PDOs
PdoErrorMapp            | 0x0078 | Invalid PDO mapping
PdoVarNotFound          | 0x0079 | Variable was not found in function PdoSignalVar()
PdoErrorEmcyPdoLen      | 0x007A | The length of a received PDO is unequal to the expected value
PdoWriteConstObject     | 0x007B | Constant object can not be written (only TxType, Inhibit-, Event Time for CANopen Kit)
PdoErrorRxEventTimer    | 0x007C | If an RPDO is configured with Event Timer, but PDO is not received after this time CcmCbError() will be
LsssResetNode           | 0x0080 | NMT command reset node has to be processed after LSS configuration
LsssInvalidNodeId       | 0x0081 | No valid NodeId is configured -> wait until it is configured with
EmccNoFreeProducerEntry | 0x0090 | No free entry to add a Emergency Producer
EmccNodeIdNotExist      | 0x0091 | Selected NodeId was never added
EmccNodeIdInvalid       | 0x0092 | Selected NodeId is outside of range (0x01 until 0x7F)
EmccNodeIdExist         | 0x0093 | Selected NodeId already exist

## Dynamic OD

Error            | Code   | Description
-----------------|--------|-------------------------------------------
DynNoMemory      | 0x00A0 | No memory available
DynInvalidConfig | 0x00A1 | Invalid configuration in segment container

## Heartbeat

Error                | Code   | Description
---------------------|--------|-----------------------------------------------------------------------
HbcEntryNotExist     | 0x00B0 | Heartbeat Producer node not configured
HbcEntryAlreadyExist | 0x00B1 | NodeId was already defined in heartbeat consumer table (object 0x1016)
HbcNoFreeEntry       | 0x00B2 |

## Configuration manager

Error                 | Code   | Description
----------------------|--------|-------------------------------------------------------
CfgMaConfigError      | 0x00C0 | Error in configuration manager
CfgMaSdocTimeOut      | 0x00C1 | Error in configuration manager, Sdoc timeout
CfgMaNoErrorCb        | 0x00C2 | No error callback function is used
CfgMaNoFreeConfig     | 0x00C3 | No free entry in internal list for configuratio
CfgMaNoConfigData     | 0x00C4 | No data for configuration found in 0x1F22
CfgMaInvaildSdoc      | 0x00C5 | The SDO Client Index is not in Rang 0x1280 util 0x1300
CfgMaConfigwithErrors | 0x00C6 | Configuration of node finished, but with errors
CfgMaConciseCorrupt   | 0x00C7 | Concise DCF is corrupt

## LSS master

Error              | Code   | Description
-------------------|--------|----------------------------------------------------------------
LssmIllegalMode    | 0x00D0 | Illegal LSS mode (operation / configuration)
LssmIllegalState   | 0x00D1 | Function was called in illegal state of LSS master
LssmBusy           | 0x00D2 | LSS process is busy with an previous service
LssmIllegalCmd     | 0x00D3 | Illegal command code was set for function LssmInquireIdentity()
LssmTimeout        | 0x00D4 | LSS slave did not answer a LSS service
LssmErrorInConfirm | 0x00D5 | LSS slave replied an error code for a LSS service

## CCM

Error                | Code   | Description
---------------------|--------|---------------------------------------------
CcmStoreUnvalidState | 0x00E0 | Memory device not available due device state
CcmStoreHwError      | 0x00E1 | Hw error due device access

## SDO router

Error                   | Code   | Description
------------------------|--------|---------------------------------------------------------------------------------------------------
SdorInvalidNetworkId    | 0x00F0 | Invalid netwird-ID
SdorWrongRoutingNetwork | 0x00F1 | Port number is the own instance
SdorInvalidPortNr       | 0x00F2 | Invalid port number
SdorNoSdocAvailable     | 0x00F3 | No SDO client is available
SdorWaitingNetworInd    | 0x00F4 | NOT AN ERROR: network indication has been started for next router - SDO server has to wait for the

## SDRO

Error                   | Code   | Description
------------------------|--------|------------------------------------------------------------------
SrdoNotExist            | 0x0100 | Selected SRDO does not exist
SrdoGranularityMismatch | 0x0101 | Configured SRDO granularity is not equal to supported granularity
SrdoCfgTimingError      | 0x0102 | Configuration is not ok (Timing)
SrdoCfgIdError          | 0x0103 | Configuration is not ok (CobIds)
SrdoCfgCrcError         | 0x0104 | Configuration is not ok (CRC)
SrdoNmtError            | 0x0105 | An action was tried in a wrong NMT state
SrdoInvalidCfg          | 0x0106 | An action was tried with an invald SRDO configuration
SrdoInvalid             | 0x0107 | An action was tried with an invald SRDO
SrdoRxTxConflict        | 0x0108 | An transmission was tried with an receive SRDO (or the other way)
SrdoIllegalCanId        | 0x0109 | The CanId is invalid
SrdoCanIdAlreadyInUse   | 0x010A | The CanId is already in use
SrdoNotInOrder          | 0x010B | The two messages of a SRDO are not in order
SrdoSctTimeout          | 0x010C | Timeout of SCT
SrdoSrvtTimeout         | 0x010D | Timeout of SRVT
SrdoCanIdNotValid       | 0x010E | One of received CAN-IDs are not equal to configured one
SrdoDlcNotValid         | 0x010F | One of received CAN-DLC are not equal to configured one
SrdoErrorMapp           | 0x0110 | Wrong values in mapping found
SrdoDataError           | 0x0111 | Data of CAN messages are not invers
SrdoLengthExceeded      | 0x0112 | Length of SRDO mapping exceedes 64 bit per CAN-message
SrdoNotHandledInApp     | 0x0113 | The SRDO error was not handled in AppSrdoError()
SrdoOverrun             | 0x0114 | A RxSRDO was received but the pevious one was not else processed

## SDO manager

Error                  | Code   | Description
-----------------------|--------|---------------------------------------------------------
SdomListFull           | 0x0120 | List for registration of possible SRD Clients is full
SdomBusy               | 0x0121 | SDO Manager works
SdomInternStructFull   | 0x0122 | An internal structure is full
SdomErrorCbInternError | 0x0123 | For Errorcallback function to indicate an internal error
SdomErrorCbError       | 0x0124 | For Errorcallback function to indicate a  Error

## SRD client

Error               | Code   | Description
--------------------|--------|--------------------------------------------------------------------------------------------
SrdBusy             | 0x0130 | SRD Client is not in State Idle
SrdNotRegistered    | 0x0131 | SRD Client not registered to SDO Manager
SrdNoAnswerSdom     | 0x0132 | SRD Client got no answer from SDO Manager
SrdNotMasterMode    | 0x0133 | SRD Client MasterMode not TRUE
SrdNotDynConnection | 0x0134 | The connection to release is no dynamic connection
SrdSdomNotUndefSdoc | 0x0135 | SDO Manager did not undefine SDO Client after release connection was successfully requested

## CANopen manager

Error                  | Code   | Description
-----------------------|--------|-------------------------------------------------------------------------------------------------------------
MgrTaskDeferred        | 0x0140 | Mgr performs task in background and informs the application, when it is finished
MgrInvalidOperation    | 0x0141 | Calling MgrEnterOperational() or any other function call is not allowed in this situation
MgrInvalidParam        | 0x0142 | Passed invalid parameters to a function (e.g. invalid node id)
MgrSdomError           | 0x0143 | Error in SDO manager while in boot slave process
MgrNoFreeEntry         | 0x0144 | No free entry in node list
MgrNodeBusy            | 0x0145 | Mgr performs SDO transfers to the request slave node by itself; no other SDO transfer possible at the moment
MgrSdocTypeAutoRunning | 0x0146 | A SDO transfer with type , MgrSdocTypeAuto is already running

## Flying master

Error         | Code   | Description
--------------|--------|-------------------------------------------------------------------------------
FlyMaNmtStart | 0x0150 | NO ERROR: only information that Flying Master has established the NMT mode
FlyMaNmtReset | 0x0151 | NO ERROR: only information that Flying Master has sent NMT Reset Communication
