1127 } |
1127 } |
1128 } |
1128 } |
1129 if (none_open) |
1129 if (none_open) |
1130 goto queue_timer; |
1130 goto queue_timer; |
1131 |
1131 |
|
1132 if (master->request_cb(master->cb_data)) goto queue_timer; |
|
1133 |
1132 // receive datagrams |
1134 // receive datagrams |
1133 if (master->request_cb(master->cb_data)) goto queue_timer; |
|
1134 cycles_start = get_cycles(); |
1135 cycles_start = get_cycles(); |
1135 ecrt_master_receive(master); |
1136 ecrt_master_receive(master); |
1136 master->release_cb(master->cb_data); |
|
1137 |
1137 |
1138 // actual EoE processing |
1138 // actual EoE processing |
1139 list_for_each_entry(eoe, &master->eoe_handlers, list) { |
1139 list_for_each_entry(eoe, &master->eoe_handlers, list) { |
1140 ec_eoe_run(eoe); |
1140 ec_eoe_run(eoe); |
1141 } |
1141 } |
1142 |
1142 |
1143 // send datagrams |
1143 // send datagrams |
1144 if (master->request_cb(master->cb_data)) goto queue_timer; |
|
1145 ecrt_master_send(master); |
1144 ecrt_master_send(master); |
1146 cycles_end = get_cycles(); |
1145 cycles_end = get_cycles(); |
|
1146 |
1147 master->release_cb(master->cb_data); |
1147 master->release_cb(master->cb_data); |
1148 |
1148 |
1149 master->eoe_cycle_times[master->eoe_cycle_time_pos] |
1149 master->eoe_cycle_times[master->eoe_cycle_time_pos] |
1150 = (u32) (cycles_end - cycles_start) * 1000 / cpu_khz; |
1150 = (u32) (cycles_end - cycles_start) * 1000 / cpu_khz; |
1151 master->eoe_cycle_time_pos++; |
1151 master->eoe_cycle_time_pos++; |