# 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