equal
deleted
inserted
replaced
1380 if (slave->current_state == slave->requested_state) { |
1380 if (slave->current_state == slave->requested_state) { |
1381 fsm->slave_state = ec_fsm_end; // successful |
1381 fsm->slave_state = ec_fsm_end; // successful |
1382 return; |
1382 return; |
1383 } |
1383 } |
1384 |
1384 |
1385 if (!slave->base_fmmu_count) { |
1385 if (!slave->base_fmmu_count) { // skip FMMU configuration |
1386 fsm->slave_state = ec_fsm_slaveconf_saveop; |
1386 if (list_empty(&slave->sdo_confs)) { // skip SDO configuration |
1387 fsm->change_new = EC_SLAVE_STATE_SAVEOP; |
1387 fsm->slave_state = ec_fsm_slaveconf_saveop; |
1388 fsm->change_state = ec_fsm_change_start; |
1388 fsm->change_new = EC_SLAVE_STATE_SAVEOP; |
1389 fsm->change_state(fsm); // execute immediately |
1389 fsm->change_state = ec_fsm_change_start; |
|
1390 fsm->change_state(fsm); // execute immediately |
|
1391 return; |
|
1392 } |
|
1393 fsm->slave_state = ec_fsm_slaveconf_sdoconf; |
|
1394 fsm->sdodata = list_entry(slave->sdo_confs.next, ec_sdo_data_t, list); |
|
1395 fsm->coe_state = ec_fsm_coe_down_start; |
|
1396 fsm->coe_state(fsm); // execute immediately |
1390 return; |
1397 return; |
1391 } |
1398 } |
1392 |
1399 |
1393 // configure FMMUs |
1400 // configure FMMUs |
1394 ec_datagram_npwr(datagram, slave->station_address, |
1401 ec_datagram_npwr(datagram, slave->station_address, |
1422 fsm->slave->ring_position); |
1429 fsm->slave->ring_position); |
1423 return; |
1430 return; |
1424 } |
1431 } |
1425 |
1432 |
1426 // No CoE configuration to be applied? Jump to SAVEOP state. |
1433 // No CoE configuration to be applied? Jump to SAVEOP state. |
1427 if (list_empty(&slave->sdo_confs)) { |
1434 if (list_empty(&slave->sdo_confs)) { // skip SDO configuration |
1428 // set state to SAVEOP |
1435 // set state to SAVEOP |
1429 fsm->slave_state = ec_fsm_slaveconf_saveop; |
1436 fsm->slave_state = ec_fsm_slaveconf_saveop; |
1430 fsm->change_new = EC_SLAVE_STATE_SAVEOP; |
1437 fsm->change_new = EC_SLAVE_STATE_SAVEOP; |
1431 fsm->change_state = ec_fsm_change_start; |
1438 fsm->change_state = ec_fsm_change_start; |
1432 fsm->change_state(fsm); // execute immediately |
1439 fsm->change_state(fsm); // execute immediately |