diff --git a/include/ecrt.h b/include/ecrt.h index 0eeeddc6..315d4883 100644 --- a/include/ecrt.h +++ b/include/ecrt.h @@ -1974,8 +1974,9 @@ EC_PUBLIC_API int ecrt_domain_state( * set via ecrt_slave_config_create_sdo_request(). * * \ingroup ApplicationInterfaceRT + * \return 0 on success, otherwise negative error code. */ -EC_PUBLIC_API void ecrt_sdo_request_index( +EC_PUBLIC_API int ecrt_sdo_request_index( ec_sdo_request_t *req, /**< SDO request. */ uint16_t index, /**< SDO index. */ uint8_t subindex /**< SDO subindex. */ @@ -1991,8 +1992,9 @@ EC_PUBLIC_API void ecrt_sdo_request_index( * * The timeout should be defined in non-realtime context, but can also be * changed afterwards. + * \return 0 on success, otherwise negative error code. */ -EC_PUBLIC_API void ecrt_sdo_request_timeout( +EC_PUBLIC_API int ecrt_sdo_request_timeout( ec_sdo_request_t *req, /**< SDO request. */ uint32_t timeout /**< Timeout in milliseconds. Zero means no timeout. */ @@ -2075,8 +2077,9 @@ ec_request_state_t ecrt_sdo_request_state( * activation). * * \ingroup ApplicationInterfaceRT + * \return 0 on success, otherwise negative error code. */ -EC_PUBLIC_API void ecrt_sdo_request_write( +EC_PUBLIC_API int ecrt_sdo_request_write( ec_sdo_request_t *req /**< SDO request. */ ); @@ -2093,8 +2096,9 @@ EC_PUBLIC_API void ecrt_sdo_request_write( * activation). * * \ingroup ApplicationInterfaceRT + * \return 0 on success, otherwise negative error code. */ -EC_PUBLIC_API void ecrt_sdo_request_read( +EC_PUBLIC_API int ecrt_sdo_request_read( ec_sdo_request_t *req /**< SDO request. */ ); diff --git a/lib/sdo_request.c b/lib/sdo_request.c index 6271f642..509a349c 100644 --- a/lib/sdo_request.c +++ b/lib/sdo_request.c @@ -48,7 +48,7 @@ void ec_sdo_request_clear(ec_sdo_request_t *req) * Application interface. ****************************************************************************/ -void ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, +int ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, uint8_t subindex) { ec_ioctl_sdo_request_t data; @@ -61,14 +61,14 @@ void ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, ret = ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_INDEX, &data); if (EC_IOCTL_IS_ERROR(ret)) { - fprintf(stderr, "Failed to set SDO request index/subindex: %s\n", - strerror(EC_IOCTL_ERRNO(ret))); + return -EC_IOCTL_ERRNO(ret); } + return 0; } /****************************************************************************/ -void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) +int ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) { ec_ioctl_sdo_request_t data; int ret; @@ -79,9 +79,9 @@ void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) ret = ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_TIMEOUT, &data); if (EC_IOCTL_IS_ERROR(ret)) { - fprintf(stderr, "Failed to set SDO request timeout: %s\n", - strerror(EC_IOCTL_ERRNO(ret))); + return -EC_IOCTL_ERRNO(ret); } + return 0; } /****************************************************************************/ @@ -139,7 +139,7 @@ ec_request_state_t ecrt_sdo_request_state(ec_sdo_request_t *req) /****************************************************************************/ -void ecrt_sdo_request_read(ec_sdo_request_t *req) +int ecrt_sdo_request_read(ec_sdo_request_t *req) { ec_ioctl_sdo_request_t data; int ret; @@ -149,14 +149,14 @@ void ecrt_sdo_request_read(ec_sdo_request_t *req) ret = ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_READ, &data); if (EC_IOCTL_IS_ERROR(ret)) { - fprintf(stderr, "Failed to command an SDO read operation : %s\n", - strerror(EC_IOCTL_ERRNO(ret))); + return -EC_IOCTL_ERRNO(ret); } + return 0; } /****************************************************************************/ -void ecrt_sdo_request_write(ec_sdo_request_t *req) +int ecrt_sdo_request_write(ec_sdo_request_t *req) { ec_ioctl_sdo_request_t data; int ret; @@ -168,9 +168,9 @@ void ecrt_sdo_request_write(ec_sdo_request_t *req) ret = ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_WRITE, &data); if (EC_IOCTL_IS_ERROR(ret)) { - fprintf(stderr, "Failed to command an SDO write operation : %s\n", - strerror(EC_IOCTL_ERRNO(ret))); + return -EC_IOCTL_ERRNO(ret); } + return 0; } /****************************************************************************/ diff --git a/master/ioctl.c b/master/ioctl.c index 4282bf85..04afb142 100644 --- a/master/ioctl.c +++ b/master/ioctl.c @@ -3459,8 +3459,7 @@ static ATTRIBUTES int ec_ioctl_sdo_request_index( return -ENOENT; } - ecrt_sdo_request_index(req, data.sdo_index, data.sdo_subindex); - return 0; + return ecrt_sdo_request_index(req, data.sdo_index, data.sdo_subindex); } /****************************************************************************/ @@ -3496,8 +3495,7 @@ static ATTRIBUTES int ec_ioctl_sdo_request_timeout( return -ENOENT; } - ecrt_sdo_request_timeout(req, data.timeout); - return 0; + return ecrt_sdo_request_timeout(req, data.timeout); } /****************************************************************************/ @@ -3580,8 +3578,7 @@ static ATTRIBUTES int ec_ioctl_sdo_request_read( return -ENOENT; } - ecrt_sdo_request_read(req); - return 0; + return ecrt_sdo_request_read(req); } /****************************************************************************/ @@ -3630,8 +3627,7 @@ static ATTRIBUTES int ec_ioctl_sdo_request_write( return -EFAULT; req->data_size = data.size; - ecrt_sdo_request_write(req); - return 0; + return ecrt_sdo_request_write(req); } /****************************************************************************/ diff --git a/master/sdo_request.c b/master/sdo_request.c index d0de57db..040c6b5d 100644 --- a/master/sdo_request.c +++ b/master/sdo_request.c @@ -178,18 +178,20 @@ int ec_sdo_request_timed_out(const ec_sdo_request_t *req /**< SDO request. */) * Application interface. ****************************************************************************/ -void ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, +int ecrt_sdo_request_index(ec_sdo_request_t *req, uint16_t index, uint8_t subindex) { req->index = index; req->subindex = subindex; + return 0; } /****************************************************************************/ -void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) +int ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) { req->issue_timeout = timeout; + return 0; } /****************************************************************************/ @@ -215,24 +217,26 @@ ec_request_state_t ecrt_sdo_request_state(const ec_sdo_request_t *req) /****************************************************************************/ -void ecrt_sdo_request_read(ec_sdo_request_t *req) +int ecrt_sdo_request_read(ec_sdo_request_t *req) { req->dir = EC_DIR_INPUT; req->state = EC_INT_REQUEST_QUEUED; req->errno = 0; req->abort_code = 0x00000000; req->jiffies_start = jiffies; + return 0; } /****************************************************************************/ -void ecrt_sdo_request_write(ec_sdo_request_t *req) +int ecrt_sdo_request_write(ec_sdo_request_t *req) { req->dir = EC_DIR_OUTPUT; req->state = EC_INT_REQUEST_QUEUED; req->errno = 0; req->abort_code = 0x00000000; req->jiffies_start = jiffies; + return 0; } /****************************************************************************/