equal
deleted
inserted
replaced
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 */ |