master/types.h
changeset 54 7506e67dd122
parent 42 a22a202d0f42
child 55 059a9e712aa7
equal deleted inserted replaced
53:6b3b8acb71b5 54:7506e67dd122
       
     1 /******************************************************************************
       
     2  *
       
     3  *  t y p e s . h
       
     4  *
       
     5  *  EtherCAT-Slave-Typen.
       
     6  *
       
     7  *  $Id$
       
     8  *
       
     9  *****************************************************************************/
       
    10 
       
    11 #ifndef _EC_TYPES_H_
       
    12 #define _EC_TYPES_H_
       
    13 
       
    14 /*****************************************************************************/
       
    15 
       
    16 /**
       
    17    Typ eines EtherCAT-Slaves.
       
    18 
       
    19    Dieser Typ muss für die Konfiguration bekannt sein. Der
       
    20    Master entscheidet danach, ober bspw. Mailboxes konfigurieren,
       
    21    oder Sync-Manager setzen soll.
       
    22 */
       
    23 
       
    24 typedef enum
       
    25 {
       
    26   EC_SIMPLE_SLAVE, EC_MAILBOX_SLAVE, EC_NOSYNC_SLAVE
       
    27 }
       
    28 ec_slave_type_t;
       
    29 
       
    30 /*****************************************************************************/
       
    31 
       
    32 /**
       
    33    Beschreibung eines EtherCAT-Slave-Typs.
       
    34 
       
    35    Diese Beschreibung dient zur Konfiguration einer bestimmten
       
    36    Slave-Art. Sie enthält die Konfigurationsdaten für die
       
    37    Slave-internen Sync-Manager und FMMU's.
       
    38 */
       
    39 
       
    40 typedef struct slave_desc
       
    41 {
       
    42   const char *vendor_name; /**< Name des Herstellers */
       
    43   const char *product_name; /**< Name des Slaves-Typs */
       
    44   const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */
       
    45 
       
    46   const ec_slave_type_t type; /**< Art des Slave-Typs */
       
    47 
       
    48   const unsigned char *sm0; /**< Konfigurationsdaten des
       
    49                                ersten Sync-Managers */
       
    50   const unsigned char *sm1; /**< Konfigurationsdaten des
       
    51                                zweiten Sync-Managers */
       
    52   const unsigned char *sm2; /**< Konfigurationsdaten des
       
    53                                dritten Sync-Managers */
       
    54   const unsigned char *sm3; /**< Konfigurationsdaten des
       
    55                                vierten Sync-Managers */
       
    56 
       
    57   const unsigned char *fmmu0; /**< Konfigurationsdaten
       
    58                                  der ersten FMMU */
       
    59 
       
    60   const unsigned int process_data_size; /**< Länge der Prozessdaten in Bytes */
       
    61   const unsigned int channel_count; /**< Anzahl der Kanäle */
       
    62 
       
    63   int (*read) (unsigned char *, unsigned int); /**< Funktion zum Dekodieren
       
    64                                                   und Lesen der Kanaldaten */
       
    65   void (*write) (unsigned char *, unsigned int, int); /**< Funktion zum
       
    66                                                          Kodieren und Schreiben
       
    67                                                          der Kanaldaten */
       
    68 }
       
    69 ec_slave_desc_t;
       
    70 
       
    71 /*****************************************************************************/
       
    72 
       
    73 /**
       
    74    Identifikation eines Slave-Typs.
       
    75 
       
    76    Diese Struktur wird zur 1:n-Zuordnung von Hersteller- und
       
    77    Produktcodes zu den einzelnen Slave-Typen verwendet.
       
    78 */
       
    79 
       
    80 typedef struct slave_ident
       
    81 {
       
    82   const unsigned int vendor_id; /**< Hersteller-Code */
       
    83   const unsigned int product_code; /**< Herstellerspezifischer Produktcode */
       
    84   const ec_slave_desc_t *desc; /**< Zeiger auf den dazugehörigen
       
    85                                         Slave-Typ */
       
    86 }
       
    87 ec_slave_ident_t;
       
    88 
       
    89 extern ec_slave_ident_t slave_idents[]; /**< Statisches Array der
       
    90                                            Slave-Identifikationen */
       
    91 extern unsigned int slave_ident_count; /**< Anzahl der vorhandenen
       
    92                                           Slave-Identifikationen */
       
    93 
       
    94 /*****************************************************************************/
       
    95 
       
    96 #endif