master/master.c
changeset 651 8c11399cc911
parent 650 c68995623e94
child 656 370aa8c2d1b1
equal deleted inserted replaced
650:c68995623e94 651:8c11399cc911
   819             spin_lock_bh(&master->internal_lock);
   819             spin_lock_bh(&master->internal_lock);
   820             ecrt_master_receive(master);
   820             ecrt_master_receive(master);
   821             spin_unlock_bh(&master->internal_lock);
   821             spin_unlock_bh(&master->internal_lock);
   822         }
   822         }
   823 
   823 
       
   824         if (master->fsm_datagram.state == EC_DATAGRAM_SENT)
       
   825             goto schedule;
       
   826 
   824         // execute master state machine
   827         // execute master state machine
   825         if (ec_fsm_master_exec(&master->fsm)) {
   828         if (ec_fsm_master_exec(&master->fsm)) {
   826             // queue and send
   829             // queue and send
   827             ec_master_queue_datagram(master, &master->fsm_datagram);
   830             ec_master_queue_datagram(master, &master->fsm_datagram);
   828             spin_lock_bh(&master->internal_lock);
   831             spin_lock_bh(&master->internal_lock);
   834         master->idle_cycle_times[master->idle_cycle_time_pos]
   837         master->idle_cycle_times[master->idle_cycle_time_pos]
   835             = (u32) (cycles_end - cycles_start) * 1000 / cpu_khz;
   838             = (u32) (cycles_end - cycles_start) * 1000 / cpu_khz;
   836         master->idle_cycle_time_pos++;
   839         master->idle_cycle_time_pos++;
   837         master->idle_cycle_time_pos %= HZ;
   840         master->idle_cycle_time_pos %= HZ;
   838 
   841 
       
   842 schedule:
   839         if (ec_fsm_master_idle(&master->fsm)) {
   843         if (ec_fsm_master_idle(&master->fsm)) {
   840             set_current_state(TASK_INTERRUPTIBLE);
   844             set_current_state(TASK_INTERRUPTIBLE);
   841             schedule_timeout(1);
   845             schedule_timeout(1);
   842         }
   846         }
   843         else {
   847         else {