datagram.h File Reference

EtherCAT datagram structure. More...

Go to the source code of this file.

Data Structures

struct  ec_datagram_t
 EtherCAT datagram. More...

Enumerations

enum  ec_datagram_type_t {
  EC_DATAGRAM_NONE = 0x00, EC_DATAGRAM_APRD = 0x01, EC_DATAGRAM_APWR = 0x02, EC_DATAGRAM_APRW = 0x03,
  EC_DATAGRAM_FPRD = 0x04, EC_DATAGRAM_FPWR = 0x05, EC_DATAGRAM_FPRW = 0x06, EC_DATAGRAM_BRD = 0x07,
  EC_DATAGRAM_BWR = 0x08, EC_DATAGRAM_BRW = 0x09, EC_DATAGRAM_LRD = 0x0A, EC_DATAGRAM_LWR = 0x0B,
  EC_DATAGRAM_LRW = 0x0C, EC_DATAGRAM_ARMW = 0x0D, EC_DATAGRAM_FRMW = 0x0E
}
 EtherCAT datagram type. More...
enum  ec_datagram_state_t {
  EC_DATAGRAM_INIT, EC_DATAGRAM_QUEUED, EC_DATAGRAM_SENT, EC_DATAGRAM_RECEIVED,
  EC_DATAGRAM_TIMED_OUT, EC_DATAGRAM_ERROR
}
 EtherCAT datagram state. More...

Functions

void ec_datagram_init (ec_datagram_t *)
 Constructor.
void ec_datagram_clear (ec_datagram_t *)
 Destructor.
void ec_datagram_unqueue (ec_datagram_t *)
 Unqueue datagram.
int ec_datagram_prealloc (ec_datagram_t *, size_t)
 Allocates internal payload memory.
void ec_datagram_zero (ec_datagram_t *)
 Fills the datagram payload memory with zeros.
int ec_datagram_aprd (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT APRD datagram.
int ec_datagram_apwr (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT APWR datagram.
int ec_datagram_aprw (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT APRW datagram.
int ec_datagram_armw (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT ARMW datagram.
int ec_datagram_fprd (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT FPRD datagram.
int ec_datagram_fpwr (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT FPWR datagram.
int ec_datagram_fprw (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT FPRW datagram.
int ec_datagram_frmw (ec_datagram_t *, uint16_t, uint16_t, size_t)
 Initializes an EtherCAT FRMW datagram.
int ec_datagram_brd (ec_datagram_t *, uint16_t, size_t)
 Initializes an EtherCAT BRD datagram.
int ec_datagram_bwr (ec_datagram_t *, uint16_t, size_t)
 Initializes an EtherCAT BWR datagram.
int ec_datagram_brw (ec_datagram_t *, uint16_t, size_t)
 Initializes an EtherCAT BRW datagram.
int ec_datagram_lrd (ec_datagram_t *, uint32_t, size_t)
 Initializes an EtherCAT LRD datagram.
int ec_datagram_lwr (ec_datagram_t *, uint32_t, size_t)
 Initializes an EtherCAT LWR datagram.
int ec_datagram_lrw (ec_datagram_t *, uint32_t, size_t)
 Initializes an EtherCAT LRW datagram.
int ec_datagram_lrd_ext (ec_datagram_t *, uint32_t, size_t, uint8_t *)
 Initializes an EtherCAT LRD datagram with external memory.
int ec_datagram_lwr_ext (ec_datagram_t *, uint32_t, size_t, uint8_t *)
 Initializes an EtherCAT LWR datagram with external memory.
int ec_datagram_lrw_ext (ec_datagram_t *, uint32_t, size_t, uint8_t *)
 Initializes an EtherCAT LRW datagram with external memory.
void ec_datagram_print_state (const ec_datagram_t *)
 Prints the state of a datagram.
void ec_datagram_print_wc_error (const ec_datagram_t *)
 Evaluates the working counter of a single-cast datagram.
void ec_datagram_output_stats (ec_datagram_t *)
 Outputs datagram statistics at most every second.
const char * ec_datagram_type_string (const ec_datagram_t *)
 Returns a string describing the datagram type.


Detailed Description

EtherCAT datagram structure.

Definition in file datagram.h.


Enumeration Type Documentation

EtherCAT datagram type.

Enumerator:
EC_DATAGRAM_NONE  Dummy.

EC_DATAGRAM_APRD  Auto Increment Physical Read.

EC_DATAGRAM_APWR  Auto Increment Physical Write.

EC_DATAGRAM_APRW  Auto Increment Physical ReadWrite.

EC_DATAGRAM_FPRD  Configured Address Physical Read.

EC_DATAGRAM_FPWR  Configured Address Physical Write.

EC_DATAGRAM_FPRW  Configured Address Physical ReadWrite.

EC_DATAGRAM_BRD  Broadcast Read.

EC_DATAGRAM_BWR  Broadcast Write.

EC_DATAGRAM_BRW  Broadcast ReadWrite.

EC_DATAGRAM_LRD  Logical Read.

EC_DATAGRAM_LWR  Logical Write.

EC_DATAGRAM_LRW  Logical ReadWrite.

EC_DATAGRAM_ARMW  Auto Increment Physical Read Multiple Write.

EC_DATAGRAM_FRMW  Configured Address Physical Read Multiple Write.

Definition at line 50 of file datagram.h.

EtherCAT datagram state.

Enumerator:
EC_DATAGRAM_INIT  Initial state of a new datagram.

EC_DATAGRAM_QUEUED  Queued for sending.

EC_DATAGRAM_SENT  Sent (still in the queue).

EC_DATAGRAM_RECEIVED  Received (dequeued).

EC_DATAGRAM_TIMED_OUT  Timed out (dequeued).

EC_DATAGRAM_ERROR  Error while sending/receiving (dequeued).

Definition at line 74 of file datagram.h.


Function Documentation

int ec_datagram_prealloc ( ec_datagram_t datagram,
size_t  size 
)

Allocates internal payload memory.

If the allocated memory is already larger than requested, nothing ist done.

Attention:
If external payload memory has been provided, no range checking is done!
Returns:
0 in case of success, otherwise -ENOMEM.
Parameters:
datagram  EtherCAT datagram.
size  New payload size in bytes.

Definition at line 150 of file datagram.c.

int ec_datagram_aprd ( ec_datagram_t datagram,
uint16_t  ring_position,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT APRD datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
ring_position  Auto-increment address.
mem_address  Physical memory address.
data_size  Number of bytes to read.

Definition at line 189 of file datagram.c.

int ec_datagram_apwr ( ec_datagram_t datagram,
uint16_t  ring_position,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT APWR datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
ring_position  Auto-increment address.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 210 of file datagram.c.

int ec_datagram_aprw ( ec_datagram_t datagram,
uint16_t  ring_position,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT APRW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
ring_position  Auto-increment address.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 231 of file datagram.c.

int ec_datagram_armw ( ec_datagram_t datagram,
uint16_t  ring_position,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT ARMW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
ring_position  Auto-increment address.
mem_address  Physical memory address.
data_size  Number of bytes to read.

Definition at line 252 of file datagram.c.

int ec_datagram_fprd ( ec_datagram_t datagram,
uint16_t  configured_address,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT FPRD datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
configured_address  Configured station address.
mem_address  Physical memory address.
data_size  Number of bytes to read.

Definition at line 273 of file datagram.c.

int ec_datagram_fpwr ( ec_datagram_t datagram,
uint16_t  configured_address,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT FPWR datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
configured_address  Configured station address.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 298 of file datagram.c.

int ec_datagram_fprw ( ec_datagram_t datagram,
uint16_t  configured_address,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT FPRW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
configured_address  Configured station address.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 323 of file datagram.c.

int ec_datagram_frmw ( ec_datagram_t datagram,
uint16_t  configured_address,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT FRMW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
configured_address  Configured station address.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 348 of file datagram.c.

int ec_datagram_brd ( ec_datagram_t datagram,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT BRD datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
mem_address  Physical memory address.
data_size  Number of bytes to read.

Definition at line 373 of file datagram.c.

int ec_datagram_bwr ( ec_datagram_t datagram,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT BWR datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 393 of file datagram.c.

int ec_datagram_brw ( ec_datagram_t datagram,
uint16_t  mem_address,
size_t  data_size 
)

Initializes an EtherCAT BRW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
mem_address  Physical memory address.
data_size  Number of bytes to write.

Definition at line 413 of file datagram.c.

int ec_datagram_lrd ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size 
)

Initializes an EtherCAT LRD datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.

Definition at line 433 of file datagram.c.

int ec_datagram_lwr ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size 
)

Initializes an EtherCAT LWR datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.

Definition at line 452 of file datagram.c.

int ec_datagram_lrw ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size 
)

Initializes an EtherCAT LRW datagram.

Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.

Definition at line 471 of file datagram.c.

int ec_datagram_lrd_ext ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size,
uint8_t *  external_memory 
)

Initializes an EtherCAT LRD datagram with external memory.

Attention:
It is assumed, that the external memory is at least data_size bytes large.
Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.
external_memory  Pointer to the memory to use.

Definition at line 493 of file datagram.c.

int ec_datagram_lwr_ext ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size,
uint8_t *  external_memory 
)

Initializes an EtherCAT LWR datagram with external memory.

Attention:
It is assumed, that the external memory is at least data_size bytes large.
Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.
external_memory  Pointer to the memory to use.

Definition at line 518 of file datagram.c.

int ec_datagram_lrw_ext ( ec_datagram_t datagram,
uint32_t  offset,
size_t  data_size,
uint8_t *  external_memory 
)

Initializes an EtherCAT LRW datagram with external memory.

Attention:
It is assumed, that the external memory is at least data_size bytes large.
Returns:
Return value of ec_datagram_prealloc().
Parameters:
datagram  EtherCAT datagram.
offset  Logical address.
data_size  Number of bytes to read/write.
external_memory  Pointer to the memory to use.

Definition at line 543 of file datagram.c.

void ec_datagram_print_state ( const ec_datagram_t datagram  ) 

Prints the state of a datagram.

Outputs a text message.

Parameters:
datagram  EtherCAT datagram

Definition at line 565 of file datagram.c.

void ec_datagram_print_wc_error ( const ec_datagram_t datagram  ) 

Evaluates the working counter of a single-cast datagram.

Outputs an error message.

Parameters:
datagram  EtherCAT datagram

Definition at line 602 of file datagram.c.

const char* ec_datagram_type_string ( const ec_datagram_t datagram  ) 

Returns a string describing the datagram type.

Returns:
Pointer on a static memory containing the requested string.
Parameters:
datagram  EtherCAT datagram.

Definition at line 642 of file datagram.c.


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