diff -r f4313f5aba88 -r 3bdd7a747fae lib/sdo_request.c --- a/lib/sdo_request.c Thu Sep 20 09:20:51 2012 +0200 +++ b/lib/sdo_request.c Thu Sep 20 15:28:25 2012 +0200 @@ -2,7 +2,7 @@ * * $Id$ * - * Copyright (C) 2006-2009 Florian Pose, Ingenieurgemeinschaft IgH + * Copyright (C) 2006-2012 Florian Pose, Ingenieurgemeinschaft IgH * * This file is part of the IgH EtherCAT master userspace library. * @@ -35,12 +35,10 @@ /*****************************************************************************/ #include -#include #include -#include +#include "ioctl.h" #include "sdo_request.h" -#include "master/ioctl.h" #include "slave_config.h" #include "master.h" @@ -60,15 +58,17 @@ void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) { ec_ioctl_sdo_request_t data; + int ret; data.config_index = req->config->index; data.request_index = req->index; data.timeout = timeout; - if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_TIMEOUT, - &data) == -1) + 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(errno)); + strerror(EC_IOCTL_ERRNO(ret))); + } } /*****************************************************************************/ @@ -90,14 +90,17 @@ ec_request_state_t ecrt_sdo_request_state(ec_sdo_request_t *req) { ec_ioctl_sdo_request_t data; + int ret; data.config_index = req->config->index; data.request_index = req->index; - if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_STATE, - &data) == -1) + ret = ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_STATE, &data); + if (EC_IOCTL_IS_ERROR(ret)) { fprintf(stderr, "Failed to get SDO request state: %s\n", - strerror(errno)); + strerror(EC_IOCTL_ERRNO(ret))); + return EC_REQUEST_ERROR; + } if (data.size) { // new data waiting to be copied if (req->mem_size < data.size) { @@ -108,9 +111,11 @@ data.data = req->data; - if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_DATA, - &data) == -1) { - fprintf(stderr, "Failed to get SDO data: %s\n", strerror(errno)); + ret = ioctl(req->config->master->fd, + EC_IOCTL_SDO_REQUEST_DATA, &data); + if (EC_IOCTL_IS_ERROR(ret)) { + fprintf(stderr, "Failed to get SDO data: %s\n", + strerror(EC_IOCTL_ERRNO(ret))); return EC_REQUEST_ERROR; } req->data_size = data.size; @@ -124,14 +129,16 @@ void ecrt_sdo_request_read(ec_sdo_request_t *req) { ec_ioctl_sdo_request_t data; + int ret; data.config_index = req->config->index; data.request_index = req->index; - if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_READ, - &data) == -1) + 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(errno)); + strerror(EC_IOCTL_ERRNO(ret))); + } } /*****************************************************************************/ @@ -139,16 +146,18 @@ void ecrt_sdo_request_write(ec_sdo_request_t *req) { ec_ioctl_sdo_request_t data; + int ret; data.config_index = req->config->index; data.request_index = req->index; data.data = req->data; data.size = req->data_size; - if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_WRITE, - &data) == -1) + 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(errno)); + strerror(EC_IOCTL_ERRNO(ret))); + } } /*****************************************************************************/