master/master.h
changeset 306 45886de3db87
parent 305 03aab3068f08
child 325 7833cf70c4f2
equal deleted inserted replaced
305:03aab3068f08 306:45886de3db87
    56 */
    56 */
    57 
    57 
    58 typedef enum
    58 typedef enum
    59 {
    59 {
    60     EC_MASTER_MODE_ORPHANED,
    60     EC_MASTER_MODE_ORPHANED,
    61     EC_MASTER_MODE_FREERUN,
    61     EC_MASTER_MODE_IDLE,
    62     EC_MASTER_MODE_RUNNING
    62     EC_MASTER_MODE_RUNNING
    63 }
    63 }
    64 ec_master_mode_t;
    64 ec_master_mode_t;
    65 
    65 
    66 /*****************************************************************************/
    66 /*****************************************************************************/
   102     struct list_head datagram_queue; /**< datagram queue */
   102     struct list_head datagram_queue; /**< datagram queue */
   103     uint8_t datagram_index; /**< current datagram index */
   103     uint8_t datagram_index; /**< current datagram index */
   104 
   104 
   105     struct list_head domains; /**< list of domains */
   105     struct list_head domains; /**< list of domains */
   106 
   106 
   107     ec_datagram_t simple_datagram; /**< datagram structure for initialization */
   107     ec_datagram_t simple_datagram; /**< datagram structure for
       
   108                                       initialization */
   108     unsigned int timeout; /**< timeout in synchronous IO */
   109     unsigned int timeout; /**< timeout in synchronous IO */
   109 
   110 
   110     int debug_level; /**< master debug level */
   111     int debug_level; /**< master debug level */
   111     ec_stats_t stats; /**< cyclic statistics */
   112     ec_stats_t stats; /**< cyclic statistics */
   112 
   113 
   113     struct workqueue_struct *workqueue; /**< master workqueue */
   114     struct workqueue_struct *workqueue; /**< master workqueue */
   114     struct work_struct freerun_work; /**< free run work object */
   115     struct work_struct idle_work; /**< free run work object */
   115     ec_fsm_t fsm; /**< master state machine */
   116     ec_fsm_t fsm; /**< master state machine */
   116     ec_master_mode_t mode; /**< master mode */
   117     ec_master_mode_t mode; /**< master mode */
   117 
   118 
   118     struct timer_list eoe_timer; /**< EoE timer object */
   119     struct timer_list eoe_timer; /**< EoE timer object */
   119     unsigned int eoe_running; /**< non-zero, if EoE processing is active. */
   120     unsigned int eoe_running; /**< non-zero, if EoE processing is active. */
   120     struct list_head eoe_handlers; /**< Ethernet-over-EtherCAT handlers */
   121     struct list_head eoe_handlers; /**< Ethernet-over-EtherCAT handlers */
   121     spinlock_t internal_lock; /**< spinlock used in freerun mode */
   122     spinlock_t internal_lock; /**< spinlock used in idle mode */
   122     int (*request_cb)(void *); /**< lock request callback */
   123     int (*request_cb)(void *); /**< lock request callback */
   123     void (*release_cb)(void *); /**< lock release callback */
   124     void (*release_cb)(void *); /**< lock release callback */
   124     void *cb_data; /**< data parameter of locking callbacks */
   125     void *cb_data; /**< data parameter of locking callbacks */
   125 
   126 
   126     uint8_t eeprom_write_enable; /**< allow write operations to EEPROMs */
   127     uint8_t eeprom_write_enable; /**< allow write operations to EEPROMs */
   132 int ec_master_init(ec_master_t *, unsigned int, unsigned int);
   133 int ec_master_init(ec_master_t *, unsigned int, unsigned int);
   133 void ec_master_clear(struct kobject *);
   134 void ec_master_clear(struct kobject *);
   134 void ec_master_reset(ec_master_t *);
   135 void ec_master_reset(ec_master_t *);
   135 
   136 
   136 // free run
   137 // free run
   137 void ec_master_freerun_start(ec_master_t *);
   138 void ec_master_idle_start(ec_master_t *);
   138 void ec_master_freerun_stop(ec_master_t *);
   139 void ec_master_idle_stop(ec_master_t *);
   139 
   140 
   140 // EoE
   141 // EoE
   141 void ec_master_eoe_start(ec_master_t *);
   142 void ec_master_eoe_start(ec_master_t *);
   142 void ec_master_eoe_stop(ec_master_t *);
   143 void ec_master_eoe_stop(ec_master_t *);
   143 
   144