master/master.c
changeset 2036 7fbc7bb7b95a
parent 2032 57c618557912
child 2037 ea0319750e13
equal deleted inserted replaced
2035:72a4e043e67d 2036:7fbc7bb7b95a
  1956 void ecrt_master_deactivate(ec_master_t *master)
  1956 void ecrt_master_deactivate(ec_master_t *master)
  1957 {
  1957 {
  1958     ec_slave_t *slave;
  1958     ec_slave_t *slave;
  1959 #ifdef EC_EOE
  1959 #ifdef EC_EOE
  1960     ec_eoe_t *eoe;
  1960     ec_eoe_t *eoe;
       
  1961     int is_eoe_slave;
  1961 #endif
  1962 #endif
  1962 
  1963 
  1963     EC_MASTER_DBG(master, 1, "%s(master = 0x%p)\n", __func__, master);
  1964     EC_MASTER_DBG(master, 1, "%s(master = 0x%p)\n", __func__, master);
  1964 
  1965 
  1965     if (!master->active) {
  1966     if (!master->active) {
  1979             slave < master->slaves + master->slave_count;
  1980             slave < master->slaves + master->slave_count;
  1980             slave++) {
  1981             slave++) {
  1981 
  1982 
  1982         // set state to PREOP for all but eoe slaves
  1983         // set state to PREOP for all but eoe slaves
  1983 #ifdef EC_EOE
  1984 #ifdef EC_EOE
       
  1985         is_eoe_slave = 0;
  1984         // ... but leave EoE slaves in OP
  1986         // ... but leave EoE slaves in OP
  1985         list_for_each_entry(eoe, &master->eoe_handlers, list) {
  1987         list_for_each_entry(eoe, &master->eoe_handlers, list) {
  1986             if (slave != eoe->slave || !ec_eoe_is_open(eoe)) {
  1988             if (slave == eoe->slave && ec_eoe_is_open(eoe))
  1987                 ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
  1989                 is_eoe_slave = 1;
  1988                 // mark for reconfiguration, because the master could have no
  1990        }
  1989                 // possibility for a reconfiguration between two sequential operation
  1991        if (!is_eoe_slave) {
  1990                 // phases.
  1992            ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
  1991                 slave->force_config = 1;
  1993            // mark for reconfiguration, because the master could have no
  1992             }
  1994            // possibility for a reconfiguration between two sequential operation
       
  1995            // phases.
       
  1996            slave->force_config = 1;
  1993         }
  1997         }
  1994 #else
  1998 #else
  1995         ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
  1999         ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);
  1996         // mark for reconfiguration, because the master could have no
  2000         // mark for reconfiguration, because the master could have no
  1997         // possibility for a reconfiguration between two sequential operation
  2001         // possibility for a reconfiguration between two sequential operation