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