master/types.h
changeset 55 059a9e712aa7
parent 54 7506e67dd122
child 61 cd014255f94f
equal deleted inserted replaced
54:7506e67dd122 55:059a9e712aa7
     9  *****************************************************************************/
     9  *****************************************************************************/
    10 
    10 
    11 #ifndef _EC_TYPES_H_
    11 #ifndef _EC_TYPES_H_
    12 #define _EC_TYPES_H_
    12 #define _EC_TYPES_H_
    13 
    13 
       
    14 #include "../include/EtherCAT_rt.h"
       
    15 
    14 /*****************************************************************************/
    16 /*****************************************************************************/
    15 
    17 
    16 /**
    18 /**
    17    Typ eines EtherCAT-Slaves.
    19    Features eines EtherCAT-Slaves.
    18 
    20 
    19    Dieser Typ muss für die Konfiguration bekannt sein. Der
    21    Diese Angabe muss für die Konfiguration bekannt sein. Der
    20    Master entscheidet danach, ober bspw. Mailboxes konfigurieren,
    22    Master entscheidet danach, ober bspw. Mailboxes konfigurieren,
    21    oder Sync-Manager setzen soll.
    23    oder Sync-Manager setzen soll.
    22 */
    24 */
    23 
    25 
    24 typedef enum
    26 typedef enum
    25 {
    27 {
    26   EC_SIMPLE_SLAVE, EC_MAILBOX_SLAVE, EC_NOSYNC_SLAVE
    28   EC_SIMPLE_SLAVE, EC_MAILBOX_SLAVE, EC_NOSYNC_SLAVE
    27 }
    29 }
    28 ec_slave_type_t;
    30 ec_slave_features_t;
    29 
    31 
    30 /*****************************************************************************/
    32 /*****************************************************************************/
    31 
    33 
    32 /**
    34 /**
    33    Beschreibung eines EtherCAT-Slave-Typs.
    35    Beschreibung eines EtherCAT-Slave-Typs.
    35    Diese Beschreibung dient zur Konfiguration einer bestimmten
    37    Diese Beschreibung dient zur Konfiguration einer bestimmten
    36    Slave-Art. Sie enthält die Konfigurationsdaten für die
    38    Slave-Art. Sie enthält die Konfigurationsdaten für die
    37    Slave-internen Sync-Manager und FMMU's.
    39    Slave-internen Sync-Manager und FMMU's.
    38 */
    40 */
    39 
    41 
    40 typedef struct slave_desc
    42 struct ec_slave_type
    41 {
    43 {
    42   const char *vendor_name; /**< Name des Herstellers */
    44   const char *vendor_name; /**< Name des Herstellers */
    43   const char *product_name; /**< Name des Slaves-Typs */
    45   const char *product_name; /**< Name des Slaves-Typs */
    44   const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */
    46   const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */
    45 
    47 
    46   const ec_slave_type_t type; /**< Art des Slave-Typs */
    48   ec_slave_features_t features; /**< Features des Slave-Typs */
    47 
    49 
    48   const unsigned char *sm0; /**< Konfigurationsdaten des
    50   const unsigned char *sm0; /**< Konfigurationsdaten des
    49                                ersten Sync-Managers */
    51                                ersten Sync-Managers */
    50   const unsigned char *sm1; /**< Konfigurationsdaten des
    52   const unsigned char *sm1; /**< Konfigurationsdaten des
    51                                zweiten Sync-Managers */
    53                                zweiten Sync-Managers */
    55                                vierten Sync-Managers */
    57                                vierten Sync-Managers */
    56 
    58 
    57   const unsigned char *fmmu0; /**< Konfigurationsdaten
    59   const unsigned char *fmmu0; /**< Konfigurationsdaten
    58                                  der ersten FMMU */
    60                                  der ersten FMMU */
    59 
    61 
    60   const unsigned int process_data_size; /**< Länge der Prozessdaten in Bytes */
    62   unsigned int process_data_size; /**< Länge der Prozessdaten in Bytes */
    61   const unsigned int channel_count; /**< Anzahl der Kanäle */
    63 };
    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 
    64 
    71 /*****************************************************************************/
    65 /*****************************************************************************/
    72 
    66 
    73 /**
    67 /**
    74    Identifikation eines Slave-Typs.
    68    Identifikation eines Slave-Typs.
    77    Produktcodes zu den einzelnen Slave-Typen verwendet.
    71    Produktcodes zu den einzelnen Slave-Typen verwendet.
    78 */
    72 */
    79 
    73 
    80 typedef struct slave_ident
    74 typedef struct slave_ident
    81 {
    75 {
    82   const unsigned int vendor_id; /**< Hersteller-Code */
    76   unsigned int vendor_id; /**< Hersteller-Code */
    83   const unsigned int product_code; /**< Herstellerspezifischer Produktcode */
    77   unsigned int product_code; /**< Herstellerspezifischer Produktcode */
    84   const ec_slave_desc_t *desc; /**< Zeiger auf den dazugehörigen
    78   const ec_slave_type_t *type; /**< Zeiger auf den entsprechenden Slave-Typ */
    85                                         Slave-Typ */
       
    86 }
    79 }
    87 ec_slave_ident_t;
    80 ec_slave_ident_t;
    88 
    81 
    89 extern ec_slave_ident_t slave_idents[]; /**< Statisches Array der
    82 extern ec_slave_ident_t slave_idents[]; /**< Statisches Array der
    90                                            Slave-Identifikationen */
    83                                            Slave-Identifikationen */