37 class SdoErrcCategory :
public ::std::error_category {
40 name() const noexcept
override {
44 ::std::error_condition default_error_condition(
int ev)
const 51 message(
int ev)
const override {
56 ::std::error_condition
57 SdoErrcCategory::default_error_condition(
int ev)
const noexcept {
58 switch (static_cast<SdoErrc>(ev)) {
60 return ::std::errc::protocol_error;
62 return ::std::errc::timed_out;
66 return ::std::errc::protocol_error;
68 return ::std::errc::illegal_byte_sequence;
70 return ::std::errc::not_enough_memory;
74 return ::std::errc::permission_denied;
76 return ::std::errc::no_such_file_or_directory;
80 return ::std::errc::invalid_argument;
82 return ::std::errc::no_such_device_or_address;
84 return ::std::errc::io_error;
88 return ::std::errc::invalid_argument;
90 return ::std::errc::no_such_file_or_directory;
92 return ::std::errc::invalid_argument;
96 return ::std::errc::result_out_of_range;
98 return ::std::errc::protocol_not_supported;
101 return ::std::errc::io_error;
104 return ::std::errc::device_or_resource_busy;
107 return ::std::errc::no_message_available;
109 return ::std::error_condition(ev, *
this);
114 SdoWhat(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
115 ::std::error_code ec, const ::std::string& what_arg =
"") {
116 ::std::stringstream ss;
117 ss << ::std::uppercase << ::std::setfill(
'0') << ::std::hex;
118 if (!what_arg.empty()) ss << what_arg <<
':';
119 ss << ::std::setw(2) << int(netid) <<
':' << int(
id) <<
':';
120 ss << ::std::setw(4) << idx <<
':' << ::std::setw(2) << int(subidx) <<
": ";
122 ss <<
" (" << ::std::setw(8) << uint32_t(ec.value()) <<
')';
128 SdoError::SdoError(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
129 ::std::error_code ec)
130 : ::
std::runtime_error(SdoWhat(netid, id, idx, subidx, ec)),
137 SdoError::SdoError(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
138 ::std::error_code ec, const ::std::string& what_arg)
139 : ::
std::runtime_error(SdoWhat(netid, id, idx, subidx, ec, what_arg)),
146 SdoError::SdoError(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
147 ::std::error_code ec,
const char* what_arg)
148 : ::
std::runtime_error(SdoWhat(netid, id, idx, subidx, ec, what_arg)),
155 SdoError::SdoError(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
156 int ev,
const char* what_arg)
157 : SdoError(netid, id, idx, subidx, ::
std::error_code(ev,
SdoCategory()),
160 SdoError::SdoError(uint8_t netid, uint8_t
id, uint16_t idx, uint8_t subidx,
162 : SdoError(netid, id, idx, subidx, ::
std::error_code(ev,
SdoCategory())) {}
164 const ::std::error_category&
166 static const SdoErrcCategory category;
175 ::std::error_condition
General parameter incompatibility reason.
Data cannot be transferred or stored to the application because of the present device state...
Maximum value is less than minimum value (download only).
Invalid value for parameter (download only).
This header file is part of the C++ CANopen application library; it contains the SDO error declaratio...
Invalid block size (block mode only).
Attempt to write a read only object.
Access failed due to a hardware error.
Resource not available: SDO connection.
This header file is part of the CANopen library; it contains the Service Data Object (SDO) declaratio...
Unsupported access to an object.
Data cannot be transferred or stored to the application because of local control. ...
The mask to get/set the toggle bit from an NMT state.
Sub-index does not exist.
No data available. (NO_DATA is a macro defined in <netdb.h>)
Data cannot be transferred or stored to the application.
SdoErrc
The SDO abort codes.
Data type does not match, length of service parameter too high.
Data type does not match, length of service parameter does not match.
CRC error (block mode only).
Invalid sequence number (block mode only).
This is the internal header file of the C++ CANopen application library.
const char * co_sdo_ac2str(co_unsigned32_t ac)
Returns a string describing an SDO abort code.
Object does not exist in the object dictionary.
Client/server command specifier not valid or unknown.
Value of parameter written too low (download only).
::std::error_code make_error_code(SdoErrc e) noexcept
Creates an error code corresponding to an SDO abort code.
Data type does not match, length of service parameter too low.
Global namespace for the Lely Industries N.V. libraries.
General internal incompatibility in the device.
const ::std::error_category & SdoCategory() noexcept
Returns a reference to the error category object for SDO abort codes.
::std::error_condition make_error_condition(SdoErrc e) noexcept
Creates an error condition corresponding to an SDO abort code.
Attempt to read a write only object.
Value of parameter written too high (download only).