master/master.h
changeset 1995 7d748d9cf9e8
parent 1989 6aa393418fb3
parent 1939 1ba48f78a0a5
child 2001 2e05246f3b00
equal deleted inserted replaced
1994:b369f3f92eb8 1995:7d748d9cf9e8
   168     unsigned int injection_seq_fsm; /**< Datagram injection sequence number
   168     unsigned int injection_seq_fsm; /**< Datagram injection sequence number
   169                                       for the FSM side. */
   169                                       for the FSM side. */
   170     unsigned int injection_seq_rt; /**< Datagram injection sequence number
   170     unsigned int injection_seq_rt; /**< Datagram injection sequence number
   171                                      for the realtime side. */
   171                                      for the realtime side. */
   172 
   172 
   173 
       
   174     ec_slave_t *slaves; /**< Array of slaves on the bus. */
   173     ec_slave_t *slaves; /**< Array of slaves on the bus. */
   175     unsigned int slave_count; /**< Number of slaves on the bus. */
   174     unsigned int slave_count; /**< Number of slaves on the bus. */
   176 
   175 
       
   176     /* Configuration applied by the application. */
   177     struct list_head configs; /**< List of slave configurations. */
   177     struct list_head configs; /**< List of slave configurations. */
       
   178     struct list_head domains; /**< List of domains. */
   178     
   179     
   179     u64 app_time; /**< Time of the last ecrt_master_sync() call. */
   180     u64 app_time; /**< Time of the last ecrt_master_sync() call. */
   180     u64 app_start_time; /**< Application start time. */
   181     u64 app_start_time; /**< Application start time. */
   181     u8 has_app_time; /**< Application time is valid. */
   182     u8 has_app_time; /**< Application time is valid. */
   182     ec_datagram_t ref_sync_datagram; /**< Datagram used for synchronizing the
   183     ec_datagram_t ref_sync_datagram; /**< Datagram used for synchronizing the
   213                                            datagrams. */
   214                                            datagrams. */
   214     struct semaphore ext_queue_sem; /**< Semaphore protecting the \a
   215     struct semaphore ext_queue_sem; /**< Semaphore protecting the \a
   215                                       ext_datagram_queue. */
   216                                       ext_datagram_queue. */
   216 
   217 
   217     struct list_head external_datagram_queue; /**< External Datagram queue. */
   218     struct list_head external_datagram_queue; /**< External Datagram queue. */
   218     size_t send_interval; /**< Interval between calls to ecrt_master_send */
   219     unsigned int send_interval; /**< Interval between calls to ecrt_master_send */
   219     size_t max_queue_size; /**< Maximum size of datagram queue */
   220     size_t max_queue_size; /**< Maximum size of datagram queue */
   220     struct list_head domains; /**< List of domains. */
       
   221 
   221 
   222     unsigned int debug_level; /**< Master debug level. */
   222     unsigned int debug_level; /**< Master debug level. */
   223     ec_stats_t stats; /**< Cyclic statistics. */
   223     ec_stats_t stats; /**< Cyclic statistics. */
   224 
   224 
   225     struct task_struct *thread; /**< Master thread. */
   225     struct task_struct *thread; /**< Master thread. */
   244     wait_queue_head_t sii_queue; /**< Wait queue for SII
   244     wait_queue_head_t sii_queue; /**< Wait queue for SII
   245                                       write requests from user space. */
   245                                       write requests from user space. */
   246 
   246 
   247     struct list_head reg_requests; /**< Register requests. */
   247     struct list_head reg_requests; /**< Register requests. */
   248     wait_queue_head_t reg_queue; /**< Wait queue for register requests. */
   248     wait_queue_head_t reg_queue; /**< Wait queue for register requests. */
   249 
       
   250 };
   249 };
   251 
   250 
   252 /*****************************************************************************/
   251 /*****************************************************************************/
   253 
   252 
   254 // static funtions
   253 // static funtions
   277 void ec_master_queue_datagram_ext(ec_master_t *, ec_datagram_t *);
   276 void ec_master_queue_datagram_ext(ec_master_t *, ec_datagram_t *);
   278 void ec_master_queue_external_datagram(ec_master_t *, ec_datagram_t *);
   277 void ec_master_queue_external_datagram(ec_master_t *, ec_datagram_t *);
   279 void ec_master_inject_external_datagrams(ec_master_t *);
   278 void ec_master_inject_external_datagrams(ec_master_t *);
   280 
   279 
   281 // misc.
   280 // misc.
   282 void ec_master_set_send_interval(ec_master_t *,size_t);
   281 void ec_master_set_send_interval(ec_master_t *, unsigned int);
   283 void ec_master_attach_slave_configs(ec_master_t *);
   282 void ec_master_attach_slave_configs(ec_master_t *);
   284 ec_slave_t *ec_master_find_slave(ec_master_t *, uint16_t, uint16_t);
   283 ec_slave_t *ec_master_find_slave(ec_master_t *, uint16_t, uint16_t);
   285 const ec_slave_t *ec_master_find_slave_const(const ec_master_t *, uint16_t,
   284 const ec_slave_t *ec_master_find_slave_const(const ec_master_t *, uint16_t,
   286         uint16_t);
   285         uint16_t);
   287 void ec_master_output_stats(ec_master_t *);
   286 void ec_master_output_stats(ec_master_t *);