From 4bab54a336260ce481f21cba8a56a985e43002d6 Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Wed, 7 Feb 2024 15:26:37 +0100 Subject: [PATCH 1/2] Removed some unused variables. --- master/ioctl.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/master/ioctl.c b/master/ioctl.c index 9c791066..ee7cbbe7 100644 --- a/master/ioctl.c +++ b/master/ioctl.c @@ -3569,7 +3569,6 @@ static ATTRIBUTES int ec_ioctl_sdo_request_write( ec_ioctl_sdo_request_t data; ec_slave_config_t *sc; ec_sdo_request_t *req; - int ret; if (unlikely(!ctx->requested)) return -EPERM; @@ -3818,7 +3817,6 @@ static ATTRIBUTES int ec_ioctl_soe_request_write( ec_ioctl_soe_request_t data; ec_slave_config_t *sc; ec_soe_request_t *req; - int ret; if (unlikely(!ctx->requested)) return -EPERM; From a5df1c38d1107f37810e343d88f947192dc9455c Mon Sep 17 00:00:00 2001 From: Florian Pose Date: Wed, 7 Feb 2024 15:27:47 +0100 Subject: [PATCH 2/2] Moved fetching domain offset to ecrt_master_activate(). --- include/ecrt.h | 2 +- lib/domain.c | 16 +--------------- lib/master.c | 15 +++++++++++++++ master/domain.c | 2 +- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/include/ecrt.h b/include/ecrt.h index b33f5010..eb99f659 100644 --- a/include/ecrt.h +++ b/include/ecrt.h @@ -1866,7 +1866,7 @@ void ecrt_domain_external_memory( * \return Pointer to the process data memory. */ EC_PUBLIC_API uint8_t *ecrt_domain_data( - ec_domain_t *domain /**< Domain. */ + const ec_domain_t *domain /**< Domain. */ ); /** Determines the states of the domain's datagrams. diff --git a/lib/domain.c b/lib/domain.c index 26d01262..c04fdeee 100644 --- a/lib/domain.c +++ b/lib/domain.c @@ -83,22 +83,8 @@ size_t ecrt_domain_size(const ec_domain_t *domain) /****************************************************************************/ -uint8_t *ecrt_domain_data(ec_domain_t *domain) +uint8_t *ecrt_domain_data(const ec_domain_t *domain) { - if (!domain->process_data) { - int offset = 0; - - offset = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_OFFSET, - domain->index); - if (EC_IOCTL_IS_ERROR(offset)) { - fprintf(stderr, "Failed to get domain offset: %s\n", - strerror(EC_IOCTL_ERRNO(offset))); - return NULL; - } - - domain->process_data = domain->master->process_data + offset; - } - return domain->process_data; } diff --git a/lib/master.c b/lib/master.c index f2d846e1..a215d3e2 100644 --- a/lib/master.c +++ b/lib/master.c @@ -585,6 +585,21 @@ int ecrt_master_activate(ec_master_t *master) master->process_data[0] = 0x00; } + // pick up process data pointers for all created domains + ec_domain_t *domain = master->first_domain; + while (domain) { + int offset = ioctl(domain->master->fd, EC_IOCTL_DOMAIN_OFFSET, + domain->index); + if (EC_IOCTL_IS_ERROR(offset)) { + fprintf(stderr, "Failed to get domain offset: %s\n", + strerror(EC_IOCTL_ERRNO(offset))); + return -EC_IOCTL_ERRNO(offset); + } + + domain->process_data = master->process_data + offset; + domain = domain->next; + } + return 0; } diff --git a/master/domain.c b/master/domain.c index c61a3c1c..0a886821 100644 --- a/master/domain.c +++ b/master/domain.c @@ -440,7 +440,7 @@ void ecrt_domain_external_memory(ec_domain_t *domain, uint8_t *mem) /****************************************************************************/ -uint8_t *ecrt_domain_data(ec_domain_t *domain) +uint8_t *ecrt_domain_data(const ec_domain_t *domain) { return domain->data; }