From e23af9cfdbd08fbd2359885714ba9b849229fe08 Mon Sep 17 00:00:00 2001 From: Martin Troxler Date: Thu, 10 Dec 2009 13:19:21 +0100 Subject: [PATCH] Postpone SDO request when slave is in INIT --- master/fsm_slave.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/master/fsm_slave.c b/master/fsm_slave.c index 9385608b..f6425c62 100644 --- a/master/fsm_slave.c +++ b/master/fsm_slave.c @@ -142,16 +142,14 @@ int ec_fsm_slave_action_process_sdo( // search the first external request to be processed list_for_each_entry_safe(request, next, &slave->slave_sdo_requests, list) { - list_del_init(&request->list); // dequeue - request->req.state = EC_INT_REQUEST_BUSY; if (slave->current_state == EC_SLAVE_STATE_INIT) { - EC_ERR("Discarding SDO request, slave %u is in INIT.\n", + EC_WARN("Postponing SDO request, slave %u is in INIT.\n", slave->ring_position); - request->req.state = EC_INT_REQUEST_FAILURE; - wake_up(&slave->sdo_queue); - continue; + return 0; } + list_del_init(&request->list); // dequeue + request->req.state = EC_INT_REQUEST_BUSY; // Found pending SDO request. Execute it! if (master->debug_level)