diff -r 4e32bcc6b361 -r ca805255a935 master/master.h --- a/master/master.h Tue Apr 11 14:39:17 2006 +0000 +++ b/master/master.h Wed Apr 12 10:40:32 2006 +0000 @@ -13,6 +13,7 @@ #include #include +#include #include "device.h" #include "domain.h" @@ -20,6 +21,20 @@ /*****************************************************************************/ /** + EtherCAT master mode. +*/ + +typedef enum +{ + EC_MASTER_MODE_IDLE, + EC_MASTER_MODE_FREERUN, + EC_MASTER_MODE_RUNNING +} +ec_master_mode_t; + +/*****************************************************************************/ + +/** EtherCAT-Rahmen-Statistiken. */ @@ -63,6 +78,8 @@ unsigned int timeout; /**< Timeout für synchronen Datenaustausch */ struct list_head eoe_slaves; /**< Ethernet over EtherCAT Slaves */ unsigned int reserved; /**< Master durch Echtzeitprozess reserviert */ + struct timer_list freerun_timer; /**< Timer fuer Free-Run-Modus. */ + ec_master_mode_t mode; /**< Modus des Masters */ }; /*****************************************************************************/ @@ -72,6 +89,10 @@ void ec_master_clear(struct kobject *); void ec_master_reset(ec_master_t *); +// Free-Run +void ec_master_freerun_start(ec_master_t *); +void ec_master_freerun_stop(ec_master_t *); + // IO void ec_master_receive(ec_master_t *, const uint8_t *, size_t); void ec_master_queue_command(ec_master_t *, ec_command_t *);