Go to the documentation of this file.
30 #include <string_view>
89 std::initializer_list<std::pair<std::string_view, entry>>);
105 uint16_t
addr(std::string_view name)
const;
113 size_t size(std::string_view name)
const;
122 std::tuple<uint16_t, uint8_t, uint8_t>
object(std::string_view name)
const;
131 static std::tuple<uint16_t, uint8_t, uint8_t>
148 std::initializer_list<std::pair<std::string_view, entry>> entries);
152 get_entry_safe(std::string_view name, std::string_view caller)
const;
198 std::initializer_list<std::string_view> objects);
212 bool has_entry(std::string_view entry)
const;
270 template <
typename T>
315 std::string_view entry_name,
319 std::string_view entry_name,
size_t bytes);
322 std::string_view entry_name,
size_t bytes)
const;
325 std::string_view entry_name)
const;
329 template <
typename T>
331 return std::tuple<T&>(map_memory<T>(
access_mapping(mapping_increment)));
334 template <
typename T,
typename U,
typename... Other>
336 return std::tuple_cat(
337 map_memory_tuple<T>(mapping_increment),
338 map_memory_tuple<U, Other...>(mapping_increment + 1));
341 template <
typename T,
typename U,
typename... Other>
342 std::tuple<
const T&,
const U&,
const Other&...>
344 return std::tuple_cat(
345 map_memory_tuple<T>(mapping_increment),
346 map_memory_tuple<U, Other...>(mapping_increment + 1));
349 template <
typename T>
351 return std::tuple<const T&>(
359 template <
typename... T>
360 PDOBuffer(
bool is_tx, uint16_t addr, uint32_t flags, T&&... mappings)
378 template <
typename... T>
380 (
add_mapping(std::forward<T>(mappings),
true), ...);
387 void bind(uint8_t* data);
412 std::string_view entry)
const;
420 template <
typename T>
422 return *
reinterpret_cast<T*
>(
432 template <
typename T>
434 std::string_view entry_name)
const {
435 return *
reinterpret_cast<const T*
>(
445 template <
typename T>
456 template <
typename T>
458 return *
reinterpret_cast<const T*
>(
468 template <
typename T,
typename U,
typename... Other>
480 template <
typename T,
typename U,
typename... Other>
481 std::tuple<
const T&,
const U&,
const Other&...>
map_memory()
const {
491 template <
typename T>
503 template <
typename T>
bool is_tx_
Definition: coe_utilities.h:166
constexpr const uint16_t coe_rx_pdo_param_3
Definition: coe_utilities.h:52
uint8_t * data_
Definition: coe_utilities.h:301
std::tuple< T &, U &, Other &... > map_memory()
Map the entire buffer to a typed reference.
Definition: coe_utilities.h:469
std::map< uint64_t, DictionaryEntry > dictionary_
Definition: coe_utilities.h:154
void add_entries(std::initializer_list< std::pair< std::string_view, entry >> entries)
Add en entry to the dictionary.
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
constexpr const uint16_t coe_rx_pdo_param_4
Definition: coe_utilities.h:53
const PDOMapping & access_mapping(size_t idx) const
constexpr const uint16_t coe_tx_pdo_param_1
Definition: coe_utilities.h:55
size_t size(std::string_view name) const
Get size of a given entry.
constexpr double rad2deg
Definition: coe_utilities.h:572
constexpr const uint16_t coe_rx_pdo_param_2
Definition: coe_utilities.h:51
void add_object(std::string_view obj)
add an object to the mapping
std::tuple< T &, U &, Other &... > map_memory_tuple(size_t mapping_increment)
Definition: coe_utilities.h:335
size_t memory_size() const
Get total size in bytes of the mapping.
bool add_mapping(const PDOMapping &mapping, bool may_throw=false)
add a mapping to the buffer
constexpr double rev_to_rad
Definition: coe_utilities.h:573
uint8_t * map_memory_internal(const PDOMapping &mapping, size_t bytes)
constexpr double rads2rpm
Definition: coe_utilities.h:570
void check_mapping_size_throws(const PDOMapping &mapping, size_t bytes) const
const_iterator end() const
get terminal iterator on mapped objects
size_t memory_shift(std::string_view obj) const
Get memory shift to access a given object of the mapping.
constexpr const uint16_t coe_rx_pdo_map_4
Definition: coe_utilities.h:43
const T & map_memory() const
Map the entire buffer to a typed rconst eference.
Definition: coe_utilities.h:504
uint8_t subindex
Definition: coe_utilities.h:75
uint16_t addr(std::string_view name) const
Get address of a given entry.
size_t mapping_memory_shift(const PDOMapping &mapping) const
Get the shift in buffer memory to access mapping data.
Entry of a dictionnary.
Definition: coe_utilities.h:73
std::vector< const PDOMapping * > mappings_
Definition: coe_utilities.h:300
bool configure(SlaveDevice ð_slave) const
Configure an ethercat unit device with the corresponding mapping.
ObjectDictionary()=default
Represent a CANOpen PDO mapping.
Definition: coe_utilities.h:163
void define_physical_buffer(SlaveDevice ð_slave)
define the physical buffer of an ethercat slave
bool is_tx() const
Give the type of mapping (TX or RX)
std::tuple< const T & > map_memory_tuple(size_t mapping_increment) const
Definition: coe_utilities.h:350
static constexpr uint16_t coe_tx_pdo_assign
Definition: coe_utilities.h:61
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
void check_mapping_throws(const PDOMapping &mapping) const
PDOMapping(ObjectDictionary &dico, uint8_t idx, bool is_tx)
Construct a new PDOMapping object.
void bind_physical_buffer(SlaveDevice ð_slave)
bind internal memory zone to the physical buffer of an ethercat slave
constexpr const uint16_t coe_tx_pdo_param_4
Definition: coe_utilities.h:58
std::tuple< T & > map_memory_tuple(size_t mapping_increment)
Definition: coe_utilities.h:330
void add_mappings(T &&... mappings)
Fill buffer from a list of mappings.
Definition: coe_utilities.h:379
constexpr const uint16_t coe_tx_pdo_map_2
Definition: coe_utilities.h:46
constexpr double rpm2rads
Definition: coe_utilities.h:571
void bind(uint8_t *data)
Bind the buffer to a memory zone.
uint16_t memory_size() const
Get size of the buffer in memory.
std::vector< std::pair< uint8_t, uint32_t > >::iterator iterator
Definition: coe_utilities.h:172
constexpr const uint16_t coe_tx_pdo_param_2
Definition: coe_utilities.h:56
std::tuple< uint16_t, uint8_t, uint8_t > object(std::string_view name) const
Get uncompressed specification of a given entry.
uint16_t addr_
Definition: coe_utilities.h:303
PDOBuffer(bool is_tx, uint16_t addr, uint32_t flags, T &&... mappings)
Definition: coe_utilities.h:360
bool check_buffer()
Check whether a type can be used as a buffer for this mapping.
Definition: coe_utilities.h:271
constexpr const uint16_t coe_rx_pdo_param_1
Definition: coe_utilities.h:50
bool is_tx_
Definition: coe_utilities.h:302
void check_entry_throws(const PDOMapping &mapping, std::string_view entry_name, size_t bytes) const
T & map_memory()
Map the entire buffer to a typed reference.
Definition: coe_utilities.h:492
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.
constexpr const uint16_t coe_tx_pdo_map_1
Definition: coe_utilities.h:45
constexpr const uint16_t coe_tx_pdo_map_3
Definition: coe_utilities.h:47
size_t compute_shift(const PDOMapping &mapping, std::string_view entry_name) const
~ObjectDictionary()=default
bool check_entry_size(std::string_view obj, size_t bytes) const
Check whether an entry has corresponding size.
constexpr const uint16_t coe_tx_pdo_map_4
Definition: coe_utilities.h:48
T & map_memory(const PDOMapping &mapping)
Map a mapping to a typed reference.
Definition: coe_utilities.h:446
constexpr const uint16_t coe_tx_pdo_param_3
Definition: coe_utilities.h:57
static std::tuple< uint16_t, uint8_t, uint8_t > pdo_object_specs(uint32_t full_spec)
Get uncompressed specification from a compact object specification.
void add_entry(std::string_view name, const DictionaryEntry &object)
Add en entry to the dictionary.
const T & map_memory(const PDOMapping &mapping) const
Map a mapping to a typed reference.
Definition: coe_utilities.h:457
bool contains_mapping(const PDOMapping &mapping) const
Tell whether the buffer contains a given mapping.
static constexpr uint16_t coe_rx_pdo_assign
Definition: coe_utilities.h:60
std::vector< std::pair< uint8_t, uint32_t > > objects_mapping_
Definition: coe_utilities.h:167
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
uint32_t mapped_pdo_object(std::string_view name) const
Get the compact specification of a given entry.
std::vector< std::pair< uint8_t, uint32_t > >::const_iterator const_iterator
Definition: coe_utilities.h:174
const ObjectDictionary::DictionaryEntry & get_entry_safe(std::string_view name, std::string_view caller) const
ObjectDictionary * reference_dictionnary_
Definition: coe_utilities.h:164
Definition: coe_utilities.h:299
uint8_t bits
Definition: coe_utilities.h:76
uint16_t addr
Definition: coe_utilities.h:74
constexpr const uint16_t coe_rx_pdo_map_2
Definition: coe_utilities.h:41
void reset()
clean mapping memory
This class define an EtherCAT unit device.
Definition: slave_device.h:53
bool has_entry(std::string_view entry) const
Check whether the mapping use the corresponding entry.
bool assign(SlaveDevice ð_slave) const
Configure an ethercat unit device with the corresponding assigned PDO mappings.
const_iterator begin() const
get first iterator on mapped objects
uint32_t flags_
Definition: coe_utilities.h:304
std::tuple< const T &, const U &, const Other &... > map_memory_tuple(size_t mapping_increment) const
Definition: coe_utilities.h:343
bool configure(SlaveDevice ð_slave) const
Configure an ethercat unit device with the corresponding buffer and mappings.
uint8_t index_
Definition: coe_utilities.h:165
uint16_t map_addr() const
get address of the mapping in device memory
represent the CoE dictionnary of a device
Definition: coe_utilities.h:67
constexpr const uint16_t coe_rx_pdo_map_3
Definition: coe_utilities.h:42
void check_entry_throws(std::string_view obj) const
constexpr const uint16_t coe_rx_pdo_map_1
Definition: coe_utilities.h:40
const ObjectDictionary & dictionary() const
Access reference dictionary.