master/master.c
changeset 228 ec516cfa207e
parent 226 07247920a7ba
child 235 f973808540a6
equal deleted inserted replaced
227:413ae15d330e 228:ec516cfa207e
   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