master/fsm_slave_config.c
branchredundancy
changeset 2374 e898451c054a
parent 2268 5e1d3c9430e0
child 2448 41dc9a4a0f76
equal deleted inserted replaced
2373:593272e5a169 2374:e898451c054a
   742             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   742             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   743             ec_soe_request_write(&fsm->soe_request_copy);
   743             ec_soe_request_write(&fsm->soe_request_copy);
   744             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   744             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   745             ec_fsm_soe_exec(fsm_soe); // execute immediately
   745             ec_fsm_soe_exec(fsm_soe); // execute immediately
   746             ec_master_queue_external_datagram(slave->master,
   746             ec_master_queue_external_datagram(slave->master,
   747                     fsm_soe->datagram, EC_DEVICE_MAIN);
   747                     fsm_soe->datagram);
   748             return;
   748             return;
   749         }
   749         }
   750     }
   750     }
   751 
   751 
   752     // No SoE configuration to be applied in PREOP
   752     // No SoE configuration to be applied in PREOP
   763 {
   763 {
   764     ec_slave_t *slave = fsm->slave;
   764     ec_slave_t *slave = fsm->slave;
   765     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
   765     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
   766 
   766 
   767     if (ec_fsm_soe_exec(fsm_soe)) {
   767     if (ec_fsm_soe_exec(fsm_soe)) {
   768         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram,
   768         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
   769                 EC_DEVICE_MAIN);
       
   770         return;
   769         return;
   771     }
   770     }
   772 
   771 
   773     if (!ec_fsm_soe_success(fsm_soe)) {
   772     if (!ec_fsm_soe_success(fsm_soe)) {
   774         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
   773         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
   790             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   789             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   791             ec_soe_request_write(&fsm->soe_request_copy);
   790             ec_soe_request_write(&fsm->soe_request_copy);
   792             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   791             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   793             ec_fsm_soe_exec(fsm_soe); // execute immediately
   792             ec_fsm_soe_exec(fsm_soe); // execute immediately
   794             ec_master_queue_external_datagram(slave->master,
   793             ec_master_queue_external_datagram(slave->master,
   795                     fsm_soe->datagram, EC_DEVICE_MAIN);
   794                     fsm_soe->datagram);
   796             return;
   795             return;
   797         }
   796         }
   798     }
   797     }
   799 
   798 
   800     // All PREOP IDNs are now configured.
   799     // All PREOP IDNs are now configured.
  1472             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1471             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1473             ec_soe_request_write(&fsm->soe_request_copy);
  1472             ec_soe_request_write(&fsm->soe_request_copy);
  1474             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1473             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1475             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1474             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1476             ec_master_queue_external_datagram(slave->master,
  1475             ec_master_queue_external_datagram(slave->master,
  1477                     fsm_soe->datagram, EC_DEVICE_MAIN);
  1476                     fsm_soe->datagram);
  1478             return;
  1477             return;
  1479         }
  1478         }
  1480     }
  1479     }
  1481 
  1480 
  1482     // No SoE configuration to be applied in SAFEOP
  1481     // No SoE configuration to be applied in SAFEOP
  1493 {
  1492 {
  1494     ec_slave_t *slave = fsm->slave;
  1493     ec_slave_t *slave = fsm->slave;
  1495     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
  1494     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
  1496 
  1495 
  1497     if (ec_fsm_soe_exec(fsm_soe)) {
  1496     if (ec_fsm_soe_exec(fsm_soe)) {
  1498         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram,
  1497         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
  1499                 EC_DEVICE_MAIN);
       
  1500         return;
  1498         return;
  1501     }
  1499     }
  1502 
  1500 
  1503     if (!ec_fsm_soe_success(fsm_soe)) {
  1501     if (!ec_fsm_soe_success(fsm_soe)) {
  1504         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
  1502         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
  1520             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1518             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1521             ec_soe_request_write(&fsm->soe_request_copy);
  1519             ec_soe_request_write(&fsm->soe_request_copy);
  1522             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1520             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1523             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1521             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1524             ec_master_queue_external_datagram(slave->master,
  1522             ec_master_queue_external_datagram(slave->master,
  1525                     fsm_soe->datagram, EC_DEVICE_MAIN);
  1523                     fsm_soe->datagram);
  1526             return;
  1524             return;
  1527         }
  1525         }
  1528     }
  1526     }
  1529 
  1527 
  1530     // All SAFEOP IDNs are now configured.
  1528     // All SAFEOP IDNs are now configured.