144 #include <asm/byteorder.h> 145 #include <linux/types.h> 146 #include <linux/time.h> 147 #include <linux/in.h> 151 #include <sys/time.h> 152 #include <netinet/in.h> 161 #define ECRT_VER_MAJOR 1 165 #define ECRT_VER_MINOR 6 169 #define ECRT_VERSION(a, b) (((a) << 8) + (b)) 173 #define ECRT_VERSION_MAGIC ECRT_VERSION(ECRT_VER_MAJOR, ECRT_VER_MINOR) 184 #define EC_HAVE_REDUNDANCY 190 #define EC_HAVE_EMERGENCY 198 #define EC_HAVE_REG_ACCESS 202 #define EC_HAVE_SELECT_REF_CLOCK 206 #define EC_HAVE_REF_CLOCK_TIME 210 #define EC_HAVE_REG_BY_POS 214 #define EC_HAVE_SYNC_TO 218 #define EC_HAVE_FLAGS 226 #define EC_HAVE_SOE_REQUESTS 231 #define EC_HAVE_SCAN_PROGRESS 239 #define EC_HAVE_SET_IP 243 #define EC_HAVE_STATE_TIMEOUT 249 #ifndef EC_PUBLIC_API 250 # if defined(ethercat_EXPORTS) && !defined(__KERNEL__) 251 # define EC_PUBLIC_API __attribute__ ((visibility ("default"))) 253 # define EC_PUBLIC_API 267 #define EC_MAX_SYNC_MANAGERS 16 273 #define EC_MAX_STRING_LENGTH 64 276 #define EC_MAX_PORTS 4 286 #define EC_TIMEVAL2NANO(TV) \ 287 (((TV).tv_sec - 946684800ULL) * 1000000000ULL + (TV).tv_usec * 1000ULL) 293 #define EC_COE_EMERGENCY_MSG_SIZE 8 656 unsigned int master_index
675 unsigned int master_index
678 #endif // #ifndef __KERNEL__ 715 #endif // #ifndef __KERNEL__ 740 void (*send_cb)(
void *),
741 void (*receive_cb)(
void *),
803 uint32_t product_code
868 uint16_t slave_position,
887 uint16_t slave_position,
906 uint16_t slave_position,
924 uint16_t slave_position,
947 uint16_t slave_position,
969 uint16_t slave_position,
989 uint16_t slave_position,
1010 uint16_t slave_position,
1013 const uint8_t *data,
1015 uint16_t *error_code
1031 uint16_t slave_position,
1037 size_t *result_size,
1038 uint16_t *error_code
1098 size_t send_interval
1177 unsigned int dev_idx,
1373 uint16_t watchdog_divider,
1378 uint16_t watchdog_intervals
1434 uint16_t entry_index,
1436 uint8_t entry_subindex,
1438 uint8_t entry_bit_length
1534 unsigned int n_syncs,
1562 uint16_t entry_index,
1563 uint8_t entry_subindex,
1565 unsigned int *bit_position
1587 unsigned int pdo_pos,
1588 unsigned int entry_pos,
1590 unsigned int *bit_position
1613 uint16_t assign_activate,
1614 uint32_t sync0_cycle,
1615 int32_t sync0_shift,
1616 uint32_t sync1_cycle,
1651 const uint8_t *data,
1670 uint8_t sdo_subindex,
1689 uint8_t sdo_subindex,
1708 uint8_t sdo_subindex,
1730 const uint8_t *data,
1938 const uint8_t *data,
1987 const unsigned char *mac_address
2025 struct in_addr ip_address
2049 struct in_addr subnet_mask
2073 struct in_addr gateway_address
2098 struct in_addr dns_address
2142 unsigned int timeout_ms
2594 uint16_t vendor_type
2614 uint32_t *vendor_id,
2615 uint16_t *vendor_type
2855 #define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01) 2863 #define EC_WRITE_BIT(DATA, POS, VAL) \ 2865 if (VAL) *((uint8_t *) (DATA)) |= (1 << (POS)); \ 2866 else *((uint8_t *) (DATA)) &= ~(1 << (POS)); \ 2875 #if __BYTE_ORDER == __LITTLE_ENDIAN 2877 #define le16_to_cpu(x) x 2878 #define le32_to_cpu(x) x 2879 #define le64_to_cpu(x) x 2881 #define cpu_to_le16(x) x 2882 #define cpu_to_le32(x) x 2883 #define cpu_to_le64(x) x 2885 #elif __BYTE_ORDER == __BIG_ENDIAN 2889 (((uint16_t)(x) & 0x00ffU) << 8) | \ 2890 (((uint16_t)(x) & 0xff00U) >> 8) )) 2893 (((uint32_t)(x) & 0x000000ffUL) << 24) | \ 2894 (((uint32_t)(x) & 0x0000ff00UL) << 8) | \ 2895 (((uint32_t)(x) & 0x00ff0000UL) >> 8) | \ 2896 (((uint32_t)(x) & 0xff000000UL) >> 24) )) 2899 (((uint64_t)(x) & 0x00000000000000ffULL) << 56) | \ 2900 (((uint64_t)(x) & 0x000000000000ff00ULL) << 40) | \ 2901 (((uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | \ 2902 (((uint64_t)(x) & 0x00000000ff000000ULL) << 8) | \ 2903 (((uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | \ 2904 (((uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | \ 2905 (((uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | \ 2906 (((uint64_t)(x) & 0xff00000000000000ULL) >> 56) )) 2908 #define le16_to_cpu(x) swap16(x) 2909 #define le32_to_cpu(x) swap32(x) 2910 #define le64_to_cpu(x) swap64(x) 2912 #define cpu_to_le16(x) swap16(x) 2913 #define cpu_to_le32(x) swap32(x) 2914 #define cpu_to_le64(x) swap64(x) 2918 #define le16_to_cpup(x) le16_to_cpu(*((uint16_t *)(x))) 2919 #define le32_to_cpup(x) le32_to_cpu(*((uint32_t *)(x))) 2920 #define le64_to_cpup(x) le64_to_cpu(*((uint64_t *)(x))) 2932 #define EC_READ_U8(DATA) \ 2933 ((uint8_t) *((uint8_t *) (DATA))) 2940 #define EC_READ_S8(DATA) \ 2941 ((int8_t) *((uint8_t *) (DATA))) 2948 #define EC_READ_U16(DATA) \ 2949 ((uint16_t) le16_to_cpup((void *) (DATA))) 2956 #define EC_READ_S16(DATA) \ 2957 ((int16_t) le16_to_cpup((void *) (DATA))) 2964 #define EC_READ_U32(DATA) \ 2965 ((uint32_t) le32_to_cpup((void *) (DATA))) 2972 #define EC_READ_S32(DATA) \ 2973 ((int32_t) le32_to_cpup((void *) (DATA))) 2980 #define EC_READ_U64(DATA) \ 2981 ((uint64_t) le64_to_cpup((void *) (DATA))) 2988 #define EC_READ_S64(DATA) \ 2989 ((int64_t) le64_to_cpup((void *) (DATA))) 3011 #define EC_READ_REAL(DATA) ecrt_read_real(DATA) 3027 #define EC_READ_LREAL(DATA) ecrt_read_lreal(DATA) 3029 #endif // ifndef __KERNEL__ 3040 #define EC_WRITE_U8(DATA, VAL) \ 3042 *((uint8_t *)(DATA)) = ((uint8_t) (VAL)); \ 3050 #define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL) 3057 #define EC_WRITE_U16(DATA, VAL) \ 3059 *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \ 3067 #define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL) 3074 #define EC_WRITE_U32(DATA, VAL) \ 3076 *((uint32_t *) (DATA)) = cpu_to_le32((uint32_t) (VAL)); \ 3084 #define EC_WRITE_S32(DATA, VAL) EC_WRITE_U32(DATA, VAL) 3091 #define EC_WRITE_U64(DATA, VAL) \ 3093 *((uint64_t *) (DATA)) = cpu_to_le64((uint64_t) (VAL)); \ 3101 #define EC_WRITE_S64(DATA, VAL) EC_WRITE_U64(DATA, VAL) 3116 EC_PUBLIC_API void ecrt_write_real(
void *data,
float value);
3123 #define EC_WRITE_REAL(DATA, VAL) ecrt_write_real(DATA, VAL) 3132 EC_PUBLIC_API void ecrt_write_lreal(
void *data,
double value);
3139 #define EC_WRITE_LREAL(DATA, VAL) ecrt_write_lreal(DATA, VAL) 3141 #endif // ifndef __KERNEL__ unsigned int working_counter
Value of the last working counter.
uint32_t serial_number
Serial-Number stored on the slave.
ec_slave_port_desc_t desc
Physical port type.
uint8_t subindex
PDO entry subindex.
EC_PUBLIC_API ec_request_state_t ecrt_sdo_request_state(const ec_sdo_request_t *req)
Get the current state of the SDO request.
uint16_t position
Slave position.
EC_PUBLIC_API int ecrt_master_deactivate(ec_master_t *master)
Deactivates the master.
uint8_t sync_count
Number of sync managers.
EC_PUBLIC_API int ecrt_sdo_request_write(ec_sdo_request_t *req)
Schedule an SDO write operation.
EC_PUBLIC_API int ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc, uint8_t sync_index)
Clear a sync manager's PDO assignment.
EC_PUBLIC_API int ecrt_master_link_state(const ec_master_t *master, unsigned int dev_idx, ec_master_link_state_t *state)
Reads the current state of a redundant link.
unsigned int n_entries
Number of PDO entries in entries to map.
#define EC_PUBLIC_API
Symbol visibility control macro.
EC_PUBLIC_API int ecrt_voe_handler_read(ec_voe_handler_t *voe)
Start a VoE read operation.
uint8_t bit_length
Size of the PDO entry in bit.
ec_direction_t dir
Sync manager direction.
uint8_t error_flag
Error flag for that slave.
ec_watchdog_mode_t
Watchdog mode for sync manager configuration.
ec_slave_port_desc_t
EtherCAT slave port descriptor.
ec_pdo_info_t const * pdos
Array with PDOs to assign.
EC_PUBLIC_API int ecrt_slave_config_sdo32(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint32_t value)
Add a configuration value for a 32-bit SDO.
EC_PUBLIC_API int ecrt_master_send(ec_master_t *master)
Sends all datagrams in the queue.
ec_al_state_t
Application-layer state.
EC_PUBLIC_API int ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout)
Set the timeout for an SDO request.
EC_PUBLIC_API int ecrt_master_scan_progress(ec_master_t *master, ec_master_scan_progress_t *progress)
Obtains network scan progress information.
EC_PUBLIC_API int ecrt_soe_request_timeout(ec_soe_request_t *req, uint32_t timeout)
Set the timeout for an SoE request.
unsigned int redundancy_active
Redundant link is in use.
EC_PUBLIC_API int ecrt_slave_config_watchdog(ec_slave_config_t *sc, uint16_t watchdog_divider, uint16_t watchdog_intervals)
Configure a slave's watchdog times.
EC_PUBLIC_API uint8_t * ecrt_sdo_request_data(const ec_sdo_request_t *req)
Access to the SDO request's data.
unsigned int slave_count
Number of slaves in the network.
EC_PUBLIC_API int ecrt_domain_reg_pdo_entry_list(ec_domain_t *domain, const ec_pdo_entry_reg_t *pdo_entry_regs)
Registers a bunch of PDO entries for a domain.
EC_PUBLIC_API int ecrt_master_sdo_download_complete(ec_master_t *master, uint16_t slave_position, uint16_t index, const uint8_t *data, size_t data_size, uint32_t *abort_code)
Executes an SDO download request to write data to a slave via complete access.
EC_PUBLIC_API ec_domain_t * ecrt_master_create_domain(ec_master_t *master)
Creates a new process data domain.
uint16_t index
PDO entry index.
EC_PUBLIC_API int ecrt_slave_config_reg_pdo_entry(ec_slave_config_t *sc, uint16_t entry_index, uint8_t entry_subindex, ec_domain_t *domain, unsigned int *bit_position)
Registers a PDO entry for process data exchange in a domain.
uint32_t vendor_id
Vendor-ID stored on the slave.
ec_slave_port_link_t link
Port link state.
unsigned int slaves_responding
Sum of responding slaves on the given link.
EC_PUBLIC_API int ecrt_master_sync_reference_clock(ec_master_t *master)
Queues the DC reference clock drift compensation datagram for sending.
EC_PUBLIC_API int ecrt_slave_config_sdo(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, const uint8_t *data, size_t size)
Add an SDO configuration.
EC_PUBLIC_API int ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
Reads the state of a domain.
EC_PUBLIC_API int ecrt_sdo_request_read(ec_sdo_request_t *req)
Schedule an SDO read operation.
void ecrt_master_callbacks(ec_master_t *master, void(*send_cb)(void *), void(*receive_cb)(void *), void *cb_data)
Sets the locking callbacks.
EC_PUBLIC_API int ecrt_voe_handler_write(ec_voe_handler_t *voe, size_t size)
Start a VoE write operation.
EC_PUBLIC_API int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index, ec_direction_t direction, ec_watchdog_mode_t watchdog_mode)
Configure a sync manager.
Master scan progress information.
EC_PUBLIC_API int ecrt_slave_config_emerg_overruns(const ec_slave_config_t *sc)
Read the number of CoE emergency overruns.
uint32_t delay_to_next_dc
Delay [ns] to next DC slave.
unsigned int link_up
true, if the given Ethernet link is up.
EC_PUBLIC_API int ecrt_soe_request_idn(ec_soe_request_t *req, uint8_t drive_no, uint16_t idn)
Set the request's drive and Sercos ID numbers.
EC_PUBLIC_API int ecrt_slave_config_idn(ec_slave_config_t *sc, uint8_t drive_no, uint16_t idn, ec_al_state_t state, const uint8_t *data, size_t size)
Add an SoE IDN configuration.
ec_wc_state_t wc_state
Working counter interpretation.
PDO configuration information.
EC_PUBLIC_API int ecrt_slave_config_state_timeout(ec_slave_config_t *sc, ec_al_state_t from_state, ec_al_state_t to_state, unsigned int timeout_ms)
Sets the application-layer state transition timeout in ms.
Sync manager configuration information.
EC_PUBLIC_API int ecrt_slave_config_eoe_dns_address(ec_slave_config_t *sc, struct in_addr dns_address)
Sets the IPv4 address of the DNS server for Ethernet-over-EtherCAT (EoE) operation.
ec_wc_state_t
Domain working counter interpretation.
uint8_t signal_detected
Detected signal on RX port.
EC_PUBLIC_API uint8_t * ecrt_reg_request_data(const ec_reg_request_t *req)
Access to the register request's data.
EtherCAT slave port information.
EC_PUBLIC_API int ecrt_slave_config_reg_pdo_entry_pos(ec_slave_config_t *sc, uint8_t sync_index, unsigned int pdo_pos, unsigned int entry_pos, ec_domain_t *domain, unsigned int *bit_position)
Registers a PDO entry using its position.
unsigned int slaves_responding
Sum of responding slaves on all Ethernet devices.
EC_PUBLIC_API int ecrt_slave_config_sdo8(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint8_t value)
Add a configuration value for an 8-bit SDO.
void ecrt_domain_external_memory(ec_domain_t *domain, uint8_t *memory)
Provide external memory to store the domain's process data.
EC_PUBLIC_API int ecrt_slave_config_state(const ec_slave_config_t *sc, ec_slave_config_state_t *state)
Outputs the state of the slave configuration.
EC_PUBLIC_API ec_voe_handler_t * ecrt_slave_config_create_voe_handler(ec_slave_config_t *sc, size_t size)
Create an VoE handler to exchange vendor-specific data during realtime operation. ...
unsigned int link_up
true, if the network link is up.
EC_PUBLIC_API int ecrt_master_write_idn(ec_master_t *master, uint16_t slave_position, uint8_t drive_no, uint16_t idn, const uint8_t *data, size_t data_size, uint16_t *error_code)
Executes an SoE write request.
Some of the registered process data were exchanged.
EC_PUBLIC_API unsigned int ecrt_version_magic(void)
Returns the version magic of the realtime interface.
uint32_t revision_number
Revision-Number stored on the slave.
Use the default setting of the sync manager.
EC_PUBLIC_API ec_sdo_request_t * ecrt_slave_config_create_sdo_request(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, size_t size)
Create an SDO request to exchange SDOs during realtime operation.
EC_PUBLIC_API uint8_t * ecrt_domain_data(const ec_domain_t *domain)
Returns the domain's process data.
EC_PUBLIC_API int ecrt_domain_queue(ec_domain_t *domain)
(Re-)queues all domain datagrams in the master's datagram queue.
uint16_t alias
Slave alias address.
EC_PUBLIC_API int ecrt_master_reference_clock_time(const ec_master_t *master, uint32_t *time)
Get the lower 32 bit of the reference clock system time.
EC_PUBLIC_API int ecrt_slave_config_emerg_clear(ec_slave_config_t *sc)
Clears CoE emergency ring buffer and the overrun counter.
uint8_t loop_closed
Loop closed.
EC_PUBLIC_API int ecrt_master_sync_reference_clock_to(ec_master_t *master, uint64_t sync_time)
Queues the DC reference clock drift compensation datagram for sending.
EC_PUBLIC_API uint8_t * ecrt_soe_request_data(const ec_soe_request_t *req)
Access to the SoE request's data.
EC_PUBLIC_API int ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, uint8_t subindex)
Set the SDO index and subindex.
Slave configuration state.
Request is being processed.
uint64_t app_time
Application time.
ec_watchdog_mode_t watchdog_mode
Watchdog mode.
unsigned int n_pdos
Number of PDOs in pdos.
uint32_t vendor_id
Slave vendor ID.
unsigned int al_state
The application-layer state of the slave.
unsigned int * bit_position
Pointer to a variable to store a bit position (0-7) within the offset.
EC_PUBLIC_API size_t ecrt_domain_size(const ec_domain_t *domain)
Returns the current size of the domain's process data.
EC_PUBLIC_API int ecrt_master_application_time(ec_master_t *master, uint64_t app_time)
Sets the application time.
unsigned int operational
The slave was brought into OP state using the specified configuration.
EC_PUBLIC_API int ecrt_voe_handler_received_header(const ec_voe_handler_t *voe, uint32_t *vendor_id, uint16_t *vendor_type)
Reads the header data of a received VoE message.
EC_PUBLIC_API int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position, uint8_t drive_no, uint16_t idn, uint8_t *target, size_t target_size, size_t *result_size, uint16_t *error_code)
Executes an SoE read request.
ec_direction_t
Direction type for PDO assignment functions.
EC_PUBLIC_API size_t ecrt_sdo_request_data_size(const ec_sdo_request_t *req)
Returns the current SDO data size.
EC_PUBLIC_API int ecrt_reg_request_write(ec_reg_request_t *req, uint16_t address, size_t size)
Schedule an register write operation.
EC_PUBLIC_API ec_slave_config_t * ecrt_master_slave_config(ec_master_t *master, uint16_t alias, uint16_t position, uint32_t vendor_id, uint32_t product_code)
Obtains a slave configuration.
EC_PUBLIC_API int ecrt_slave_config_flag(ec_slave_config_t *sc, const char *key, int32_t value)
Adds a feature flag to a slave configuration.
Vendor specific over EtherCAT handler.
EC_PUBLIC_API size_t ecrt_soe_request_data_size(const ec_soe_request_t *req)
Returns the current IDN data size.
EC_PUBLIC_API ec_request_state_t ecrt_soe_request_state(const ec_soe_request_t *req)
Get the current state of the SoE request.
ec_pdo_entry_info_t const * entries
Array of PDO entries to map.
EC_PUBLIC_API int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc, uint8_t sync_index, uint16_t index)
Add a PDO to a sync manager's PDO assignment.
EC_PUBLIC_API int ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate, uint32_t sync0_cycle, int32_t sync0_shift, uint32_t sync1_cycle, int32_t sync1_shift)
Configure distributed clocks.
EC_PUBLIC_API ec_request_state_t ecrt_reg_request_state(const ec_reg_request_t *req)
Get the current state of the register request.
EC_PUBLIC_API ec_reg_request_t * ecrt_slave_config_create_reg_request(ec_slave_config_t *sc, size_t size)
Create a register request to exchange EtherCAT register contents during realtime operation.
EC_PUBLIC_API int ecrt_slave_config_eoe_ip_address(ec_slave_config_t *sc, struct in_addr ip_address)
Sets the IP address for Ethernet-over-EtherCAT (EoE) operation.
int ecrt_master_send_ext(ec_master_t *master)
Sends non-application datagrams.
EC_PUBLIC_API int ecrt_master_select_reference_clock(ec_master_t *master, ec_slave_config_t *sc)
Selects the reference clock for distributed clocks.
Values read by the master.
EC_PUBLIC_API int ecrt_master_sync_monitor_queue(ec_master_t *master)
Queues the DC synchrony monitoring datagram for sending.
unsigned int online
The slave is online.
EC_PUBLIC_API int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
Obtains master information.
EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc, uint16_t pdo_index)
Clear the mapping of a given PDO.
EC_PUBLIC_API int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, ec_slave_info_t *slave_info)
Obtains slave information.
uint16_t index
PDO entry index.
uint8_t al_state
Current state of the slave.
uint8_t scan_busy
true, while the master is scanning the network.
EC_PUBLIC_API ec_master_t * ecrt_request_master(unsigned int master_index)
Requests an EtherCAT master for realtime operation.
int16_t current_on_ebus
Used current in mA.
EC_PUBLIC_API int ecrt_domain_process(ec_domain_t *domain)
Determines the states of the domain's datagrams.
EC_PUBLIC_API int ecrt_slave_config_eoe_default_gateway(ec_slave_config_t *sc, struct in_addr gateway_address)
Sets the gateway address for Ethernet-over-EtherCAT (EoE) operation.
#define EC_MAX_PORTS
Maximum number of slave ports.
EC_PUBLIC_API int ecrt_master_sdo_download(ec_master_t *master, uint16_t slave_position, uint16_t index, uint8_t subindex, const uint8_t *data, size_t data_size, uint32_t *abort_code)
Executes an SDO download request to write data to a slave.
EC_PUBLIC_API uint8_t * ecrt_voe_handler_data(const ec_voe_handler_t *voe)
Access to the VoE handler's data.
EC_PUBLIC_API int ecrt_slave_config_emerg_pop(ec_slave_config_t *sc, uint8_t *target)
Read and remove one record from the CoE emergency ring buffer.
EC_PUBLIC_API ec_soe_request_t * ecrt_slave_config_create_soe_request(ec_slave_config_t *sc, uint8_t drive_no, uint16_t idn, size_t size)
Create an SoE request to exchange SoE IDNs during realtime operation.
EC_PUBLIC_API int ecrt_slave_config_complete_sdo(ec_slave_config_t *sc, uint16_t index, const uint8_t *data, size_t size)
Add configuration data for a complete SDO.
uint16_t sdo_count
Number of SDOs.
#define EC_MAX_STRING_LENGTH
Maximum string length.
List record type for PDO entry mass-registration.
unsigned int link_up
true, if at least one Ethernet link is up.
EC_PUBLIC_API int ecrt_slave_config_pdos(ec_slave_config_t *sc, unsigned int n_syncs, const ec_sync_info_t syncs[])
Specify a complete PDO configuration.
EC_PUBLIC_API int ecrt_voe_handler_send_header(ec_voe_handler_t *voe, uint32_t vendor_id, uint16_t vendor_type)
Sets the VoE header for future send operations.
EC_PUBLIC_API int ecrt_slave_config_eoe_hostname(ec_slave_config_t *sc, const char *name)
Sets the host name for Ethernet-over-EtherCAT (EoE) operation.
unsigned int scan_index
Index of the slave that is currently scanned.
uint16_t next_slave
Ring position of next DC slave on that port.
No registered process data were exchanged.
All registered process data were exchanged.
unsigned int al_states
Application-layer states of all slaves.
EC_PUBLIC_API int ecrt_master_activate(ec_master_t *master)
Finishes the configuration phase and prepares for cyclic operation.
EC_PUBLIC_API int ecrt_soe_request_read(ec_soe_request_t *req)
Schedule an SoE IDN read operation.
EC_PUBLIC_API size_t ecrt_voe_handler_data_size(const ec_voe_handler_t *voe)
Returns the current data size.
EC_PUBLIC_API ec_request_state_t ecrt_voe_handler_execute(ec_voe_handler_t *voe)
Execute the handler.
uint16_t alias
The slaves alias if not equal to 0.
EtherCAT slave configuration.
uint32_t product_code
Product-Code stored on the slave.
EC_PUBLIC_API int ecrt_master_receive(ec_master_t *master)
Fetches received frames from the hardware and processes the datagrams.
unsigned int slave_count
Number of slaves detected.
EC_PUBLIC_API uint32_t ecrt_master_sync_monitor_process(const ec_master_t *master)
Processes the DC synchrony monitoring datagram.
Request was processed successfully.
unsigned int * offset
Pointer to a variable to store the PDO entry's (byte-)offset in the process data. ...
ec_request_state_t
Request state.
PDO entry configuration information.
uint8_t index
Sync manager index.
Values written by the master.
EC_PUBLIC_API int ecrt_slave_config_eoe_mac_address(ec_slave_config_t *sc, const unsigned char *mac_address)
Sets the link/MAC address for Ethernet-over-EtherCAT (EoE) operation.
EC_PUBLIC_API int ecrt_soe_request_write(ec_soe_request_t *req)
Schedule an SoE IDN write operation.
EC_PUBLIC_API int ecrt_slave_config_sdo16(ec_slave_config_t *sc, uint16_t sdo_index, uint8_t sdo_subindex, uint16_t value)
Add a configuration value for a 16-bit SDO.
EC_PUBLIC_API int ecrt_slave_config_eoe_subnet_mask(ec_slave_config_t *sc, struct in_addr subnet_mask)
Sets the subnet mask for Ethernet-over-EtherCAT (EoE) operation.
unsigned int al_states
Application-layer states of the slaves on the given link.
EC_PUBLIC_API int ecrt_slave_config_pdo_mapping_add(ec_slave_config_t *sc, uint16_t pdo_index, uint16_t entry_index, uint8_t entry_subindex, uint8_t entry_bit_length)
Add a PDO entry to the given PDO's mapping.
EC_PUBLIC_API int ecrt_slave_config_emerg_size(ec_slave_config_t *sc, size_t elements)
Set the size of the CoE emergency ring buffer.
uint16_t position
Offset of the slave in the ring.
uint32_t receive_time
Receive time on DC transmission delay measurement.
uint32_t product_code
Slave product code.
Request processing failed.
EC_PUBLIC_API int ecrt_master_set_send_interval(ec_master_t *master, size_t send_interval)
Set interval between calls to ecrt_master_send().
uint8_t link_up
Link detected.
uint8_t subindex
PDO entry subindex.
EC_PUBLIC_API int ecrt_reg_request_read(ec_reg_request_t *req, uint16_t address, size_t size)
Schedule a register read operation.
EC_PUBLIC_API int ecrt_master_sync_slave_clocks(ec_master_t *master)
Queues the DC clock drift compensation datagram for sending.
EC_PUBLIC_API int ecrt_master_state(const ec_master_t *master, ec_master_state_t *state)
Reads the current master state.
Sercos-over-EtherCAT request.
EC_PUBLIC_API void ecrt_release_master(ec_master_t *master)
Releases a requested EtherCAT master.
EC_PUBLIC_API int ecrt_master_reset(ec_master_t *master)
Retry configuring slaves.
EC_PUBLIC_API int ecrt_master_sdo_upload(ec_master_t *master, uint16_t slave_position, uint16_t index, uint8_t subindex, uint8_t *target, size_t target_size, size_t *result_size, uint32_t *abort_code)
Executes an SDO upload request to read data from a slave.
EC_PUBLIC_API int ecrt_voe_handler_read_nosync(ec_voe_handler_t *voe)
Start a VoE read operation without querying the sync manager status.