158 memcpy(req->data, source, size); |
159 memcpy(req->data, source, size); |
159 req->data_size = size; |
160 req->data_size = size; |
160 return 0; |
161 return 0; |
161 } |
162 } |
162 |
163 |
|
164 /*****************************************************************************/ |
|
165 |
|
166 /** Checks, if the timeout was exceeded. |
|
167 * |
|
168 * \return non-zero if the timeout was exceeded, else zero. |
|
169 */ |
|
170 int ec_sdo_request_timed_out(const ec_sdo_request_t *req /**< Sdo request. */) |
|
171 { |
|
172 return req->timeout |
|
173 && jiffies - req->start_jiffies > HZ * req->timeout / 1000; |
|
174 } |
|
175 |
163 /***************************************************************************** |
176 /***************************************************************************** |
164 * Realtime interface. |
177 * Realtime interface. |
165 ****************************************************************************/ |
178 ****************************************************************************/ |
166 |
179 |
167 void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) |
180 void ecrt_sdo_request_timeout(ec_sdo_request_t *req, uint32_t timeout) |
168 { |
181 { |
|
182 req->timeout = timeout; |
169 } |
183 } |
170 |
184 |
171 /*****************************************************************************/ |
185 /*****************************************************************************/ |
172 |
186 |
173 uint8_t *ecrt_sdo_request_data(ec_sdo_request_t *req) |
187 uint8_t *ecrt_sdo_request_data(ec_sdo_request_t *req) |
193 |
207 |
194 void ecrt_sdo_request_read(ec_sdo_request_t *req) |
208 void ecrt_sdo_request_read(ec_sdo_request_t *req) |
195 { |
209 { |
196 req->dir = EC_DIR_INPUT; |
210 req->dir = EC_DIR_INPUT; |
197 req->state = EC_REQUEST_QUEUED; |
211 req->state = EC_REQUEST_QUEUED; |
|
212 req->start_jiffies = jiffies; |
198 } |
213 } |
199 |
214 |
200 /*****************************************************************************/ |
215 /*****************************************************************************/ |
201 |
216 |
202 void ecrt_sdo_request_write(ec_sdo_request_t *req) |
217 void ecrt_sdo_request_write(ec_sdo_request_t *req) |
203 { |
218 { |
204 req->dir = EC_DIR_OUTPUT; |
219 req->dir = EC_DIR_OUTPUT; |
205 req->state = EC_REQUEST_QUEUED; |
220 req->state = EC_REQUEST_QUEUED; |
|
221 req->start_jiffies = jiffies; |
206 } |
222 } |
207 |
223 |
208 /*****************************************************************************/ |
224 /*****************************************************************************/ |
209 |
225 |
210 /** \cond */ |
226 /** \cond */ |