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 |
877 |
878 // request_cb must return 0, if the lock has been aquired! |
878 // request_cb must return 0, if the lock has been aquired! |
879 if (master->request_cb(master->cb_data)) goto queue; |
879 if (!master->request_cb(master->cb_data)) |
880 |
880 { |
881 ecrt_master_async_receive(master); |
881 ecrt_master_async_receive(master); |
882 list_for_each_entry(eoe, &master->eoe_slaves, list) { |
882 list_for_each_entry(eoe, &master->eoe_slaves, list) { |
883 ec_eoe_run(eoe); |
883 ec_eoe_run(eoe); |
884 } |
884 } |
885 ecrt_master_async_send(master); |
885 ecrt_master_async_send(master); |
886 |
886 |
887 master->release_cb(master->cb_data); |
887 master->release_cb(master->cb_data); |
888 |
888 } |
889 queue: |
889 |
890 #ifdef EOE_TIMER |
890 #ifdef EOE_TIMER |
891 master->eoe_timer.expires += HZ / 1000; |
891 master->eoe_timer.expires += HZ / EC_EOE_FREQUENCY; |
892 add_timer(&master->eoe_timer); |
892 add_timer(&master->eoe_timer); |
893 #else |
893 #else |
894 queue_delayed_work(master->eoe_workqueue, &master->eoe_work, HZ / 1000); |
894 queue_delayed_work(master->eoe_workqueue, &master->eoe_work, |
|
895 HZ / EC_EOE_FREQUENCY); |
895 #endif |
896 #endif |
896 } |
897 } |
897 |
898 |
898 /****************************************************************************** |
899 /****************************************************************************** |
899 * Realtime interface |
900 * Realtime interface |