116 lines
3.6 KiB
C
116 lines
3.6 KiB
C
/******************************************************************************
|
|
*
|
|
* Oeffentliche EtherCAT-Schnittstellen fuer Echtzeitprozesse.
|
|
*
|
|
* $Id$
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#ifndef _ETHERCAT_RT_H_
|
|
#define _ETHERCAT_RT_H_
|
|
|
|
/*****************************************************************************/
|
|
|
|
struct ec_master;
|
|
typedef struct ec_master ec_master_t;
|
|
|
|
struct ec_domain;
|
|
typedef struct ec_domain ec_domain_t;
|
|
|
|
struct ec_slave;
|
|
typedef struct ec_slave ec_slave_t;
|
|
|
|
typedef enum
|
|
{
|
|
ec_sync,
|
|
ec_async
|
|
}
|
|
ec_domain_mode_t;
|
|
|
|
typedef enum
|
|
{
|
|
ec_status,
|
|
ec_control,
|
|
ec_ipvalue,
|
|
ec_opvalue
|
|
}
|
|
ec_field_type_t;
|
|
|
|
typedef struct
|
|
{
|
|
void **data;
|
|
const char *address;
|
|
const char *vendor;
|
|
const char *product;
|
|
ec_field_type_t field_type;
|
|
unsigned int field_index;
|
|
unsigned int field_count;
|
|
}
|
|
ec_field_init_t;
|
|
|
|
/*****************************************************************************/
|
|
// Master request functions
|
|
|
|
ec_master_t *EtherCAT_rt_request_master(unsigned int master_index);
|
|
|
|
void EtherCAT_rt_release_master(ec_master_t *master);
|
|
|
|
/*****************************************************************************/
|
|
// Master methods
|
|
|
|
ec_domain_t *EtherCAT_rt_master_register_domain(ec_master_t *master,
|
|
ec_domain_mode_t mode,
|
|
unsigned int timeout_us);
|
|
|
|
int EtherCAT_rt_master_activate(ec_master_t *master);
|
|
|
|
int EtherCAT_rt_master_deactivate(ec_master_t *master);
|
|
|
|
void EtherCAT_rt_master_debug(ec_master_t *master, int level);
|
|
void EtherCAT_rt_master_print(const ec_master_t *master);
|
|
|
|
/*****************************************************************************/
|
|
// Domain Methods
|
|
|
|
ec_slave_t *EtherCAT_rt_register_slave_field(ec_domain_t *domain,
|
|
const char *address,
|
|
const char *vendor_name,
|
|
const char *product_name,
|
|
void **data_ptr,
|
|
ec_field_type_t field_type,
|
|
unsigned int field_index,
|
|
unsigned int field_count);
|
|
|
|
int EtherCAT_rt_domain_xio(ec_domain_t *domain);
|
|
|
|
/*****************************************************************************/
|
|
// Slave Methods
|
|
|
|
int EtherCAT_rt_canopen_sdo_write(ec_slave_t *slave,
|
|
uint16_t sdo_index,
|
|
uint8_t sdo_subindex,
|
|
uint32_t value,
|
|
size_t size);
|
|
|
|
int EtherCAT_rt_canopen_sdo_read(ec_slave_t *slave,
|
|
uint16_t sdo_index,
|
|
uint8_t sdo_subindex,
|
|
uint32_t *value);
|
|
|
|
int EtherCAT_rt_canopen_sdo_addr_write(ec_master_t *master,
|
|
const char *addr,
|
|
uint16_t sdo_index,
|
|
uint8_t sdo_subindex,
|
|
uint32_t value,
|
|
size_t size);
|
|
|
|
int EtherCAT_rt_canopen_sdo_addr_read(ec_master_t *master,
|
|
const char *addr,
|
|
uint16_t sdo_index,
|
|
uint8_t sdo_subindex,
|
|
uint32_t *value);
|
|
|
|
/*****************************************************************************/
|
|
|
|
#endif
|