master/domain.c
changeset 344 5d8281f1aa2a
parent 343 b3858d25ba4b
child 353 beb26409ba22
equal deleted inserted replaced
343:b3858d25ba4b 344:5d8281f1aa2a
   104     domain->master = master;
   104     domain->master = master;
   105     domain->index = index;
   105     domain->index = index;
   106     domain->data_size = 0;
   106     domain->data_size = 0;
   107     domain->base_address = 0;
   107     domain->base_address = 0;
   108     domain->response_count = 0xFFFFFFFF;
   108     domain->response_count = 0xFFFFFFFF;
   109     domain->t_last = 0;
   109     domain->notify_jiffies = 0;
   110     domain->working_counter_changes = 0;
   110     domain->working_counter_changes = 0;
   111 
   111 
   112     INIT_LIST_HEAD(&domain->data_regs);
   112     INIT_LIST_HEAD(&domain->data_regs);
   113     INIT_LIST_HEAD(&domain->datagrams);
   113     INIT_LIST_HEAD(&domain->datagrams);
   114 
   114 
   511 
   511 
   512 void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */)
   512 void ecrt_domain_process(ec_domain_t *domain /**< EtherCAT domain */)
   513 {
   513 {
   514     unsigned int working_counter_sum;
   514     unsigned int working_counter_sum;
   515     ec_datagram_t *datagram;
   515     ec_datagram_t *datagram;
   516     cycles_t t_now = get_cycles();
       
   517 
   516 
   518     working_counter_sum = 0;
   517     working_counter_sum = 0;
   519     list_for_each_entry(datagram, &domain->datagrams, list) {
   518     list_for_each_entry(datagram, &domain->datagrams, list) {
   520         if (datagram->state == EC_DATAGRAM_RECEIVED) {
   519         if (datagram->state == EC_DATAGRAM_RECEIVED) {
   521             working_counter_sum += datagram->working_counter;
   520             working_counter_sum += datagram->working_counter;
   526         domain->working_counter_changes++;
   525         domain->working_counter_changes++;
   527         domain->response_count = working_counter_sum;
   526         domain->response_count = working_counter_sum;
   528     }
   527     }
   529 
   528 
   530     if (domain->working_counter_changes &&
   529     if (domain->working_counter_changes &&
   531         (u32) (t_now - domain->t_last) / cpu_khz > 1000) {
   530         jiffies - domain->notify_jiffies > HZ) {
   532         domain->t_last = t_now;
   531         domain->notify_jiffies = jiffies;
   533         if (domain->working_counter_changes == 1) {
   532         if (domain->working_counter_changes == 1) {
   534             EC_INFO("Domain %i working counter change: %i\n", domain->index,
   533             EC_INFO("Domain %i working counter change: %i\n", domain->index,
   535                     domain->response_count);
   534                     domain->response_count);
   536         }
   535         }
   537         else {
   536         else {