globals.h File Reference

Global definitions and macros. More...

Go to the source code of this file.

Data Structures

struct  ec_sii_coe_details_t
 Slave information interface CANopen over EtherCAT details flags. More...
struct  ec_sii_general_flags_t
 Slave information interface general flags. More...
struct  ec_sync_signal_t
 EtherCAT slave sync signal configuration. More...
struct  ec_code_msg_t
 Code/Message pair. More...

Defines

#define EC_IO_TIMEOUT   500
 Datagram timeout in microseconds.
#define EC_SDO_INJECTION_TIMEOUT   10000
 SDO injection timeout in microseconds.
#define EC_BYTE_TRANSMISSION_TIME_NS   80
 Time to send a byte in nanoseconds.
#define EC_FSM_RETRIES   3
 Number of state machine retries on datagram timeout.
#define EC_WAIT_SDO_DICT   3
 Seconds to wait before fetching SDO dictionary after slave entered PREOP state.
#define EC_STATE_STRING_SIZE   32
 Minimum size of a buffer used with ec_state_string().
#define EC_MAX_SII_SIZE   4096
 Maximum SII size in words, to avoid infinite reading.
#define EC_RATE_COUNT   3
 Number of statistic rate intervals to maintain.
#define EC_FRAME_HEADER_SIZE   2
 Size of an EtherCAT frame header.
#define EC_DATAGRAM_HEADER_SIZE   10
 Size of an EtherCAT datagram header.
#define EC_DATAGRAM_FOOTER_SIZE   2
 Size of an EtherCAT datagram footer.
#define EC_ADDR_LEN   4
 Size of the EtherCAT address field.
#define EC_MAX_DATA_SIZE
 Resulting maximum data size of a single datagram in a frame.
#define EC_MBOX_HEADER_SIZE   6
 Mailbox header size.
#define EC_FIRST_SII_CATEGORY_OFFSET   0x40
 Word offset of first SII category.
#define EC_SYNC_PAGE_SIZE   8
 Size of a sync manager configuration page.
#define EC_MAX_FMMUS   16
 Maximum number of FMMUs per slave.
#define EC_FMMU_PAGE_SIZE   16
 Size of an FMMU configuration page.
#define EC_SYNC_SIGNAL_COUNT   2
 Number of DC sync signals.
#define EC_DATAGRAM_NAME_SIZE   20
 Size of the datagram description string.
#define EC_SLAVE_STATE_MASK   0x0F
 Slave state mask.
#define EC_INFO(fmt, args...)   printk(KERN_INFO "EtherCAT: " fmt, ##args)
 Convenience macro for printing EtherCAT-specific information to syslog.
#define EC_ERR(fmt, args...)   printk(KERN_ERR "EtherCAT ERROR: " fmt, ##args)
 Convenience macro for printing EtherCAT-specific errors to syslog.
#define EC_WARN(fmt, args...)   printk(KERN_WARNING "EtherCAT WARNING: " fmt, ##args)
 Convenience macro for printing EtherCAT-specific warnings to syslog.
#define EC_DBG(fmt, args...)   printk(KERN_DEBUG "EtherCAT DEBUG: " fmt, ##args)
 Convenience macro for printing EtherCAT debug messages to syslog.
#define EC_ABS(X)   ((X) >= 0 ? (X) : -(X))
 Absolute value.

Typedefs

typedef struct ec_slave ec_slave_t

Enumerations

enum  ec_slave_state_t {
  EC_SLAVE_STATE_UNKNOWN = 0x00, EC_SLAVE_STATE_INIT = 0x01, EC_SLAVE_STATE_PREOP = 0x02, EC_SLAVE_STATE_BOOT = 0x03,
  EC_SLAVE_STATE_SAFEOP = 0x04, EC_SLAVE_STATE_OP = 0x08, EC_SLAVE_STATE_ACK_ERR = 0x10
}
 State of an EtherCAT slave. More...
enum  {
  EC_MBOX_AOE = 0x01, EC_MBOX_EOE = 0x02, EC_MBOX_COE = 0x04, EC_MBOX_FOE = 0x08,
  EC_MBOX_SOE = 0x10, EC_MBOX_VOE = 0x20
}
 Supported mailbox protocols. More...
enum  ec_slave_dc_range_t { EC_DC_32, EC_DC_64 }
 EtherCAT slave distributed clocks range. More...
enum  { EC_SDO_ENTRY_ACCESS_PREOP, EC_SDO_ENTRY_ACCESS_SAFEOP, EC_SDO_ENTRY_ACCESS_OP, EC_SDO_ENTRY_ACCESS_COUNT }
 Access states for SDO entries. More...
enum  ec_device_index_t { EC_DEVICE_MAIN, EC_DEVICE_BACKUP }
 Master devices. More...
enum  ec_internal_request_state_t {
  EC_INT_REQUEST_INIT, EC_INT_REQUEST_QUEUED, EC_INT_REQUEST_BUSY, EC_INT_REQUEST_SUCCESS,
  EC_INT_REQUEST_FAILURE
}
 Generic request state. More...
enum  ec_origin_t { EC_ORIG_INTERNAL, EC_ORIG_EXTERNAL }
 Origin type. More...

Functions

unsigned int ec_master_count (void)
 Get the number of masters.
void ec_print_data (const uint8_t *, size_t)
 Outputs frame contents for debugging purposes.
void ec_print_data_diff (const uint8_t *, const uint8_t *, size_t)
 Outputs frame contents and differences for debugging purposes.
size_t ec_state_string (uint8_t, char *, uint8_t)
 Prints slave states in clear text.
ssize_t ec_mac_print (const uint8_t *, char *)
 Print a MAC address to a buffer.
int ec_mac_is_zero (const uint8_t *)
ec_master_tecrt_request_master_err (unsigned int)
 Request a master.

Variables

const char * ec_device_names [2]
 Device names.
char * ec_master_version_str
 Version string.
const ec_request_state_t ec_request_state_translation_table []
 Global request state type translation table.


Detailed Description

Global definitions and macros.

Definition in file globals.h.


Define Documentation

#define EC_IO_TIMEOUT   500

Datagram timeout in microseconds.

Definition at line 47 of file globals.h.

#define EC_SDO_INJECTION_TIMEOUT   10000

SDO injection timeout in microseconds.

Definition at line 50 of file globals.h.

#define EC_BYTE_TRANSMISSION_TIME_NS   80

Time to send a byte in nanoseconds.

t_ns = 1 / (100 MBit/s / 8 bit/byte) = 80 ns/byte

Definition at line 56 of file globals.h.

#define EC_FSM_RETRIES   3

Number of state machine retries on datagram timeout.

Definition at line 59 of file globals.h.

#define EC_WAIT_SDO_DICT   3

Seconds to wait before fetching SDO dictionary after slave entered PREOP state.

Definition at line 63 of file globals.h.

#define EC_STATE_STRING_SIZE   32

Minimum size of a buffer used with ec_state_string().

Definition at line 66 of file globals.h.

#define EC_MAX_SII_SIZE   4096

Maximum SII size in words, to avoid infinite reading.

Definition at line 69 of file globals.h.

#define EC_RATE_COUNT   3

Number of statistic rate intervals to maintain.

Definition at line 72 of file globals.h.

#define EC_FRAME_HEADER_SIZE   2

Size of an EtherCAT frame header.

Definition at line 79 of file globals.h.

#define EC_DATAGRAM_HEADER_SIZE   10

Size of an EtherCAT datagram header.

Definition at line 82 of file globals.h.

#define EC_DATAGRAM_FOOTER_SIZE   2

Size of an EtherCAT datagram footer.

Definition at line 85 of file globals.h.

#define EC_ADDR_LEN   4

Size of the EtherCAT address field.

Definition at line 88 of file globals.h.

#define EC_MAX_DATA_SIZE

Value:

Resulting maximum data size of a single datagram in a frame.

Definition at line 91 of file globals.h.

#define EC_MBOX_HEADER_SIZE   6

Mailbox header size.

Definition at line 95 of file globals.h.

#define EC_FIRST_SII_CATEGORY_OFFSET   0x40

Word offset of first SII category.

Definition at line 98 of file globals.h.

#define EC_SYNC_PAGE_SIZE   8

Size of a sync manager configuration page.

Definition at line 101 of file globals.h.

#define EC_MAX_FMMUS   16

Maximum number of FMMUs per slave.

Definition at line 104 of file globals.h.

#define EC_FMMU_PAGE_SIZE   16

Size of an FMMU configuration page.

Definition at line 107 of file globals.h.

#define EC_SYNC_SIGNAL_COUNT   2

Number of DC sync signals.

Definition at line 110 of file globals.h.

#define EC_DATAGRAM_NAME_SIZE   20

Size of the datagram description string.

This is also used as the maximum lenth of EoE device names.

Definition at line 116 of file globals.h.

#define EC_SLAVE_STATE_MASK   0x0F

Slave state mask.

Apply this mask to a slave state byte to get the slave state without the error flag.

Definition at line 123 of file globals.h.

#define EC_INFO ( fmt,
args...   )     printk(KERN_INFO "EtherCAT: " fmt, ##args)

Convenience macro for printing EtherCAT-specific information to syslog.

This will print the message in fmt with a prefixed "EtherCAT: ".

Parameters:
fmt format string (like in printf())
args arguments (optional)

Definition at line 217 of file globals.h.

#define EC_ERR ( fmt,
args...   )     printk(KERN_ERR "EtherCAT ERROR: " fmt, ##args)

Convenience macro for printing EtherCAT-specific errors to syslog.

This will print the message in fmt with a prefixed "EtherCAT ERROR: ".

Parameters:
fmt format string (like in printf())
args arguments (optional)

Definition at line 227 of file globals.h.

#define EC_WARN ( fmt,
args...   )     printk(KERN_WARNING "EtherCAT WARNING: " fmt, ##args)

Convenience macro for printing EtherCAT-specific warnings to syslog.

This will print the message in fmt with a prefixed "EtherCAT WARNING: ".

Parameters:
fmt format string (like in printf())
args arguments (optional)

Definition at line 237 of file globals.h.

#define EC_DBG ( fmt,
args...   )     printk(KERN_DEBUG "EtherCAT DEBUG: " fmt, ##args)

Convenience macro for printing EtherCAT debug messages to syslog.

This will print the message in fmt with a prefixed "EtherCAT DEBUG: ".

Parameters:
fmt format string (like in printf())
args arguments (optional)

Definition at line 247 of file globals.h.


Typedef Documentation

typedef struct ec_slave ec_slave_t

See also:
ec_slave.

Definition at line 313 of file globals.h.


Enumeration Type Documentation

State of an EtherCAT slave.

Enumerator:
EC_SLAVE_STATE_UNKNOWN  unknown state
EC_SLAVE_STATE_INIT  INIT state (no mailbox communication, no IO).
EC_SLAVE_STATE_PREOP  PREOP state (mailbox communication, no IO).
EC_SLAVE_STATE_BOOT  Bootstrap state (mailbox communication, firmware update).
EC_SLAVE_STATE_SAFEOP  SAFEOP (mailbox communication and input update).
EC_SLAVE_STATE_OP  OP (mailbox communication and input/output update).
EC_SLAVE_STATE_ACK_ERR  Acknowledge/Error bit (no actual state).

Definition at line 127 of file globals.h.

anonymous enum

Supported mailbox protocols.

Enumerator:
EC_MBOX_AOE  ADS over EtherCAT.
EC_MBOX_EOE  Ethernet over EtherCAT.
EC_MBOX_COE  CANopen over EtherCAT.
EC_MBOX_FOE  File-Access over EtherCAT.
EC_MBOX_SOE  Servo-Profile over EtherCAT.
EC_MBOX_VOE  Vendor specific.

Definition at line 146 of file globals.h.

EtherCAT slave distributed clocks range.

Enumerator:
EC_DC_32  32 bit.

Definition at line 175 of file globals.h.

anonymous enum

Access states for SDO entries.

The access rights are managed per AL state.

Enumerator:
EC_SDO_ENTRY_ACCESS_PREOP  Access rights in PREOP.

EC_SDO_ENTRY_ACCESS_SAFEOP  Access rights in SAFEOP.

EC_SDO_ENTRY_ACCESS_OP  Access rights in OP.

EC_SDO_ENTRY_ACCESS_COUNT  Number of states.

Definition at line 192 of file globals.h.

Master devices.

Enumerator:
EC_DEVICE_MAIN  Main device.

EC_DEVICE_BACKUP  Backup device.

Definition at line 201 of file globals.h.

Generic request state.

Attention:
If ever changing this, please be sure to adjust the state_table in master/sdo_request.c.

Definition at line 290 of file globals.h.

Origin type.

Enumerator:
EC_ORIG_INTERNAL  Internal.

EC_ORIG_EXTERNAL  External.

Definition at line 306 of file globals.h.


Function Documentation

void ec_print_data ( const uint8_t *  data,
size_t  size 
)

Outputs frame contents for debugging purposes.

If the data block is larger than 256 bytes, only the first 128 and the last 128 bytes will be shown

Parameters:
data  pointer to data
size  number of bytes to output

Definition at line 341 of file module.c.

size_t ec_state_string ( uint8_t  states,
char *  buffer,
uint8_t  multi 
)

Prints slave states in clear text.

Returns:
Size of the created string.
Parameters:
states  slave states
buffer  target buffer (min. EC_STATE_STRING_SIZE bytes)
multi  Show multi-state mask.

Definition at line 394 of file module.c.

ssize_t ec_mac_print ( const uint8_t *  mac,
char *  buffer 
)

Print a MAC address to a buffer.

The buffer size must be at least EC_MAX_MAC_STRING_SIZE.

Returns:
number of bytes written.
Parameters:
mac  MAC address
buffer  Target buffer.

Definition at line 242 of file module.c.

int ec_mac_is_zero ( const uint8_t *  mac  ) 

Returns:
true, if the MAC address is all-zero.
Parameters:
mac  MAC address.

Definition at line 263 of file module.c.

ec_master_t* ecrt_request_master_err ( unsigned int  master_index  ) 

Request a master.

Same as ecrt_request_master(), but with ERR_PTR() return value.

Returns:
Requested master.
Parameters:
master_index  Master index.

Definition at line 530 of file module.c.


Variable Documentation

Version string.

Definition at line 71 of file module.c.

Global request state type translation table.

Translates an internal request state to an external one.

Definition at line 651 of file module.c.


Generated on Mon Jun 20 09:31:30 2016 for IgH EtherCAT Master by  doxygen 1.5.6