master/fsm_slave_config.c
branchredundancy
changeset 2268 5e1d3c9430e0
parent 2123 4c335a1d4db0
child 2374 e898451c054a
equal deleted inserted replaced
2267:2d36f36a433c 2268:5e1d3c9430e0
   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);
   747                     fsm_soe->datagram, EC_DEVICE_MAIN);
   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);
   769         return;
   770         return;
   770     }
   771     }
   771 
   772 
   772     if (!ec_fsm_soe_success(fsm_soe)) {
   773     if (!ec_fsm_soe_success(fsm_soe)) {
   773         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
   774         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
   789             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   790             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
   790             ec_soe_request_write(&fsm->soe_request_copy);
   791             ec_soe_request_write(&fsm->soe_request_copy);
   791             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   792             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
   792             ec_fsm_soe_exec(fsm_soe); // execute immediately
   793             ec_fsm_soe_exec(fsm_soe); // execute immediately
   793             ec_master_queue_external_datagram(slave->master,
   794             ec_master_queue_external_datagram(slave->master,
   794                     fsm_soe->datagram);
   795                     fsm_soe->datagram, EC_DEVICE_MAIN);
   795             return;
   796             return;
   796         }
   797         }
   797     }
   798     }
   798 
   799 
   799     // All PREOP IDNs are now configured.
   800     // All PREOP IDNs are now configured.
  1471             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1472             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1472             ec_soe_request_write(&fsm->soe_request_copy);
  1473             ec_soe_request_write(&fsm->soe_request_copy);
  1473             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1474             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1474             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1475             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1475             ec_master_queue_external_datagram(slave->master,
  1476             ec_master_queue_external_datagram(slave->master,
  1476                     fsm_soe->datagram);
  1477                     fsm_soe->datagram, EC_DEVICE_MAIN);
  1477             return;
  1478             return;
  1478         }
  1479         }
  1479     }
  1480     }
  1480 
  1481 
  1481     // No SoE configuration to be applied in SAFEOP
  1482     // No SoE configuration to be applied in SAFEOP
  1492 {
  1493 {
  1493     ec_slave_t *slave = fsm->slave;
  1494     ec_slave_t *slave = fsm->slave;
  1494     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
  1495     ec_fsm_soe_t *fsm_soe = &slave->fsm.fsm_soe;
  1495 
  1496 
  1496     if (ec_fsm_soe_exec(fsm_soe)) {
  1497     if (ec_fsm_soe_exec(fsm_soe)) {
  1497         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram);
  1498         ec_master_queue_external_datagram(slave->master, fsm_soe->datagram,
       
  1499                 EC_DEVICE_MAIN);
  1498         return;
  1500         return;
  1499     }
  1501     }
  1500 
  1502 
  1501     if (!ec_fsm_soe_success(fsm_soe)) {
  1503     if (!ec_fsm_soe_success(fsm_soe)) {
  1502         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
  1504         EC_SLAVE_ERR(slave, "SoE configuration failed.\n");
  1518             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1520             ec_soe_request_copy(&fsm->soe_request_copy, fsm->soe_request);
  1519             ec_soe_request_write(&fsm->soe_request_copy);
  1521             ec_soe_request_write(&fsm->soe_request_copy);
  1520             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1522             ec_fsm_soe_transfer(fsm_soe, fsm->slave, &fsm->soe_request_copy);
  1521             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1523             ec_fsm_soe_exec(fsm_soe); // execute immediately
  1522             ec_master_queue_external_datagram(slave->master,
  1524             ec_master_queue_external_datagram(slave->master,
  1523                     fsm_soe->datagram);
  1525                     fsm_soe->datagram, EC_DEVICE_MAIN);
  1524             return;
  1526             return;
  1525         }
  1527         }
  1526     }
  1528     }
  1527 
  1529 
  1528     // All SAFEOP IDNs are now configured.
  1530     // All SAFEOP IDNs are now configured.