master/slave.h
changeset 2600 1a969896d52e
parent 2597 0e145bb05859
equal deleted inserted replaced
2598:19ff84bbbcb3 2600:1a969896d52e
   108         if (slave->master->debug_level >= level) { \
   108         if (slave->master->debug_level >= level) { \
   109             printk(KERN_DEBUG "EtherCAT DEBUG %u-%u: " fmt, \
   109             printk(KERN_DEBUG "EtherCAT DEBUG %u-%u: " fmt, \
   110                     slave->master->index, slave->ring_position, ##args); \
   110                     slave->master->index, slave->ring_position, ##args); \
   111         } \
   111         } \
   112     } while (0)
   112     } while (0)
       
   113 
       
   114 /*****************************************************************************/
       
   115 
       
   116 #ifdef EC_LOOP_CONTROL
       
   117 
       
   118 /** Slave port state.
       
   119  */
       
   120 typedef enum {
       
   121     EC_SLAVE_PORT_DOWN,
       
   122     EC_SLAVE_PORT_WAIT,
       
   123     EC_SLAVE_PORT_UP
       
   124 } ec_slave_port_state_t;
       
   125 
       
   126 /** Wait time in [ms] from detecting a link to opening a port.
       
   127  */
       
   128 #define EC_PORT_WAIT_MS 2000
       
   129 
       
   130 #endif
   113 
   131 
   114 /*****************************************************************************/
   132 /*****************************************************************************/
   115 
   133 
   116 /** Slave port.
   134 /** Slave port.
   117  */
   135  */
   121     ec_slave_t *next_slave; /**< Connected slaves. */
   139     ec_slave_t *next_slave; /**< Connected slaves. */
   122     uint32_t receive_time; /**< Port receive times for delay
   140     uint32_t receive_time; /**< Port receive times for delay
   123                                             measurement. */
   141                                             measurement. */
   124     uint32_t delay_to_next_dc; /**< Delay to next slave with DC support behind
   142     uint32_t delay_to_next_dc; /**< Delay to next slave with DC support behind
   125                                  this port [ns]. */
   143                                  this port [ns]. */
       
   144 #ifdef EC_LOOP_CONTROL
       
   145     ec_slave_port_state_t state; /**< Port state for loop control. */
       
   146     unsigned long link_detection_jiffies; /**< Time of link detection. */
       
   147 #endif
   126 } ec_slave_port_t;
   148 } ec_slave_port_t;
   127 
   149 
   128 /*****************************************************************************/
   150 /*****************************************************************************/
   129 
   151 
   130 /** Slave information interface data.
   152 /** Slave information interface data.
   243 void ec_slave_clear(ec_slave_t *);
   265 void ec_slave_clear(ec_slave_t *);
   244 
   266 
   245 void ec_slave_clear_sync_managers(ec_slave_t *);
   267 void ec_slave_clear_sync_managers(ec_slave_t *);
   246 
   268 
   247 void ec_slave_request_state(ec_slave_t *, ec_slave_state_t);
   269 void ec_slave_request_state(ec_slave_t *, ec_slave_state_t);
   248 void ec_slave_set_state(ec_slave_t *, ec_slave_state_t);
   270 void ec_slave_set_dl_status(ec_slave_t *, uint16_t);
       
   271 void ec_slave_set_al_status(ec_slave_t *, ec_slave_state_t);
   249 
   272 
   250 // SII categories
   273 // SII categories
   251 int ec_slave_fetch_sii_strings(ec_slave_t *, const uint8_t *, size_t);
   274 int ec_slave_fetch_sii_strings(ec_slave_t *, const uint8_t *, size_t);
   252 int ec_slave_fetch_sii_general(ec_slave_t *, const uint8_t *, size_t);
   275 int ec_slave_fetch_sii_general(ec_slave_t *, const uint8_t *, size_t);
   253 int ec_slave_fetch_sii_syncs(ec_slave_t *, const uint8_t *, size_t);
   276 int ec_slave_fetch_sii_syncs(ec_slave_t *, const uint8_t *, size_t);