master/master.c
changeset 235 f973808540a6
parent 228 ec516cfa207e
child 236 34d7ce41e9db
equal deleted inserted replaced
234:fd04cfde1c4b 235:f973808540a6
   872 void ec_master_run_eoe(void *data /**< master pointer */)
   872 void ec_master_run_eoe(void *data /**< master pointer */)
   873 #endif
   873 #endif
   874 {
   874 {
   875     ec_master_t *master = (ec_master_t *) data;
   875     ec_master_t *master = (ec_master_t *) data;
   876     ec_eoe_t *eoe;
   876     ec_eoe_t *eoe;
       
   877     unsigned int active = 0;
       
   878 
       
   879     list_for_each_entry(eoe, &master->eoe_slaves, list) {
       
   880         if (ec_eoe_active(eoe)) active++;
       
   881     }
   877 
   882 
   878     // request_cb must return 0, if the lock has been aquired!
   883     // request_cb must return 0, if the lock has been aquired!
   879     if (!master->request_cb(master->cb_data))
   884     if (active && !master->request_cb(master->cb_data))
   880     {
   885     {
   881         ecrt_master_async_receive(master);
   886         ecrt_master_async_receive(master);
   882         list_for_each_entry(eoe, &master->eoe_slaves, list) {
   887         list_for_each_entry(eoe, &master->eoe_slaves, list) {
   883             ec_eoe_run(eoe);
   888             ec_eoe_run(eoe);
   884         }
   889         }