equal
deleted
inserted
replaced
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 } |