mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-09-22 10:03:51 +08:00
Userspace library implementation of DC functions.
This commit is contained in:
@@ -189,3 +189,28 @@ void ecrt_master_state(const ec_master_t *master, ec_master_state_t *state)
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ecrt_master_sync_reference_clock(ec_master_t *master,
|
||||
const struct timeval *app_time)
|
||||
{
|
||||
ec_ioctl_dc_t data;
|
||||
|
||||
data.app_time.tv_sec = app_time->tv_sec;
|
||||
data.app_time.tv_usec = app_time->tv_usec;
|
||||
|
||||
if (ioctl(master->fd, EC_IOCTL_SYNC_REF, &data) == -1) {
|
||||
fprintf(stderr, "Failed to sync reference clock: %s\n",
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ecrt_master_sync_slave_clocks(ec_master_t *master)
|
||||
{
|
||||
if (ioctl(master->fd, EC_IOCTL_SYNC_SLAVES, NULL) == -1) {
|
||||
fprintf(stderr, "Failed to sync slave clocks: %s\n", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -244,6 +244,53 @@ int ecrt_slave_config_reg_pdo_entry(
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ecrt_slave_config_dc_assign_activate(ec_slave_config_t *sc,
|
||||
uint16_t assign_activate)
|
||||
{
|
||||
ec_ioctl_sc_dc_t data;
|
||||
|
||||
data.config_index = sc->index;
|
||||
data.assign_activate = assign_activate;
|
||||
|
||||
if (ioctl(sc->master->fd, EC_IOCTL_SC_DC_ASSIGN, &data) == -1) {
|
||||
fprintf(stderr, "Failed to set assign_activate word.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ecrt_slave_config_dc_sync_cycle_times(ec_slave_config_t *sc,
|
||||
uint32_t sync0_cycle_time, uint32_t sync1_cycle_time)
|
||||
{
|
||||
ec_ioctl_sc_dc_t data;
|
||||
|
||||
data.config_index = sc->index;
|
||||
data.cycle[0] = sync0_cycle_time;
|
||||
data.cycle[1] = sync1_cycle_time;
|
||||
|
||||
if (ioctl(sc->master->fd, EC_IOCTL_SC_DC_CYCLE, &data) == -1) {
|
||||
fprintf(stderr, "Failed to set assign_activate word.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void ecrt_slave_config_dc_sync_shift_times(ec_slave_config_t *sc,
|
||||
uint32_t sync0_shift_time, uint32_t sync1_shift_time)
|
||||
{
|
||||
ec_ioctl_sc_dc_t data;
|
||||
|
||||
data.config_index = sc->index;
|
||||
data.shift[0] = sync0_shift_time;
|
||||
data.shift[1] = sync1_shift_time;
|
||||
|
||||
if (ioctl(sc->master->fd, EC_IOCTL_SC_DC_SHIFT, &data) == -1) {
|
||||
fprintf(stderr, "Failed to set assign_activate word.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
int ecrt_slave_config_sdo(ec_slave_config_t *sc, uint16_t index,
|
||||
uint8_t subindex, const uint8_t *sdo_data, size_t size)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user