Headerfile for ethercatmain.c. More...
Go to the source code of this file.
Classes | |
struct | ec_adapter |
struct | ec_eepromFMMUt |
struct | ec_eepromPDOt |
struct | ec_eepromSMt |
struct | ec_eringt |
struct | ec_groupt |
struct | ec_idxstackT |
struct | ec_slavet |
struct | ecx_contextt |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
struct | PACKED |
Macros | |
#define | EC_MAXEEPDO 0x200 |
#define | EC_MAXELIST 64 |
#define | EC_MAXFMMU 4 |
#define | EC_MAXGROUP 2 |
#define | EC_MAXIOSEGMENTS 64 |
#define | EC_MAXLEN_ADAPTERNAME 128 |
#define | EC_MAXMBX 0x3ff |
#define | EC_MAXNAME 40 |
#define | EC_MAXSLAVE 200 |
#define | EC_MAXSM 8 |
#define | EC_SMENABLEMASK 0xfffeffff |
#define | ECT_COEDET_PDOASSIGN 0x04 |
#define | ECT_COEDET_PDOCONFIG 0x08 |
#define | ECT_COEDET_SDO 0x01 |
#define | ECT_COEDET_SDOCA 0x20 |
#define | ECT_COEDET_SDOINFO 0x02 |
#define | ECT_COEDET_UPLOAD 0x10 |
#define | ECT_MBXPROT_AOE 0x0001 |
#define | ECT_MBXPROT_COE 0x0004 |
#define | ECT_MBXPROT_EOE 0x0002 |
#define | ECT_MBXPROT_FOE 0x0008 |
#define | ECT_MBXPROT_SOE 0x0010 |
#define | ECT_MBXPROT_VOE 0x0020 |
Typedefs | |
typedef struct ec_adapter | ec_adaptert |
typedef PACKED_END PACKED_BEGIN struct PACKED | ec_alstatust |
typedef PACKED_BEGIN struct PACKED | ec_fmmut |
typedef uint8 | ec_mbxbuft[EC_MAXMBX+1] |
typedef PACKED_BEGIN struct PACKED | ec_mbxheadert |
typedef PACKED_END PACKED_BEGIN struct PACKED | ec_PDOassignt |
typedef PACKED_END PACKED_BEGIN struct PACKED | ec_PDOdesct |
typedef PACKED_BEGIN struct PACKED | ec_SMcommtypet |
typedef PACKED_END PACKED_BEGIN struct PACKED | ec_smt |
typedef PACKED_END PACKED_BEGIN struct PACKED | ec_state_status |
Headerfile for ethercatmain.c.
Definition in file ethercatmain.h.
#define EC_MAXEEPDO 0x200 |
max. eeprom PDO entries
Definition at line 68 of file ethercatmain.h.
#define EC_MAXELIST 64 |
max. etries in EtherCAT error list
Definition at line 56 of file ethercatmain.h.
#define EC_MAXFMMU 4 |
max. FMMU used
Definition at line 72 of file ethercatmain.h.
#define EC_MAXGROUP 2 |
max. number of groups
Definition at line 62 of file ethercatmain.h.
#define EC_MAXIOSEGMENTS 64 |
max. number of IO segments per group
Definition at line 64 of file ethercatmain.h.
#define EC_MAXLEN_ADAPTERNAME 128 |
max. Adapter
Definition at line 74 of file ethercatmain.h.
#define EC_MAXMBX 0x3ff |
max. mailbox size
Definition at line 66 of file ethercatmain.h.
#define EC_MAXNAME 40 |
max. length of readable name in slavelist and Object Description List
Definition at line 58 of file ethercatmain.h.
#define EC_MAXSLAVE 200 |
max. number of slaves in array
Definition at line 60 of file ethercatmain.h.
#define EC_MAXSM 8 |
max. SM used
Definition at line 70 of file ethercatmain.h.
#define EC_SMENABLEMASK 0xfffeffff |
Definition at line 134 of file ethercatmain.h.
#define ECT_COEDET_PDOASSIGN 0x04 |
Definition at line 129 of file ethercatmain.h.
#define ECT_COEDET_PDOCONFIG 0x08 |
Definition at line 130 of file ethercatmain.h.
#define ECT_COEDET_SDO 0x01 |
Definition at line 127 of file ethercatmain.h.
#define ECT_COEDET_SDOCA 0x20 |
Definition at line 132 of file ethercatmain.h.
#define ECT_COEDET_SDOINFO 0x02 |
Definition at line 128 of file ethercatmain.h.
#define ECT_COEDET_UPLOAD 0x10 |
Definition at line 131 of file ethercatmain.h.
#define ECT_MBXPROT_AOE 0x0001 |
Definition at line 120 of file ethercatmain.h.
#define ECT_MBXPROT_COE 0x0004 |
Definition at line 122 of file ethercatmain.h.
#define ECT_MBXPROT_EOE 0x0002 |
Definition at line 121 of file ethercatmain.h.
#define ECT_MBXPROT_FOE 0x0008 |
Definition at line 123 of file ethercatmain.h.
#define ECT_MBXPROT_SOE 0x0010 |
Definition at line 124 of file ethercatmain.h.
#define ECT_MBXPROT_VOE 0x0020 |
Definition at line 125 of file ethercatmain.h.
typedef struct ec_adapter ec_adaptert |
Definition at line 76 of file ethercatmain.h.
typedef PACKED_END PACKED_BEGIN struct PACKED ec_alstatust |
ALstatus and ALstatus code
mailbox buffer array
Definition at line 341 of file ethercatmain.h.
typedef PACKED_BEGIN struct PACKED ec_mbxheadert |
standard ethercat mailbox header
typedef PACKED_END PACKED_BEGIN struct PACKED ec_PDOassignt |
SDO assign structure for CA
typedef PACKED_END PACKED_BEGIN struct PACKED ec_PDOdesct |
SDO description structure for CA
typedef PACKED_BEGIN struct PACKED ec_SMcommtypet |
SyncManager Communication Type structure for CA
typedef PACKED_END PACKED_BEGIN struct PACKED ec_state_status |
void ec_clearmbx | ( | ec_mbxbuft * | Mbx | ) |
Clear mailbox buffer.
[out] | Mbx | = Mailbox buffer to clear |
Definition at line 832 of file ethercatmain.c.
ec_adaptert* ec_find_adapters | ( | void | ) |
Create list over available network adapters.
Definition at line 165 of file ethercatmain.c.
void ec_free_adapters | ( | ec_adaptert * | adapter | ) |
Free dynamically allocated list over available network adapters.
[in] | adapter | = Struct holding adapter name, description and pointer to next. |
Definition at line 178 of file ethercatmain.c.
Get index of next mailbox counter value. Used for Mailbox Link Layer.
[in] | cnt | = Mailbox counter value [0..7] |
Definition at line 818 of file ethercatmain.c.
void ecx_close | ( | ecx_contextt * | context | ) |
int ecx_eeprom2master | ( | ecx_contextt * | context, |
uint16 | slave | ||
) |
Set eeprom control to master. Only if set to PDI.
[in] | context | = context struct |
[in] | slave | = Slave number |
Definition at line 1082 of file ethercatmain.c.
int ecx_eeprom2pdi | ( | ecx_contextt * | context, |
uint16 | slave | ||
) |
Set eeprom control to PDI. Only if set to master.
[in] | context | = context struct |
[in] | slave | = Slave number |
Definition at line 1115 of file ethercatmain.c.
void ecx_esidump | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint8 * | esibuf | ||
) |
Dump complete EEPROM data from slave in buffer.
[in] | context | = context struct |
[in] | slave | = Slave number |
[out] | esibuf | = EEPROM data buffer, make sure it is big enough. |
Definition at line 1007 of file ethercatmain.c.
int ecx_init | ( | ecx_contextt * | context, |
char * | ifname | ||
) |
Initialise lib in single NIC mode
[in] | context | = context struct |
[in] | ifname | = Dev name, f.e. "eth0" |
Definition at line 319 of file ethercatmain.c.
int ecx_init_redundant | ( | ecx_contextt * | context, |
ecx_redportt * | redport, | ||
char * | ifname, | ||
char * | if2name | ||
) |
Initialise lib in redundant NIC mode
[in] | context | = context struct |
[in] | redport | = pointer to redport, redundant port data |
[in] | ifname | = Primary Dev name, f.e. "eth0" |
[in] | if2name | = Secondary Dev name, f.e. "eth1" |
Definition at line 331 of file ethercatmain.c.
boolean ecx_iserror | ( | ecx_contextt * | context | ) |
Check if error list has entries.
[in] | context | = context struct |
Definition at line 240 of file ethercatmain.c.
int ecx_mbxempty | ( | ecx_contextt * | context, |
uint16 | slave, | ||
int | timeout | ||
) |
Check if IN mailbox of slave is empty.
[in] | context | = context struct |
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us |
Definition at line 843 of file ethercatmain.c.
int ecx_mbxreceive | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_mbxbuft * | mbx, | ||
int | timeout | ||
) |
Read OUT mailbox from slave. Supports Mailbox Link Layer with repeat requests.
[in] | context | = context struct |
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
Definition at line 911 of file ethercatmain.c.
int ecx_mbxsend | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_mbxbuft * | mbx, | ||
int | timeout | ||
) |
Write IN mailbox to slave.
[in] | context | = context struct |
[in] | slave | = Slave number |
[out] | mbx | = Mailbox data |
[in] | timeout | = Timeout in us |
Definition at line 878 of file ethercatmain.c.
void ecx_packeterror | ( | ecx_contextt * | context, |
uint16 | Slave, | ||
uint16 | Index, | ||
uint8 | SubIdx, | ||
uint16 | ErrorCode | ||
) |
Report packet error
[in] | context | = context struct |
[in] | Slave | = Slave number |
[in] | Index | = Index that generated error |
[in] | SubIdx | = Subindex that generated error |
[in] | ErrorCode | = Error code |
Definition at line 253 of file ethercatmain.c.
boolean ecx_poperror | ( | ecx_contextt * | context, |
ec_errort * | Ec | ||
) |
Pops an error from the list.
[in] | context | = context struct |
[out] | Ec | = Struct describing the error. |
Definition at line 214 of file ethercatmain.c.
void ecx_pusherror | ( | ecx_contextt * | context, |
const ec_errort * | Ec | ||
) |
Pushes an error on the error list.
[in] | context | = context struct |
[in] | Ec | pointer describing the error. |
Definition at line 188 of file ethercatmain.c.
uint32 ecx_readeeprom | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | eeproma, | ||
int | timeout | ||
) |
Read EEPROM from slave bypassing cache.
[in] | context | = context struct |
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 1050 of file ethercatmain.c.
void ecx_readeeprom1 | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | eeproma | ||
) |
Read EEPROM from slave bypassing cache. Parallel read step 1, make request to slave.
[in] | context | = context struct |
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
Definition at line 1476 of file ethercatmain.c.
uint32 ecx_readeeprom2 | ( | ecx_contextt * | context, |
uint16 | slave, | ||
int | timeout | ||
) |
Read EEPROM from slave bypassing cache. Parallel read step 2, actual read from slave.
[in] | context | = context struct |
[in] | slave | = Slave number |
[in] | timeout | = Timeout in us. |
Definition at line 1509 of file ethercatmain.c.
uint64 ecx_readeepromAP | ( | ecx_contextt * | context, |
uint16 | aiadr, | ||
uint16 | eeproma, | ||
int | timeout | ||
) |
Read EEPROM from slave bypassing cache. APRD method.
[in] | context | = context struct |
[in] | aiadr | = auto increment address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 1167 of file ethercatmain.c.
uint64 ecx_readeepromFP | ( | ecx_contextt * | context, |
uint16 | configadr, | ||
uint16 | eeproma, | ||
int | timeout | ||
) |
Read EEPROM from slave bypassing cache. FPRD method.
[in] | context | = context struct |
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | timeout | = Timeout in us. |
Definition at line 1335 of file ethercatmain.c.
int ecx_readstate | ( | ecx_contextt * | context | ) |
Read all slave states in ec_slave.
[in] | context | = context struct |
Definition at line 714 of file ethercatmain.c.
int ecx_receive_processdata | ( | ecx_contextt * | context, |
int | timeout | ||
) |
Definition at line 1809 of file ethercatmain.c.
int ecx_receive_processdata_group | ( | ecx_contextt * | context, |
uint8 | group, | ||
int | timeout | ||
) |
Receive processdata from slaves. Second part from ec_send_processdata(). Received datagrams are recombined with the processdata with help from the stack. If a datagram contains input processdata it copies it to the processdata structure.
[in] | context | = context struct |
[in] | group | = group number |
[in] | timeout | = Timeout in us. |
Definition at line 1736 of file ethercatmain.c.
int ecx_send_processdata | ( | ecx_contextt * | context | ) |
Definition at line 1804 of file ethercatmain.c.
int ecx_send_processdata_group | ( | ecx_contextt * | context, |
uint8 | group | ||
) |
Transmit processdata to slaves. Uses LRW, or LRD/LWR if LRW is not allowed (blockLRW). Both the input and output processdata are transmitted. The outputs with the actual data, the inputs have a placeholder. The inputs are gathered with the receive processdata function. In contrast to the base LRW function this function is non-blocking. If the processdata does not fit in one datagram, multiple are used. In order to recombine the slave response, a stack is used.
[in] | context | = context struct |
[in] | group | = group number |
Definition at line 1575 of file ethercatmain.c.
int16 ecx_siifind | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | cat | ||
) |
Find SII section header in slave EEPROM.
[in] | context | = context struct |
[in] | slave | = slave number |
[in] | cat | = section category |
Definition at line 434 of file ethercatmain.c.
uint16 ecx_siiFMMU | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_eepromFMMUt * | FMMU | ||
) |
Get FMMU data from SII FMMU section in slave EEPROM.
[in] | context | = context struct |
[in] | slave | = slave number |
[out] | FMMU | = FMMU struct from SII, max. 4 FMMU's |
Definition at line 532 of file ethercatmain.c.
uint8 ecx_siigetbyte | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | address | ||
) |
Read one byte from slave EEPROM via cache. If the cache location is empty then a read request is made to the slave. Depending on the slave capabillities the request is 4 or 8 bytes.
[in] | context | = context struct |
[in] | slave | = slave number |
[in] | address | = eeprom address in bytes (slave uses words) |
Definition at line 365 of file ethercatmain.c.
int ecx_siiPDO | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_eepromPDOt * | PDO, | ||
uint8 | t | ||
) |
Get PDO data from SII PDO section in slave EEPROM.
[in] | context | = context struct |
[in] | slave | = slave number |
[out] | PDO | = PDO struct from SII |
[in] | t | = 0=RXPDO 1=TXPDO |
Definition at line 643 of file ethercatmain.c.
uint16 ecx_siiSM | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_eepromSMt * | SM | ||
) |
Get SM data from SII SM section in slave EEPROM.
[in] | context | = context struct |
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
Definition at line 572 of file ethercatmain.c.
uint16 ecx_siiSMnext | ( | ecx_contextt * | context, |
uint16 | slave, | ||
ec_eepromSMt * | SM, | ||
uint16 | n | ||
) |
Get next SM data from SII SM section in slave EEPROM.
[in] | context | = context struct |
[in] | slave | = slave number |
[out] | SM | = first SM struct from SII |
[in] | n | = SM number |
Definition at line 609 of file ethercatmain.c.
void ecx_siistring | ( | ecx_contextt * | context, |
char * | str, | ||
uint16 | slave, | ||
uint16 | Sn | ||
) |
Get string from SII string section in slave EEPROM.
[in] | context | = context struct |
[out] | str | = requested string, 0x00 if not found |
[in] | slave | = slave number |
[in] | Sn | = string number |
Definition at line 474 of file ethercatmain.c.
uint16 ecx_statecheck | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | reqstate, | ||
int | timeout | ||
) |
Check actual slave state. This is a blocking function.
[in] | context | = context struct |
[in] | slave | = Slave number, 0 = all slaves |
[in] | reqstate | = Requested state |
[in] | timeout | = Timout value in us |
Definition at line 773 of file ethercatmain.c.
int ecx_writeeeprom | ( | ecx_contextt * | context, |
uint16 | slave, | ||
uint16 | eeproma, | ||
uint16 | data, | ||
int | timeout | ||
) |
Write EEPROM to slave bypassing cache.
[in] | context | = context struct |
[in] | slave | = Slave number |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 1068 of file ethercatmain.c.
int ecx_writeeepromAP | ( | ecx_contextt * | context, |
uint16 | aiadr, | ||
uint16 | eeproma, | ||
uint16 | data, | ||
int | timeout | ||
) |
Write EEPROM to slave bypassing cache. APWR method.
[in] | context | = context struct |
[in] | aiadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 1247 of file ethercatmain.c.
int ecx_writeeepromFP | ( | ecx_contextt * | context, |
uint16 | configadr, | ||
uint16 | eeproma, | ||
uint16 | data, | ||
int | timeout | ||
) |
Write EEPROM to slave bypassing cache. FPWR method.
[in] | context | = context struct |
[in] | configadr | = configured address of slave |
[in] | eeproma | = (WORD) Address in the EEPROM |
[in] | data | = 16bit data |
[in] | timeout | = Timeout in us. |
Definition at line 1415 of file ethercatmain.c.
int ecx_writestate | ( | ecx_contextt * | context, |
uint16 | slave | ||
) |
Write slave state, if slave = 0 then write to all slaves. The function does not check if the actual state is changed.
[in] | context | = context struct |
[in] | slave | = Slave number, 0 = master |
Definition at line 747 of file ethercatmain.c.