144#include <asm/byteorder.h>
145#include <linux/types.h>
146#include <linux/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
226#define EC_HAVE_SOE_REQUESTS
231#define EC_HAVE_SCAN_PROGRESS
239#define EC_HAVE_SET_IP
243#define EC_HAVE_STATE_TIMEOUT
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
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
1668 uint16_t assign_activate,
1669 uint32_t sync0_cycle,
1670 int32_t sync0_shift,
1671 uint32_t sync1_cycle,
1706 const uint8_t *data,
1725 uint8_t sdo_subindex,
1744 uint8_t sdo_subindex,
1763 uint8_t sdo_subindex,
1785 const uint8_t *data,
1993 const uint8_t *data,
2042 const unsigned char *mac_address
2080 struct in_addr ip_address
2104 struct in_addr subnet_mask
2128 struct in_addr gateway_address
2153 struct in_addr dns_address
2197 unsigned int timeout_ms
2649 uint16_t vendor_type
2669 uint32_t *vendor_id,
2670 uint16_t *vendor_type
2910#define EC_READ_BIT(DATA, POS) ((*((uint8_t *) (DATA)) >> (POS)) & 0x01)
2918#define EC_WRITE_BIT(DATA, POS, VAL) \
2920 if (VAL) *((uint8_t *) (DATA)) |= (1 << (POS)); \
2921 else *((uint8_t *) (DATA)) &= ~(1 << (POS)); \
2930#if __BYTE_ORDER == __LITTLE_ENDIAN
2932#define le16_to_cpu(x) x
2933#define le32_to_cpu(x) x
2934#define le64_to_cpu(x) x
2936#define cpu_to_le16(x) x
2937#define cpu_to_le32(x) x
2938#define cpu_to_le64(x) x
2940#elif __BYTE_ORDER == __BIG_ENDIAN
2944 (((uint16_t)(x) & 0x00ffU) << 8) | \
2945 (((uint16_t)(x) & 0xff00U) >> 8) ))
2948 (((uint32_t)(x) & 0x000000ffUL) << 24) | \
2949 (((uint32_t)(x) & 0x0000ff00UL) << 8) | \
2950 (((uint32_t)(x) & 0x00ff0000UL) >> 8) | \
2951 (((uint32_t)(x) & 0xff000000UL) >> 24) ))
2954 (((uint64_t)(x) & 0x00000000000000ffULL) << 56) | \
2955 (((uint64_t)(x) & 0x000000000000ff00ULL) << 40) | \
2956 (((uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | \
2957 (((uint64_t)(x) & 0x00000000ff000000ULL) << 8) | \
2958 (((uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | \
2959 (((uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | \
2960 (((uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | \
2961 (((uint64_t)(x) & 0xff00000000000000ULL) >> 56) ))
2963#define le16_to_cpu(x) swap16(x)
2964#define le32_to_cpu(x) swap32(x)
2965#define le64_to_cpu(x) swap64(x)
2967#define cpu_to_le16(x) swap16(x)
2968#define cpu_to_le32(x) swap32(x)
2969#define cpu_to_le64(x) swap64(x)
2973#define le16_to_cpup(x) le16_to_cpu(*((uint16_t *)(x)))
2974#define le32_to_cpup(x) le32_to_cpu(*((uint32_t *)(x)))
2975#define le64_to_cpup(x) le64_to_cpu(*((uint64_t *)(x)))
2987#define EC_READ_U8(DATA) \
2988 ((uint8_t) *((uint8_t *) (DATA)))
2995#define EC_READ_S8(DATA) \
2996 ((int8_t) *((uint8_t *) (DATA)))
3003#define EC_READ_U16(DATA) \
3004 ((uint16_t) le16_to_cpup((void *) (DATA)))
3011#define EC_READ_S16(DATA) \
3012 ((int16_t) le16_to_cpup((void *) (DATA)))
3019#define EC_READ_U32(DATA) \
3020 ((uint32_t) le32_to_cpup((void *) (DATA)))
3027#define EC_READ_S32(DATA) \
3028 ((int32_t) le32_to_cpup((void *) (DATA)))
3035#define EC_READ_U64(DATA) \
3036 ((uint64_t) le64_to_cpup((void *) (DATA)))
3043#define EC_READ_S64(DATA) \
3044 ((int64_t) le64_to_cpup((void *) (DATA)))
3066#define EC_READ_REAL(DATA) ecrt_read_real(DATA)
3082#define EC_READ_LREAL(DATA) ecrt_read_lreal(DATA)
3095#define EC_WRITE_U8(DATA, VAL) \
3097 *((uint8_t *)(DATA)) = ((uint8_t) (VAL)); \
3105#define EC_WRITE_S8(DATA, VAL) EC_WRITE_U8(DATA, VAL)
3112#define EC_WRITE_U16(DATA, VAL) \
3114 *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \
3122#define EC_WRITE_S16(DATA, VAL) EC_WRITE_U16(DATA, VAL)
3129#define EC_WRITE_U32(DATA, VAL) \
3131 *((uint32_t *) (DATA)) = cpu_to_le32((uint32_t) (VAL)); \
3139#define EC_WRITE_S32(DATA, VAL) EC_WRITE_U32(DATA, VAL)
3146#define EC_WRITE_U64(DATA, VAL) \
3148 *((uint64_t *) (DATA)) = cpu_to_le64((uint64_t) (VAL)); \
3156#define EC_WRITE_S64(DATA, VAL) EC_WRITE_U64(DATA, VAL)
3178#define EC_WRITE_REAL(DATA, VAL) ecrt_write_real(DATA, VAL)
3187EC_PUBLIC_API void ecrt_write_lreal(
void *data,
double value);
3194#define EC_WRITE_LREAL(DATA, VAL) ecrt_write_lreal(DATA, VAL)
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_wc_state_t
Domain working counter interpretation.
int ecrt_sdo_request_read(ec_sdo_request_t *req)
Schedule an SDO read operation.
uint8_t * ecrt_reg_request_data(const ec_reg_request_t *reg)
Access to the register request's data.
struct ec_soe_request ec_soe_request_t
int ecrt_slave_config_emerg_clear(ec_slave_config_t *sc)
Clears CoE emergency ring buffer and the overrun counter.
int ecrt_soe_request_write(ec_soe_request_t *req)
Schedule an SoE IDN write operation.
int ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address, size_t size)
Schedule an register write operation.
void ecrt_release_master(ec_master_t *master)
Releases a requested EtherCAT master.
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.
int ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout)
Set the timeout for an SDO request.
int ecrt_slave_config_sync_manager(ec_slave_config_t *sc, uint8_t sync_index, ec_direction_t dir, ec_watchdog_mode_t watchdog_mode)
Configure a sync manager.
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_slave_port_desc_t
EtherCAT slave port descriptor.
int ecrt_domain_process(ec_domain_t *domain)
Determines the states of the domain's datagrams.
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_al_state_t
Application-layer state.
#define EC_MAX_PORTS
Maximum number of slave ports.
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.
size_t ecrt_domain_size(const ec_domain_t *domain)
Returns the current size of the domain's process data.
uint8_t * ecrt_voe_handler_data(const ec_voe_handler_t *voe)
Access to the VoE handler's data.
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.
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.
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.
int ecrt_slave_config_watchdog(ec_slave_config_t *sc, uint16_t divider, uint16_t intervals)
Configure a slave's watchdog times.
int ecrt_master_scan_progress(ec_master_t *master, ec_master_scan_progress_t *progress)
Obtains network scan progress information.
uint32_t ecrt_master_sync_monitor_process(const ec_master_t *master)
Processes the DC synchrony monitoring datagram.
ec_request_state_t ecrt_soe_request_state(const ec_soe_request_t *req)
Get the current state of the SoE request.
int ecrt_master_state(const ec_master_t *master, ec_master_state_t *state)
Reads the current master state.
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.
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.
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.
int ecrt_slave_config_sdo32(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, uint32_t value)
Add a configuration value for a 32-bit SDO.
int ecrt_master_sync_slave_clocks(ec_master_t *master)
Queues the DC clock drift compensation datagram for sending.
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.
int ecrt_slave_config_emerg_overruns(const ec_slave_config_t *sc)
Read the number of CoE emergency overruns.
size_t ecrt_soe_request_data_size(const ec_soe_request_t *req)
Returns the current IDN data size.
int ecrt_master_receive(ec_master_t *master)
Fetches received frames from the hardware and processes the datagrams.
size_t ecrt_sdo_request_data_size(const ec_sdo_request_t *req)
Returns the current SDO data size.
struct ec_voe_handler ec_voe_handler_t
ec_domain_t * ecrt_master_create_domain(ec_master_t *master)
Creates a new process data domain.
int ecrt_slave_config_state(const ec_slave_config_t *sc, ec_slave_config_state_t *state)
Outputs the state of the slave configuration.
int ecrt_master_select_reference_clock(ec_master_t *master, ec_slave_config_t *sc)
Selects the reference clock for distributed clocks.
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.
int ecrt_slave_config_pdo_assign_clear(ec_slave_config_t *sc, uint8_t sync_index)
Clear a sync manager's PDO assignment.
unsigned int ecrt_version_magic(void)
Returns the version magic of the realtime interface.
struct ec_sdo_request ec_sdo_request_t
int ecrt_slave_config_dc(ec_slave_config_t *sc, uint16_t assign_activate, uint32_t sync0_cycle_time, int32_t sync0_shift_time, uint32_t sync1_cycle_time, int32_t sync1_shift_time)
Configure distributed clocks.
int ecrt_slave_config_flag(ec_slave_config_t *sc, const char *key, int32_t value)
Adds a feature flag to a slave configuration.
struct ec_master ec_master_t
int ecrt_domain_queue(ec_domain_t *domain)
(Re-)queues all domain datagrams in the master's datagram queue.
ec_master_t * ecrt_request_master(unsigned int master_index)
Requests an EtherCAT master for realtime operation.
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.
void ecrt_master_callbacks(ec_master_t *master, void(*send_cb)(void *), void(*receive_cb)(void *), void *cb_data)
Sets the locking callbacks.
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.
uint8_t * ecrt_soe_request_data(const ec_soe_request_t *req)
Access to the SoE request's data.
int ecrt_master_application_time(ec_master_t *master, uint64_t app_time)
Sets the application time.
int ecrt_voe_handler_read(ec_voe_handler_t *voe)
Start a VoE read operation.
uint8_t * ecrt_sdo_request_data(const ec_sdo_request_t *req)
Access to the SDO request's data.
int ecrt_master_send(ec_master_t *master)
Sends all datagrams in the queue.
ec_direction_t
Direction type for PDO assignment functions.
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.
int ecrt_domain_state(const ec_domain_t *domain, ec_domain_state_t *state)
Reads the state of a domain.
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.
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.
struct ec_domain ec_domain_t
struct ec_slave_config ec_slave_config_t
struct ec_reg_request ec_reg_request_t
#define EC_PUBLIC_API
Symbol visibility control macro.
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_request_state_t ecrt_reg_request_state(const ec_reg_request_t *reg)
Get the current state of the register request.
size_t ecrt_voe_handler_data_size(const ec_voe_handler_t *voe)
Returns the current data size.
int ecrt_master_send_ext(ec_master_t *master)
Sends non-application datagrams.
int ecrt_slave_config_reg_pdo_entry(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, ec_domain_t *domain, unsigned int *bit_position)
Registers a PDO entry for process data exchange in a domain.
int ecrt_master_sync_reference_clock(ec_master_t *master)
Queues the DC reference clock drift compensation datagram for sending.
int ecrt_voe_handler_write(ec_voe_handler_t *voe, size_t size)
Start a VoE write operation.
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.
int ecrt_sdo_request_write(ec_sdo_request_t *req)
Schedule an SDO write operation.
int ecrt_master(ec_master_t *master, ec_master_info_t *master_info)
Obtains master information.
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.
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.
int ecrt_master_get_slave(ec_master_t *master, uint16_t slave_position, ec_slave_info_t *slave_info)
Obtains slave information.
ec_watchdog_mode_t
Watchdog mode for sync manager configuration.
int ecrt_voe_handler_read_nosync(ec_voe_handler_t *voe)
Start a VoE read operation without querying the sync manager status.
int ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address, size_t size)
Schedule a register read operation.
int ecrt_master_activate(ec_master_t *master)
Finishes the configuration phase and prepares for cyclic operation.
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_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.
void ecrt_domain_external_memory(ec_domain_t *domain, uint8_t *mem)
Provide external memory to store the domain's process data.
uint8_t * ecrt_domain_data(const ec_domain_t *domain)
Returns the domain's process data.
int ecrt_slave_config_eoe_hostname(ec_slave_config_t *sc, const char *name)
Sets the host name for Ethernet-over-EtherCAT (EoE) operation.
int ecrt_slave_config_pdo_mapping_clear(ec_slave_config_t *sc, uint16_t pdo_index)
Clear the mapping of a given PDO.
int ecrt_slave_config_sdo8(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, uint8_t value)
Add a configuration value for an 8-bit SDO.
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().
ec_request_state_t ecrt_voe_handler_execute(ec_voe_handler_t *voe)
Execute the handler.
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_request_state_t ecrt_sdo_request_state(const ec_sdo_request_t *req)
Get the current state of the SDO request.
int ecrt_master_deactivate(ec_master_t *master)
Deactivates the master.
int ecrt_master_sync_monitor_queue(ec_master_t *master)
Queues the DC synchrony monitoring datagram for sending.
int ecrt_slave_config_sdo16(ec_slave_config_t *sc, uint16_t index, uint8_t subindex, uint16_t value)
Add a configuration value for a 16-bit SDO.
int ecrt_master_reset(ec_master_t *master)
Retry configuring slaves.
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.
#define EC_MAX_STRING_LENGTH
Maximum string length.
int ecrt_slave_config_pdo_assign_add(ec_slave_config_t *sc, uint8_t sync_index, uint16_t pdo_index)
Add a PDO to a sync manager's PDO assignment.
int ecrt_domain_reg_pdo_entry_list(ec_domain_t *domain, const ec_pdo_entry_reg_t *regs)
Registers a bunch of PDO entries for a domain.
ec_request_state_t
Request state.
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.
int ecrt_soe_request_read(ec_soe_request_t *req)
Schedule an SoE IDN read operation.
int ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, uint8_t subindex)
Set the SDO index and subindex.
int ecrt_soe_request_timeout(ec_soe_request_t *req, uint32_t timeout)
Set the timeout for an SoE request.
int ecrt_slave_config_state_timeout(ec_slave_config_t *sc, ec_al_state_t from, ec_al_state_t to, unsigned int timeout_ms)
Sets the application-layer state transition timeout in ms.
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.
int ecrt_slave_config_emerg_size(ec_slave_config_t *sc, size_t elements)
Set the size of the CoE emergency ring buffer.
@ EC_WC_COMPLETE
All registered process data were exchanged.
@ EC_WC_ZERO
No registered process data were exchanged.
@ EC_WC_INCOMPLETE
Some of the registered process data were exchanged.
@ EC_PORT_MII
Port is a MII.
@ EC_PORT_NOT_CONFIGURED
Port is not configured.
@ EC_PORT_NOT_IMPLEMENTED
Port is not implemented.
@ EC_PORT_EBUS
Port is an E-Bus.
@ EC_AL_STATE_OP
Operational.
@ EC_AL_STATE_PREOP
Pre-operational.
@ EC_AL_STATE_SAFEOP
Safe-operational.
@ EC_DIR_INVALID
Invalid direction.
@ EC_DIR_COUNT
Number of directions.
@ EC_DIR_INPUT
Values read by the master.
@ EC_DIR_OUTPUT
Values written by the master.
@ EC_WD_DEFAULT
Use the default setting of the sync manager.
@ EC_WD_DISABLE
Disable the watchdog.
@ EC_WD_ENABLE
Enable the watchdog.
@ EC_REQUEST_ERROR
Request processing failed.
@ EC_REQUEST_UNUSED
Not requested.
@ EC_REQUEST_SUCCESS
Request was processed successfully.
@ EC_REQUEST_BUSY
Request is being processed.
ec_wc_state_t wc_state
Working counter interpretation.
unsigned int working_counter
Value of the last working counter.
unsigned int redundancy_active
Redundant link is in use.
unsigned int slave_count
Number of slaves in the network.
uint64_t app_time
Application time.
uint8_t scan_busy
true, while the master is scanning the network.
unsigned int link_up
true, if the network link is up.
unsigned int link_up
true, if the given Ethernet link is up.
unsigned int al_states
Application-layer states of the slaves on the given link.
unsigned int slaves_responding
Sum of responding slaves on the given link.
Master scan progress information.
unsigned int slave_count
Number of slaves detected.
unsigned int scan_index
Index of the slave that is currently scanned.
unsigned int al_states
Application-layer states of all slaves.
unsigned int slaves_responding
Sum of responding slaves on all Ethernet devices.
unsigned int link_up
true, if at least one Ethernet link is up.
PDO entry configuration information.
uint8_t subindex
PDO entry subindex.
uint8_t bit_length
Size of the PDO entry in bit.
uint16_t index
PDO entry index.
List record type for PDO entry mass-registration.
uint32_t product_code
Slave product code.
unsigned int * offset
Pointer to a variable to store the PDO entry's (byte-)offset in the process data.
unsigned int * bit_position
Pointer to a variable to store a bit position (0-7) within the offset.
uint8_t subindex
PDO entry subindex.
uint16_t index
PDO entry index.
uint16_t alias
Slave alias address.
uint32_t vendor_id
Slave vendor ID.
uint16_t position
Slave position.
PDO configuration information.
unsigned int n_entries
Number of PDO entries in entries to map.
ec_pdo_entry_info_t const * entries
Array of PDO entries to map.
Slave configuration state.
unsigned int online
The slave is online.
unsigned int operational
The slave was brought into OP state using the specified configuration.
unsigned int al_state
The application-layer state of the slave.
EtherCAT slave configuration.
ec_slave_port_link_t link
Port link state.
uint32_t delay_to_next_dc
Delay [ns] to next DC slave.
uint16_t next_slave
Ring position of next DC slave on that port.
ec_slave_port_desc_t desc
Physical port type.
uint32_t receive_time
Receive time on DC transmission delay measurement.
uint32_t revision_number
Revision-Number stored on the slave.
uint8_t error_flag
Error flag for that slave.
int16_t current_on_ebus
Used current in mA.
uint16_t position
Offset of the slave in the ring.
uint8_t al_state
Current state of the slave.
uint32_t product_code
Product-Code stored on the slave.
uint32_t vendor_id
Vendor-ID stored on the slave.
uint16_t alias
The slaves alias if not equal to 0.
uint32_t serial_number
Serial-Number stored on the slave.
char name[EC_MAX_STRING_LENGTH]
Name of the slave.
uint16_t sdo_count
Number of SDOs.
uint8_t sync_count
Number of sync managers.
EtherCAT slave port information.
uint8_t signal_detected
Detected signal on RX port.
uint8_t link_up
Link detected.
uint8_t loop_closed
Loop closed.
Sercos-over-EtherCAT request.
Sync manager configuration information.
unsigned int n_pdos
Number of PDOs in pdos.
ec_direction_t dir
Sync manager direction.
uint8_t index
Sync manager index.
ec_pdo_info_t const * pdos
Array with PDOs to assign.
ec_watchdog_mode_t watchdog_mode
Watchdog mode.
Vendor specific over EtherCAT handler.