Invalidate processing register requests when clearing configuration.

This commit is contained in:
Florian Pose 2012-12-04 12:23:43 +01:00
parent 1322a3b6a8
commit 0456ad0de8
2 changed files with 17 additions and 0 deletions

View File

@ -336,6 +336,12 @@ void ec_fsm_slave_state_reg_request(
ec_slave_t *slave = fsm->slave;
ec_reg_request_t *reg = fsm->reg_request;
if (!reg) {
// configuration was cleared in the meantime
fsm->state = ec_fsm_slave_state_ready;
return;
}
if (fsm->datagram->state != EC_DATAGRAM_RECEIVED) {
EC_SLAVE_ERR(slave, "Failed to receive register"
" request datagram: ");

View File

@ -268,7 +268,18 @@ void ec_slave_config_detach(
)
{
if (sc->slave) {
ec_reg_request_t *reg;
sc->slave->config = NULL;
// invalidate processing register request
list_for_each_entry(reg, &sc->reg_requests, list) {
if (sc->slave->fsm.reg_request == reg) {
sc->slave->fsm.reg_request = NULL;
break;
}
}
sc->slave = NULL;
}
}