equal
deleted
inserted
replaced
232 if (!ec_fsm_coe_success(&fsm->fsm_coe)) { |
232 if (!ec_fsm_coe_success(&fsm->fsm_coe)) { |
233 EC_SLAVE_ERR(slave, "Failed to process SDO request.\n"); |
233 EC_SLAVE_ERR(slave, "Failed to process SDO request.\n"); |
234 request->state = EC_INT_REQUEST_FAILURE; |
234 request->state = EC_INT_REQUEST_FAILURE; |
235 wake_up(&slave->sdo_queue); |
235 wake_up(&slave->sdo_queue); |
236 fsm->sdo_request = NULL; |
236 fsm->sdo_request = NULL; |
237 fsm->state = ec_fsm_slave_state_idle; |
237 fsm->state = ec_fsm_slave_state_ready; |
238 return; |
238 return; |
239 } |
239 } |
240 |
240 |
241 EC_SLAVE_DBG(slave, 1, "Finished SDO request.\n"); |
241 EC_SLAVE_DBG(slave, 1, "Finished SDO request.\n"); |
242 |
242 |
248 fsm->state = ec_fsm_slave_state_ready; |
248 fsm->state = ec_fsm_slave_state_ready; |
249 } |
249 } |
250 |
250 |
251 /*****************************************************************************/ |
251 /*****************************************************************************/ |
252 |
252 |
253 /** Check for pending FOE requests and process one. |
253 /** Check for pending FoE requests and process one. |
254 * |
254 * |
255 * \return non-zero, if an FOE request is processed. |
255 * \return non-zero, if an FoE request is processed. |
256 */ |
256 */ |
257 int ec_fsm_slave_action_process_foe( |
257 int ec_fsm_slave_action_process_foe( |
258 ec_fsm_slave_t *fsm /**< Slave state machine. */ |
258 ec_fsm_slave_t *fsm /**< Slave state machine. */ |
259 ) |
259 ) |
260 { |
260 { |
262 ec_master_foe_request_t *request, *next; |
262 ec_master_foe_request_t *request, *next; |
263 |
263 |
264 // search the first request to be processed |
264 // search the first request to be processed |
265 list_for_each_entry_safe(request, next, &slave->foe_requests, list) { |
265 list_for_each_entry_safe(request, next, &slave->foe_requests, list) { |
266 if (slave->current_state & EC_SLAVE_STATE_ACK_ERR) { |
266 if (slave->current_state & EC_SLAVE_STATE_ACK_ERR) { |
267 EC_SLAVE_WARN(slave, "Aborting FOE request," |
267 EC_SLAVE_WARN(slave, "Aborting FoE request," |
268 " slave has error flag set.\n"); |
268 " slave has error flag set.\n"); |
269 request->req.state = EC_INT_REQUEST_FAILURE; |
269 request->req.state = EC_INT_REQUEST_FAILURE; |
270 wake_up(&slave->sdo_queue); |
270 wake_up(&slave->sdo_queue); |
271 fsm->sdo_request = NULL; |
271 fsm->sdo_request = NULL; |
272 fsm->state = ec_fsm_slave_state_idle; |
272 fsm->state = ec_fsm_slave_state_idle; |
306 if (!ec_fsm_foe_success(&fsm->fsm_foe)) { |
306 if (!ec_fsm_foe_success(&fsm->fsm_foe)) { |
307 EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n"); |
307 EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n"); |
308 request->state = EC_INT_REQUEST_FAILURE; |
308 request->state = EC_INT_REQUEST_FAILURE; |
309 wake_up(&slave->foe_queue); |
309 wake_up(&slave->foe_queue); |
310 fsm->foe_request = NULL; |
310 fsm->foe_request = NULL; |
311 fsm->state = ec_fsm_slave_state_idle; |
311 fsm->state = ec_fsm_slave_state_ready; |
312 return; |
312 return; |
313 } |
313 } |
314 |
314 |
315 // finished transferring FoE |
315 // finished transferring FoE |
316 EC_SLAVE_DBG(slave, 1, "Successfully transferred %zu bytes of FoE" |
316 EC_SLAVE_DBG(slave, 1, "Successfully transferred %zu bytes of FoE" |
392 if (!ec_fsm_soe_success(&fsm->fsm_soe)) { |
392 if (!ec_fsm_soe_success(&fsm->fsm_soe)) { |
393 EC_SLAVE_ERR(slave, "Failed to process SoE request.\n"); |
393 EC_SLAVE_ERR(slave, "Failed to process SoE request.\n"); |
394 request->state = EC_INT_REQUEST_FAILURE; |
394 request->state = EC_INT_REQUEST_FAILURE; |
395 wake_up(&slave->soe_queue); |
395 wake_up(&slave->soe_queue); |
396 fsm->soe_request = NULL; |
396 fsm->soe_request = NULL; |
397 fsm->state = ec_fsm_slave_state_idle; |
397 fsm->state = ec_fsm_slave_state_ready; |
398 return; |
398 return; |
399 } |
399 } |
400 |
400 |
401 EC_SLAVE_DBG(slave, 1, "Finished SoE request.\n"); |
401 EC_SLAVE_DBG(slave, 1, "Finished SoE request.\n"); |
402 |
402 |