ethercatcpp
coe_utilities.h
Go to the documentation of this file.
1 /* File: coe_utilities.h
2  * This file is part of the program ethercatcpp-core
3  * Program description : EtherCAT driver libraries for UNIX
4  * Copyright (C) 2017-2024 - Robin Passama (LIRMM / CNRS) Arnaud Meline
5  * (LIRMM / CNRS) Benjamin Navarro (LIRMM / CNRS). All Right reserved.
6  *
7  * This software is free software: you can redistribute it and/or modify
8  * it under the terms of the CeCILL-C license as published by
9  * the CEA CNRS INRIA, either version 1
10  * of the License, or (at your option) any later version.
11  * This software is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * CeCILL-C License for more details.
15  *
16  * You should have received a copy of the CeCILL-C License
17  * along with this software. If not, it can be found on the official
18  * website of the CeCILL licenses family (http://www.cecill.info/index.en.html).
19  */
27 #pragma once
28 #include <cstdint>
29 #include <map>
30 #include <string_view>
31 #include <vector>
32 #include <cmath>
33 
34 namespace ethercatcpp {
35 
36 class SlaveDevice;
37 
38 namespace coe {
39 
40 constexpr const uint16_t coe_rx_pdo_map_1 = 0x1600;
41 constexpr const uint16_t coe_rx_pdo_map_2 = 0x1601;
42 constexpr const uint16_t coe_rx_pdo_map_3 = 0x1602;
43 constexpr const uint16_t coe_rx_pdo_map_4 = 0x1603;
44 
45 constexpr const uint16_t coe_tx_pdo_map_1 = 0x1A00;
46 constexpr const uint16_t coe_tx_pdo_map_2 = 0x1A01;
47 constexpr const uint16_t coe_tx_pdo_map_3 = 0x1A02;
48 constexpr const uint16_t coe_tx_pdo_map_4 = 0x1A03;
49 
50 constexpr const uint16_t coe_rx_pdo_param_1 = 0x1400;
51 constexpr const uint16_t coe_rx_pdo_param_2 = 0x1401;
52 constexpr const uint16_t coe_rx_pdo_param_3 = 0x1402;
53 constexpr const uint16_t coe_rx_pdo_param_4 = 0x1403;
54 
55 constexpr const uint16_t coe_tx_pdo_param_1 = 0x1800;
56 constexpr const uint16_t coe_tx_pdo_param_2 = 0x1801;
57 constexpr const uint16_t coe_tx_pdo_param_3 = 0x1802;
58 constexpr const uint16_t coe_tx_pdo_param_4 = 0x1803;
59 
60 static constexpr uint16_t coe_rx_pdo_assign = 0x1c12;
61 static constexpr uint16_t coe_tx_pdo_assign = 0x1c13;
62 
68 public:
73  struct DictionaryEntry {
74  uint16_t addr;
75  uint8_t subindex;
76  uint8_t bits;
77  };
78 
80 
81  ObjectDictionary() = default;
82  ~ObjectDictionary() = default;
83 
88  explicit ObjectDictionary(
89  std::initializer_list<std::pair<std::string_view, entry>>);
90 
97  uint32_t mapped_pdo_object(std::string_view name) const;
98 
105  uint16_t addr(std::string_view name) const;
106 
113  size_t size(std::string_view name) const;
114 
122  std::tuple<uint16_t, uint8_t, uint8_t> object(std::string_view name) const;
123 
131  static std::tuple<uint16_t, uint8_t, uint8_t>
132  pdo_object_specs(uint32_t full_spec);
133 
140  void add_entry(std::string_view name, const DictionaryEntry& object);
141 
147  void add_entries(
148  std::initializer_list<std::pair<std::string_view, entry>> entries);
149 
150 private:
152  get_entry_safe(std::string_view name, std::string_view caller) const;
153 
154  std::map<uint64_t, DictionaryEntry> dictionary_;
155 };
156 
158 
163 class PDOMapping {
165  uint8_t index_;
166  bool is_tx_;
167  std::vector<std::pair<uint8_t, uint32_t>> objects_mapping_;
168 
169  void check_entry_throws(std::string_view obj) const;
170 
171 public:
172  using iterator = std::vector<std::pair<uint8_t, uint32_t>>::iterator;
173  using const_iterator =
174  std::vector<std::pair<uint8_t, uint32_t>>::const_iterator;
175 
185  PDOMapping(ObjectDictionary& dico, uint8_t idx, bool is_tx);
186 
197  PDOMapping(ObjectDictionary& dico, uint8_t idx, bool is_tx,
198  std::initializer_list<std::string_view> objects);
199 
205  uint16_t map_addr() const;
206 
212  bool has_entry(std::string_view entry) const;
213 
219  const_iterator begin() const;
220 
226  const_iterator end() const;
227 
232  void reset();
233 
239  void add_object(std::string_view obj);
240 
248  bool configure(SlaveDevice& eth_slave) const;
249 
255  size_t memory_size() const;
256 
262  size_t memory_shift(std::string_view obj) const;
263 
270  template <typename T>
271  bool check_buffer() {
272  return memory_size() == sizeof(T);
273  }
274 
282  bool check_entry_size(std::string_view obj, size_t bytes) const;
283 
289  bool is_tx() const;
290 
296  const ObjectDictionary& dictionary() const;
297 };
298 
299 class PDOBuffer {
300  std::vector<const PDOMapping*> mappings_;
301  uint8_t* data_;
302  bool is_tx_;
303  uint16_t addr_;
304  uint32_t flags_;
305 
306  void check_mapping_throws(const PDOMapping& mapping) const;
307  void check_mapping_size_throws(const PDOMapping& mapping,
308  size_t bytes) const;
309 
310  uint8_t* map_memory_internal(const PDOMapping& mapping, size_t bytes);
311 
312  const uint8_t* map_memory_internal(const PDOMapping& mapping,
313  size_t bytes) const;
314  const uint8_t* map_memory_internal(const PDOMapping& mapping,
315  std::string_view entry_name,
316  size_t bytes) const;
317 
318  uint8_t* map_memory_internal(const PDOMapping& mapping,
319  std::string_view entry_name, size_t bytes);
320 
321  void check_entry_throws(const PDOMapping& mapping,
322  std::string_view entry_name, size_t bytes) const;
323 
324  size_t compute_shift(const PDOMapping& mapping,
325  std::string_view entry_name) const;
326 
327  const PDOMapping& access_mapping(size_t idx) const;
328 
329  template <typename T>
330  std::tuple<T&> map_memory_tuple(size_t mapping_increment) {
331  return std::tuple<T&>(map_memory<T>(access_mapping(mapping_increment)));
332  }
333 
334  template <typename T, typename U, typename... Other>
335  std::tuple<T&, U&, Other&...> map_memory_tuple(size_t mapping_increment) {
336  return std::tuple_cat(
337  map_memory_tuple<T>(mapping_increment),
338  map_memory_tuple<U, Other...>(mapping_increment + 1));
339  }
340 
341  template <typename T, typename U, typename... Other>
342  std::tuple<const T&, const U&, const Other&...>
343  map_memory_tuple(size_t mapping_increment) const {
344  return std::tuple_cat(
345  map_memory_tuple<T>(mapping_increment),
346  map_memory_tuple<U, Other...>(mapping_increment + 1));
347  }
348 
349  template <typename T>
350  std::tuple<const T&> map_memory_tuple(size_t mapping_increment) const {
351  return std::tuple<const T&>(
352  map_memory<T>(access_mapping(mapping_increment)));
353  }
354 
355 public:
356  PDOBuffer() = delete;
357  PDOBuffer(bool is_tx, uint16_t addr_, uint32_t flags_);
358 
359  template <typename... T>
360  PDOBuffer(bool is_tx, uint16_t addr, uint32_t flags, T&&... mappings)
361  : PDOBuffer(is_tx, addr, flags) {
362  add_mappings(std::forward<T>(mappings)...);
363  }
364 
370  bool add_mapping(const PDOMapping& mapping, bool may_throw = false);
371 
378  template <typename... T>
379  void add_mappings(T&&... mappings) {
380  (add_mapping(std::forward<T>(mappings), true), ...);
381  }
387  void bind(uint8_t* data);
388 
394  bool contains_mapping(const PDOMapping& mapping) const;
395 
402  size_t mapping_memory_shift(const PDOMapping& mapping) const;
403 
411  size_t entry_memory_shift(const PDOMapping& mapping,
412  std::string_view entry) const;
413 
420  template <typename T>
421  T& map_memory(const PDOMapping& mapping, std::string_view entry_name) {
422  return *reinterpret_cast<T*>(
423  map_memory_internal(mapping, entry_name, sizeof(T)));
424  }
425 
432  template <typename T>
433  const T& map_memory(const PDOMapping& mapping,
434  std::string_view entry_name) const {
435  return *reinterpret_cast<const T*>(
436  map_memory_internal(mapping, entry_name, sizeof(T)));
437  }
438 
445  template <typename T>
446  T& map_memory(const PDOMapping& mapping) {
447  return *reinterpret_cast<T*>(map_memory_internal(mapping, sizeof(T)));
448  }
449 
456  template <typename T>
457  const T& map_memory(const PDOMapping& mapping) const {
458  return *reinterpret_cast<const T*>(
459  map_memory_internal(mapping, sizeof(T)));
460  }
461 
468  template <typename T, typename U, typename... Other>
469  std::tuple<T&, U&, Other&...> map_memory() {
470  return map_memory_tuple<T, U, Other...>(0);
471  }
472 
480  template <typename T, typename U, typename... Other>
481  std::tuple<const T&, const U&, const Other&...> map_memory() const {
482  return map_memory_tuple<T, U, Other...>(0);
483  }
484 
491  template <typename T>
492  T& map_memory() {
493  return map_memory<T>(access_mapping(0));
494  }
495 
503  template <typename T>
504  const T& map_memory() const {
505  return map_memory<T>(access_mapping(0));
506  }
507 
514  uint16_t memory_size() const;
515 
523  void define_physical_buffer(SlaveDevice& eth_slave);
524 
535  bool configure(SlaveDevice& eth_slave) const;
536 
547  bool assign(SlaveDevice& eth_slave) const;
548 
561  void bind_physical_buffer(SlaveDevice& eth_slave);
562 };
563 
566 
567 namespace cia402 {
568 
569 // most useful conversion utilities
570 constexpr double rads2rpm = 60.0 / (2 * M_PI);
571 constexpr double rpm2rads = (2 * M_PI) / 60.0;
572 constexpr double rad2deg = 180. / M_PI;
573 constexpr double rev_to_rad = (2. * M_PI);
574 
575 } // namespace cia402
576 
577 } // namespace coe
578 } // namespace ethercatcpp
ethercatcpp::coe::PDOMapping::is_tx_
bool is_tx_
Definition: coe_utilities.h:166
ethercatcpp::coe::coe_rx_pdo_param_3
constexpr const uint16_t coe_rx_pdo_param_3
Definition: coe_utilities.h:52
ethercatcpp::coe::PDOBuffer::data_
uint8_t * data_
Definition: coe_utilities.h:301
ethercatcpp::coe::PDOBuffer::map_memory
std::tuple< T &, U &, Other &... > map_memory()
Map the entire buffer to a typed reference.
Definition: coe_utilities.h:469
ethercatcpp::coe::ObjectDictionary::dictionary_
std::map< uint64_t, DictionaryEntry > dictionary_
Definition: coe_utilities.h:154
ethercatcpp::coe::ObjectDictionary::add_entries
void add_entries(std::initializer_list< std::pair< std::string_view, entry >> entries)
Add en entry to the dictionary.
ethercatcpp::coe::PDOBuffer::map_memory
const T & map_memory(const PDOMapping &mapping, std::string_view entry_name) const
Map the entry of a mapping to a typed const reference.
Definition: coe_utilities.h:433
ethercatcpp::coe::coe_rx_pdo_param_4
constexpr const uint16_t coe_rx_pdo_param_4
Definition: coe_utilities.h:53
ethercatcpp::coe::PDOBuffer::access_mapping
const PDOMapping & access_mapping(size_t idx) const
ethercatcpp::coe::coe_tx_pdo_param_1
constexpr const uint16_t coe_tx_pdo_param_1
Definition: coe_utilities.h:55
ethercatcpp::coe::ObjectDictionary::size
size_t size(std::string_view name) const
Get size of a given entry.
ethercatcpp::coe::cia402::rad2deg
constexpr double rad2deg
Definition: coe_utilities.h:572
ethercatcpp::coe::coe_rx_pdo_param_2
constexpr const uint16_t coe_rx_pdo_param_2
Definition: coe_utilities.h:51
ethercatcpp::coe::PDOMapping::add_object
void add_object(std::string_view obj)
add an object to the mapping
ethercatcpp::coe::PDOBuffer::map_memory_tuple
std::tuple< T &, U &, Other &... > map_memory_tuple(size_t mapping_increment)
Definition: coe_utilities.h:335
ethercatcpp::coe::PDOMapping::memory_size
size_t memory_size() const
Get total size in bytes of the mapping.
ethercatcpp::coe::PDOBuffer::add_mapping
bool add_mapping(const PDOMapping &mapping, bool may_throw=false)
add a mapping to the buffer
ethercatcpp::coe::cia402::rev_to_rad
constexpr double rev_to_rad
Definition: coe_utilities.h:573
ethercatcpp::coe::PDOBuffer::map_memory_internal
uint8_t * map_memory_internal(const PDOMapping &mapping, size_t bytes)
ethercatcpp::coe::cia402::rads2rpm
constexpr double rads2rpm
Definition: coe_utilities.h:570
ethercatcpp::coe::PDOBuffer::check_mapping_size_throws
void check_mapping_size_throws(const PDOMapping &mapping, size_t bytes) const
ethercatcpp::coe::PDOMapping::end
const_iterator end() const
get terminal iterator on mapped objects
ethercatcpp::coe::PDOMapping::memory_shift
size_t memory_shift(std::string_view obj) const
Get memory shift to access a given object of the mapping.
ethercatcpp::coe::coe_rx_pdo_map_4
constexpr const uint16_t coe_rx_pdo_map_4
Definition: coe_utilities.h:43
ethercatcpp::coe::PDOBuffer::map_memory
const T & map_memory() const
Map the entire buffer to a typed rconst eference.
Definition: coe_utilities.h:504
ethercatcpp::coe::ObjectDictionary::DictionaryEntry::subindex
uint8_t subindex
Definition: coe_utilities.h:75
ethercatcpp::coe::ObjectDictionary::addr
uint16_t addr(std::string_view name) const
Get address of a given entry.
ethercatcpp::coe::PDOBuffer::mapping_memory_shift
size_t mapping_memory_shift(const PDOMapping &mapping) const
Get the shift in buffer memory to access mapping data.
ethercatcpp::coe::ObjectDictionary::DictionaryEntry
Entry of a dictionnary.
Definition: coe_utilities.h:73
ethercatcpp::coe::PDOBuffer::mappings_
std::vector< const PDOMapping * > mappings_
Definition: coe_utilities.h:300
ethercatcpp::coe::PDOMapping::configure
bool configure(SlaveDevice &eth_slave) const
Configure an ethercat unit device with the corresponding mapping.
ethercatcpp::coe::ObjectDictionary::ObjectDictionary
ObjectDictionary()=default
ethercatcpp::coe::PDOMapping
Represent a CANOpen PDO mapping.
Definition: coe_utilities.h:163
ethercatcpp::coe::PDOBuffer::define_physical_buffer
void define_physical_buffer(SlaveDevice &eth_slave)
define the physical buffer of an ethercat slave
ethercatcpp::coe::PDOMapping::is_tx
bool is_tx() const
Give the type of mapping (TX or RX)
ethercatcpp::coe::PDOBuffer::map_memory_tuple
std::tuple< const T & > map_memory_tuple(size_t mapping_increment) const
Definition: coe_utilities.h:350
ethercatcpp::coe::coe_tx_pdo_assign
static constexpr uint16_t coe_tx_pdo_assign
Definition: coe_utilities.h:61
ethercatcpp::coe::PDOBuffer::map_memory
T & map_memory(const PDOMapping &mapping, std::string_view entry_name)
Map the entry of a mapping to a typed reference.
Definition: coe_utilities.h:421
ethercatcpp::coe::PDOBuffer::check_mapping_throws
void check_mapping_throws(const PDOMapping &mapping) const
ethercatcpp::coe::PDOMapping::PDOMapping
PDOMapping(ObjectDictionary &dico, uint8_t idx, bool is_tx)
Construct a new PDOMapping object.
ethercatcpp::coe::PDOBuffer::bind_physical_buffer
void bind_physical_buffer(SlaveDevice &eth_slave)
bind internal memory zone to the physical buffer of an ethercat slave
ethercatcpp::coe::PDOBuffer::PDOBuffer
PDOBuffer()=delete
ethercatcpp::coe::coe_tx_pdo_param_4
constexpr const uint16_t coe_tx_pdo_param_4
Definition: coe_utilities.h:58
ethercatcpp::coe::PDOBuffer::map_memory_tuple
std::tuple< T & > map_memory_tuple(size_t mapping_increment)
Definition: coe_utilities.h:330
ethercatcpp::coe::PDOBuffer::add_mappings
void add_mappings(T &&... mappings)
Fill buffer from a list of mappings.
Definition: coe_utilities.h:379
ethercatcpp::coe::coe_tx_pdo_map_2
constexpr const uint16_t coe_tx_pdo_map_2
Definition: coe_utilities.h:46
ethercatcpp::coe::cia402::rpm2rads
constexpr double rpm2rads
Definition: coe_utilities.h:571
ethercatcpp::coe::PDOBuffer::bind
void bind(uint8_t *data)
Bind the buffer to a memory zone.
ethercatcpp::coe::PDOBuffer::memory_size
uint16_t memory_size() const
Get size of the buffer in memory.
ethercatcpp::coe::PDOMapping::iterator
std::vector< std::pair< uint8_t, uint32_t > >::iterator iterator
Definition: coe_utilities.h:172
ethercatcpp::coe::coe_tx_pdo_param_2
constexpr const uint16_t coe_tx_pdo_param_2
Definition: coe_utilities.h:56
ethercatcpp::coe::ObjectDictionary::object
std::tuple< uint16_t, uint8_t, uint8_t > object(std::string_view name) const
Get uncompressed specification of a given entry.
ethercatcpp::coe::PDOBuffer::addr_
uint16_t addr_
Definition: coe_utilities.h:303
ethercatcpp::coe::PDOBuffer::PDOBuffer
PDOBuffer(bool is_tx, uint16_t addr, uint32_t flags, T &&... mappings)
Definition: coe_utilities.h:360
ethercatcpp::coe::PDOMapping::check_buffer
bool check_buffer()
Check whether a type can be used as a buffer for this mapping.
Definition: coe_utilities.h:271
ethercatcpp::coe::coe_rx_pdo_param_1
constexpr const uint16_t coe_rx_pdo_param_1
Definition: coe_utilities.h:50
ethercatcpp::coe::PDOBuffer::is_tx_
bool is_tx_
Definition: coe_utilities.h:302
ethercatcpp::coe::PDOBuffer::check_entry_throws
void check_entry_throws(const PDOMapping &mapping, std::string_view entry_name, size_t bytes) const
ethercatcpp::coe::PDOBuffer::map_memory
T & map_memory()
Map the entire buffer to a typed reference.
Definition: coe_utilities.h:492
ethercatcpp::coe::PDOBuffer::entry_memory_shift
size_t entry_memory_shift(const PDOMapping &mapping, std::string_view entry) const
Get the shift in buffer memory to access a mapping entry data.
ethercatcpp::coe::coe_tx_pdo_map_1
constexpr const uint16_t coe_tx_pdo_map_1
Definition: coe_utilities.h:45
ethercatcpp::coe::coe_tx_pdo_map_3
constexpr const uint16_t coe_tx_pdo_map_3
Definition: coe_utilities.h:47
ethercatcpp::coe::PDOBuffer::compute_shift
size_t compute_shift(const PDOMapping &mapping, std::string_view entry_name) const
ethercatcpp::coe::ObjectDictionary::~ObjectDictionary
~ObjectDictionary()=default
ethercatcpp::coe::PDOMapping::check_entry_size
bool check_entry_size(std::string_view obj, size_t bytes) const
Check whether an entry has corresponding size.
ethercatcpp::coe::coe_tx_pdo_map_4
constexpr const uint16_t coe_tx_pdo_map_4
Definition: coe_utilities.h:48
ethercatcpp::coe::PDOBuffer::map_memory
T & map_memory(const PDOMapping &mapping)
Map a mapping to a typed reference.
Definition: coe_utilities.h:446
ethercatcpp::coe::coe_tx_pdo_param_3
constexpr const uint16_t coe_tx_pdo_param_3
Definition: coe_utilities.h:57
ethercatcpp::coe::ObjectDictionary::pdo_object_specs
static std::tuple< uint16_t, uint8_t, uint8_t > pdo_object_specs(uint32_t full_spec)
Get uncompressed specification from a compact object specification.
ethercatcpp::coe::ObjectDictionary::add_entry
void add_entry(std::string_view name, const DictionaryEntry &object)
Add en entry to the dictionary.
ethercatcpp::coe::PDOBuffer::map_memory
const T & map_memory(const PDOMapping &mapping) const
Map a mapping to a typed reference.
Definition: coe_utilities.h:457
ethercatcpp::coe::PDOBuffer::contains_mapping
bool contains_mapping(const PDOMapping &mapping) const
Tell whether the buffer contains a given mapping.
ethercatcpp::coe::coe_rx_pdo_assign
static constexpr uint16_t coe_rx_pdo_assign
Definition: coe_utilities.h:60
ethercatcpp::coe::PDOMapping::objects_mapping_
std::vector< std::pair< uint8_t, uint32_t > > objects_mapping_
Definition: coe_utilities.h:167
ethercatcpp::coe::PDOBuffer::map_memory
std::tuple< const T &, const U &, const Other &... > map_memory() const
Map the entire buffer to a typed const reference.
Definition: coe_utilities.h:481
ethercatcpp::coe::ObjectDictionary::mapped_pdo_object
uint32_t mapped_pdo_object(std::string_view name) const
Get the compact specification of a given entry.
ethercatcpp::coe::PDOMapping::const_iterator
std::vector< std::pair< uint8_t, uint32_t > >::const_iterator const_iterator
Definition: coe_utilities.h:174
ethercatcpp::coe::ObjectDictionary::get_entry_safe
const ObjectDictionary::DictionaryEntry & get_entry_safe(std::string_view name, std::string_view caller) const
ethercatcpp::coe::PDOMapping::reference_dictionnary_
ObjectDictionary * reference_dictionnary_
Definition: coe_utilities.h:164
ethercatcpp::coe::PDOBuffer
Definition: coe_utilities.h:299
ethercatcpp::coe::ObjectDictionary::DictionaryEntry::bits
uint8_t bits
Definition: coe_utilities.h:76
ethercatcpp::coe::ObjectDictionary::DictionaryEntry::addr
uint16_t addr
Definition: coe_utilities.h:74
ethercatcpp::coe::coe_rx_pdo_map_2
constexpr const uint16_t coe_rx_pdo_map_2
Definition: coe_utilities.h:41
ethercatcpp
ethercatcpp::coe::PDOMapping::reset
void reset()
clean mapping memory
ethercatcpp::SlaveDevice
This class define an EtherCAT unit device.
Definition: slave_device.h:53
ethercatcpp::coe::PDOMapping::has_entry
bool has_entry(std::string_view entry) const
Check whether the mapping use the corresponding entry.
ethercatcpp::coe::PDOBuffer::assign
bool assign(SlaveDevice &eth_slave) const
Configure an ethercat unit device with the corresponding assigned PDO mappings.
ethercatcpp::coe::PDOMapping::begin
const_iterator begin() const
get first iterator on mapped objects
ethercatcpp::coe::PDOBuffer::flags_
uint32_t flags_
Definition: coe_utilities.h:304
ethercatcpp::coe::PDOBuffer::map_memory_tuple
std::tuple< const T &, const U &, const Other &... > map_memory_tuple(size_t mapping_increment) const
Definition: coe_utilities.h:343
ethercatcpp::coe::PDOBuffer::configure
bool configure(SlaveDevice &eth_slave) const
Configure an ethercat unit device with the corresponding buffer and mappings.
ethercatcpp::coe::PDOMapping::index_
uint8_t index_
Definition: coe_utilities.h:165
ethercatcpp::coe::PDOMapping::map_addr
uint16_t map_addr() const
get address of the mapping in device memory
ethercatcpp::coe::ObjectDictionary
represent the CoE dictionnary of a device
Definition: coe_utilities.h:67
ethercatcpp::coe::coe_rx_pdo_map_3
constexpr const uint16_t coe_rx_pdo_map_3
Definition: coe_utilities.h:42
ethercatcpp::coe::PDOMapping::check_entry_throws
void check_entry_throws(std::string_view obj) const
ethercatcpp::coe::coe_rx_pdo_map_1
constexpr const uint16_t coe_rx_pdo_map_1
Definition: coe_utilities.h:40
ethercatcpp::coe::PDOMapping::dictionary
const ObjectDictionary & dictionary() const
Access reference dictionary.