master/sdo_request.c
changeset 1035 7fafc1a7451e
parent 881 c5ac0ab2d6cf
child 1037 59f191c9185b
equal deleted inserted replaced
1034:36cd81362f10 1035:7fafc1a7451e
    68 {
    68 {
    69     req->data = NULL;
    69     req->data = NULL;
    70     req->mem_size = 0;
    70     req->mem_size = 0;
    71     req->data_size = 0;
    71     req->data_size = 0;
    72     req->dir = EC_DIR_OUTPUT;
    72     req->dir = EC_DIR_OUTPUT;
    73     req->timeout = 0; // no timeout
    73     req->issue_timeout = 0; // no timeout
       
    74     req->response_timeout = 0; // immediate response required
    74     req->state = EC_REQUEST_INIT;
    75     req->state = EC_REQUEST_INIT;
    75 }
    76 }
    76 
    77 
    77 /*****************************************************************************/
    78 /*****************************************************************************/
    78 
    79 
   168  *
   169  *
   169  * \return non-zero if the timeout was exceeded, else zero.
   170  * \return non-zero if the timeout was exceeded, else zero.
   170  */
   171  */
   171 int ec_sdo_request_timed_out(const ec_sdo_request_t *req /**< Sdo request. */)
   172 int ec_sdo_request_timed_out(const ec_sdo_request_t *req /**< Sdo request. */)
   172 {
   173 {
   173     return req->timeout
   174     return req->issue_timeout
   174         && jiffies - req->start_jiffies > HZ * req->timeout / 1000;
   175         && jiffies - req->jiffies_start > HZ * req->issue_timeout / 1000;
   175 }
   176 }
   176 
   177 
   177 /*****************************************************************************
   178 /*****************************************************************************
   178  * Realtime interface.
   179  * Realtime interface.
   179  ****************************************************************************/
   180  ****************************************************************************/
   180 
   181 
   181 void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout)
   182 void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout)
   182 {
   183 {
   183     req->timeout = timeout;
   184     req->issue_timeout = timeout;
   184 }
   185 }
   185 
   186 
   186 /*****************************************************************************/
   187 /*****************************************************************************/
   187 
   188 
   188 uint8_t *ecrt_sdo_request_data(ec_sdo_request_t *req)
   189 uint8_t *ecrt_sdo_request_data(ec_sdo_request_t *req)
   208 
   209 
   209 void ecrt_sdo_request_read(ec_sdo_request_t *req)
   210 void ecrt_sdo_request_read(ec_sdo_request_t *req)
   210 {
   211 {
   211     req->dir = EC_DIR_INPUT;
   212     req->dir = EC_DIR_INPUT;
   212     req->state = EC_REQUEST_QUEUED;
   213     req->state = EC_REQUEST_QUEUED;
   213     req->start_jiffies = jiffies;
   214     req->jiffies_start = jiffies;
   214 }
   215 }
   215 
   216 
   216 /*****************************************************************************/
   217 /*****************************************************************************/
   217 
   218 
   218 void ecrt_sdo_request_write(ec_sdo_request_t *req)
   219 void ecrt_sdo_request_write(ec_sdo_request_t *req)
   219 {
   220 {
   220     req->dir = EC_DIR_OUTPUT;
   221     req->dir = EC_DIR_OUTPUT;
   221     req->state = EC_REQUEST_QUEUED;
   222     req->state = EC_REQUEST_QUEUED;
   222     req->start_jiffies = jiffies;
   223     req->jiffies_start = jiffies;
   223 }
   224 }
   224 
   225 
   225 /*****************************************************************************/
   226 /*****************************************************************************/
   226 
   227 
   227 /** \cond */
   228 /** \cond */