master/slave.h
changeset 73 9f4ea66d89a3
parent 55 059a9e712aa7
child 74 9bf603942791
equal deleted inserted replaced
72:7c986b717411 73:9f4ea66d89a3
    13 
    13 
    14 #include "types.h"
    14 #include "types.h"
    15 
    15 
    16 /*****************************************************************************/
    16 /*****************************************************************************/
    17 
    17 
    18 // ec_slave_t ist in EtherCAT_rt.h ...
    18 /**
       
    19    FMMU-Konfiguration.
       
    20 */
       
    21 
       
    22 typedef struct
       
    23 {
       
    24     const ec_domain_t *domain;
       
    25     const ec_sync_t *sync;
       
    26     uint32_t logical_start_address;
       
    27 }
       
    28 ec_fmmu_t;
    19 
    29 
    20 /*****************************************************************************/
    30 /*****************************************************************************/
    21 
    31 
    22 // Slave construction and deletion
    32 /**
    23 void ec_slave_init(ec_slave_t *);
    33    EtherCAT-Slave
       
    34 */
       
    35 
       
    36 struct ec_slave
       
    37 {
       
    38     ec_master_t *master; /**< EtherCAT-Master, zu dem der Slave gehört. */
       
    39 
       
    40     // Addresses
       
    41     uint16_t ring_position; /**< Position des Slaves im Bus */
       
    42     uint16_t station_address; /**< Konfigurierte Slave-Adresse */
       
    43 
       
    44     // Base data
       
    45     uint8_t base_type; /**< Slave-Typ */
       
    46     uint8_t base_revision; /**< Revision */
       
    47     uint16_t base_build; /**< Build-Nummer */
       
    48     uint16_t base_fmmu_count; /**< Anzahl unterstützter FMMUs */
       
    49     uint16_t base_sync_count; /**< Anzahl unterstützter Sync-Manager */
       
    50 
       
    51     // Slave information interface
       
    52     uint32_t sii_vendor_id; /**< Identifikationsnummer des Herstellers */
       
    53     uint32_t sii_product_code; /**< Herstellerspezifischer Produktcode */
       
    54     uint32_t sii_revision_number; /**< Revisionsnummer */
       
    55     uint32_t sii_serial_number; /**< Seriennummer der Klemme */
       
    56 
       
    57     const ec_slave_type_t *type; /**< Zeiger auf die Beschreibung
       
    58                                     des Slave-Typs */
       
    59 
       
    60     uint8_t registered; /**< Der Slave wurde registriert */
       
    61 
       
    62     ec_fmmu_t fmmus[EC_MAX_FMMUS]; /**< FMMU-Konfigurationen */
       
    63     uint8_t fmmu_count; /**< Wieviele FMMUs schon benutzt sind. */
       
    64 };
       
    65 
       
    66 /*****************************************************************************/
       
    67 
       
    68 // Slave construction/destruction
       
    69 void ec_slave_init(ec_slave_t *, ec_master_t *);
       
    70 void ec_slave_clear(ec_slave_t *);
       
    71 
       
    72 // Slave control
       
    73 int ec_slave_fetch(ec_slave_t *);
       
    74 int ec_slave_sii_read(ec_slave_t *, unsigned short, unsigned int *);
       
    75 int ec_slave_state_change(ec_slave_t *, uint8_t);
       
    76 int ec_slave_set_fmmu(ec_slave_t *, const ec_domain_t *, const ec_sync_t *);
       
    77 
       
    78 // Misc
       
    79 void ec_slave_print(const ec_slave_t *);
    24 
    80 
    25 /*****************************************************************************/
    81 /*****************************************************************************/
    26 
    82 
    27 #endif
    83 #endif
    28 
    84 
    29 /* Emacs-Konfiguration
    85 /* Emacs-Konfiguration
    30 ;;; Local Variables: ***
    86 ;;; Local Variables: ***
    31 ;;; c-basic-offset:2 ***
    87 ;;; c-basic-offset:4 ***
    32 ;;; End: ***
    88 ;;; End: ***
    33 */
    89 */