master/fsm.c
changeset 338 469369417422
parent 329 d004349777fc
child 339 a3a4ee854bd8
equal deleted inserted replaced
337:6fd537c56448 338:469369417422
  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