master/slave.h
branchstable-1.0
changeset 1621 4bbe090553f7
parent 1619 0d4119024f55
child 1624 9dc190591c0f
equal deleted inserted replaced
1620:9d7453c16ade 1621:4bbe090553f7
   212 ec_sdo_entry_t;
   212 ec_sdo_entry_t;
   213 
   213 
   214 /*****************************************************************************/
   214 /*****************************************************************************/
   215 
   215 
   216 /**
   216 /**
       
   217    Variable-sized field information.
       
   218 */
       
   219 
       
   220 typedef struct
       
   221 {
       
   222     struct list_head list; /**< list item */
       
   223     const ec_field_t *field; /**< data field */
       
   224     size_t size; /**< field size */
       
   225 }
       
   226 ec_varsize_t;
       
   227 
       
   228 /*****************************************************************************/
       
   229 
       
   230 /**
   217    EtherCAT slave.
   231    EtherCAT slave.
   218 */
   232 */
   219 
   233 
   220 struct ec_slave
   234 struct ec_slave
   221 {
   235 {
   259     uint8_t registered; /**< true, if slave has been registered */
   273     uint8_t registered; /**< true, if slave has been registered */
   260 
   274 
   261     ec_fmmu_t fmmus[EC_MAX_FMMUS]; /**< FMMU configurations */
   275     ec_fmmu_t fmmus[EC_MAX_FMMUS]; /**< FMMU configurations */
   262     uint8_t fmmu_count; /**< number of FMMUs used */
   276     uint8_t fmmu_count; /**< number of FMMUs used */
   263 
   277 
       
   278     uint8_t *eeprom_data; /**< Complete EEPROM image */
       
   279     uint16_t eeprom_size; /**< size of the EEPROM contents in byte */
   264     struct list_head eeprom_strings; /**< EEPROM STRING categories */
   280     struct list_head eeprom_strings; /**< EEPROM STRING categories */
   265     struct list_head eeprom_syncs; /**< EEPROM SYNC MANAGER categories */
   281     struct list_head eeprom_syncs; /**< EEPROM SYNC MANAGER categories */
   266     struct list_head eeprom_pdos; /**< EEPROM [RT]XPDO categories */
   282     struct list_head eeprom_pdos; /**< EEPROM [RT]XPDO categories */
   267 
       
   268     char *eeprom_group; /**< slave group acc. to EEPROM */
   283     char *eeprom_group; /**< slave group acc. to EEPROM */
   269     char *eeprom_image; /**< slave image name acc. to EEPROM */
   284     char *eeprom_image; /**< slave image name acc. to EEPROM */
   270     char *eeprom_order; /**< slave order number acc. to EEPROM */
   285     char *eeprom_order; /**< slave order number acc. to EEPROM */
   271     char *eeprom_name; /**< slave name acc. to EEPROM */
   286     char *eeprom_name; /**< slave name acc. to EEPROM */
   272 
   287 
       
   288     uint16_t *new_eeprom_data; /**< new EEPROM data to write */
       
   289     size_t new_eeprom_size; /**< size of new EEPROM data in words */
       
   290 
   273     struct list_head sdo_dictionary; /**< SDO directory list */
   291     struct list_head sdo_dictionary; /**< SDO directory list */
   274 
       
   275     ec_command_t mbox_command; /**< mailbox command */
       
   276 
   292 
   277     ec_slave_state_t requested_state; /**< requested slave state */
   293     ec_slave_state_t requested_state; /**< requested slave state */
   278     ec_slave_state_t current_state; /**< current slave state */
   294     ec_slave_state_t current_state; /**< current slave state */
   279     unsigned int state_error; /**< a state error has happened */
   295     unsigned int state_error; /**< a state error has happened */
   280     unsigned int online; /**< non-zero, if the slave responds. */
   296     unsigned int online; /**< non-zero, if the slave responds. */
       
   297 
       
   298     struct list_head varsize_fields; /**< size information for variable-sized
       
   299                                         data fields. */
   281 };
   300 };
   282 
   301 
   283 /*****************************************************************************/
   302 /*****************************************************************************/
   284 
   303 
   285 // slave construction/destruction
   304 // slave construction/destruction
   304 int ec_slave_fetch_sync(ec_slave_t *, const uint8_t *, size_t);
   323 int ec_slave_fetch_sync(ec_slave_t *, const uint8_t *, size_t);
   305 int ec_slave_fetch_pdo(ec_slave_t *, const uint8_t *, size_t, ec_pdo_type_t);
   324 int ec_slave_fetch_pdo(ec_slave_t *, const uint8_t *, size_t, ec_pdo_type_t);
   306 int ec_slave_locate_string(ec_slave_t *, unsigned int, char **);
   325 int ec_slave_locate_string(ec_slave_t *, unsigned int, char **);
   307 
   326 
   308 // misc.
   327 // misc.
       
   328 size_t ec_slave_calc_sync_size(const ec_slave_t *, const ec_sync_t *);
   309 void ec_slave_print(const ec_slave_t *, unsigned int);
   329 void ec_slave_print(const ec_slave_t *, unsigned int);
   310 int ec_slave_check_crc(ec_slave_t *);
   330 int ec_slave_check_crc(ec_slave_t *);
   311 
   331 
   312 /*****************************************************************************/
   332 /*****************************************************************************/
   313 
   333