master/master.c
changeset 2165 1d94f77784a0
parent 2164 cf4db3c282d2
child 2166 1d5a5303f15c
equal deleted inserted replaced
2164:cf4db3c282d2 2165:1d94f77784a0
   149 
   149 
   150     master->slaves = NULL;
   150     master->slaves = NULL;
   151     master->slave_count = 0;
   151     master->slave_count = 0;
   152 
   152 
   153     INIT_LIST_HEAD(&master->configs);
   153     INIT_LIST_HEAD(&master->configs);
       
   154     INIT_LIST_HEAD(&master->domains);
   154 
   155 
   155     master->app_time = 0ULL;
   156     master->app_time = 0ULL;
       
   157     master->app_start_time = 0ULL;
       
   158     master->has_app_time = 0;
   156 #ifdef EC_HAVE_CYCLES
   159 #ifdef EC_HAVE_CYCLES
   157     master->dc_cycles_app_start_time = 0;
   160     master->dc_cycles_app_start_time = 0;
   158 #endif
   161 #endif
   159     master->dc_jiffies_app_start_time = 0;
   162     master->dc_jiffies_app_start_time = 0;
   160     master->app_start_time = 0ULL;
       
   161     master->has_app_time = 0;
       
   162 
   163 
   163     master->scan_busy = 0;
   164     master->scan_busy = 0;
       
   165     master->allow_scan = 1;
   164     ec_mutex_init(&master->scan_mutex);
   166     ec_mutex_init(&master->scan_mutex);
   165     init_waitqueue_head(&master->scan_queue);
   167     init_waitqueue_head(&master->scan_queue);
   166 
   168 
   167     master->config_busy = 0;
   169     master->config_busy = 0;
   168     ec_mutex_init(&master->config_mutex);
   170     ec_mutex_init(&master->config_mutex);
   174     ec_mutex_init(&master->fsm_queue_mutex);
   176     ec_mutex_init(&master->fsm_queue_mutex);
   175     INIT_LIST_HEAD(&master->fsm_datagram_queue);
   177     INIT_LIST_HEAD(&master->fsm_datagram_queue);
   176     
   178     
   177     // send interval in IDLE phase
   179     // send interval in IDLE phase
   178     ec_master_set_send_interval(master, 1000000 / HZ);
   180     ec_master_set_send_interval(master, 1000000 / HZ);
   179 
       
   180     INIT_LIST_HEAD(&master->domains);
       
   181 
   181 
   182     master->debug_level = debug_level;
   182     master->debug_level = debug_level;
   183     master->stats.timeouts = 0;
   183     master->stats.timeouts = 0;
   184     master->stats.corrupted = 0;
   184     master->stats.corrupted = 0;
   185     master->stats.unmatched = 0;
   185     master->stats.unmatched = 0;
   224         EC_MASTER_ERR(master, "Failed to allocate FSM datagram.\n");
   224         EC_MASTER_ERR(master, "Failed to allocate FSM datagram.\n");
   225         goto out_clear_backup;
   225         goto out_clear_backup;
   226     }
   226     }
   227 
   227 
   228     // create state machine object
   228     // create state machine object
   229     ec_mbox_init(&master->fsm_mbox,&master->fsm_datagram);
   229     ec_mbox_init(&master->fsm_mbox, &master->fsm_datagram);
   230     ec_fsm_master_init(&master->fsm, master, &master->fsm_datagram);
   230     ec_fsm_master_init(&master->fsm, master, &master->fsm_datagram);
   231 
   231 
   232     // init reference sync datagram
   232     // init reference sync datagram
   233     ec_datagram_init(&master->ref_sync_datagram);
   233     ec_datagram_init(&master->ref_sync_datagram);
   234     snprintf(master->ref_sync_datagram.name, EC_DATAGRAM_NAME_SIZE, "refsync");
   234     snprintf(master->ref_sync_datagram.name, EC_DATAGRAM_NAME_SIZE, "refsync");