equal
deleted
inserted
replaced
201 // Start SDO transfer |
201 // Start SDO transfer |
202 fsm->sdo_request = &request->req; |
202 fsm->sdo_request = &request->req; |
203 fsm->state = ec_fsm_slave_state_sdo_request; |
203 fsm->state = ec_fsm_slave_state_sdo_request; |
204 ec_fsm_coe_transfer(&fsm->fsm_coe, slave, &request->req); |
204 ec_fsm_coe_transfer(&fsm->fsm_coe, slave, &request->req); |
205 ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately |
205 ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately |
206 ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram); |
206 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
|
207 EC_DEVICE_MAIN); |
207 return 1; |
208 return 1; |
208 } |
209 } |
209 return 0; |
210 return 0; |
210 } |
211 } |
211 |
212 |
218 ) |
219 ) |
219 { |
220 { |
220 ec_slave_t *slave = fsm->slave; |
221 ec_slave_t *slave = fsm->slave; |
221 ec_sdo_request_t *request = fsm->sdo_request; |
222 ec_sdo_request_t *request = fsm->sdo_request; |
222 |
223 |
223 if (ec_fsm_coe_exec(&fsm->fsm_coe)) |
224 if (ec_fsm_coe_exec(&fsm->fsm_coe)) { |
224 { |
225 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
225 ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram); |
226 EC_DEVICE_MAIN); |
226 return; |
227 return; |
227 } |
228 } |
228 if (!ec_fsm_coe_success(&fsm->fsm_coe)) { |
229 if (!ec_fsm_coe_success(&fsm->fsm_coe)) { |
229 EC_SLAVE_ERR(slave, "Failed to process SDO request.\n"); |
230 EC_SLAVE_ERR(slave, "Failed to process SDO request.\n"); |
230 request->state = EC_INT_REQUEST_FAILURE; |
231 request->state = EC_INT_REQUEST_FAILURE; |
275 |
276 |
276 fsm->foe_request = &request->req; |
277 fsm->foe_request = &request->req; |
277 fsm->state = ec_fsm_slave_state_foe_request; |
278 fsm->state = ec_fsm_slave_state_foe_request; |
278 ec_fsm_foe_transfer(&fsm->fsm_foe, slave, &request->req); |
279 ec_fsm_foe_transfer(&fsm->fsm_foe, slave, &request->req); |
279 ec_fsm_foe_exec(&fsm->fsm_foe); |
280 ec_fsm_foe_exec(&fsm->fsm_foe); |
280 ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram); |
281 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
|
282 EC_DEVICE_MAIN); |
281 return 1; |
283 return 1; |
282 } |
284 } |
283 return 0; |
285 return 0; |
284 } |
286 } |
285 |
287 |
292 ) |
294 ) |
293 { |
295 { |
294 ec_slave_t *slave = fsm->slave; |
296 ec_slave_t *slave = fsm->slave; |
295 ec_foe_request_t *request = fsm->foe_request; |
297 ec_foe_request_t *request = fsm->foe_request; |
296 |
298 |
297 if (ec_fsm_foe_exec(&fsm->fsm_foe)) |
299 if (ec_fsm_foe_exec(&fsm->fsm_foe)) { |
298 { |
300 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
299 ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram); |
301 EC_DEVICE_MAIN); |
300 return; |
302 return; |
301 } |
303 } |
302 |
304 |
303 if (!ec_fsm_foe_success(&fsm->fsm_foe)) { |
305 if (!ec_fsm_foe_success(&fsm->fsm_foe)) { |
304 EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n"); |
306 EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n"); |
362 // Start SoE transfer |
364 // Start SoE transfer |
363 fsm->soe_request = &req->req; |
365 fsm->soe_request = &req->req; |
364 fsm->state = ec_fsm_slave_state_soe_request; |
366 fsm->state = ec_fsm_slave_state_soe_request; |
365 ec_fsm_soe_transfer(&fsm->fsm_soe, slave, &req->req); |
367 ec_fsm_soe_transfer(&fsm->fsm_soe, slave, &req->req); |
366 ec_fsm_soe_exec(&fsm->fsm_soe); // execute immediately |
368 ec_fsm_soe_exec(&fsm->fsm_soe); // execute immediately |
367 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram); |
369 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
|
370 EC_DEVICE_MAIN); |
368 return 1; |
371 return 1; |
369 } |
372 } |
370 return 0; |
373 return 0; |
371 } |
374 } |
372 |
375 |
380 { |
383 { |
381 ec_slave_t *slave = fsm->slave; |
384 ec_slave_t *slave = fsm->slave; |
382 ec_soe_request_t *request = fsm->soe_request; |
385 ec_soe_request_t *request = fsm->soe_request; |
383 |
386 |
384 if (ec_fsm_soe_exec(&fsm->fsm_soe)) { |
387 if (ec_fsm_soe_exec(&fsm->fsm_soe)) { |
385 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram); |
388 ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram, |
|
389 EC_DEVICE_MAIN); |
386 return; |
390 return; |
387 } |
391 } |
388 |
392 |
389 if (!ec_fsm_soe_success(&fsm->fsm_soe)) { |
393 if (!ec_fsm_soe_success(&fsm->fsm_soe)) { |
390 EC_SLAVE_ERR(slave, "Failed to process SoE request.\n"); |
394 EC_SLAVE_ERR(slave, "Failed to process SoE request.\n"); |