master/domain.h
changeset 73 9f4ea66d89a3
parent 56 36d1fa37f5e1
child 95 0066de7a456d
equal deleted inserted replaced
72:7c986b717411 73:9f4ea66d89a3
     9  *****************************************************************************/
     9  *****************************************************************************/
    10 
    10 
    11 #ifndef _EC_DOMAIN_H_
    11 #ifndef _EC_DOMAIN_H_
    12 #define _EC_DOMAIN_H_
    12 #define _EC_DOMAIN_H_
    13 
    13 
       
    14 #include <linux/list.h>
       
    15 
    14 #include "globals.h"
    16 #include "globals.h"
    15 #include "slave.h"
    17 #include "slave.h"
    16 #include "command.h"
    18 #include "frame.h"
       
    19 
       
    20 /*****************************************************************************/
       
    21 
       
    22 /**
       
    23    Datenfeld-Konfiguration.
       
    24 */
       
    25 
       
    26 typedef struct
       
    27 {
       
    28     struct list_head list;
       
    29     ec_slave_t *slave;
       
    30     const ec_sync_t *sync;
       
    31     uint32_t field_offset;
       
    32     void **data_ptr;
       
    33 }
       
    34 ec_field_reg_t;
    17 
    35 
    18 /*****************************************************************************/
    36 /*****************************************************************************/
    19 
    37 
    20 /**
    38 /**
    21    EtherCAT-Domäne
    39    EtherCAT-Domäne
    22 
    40 
    23    Verwaltet die Prozessdaten und das hierfür nötige Kommando einer bestimmten
    41    Verwaltet die Prozessdaten und das hierfür nötige Kommando einer bestimmten
    24    Menge von Slaves.
    42    Menge von Slaves.
    25 */
    43 */
    26 
    44 
    27 typedef struct ec_domain
    45 struct ec_domain
    28 {
    46 {
    29   int number; /*<< Domänen-Identifikation */
    47     ec_master_t *master; /**< EtherCAT-Master, zu der die Domäne gehört. */
    30   ec_command_t command; /**< Kommando zum Senden und Empfangen der
    48 
    31                            Prozessdaten */
    49     unsigned char *data; /**< Prozessdaten */
    32   unsigned char data[EC_FRAME_SIZE]; /**< Prozessdaten-Array */
    50     unsigned int data_size; /**< Größe der Prozessdaten */
    33   unsigned int data_size; /**< Größe der Prozessdaten */
    51 
    34   unsigned int logical_offset; /**< Logische Basisaddresse */
    52     ec_frame_t frame; /**< EtherCAT-Frame für die Prozessdaten */
    35   unsigned int response_count; /**< Anzahl antwortender Slaves */
    53 
    36 }
    54     ec_domain_mode_t mode;
    37 ec_domain_t;
    55     unsigned int timeout_us; /**< Timeout in Mikrosekunden. */
       
    56     unsigned int base_address; /**< Logische Basisaddresse der Domain */
       
    57     unsigned int response_count; /**< Anzahl antwortender Slaves */
       
    58 
       
    59     struct list_head field_regs; /**< Liste der Datenfeldregistrierungen */
       
    60 };
    38 
    61 
    39 /*****************************************************************************/
    62 /*****************************************************************************/
    40 
    63 
    41 void ec_domain_init(ec_domain_t *);
    64 void ec_domain_init(ec_domain_t *, ec_master_t *, ec_domain_mode_t,
       
    65                     unsigned int);
       
    66 void ec_domain_clear(ec_domain_t *);
       
    67 
       
    68 int ec_domain_alloc(ec_domain_t *, uint32_t);
    42 
    69 
    43 /*****************************************************************************/
    70 /*****************************************************************************/
    44 
    71 
    45 #endif
    72 #endif
    46 
    73 
    47 /* Emacs-Konfiguration
    74 /* Emacs-Konfiguration
    48 ;;; Local Variables: ***
    75    ;;; Local Variables: ***
    49 ;;; c-basic-offset:2 ***
    76    ;;; c-basic-offset:4 ***
    50 ;;; End: ***
    77 ;;; End: ***
    51 */
    78 */