12#define OTYPE_VAR 0x0007
13#define OTYPE_ARRAY 0x0008
14#define OTYPE_RECORD 0x0009
21 uint16_t hardware_id_;
22 std::map<uint32_t, SoemOdEntry> od_entry_map_;
23 std::map<std::string, std::variant<MotionMasterError, std::vector<uint8_t>>>
25 std::mutex file_cache_mutex_;
29 explicit Pdo(
SoemOdEntry* od_entry, uint32_t offset)
30 : od_entry_{od_entry}, offset_{offset} {}
35 throw std::invalid_argument(
36 "Invalid argument provided for Pdo object construction.");
38 *
this = Pdo(od_entry, offset);
45 std::list<Pdo> rx_pdos_;
46 std::list<Pdo> tx_pdos_;
48 int setup_od_entries();
50 void config_detected_smm();
59 bool init_hardware_id();
65 explicit SoemSlave(
const uint16_t position);
81 uint16_t
index, uint8_t subindex)
override;
83 [[nodiscard]] std::variant<MotionMasterError, std::list<std::string>>
86 [[nodiscard]] std::variant<MotionMasterError, std::vector<uint8_t>>
read_file(
87 const std::string& file_name)
override;
90 const std::string& file_name,
const std::vector<uint8_t>& content,
91 std::function<
void(uint8_t)> progress_callback)
override;
119 [[nodiscard]]
bool has_pdos()
override;
123 bool set_state(
State state, uint32_t timeout_ms = 10000)
override;
129 [[maybe_unused]]
void receive_pdos(
const uint8_t* process_data)
override;
133 [[maybe_unused]]
void send_pdos(
const uint8_t* process_data)
override;
137 [[nodiscard]] std::variant<MotionMasterError, std::vector<uint8_t>>
140 const std::vector<uint8_t>& content);
State
Definition ethercat_slave.h:18
virtual void update_pdo_mapping_od()
Definition ethercat_slave.h:267
EthercatSlave()
Definition ethercat_slave.h:12
Definition motion_master_error.h:6
Definition soem_od_entry.h:7
uint16_t get_device_id() const override
Get the ID (absolute position) of the EtherCAT slave in the EtherCAT chain.
Definition soem_slave.cc:161
void send_pdos(const uint8_t *process_data) override
Definition soem_slave.cc:1316
void initialize()
Initializes the slave based on its current EtherCAT state.
Definition soem_slave.cc:1099
bool is_operational() const override
Request the current slave state.
Definition soem_slave.cc:1084
bool has_pdos() override
Check if PDO mapping is available.
Definition soem_slave.cc:1097
std::variant< MotionMasterError, std::list< std::string > > get_file_list() override
Get the list of available files on the device.
Definition soem_slave.cc:611
std::variant< MotionMasterError, std::vector< uint8_t > > get_file_content(const std::string &file_name)
Definition soem_slave.cc:1334
MotionMasterError do_remove_file(const std::string &file_name)
Definition soem_slave.cc:1507
std::variant< MotionMasterError, std::vector< uint8_t > > read_file(const std::string &file_name) override
Return the raw content (bytes) of the requested file from the flash memory.
Definition soem_slave.cc:658
bool has_virtual_parameters() override
Definition soem_slave.cc:597
State get_state(bool force_refresh) const override
Get the slave EtherCAT state.
Definition soem_slave.cc:1240
uint16_t get_hardware_id() const override
Get the hardware ID.
Definition soem_slave.cc:163
MotionMasterError write_sii(const std::vector< uint8_t > &content) override
Definition soem_slave.cc:1274
SoemSlave(const uint16_t position)
Definition soem_slave.cc:49
void receive_pdos(const uint8_t *process_data) override
Definition soem_slave.cc:1296
bool is_supported()
Definition soem_slave.cc:1088
int32_t set_file_content(const std::string &file_name, const std::vector< uint8_t > &content)
Definition soem_slave.cc:1454
~SoemSlave() override
Definition soem_slave.h:67
std::list< VirtualParameter * > get_all_virtual_parameters() override
Get all configuration parameters from a slave.
Definition soem_slave.cc:589
bool set_state(State state, uint32_t timeout_ms=10000) override
Change the EtherCAT state of the slave.
Definition soem_slave.cc:1252
void update_outputs()
Definition soem_slave.cc:1298
MotionMasterError remove_file(const std::string &file_name) override
Remove a file from the flash memory.
Definition soem_slave.cc:889
VirtualParameter * get_virtual_parameter(uint16_t index, uint8_t subindex) override
Get a configuration parameter by its index/subindex.
Definition soem_slave.cc:599
std::vector< uint8_t > read_sii()
Definition soem_slave.cc:1526
bool has_firmware() override
Check if the slave has a firmware installed.
Definition soem_slave.cc:1082
MotionMasterError write_file(const std::string &file_name, const std::vector< uint8_t > &content, std::function< void(uint8_t)> progress_callback) override
Write raw content (bytes) into a file in the flash memory.
Definition soem_slave.cc:801
void update_inputs()
Definition soem_slave.cc:1318
Type get_device_type() const override
Get the device type.
Definition soem_slave.cc:587
bool request_state_switch(State state) override
Definition soem_slave.cc:1266
Type
Definition virtual_device.h:27
Definition virtual_parameter.h:9
uint16_t index
Definition co_dictionary.h:0