master/device.h
changeset 98 f564d0929292
parent 96 080b46eb6e2d
child 104 052bc82d5442
equal deleted inserted replaced
97:e6264685dd7b 98:f564d0929292
    15 
    15 
    16 #include "../include/EtherCAT_rt.h"
    16 #include "../include/EtherCAT_rt.h"
    17 #include "../include/EtherCAT_dev.h"
    17 #include "../include/EtherCAT_dev.h"
    18 #include "globals.h"
    18 #include "globals.h"
    19 
    19 
       
    20 typedef irqreturn_t (*ec_isr_t)(int, void *, struct pt_regs *);
       
    21 
    20 /*****************************************************************************/
    22 /*****************************************************************************/
    21 
    23 
    22 /**
    24 /**
    23    EtherCAT-Gerät.
    25    EtherCAT-Gerät.
    24 
    26 
    31 {
    33 {
    32     ec_master_t *master; /**< EtherCAT-Master */
    34     ec_master_t *master; /**< EtherCAT-Master */
    33     struct net_device *dev; /**< Zeiger auf das reservierte net_device */
    35     struct net_device *dev; /**< Zeiger auf das reservierte net_device */
    34     uint8_t open; /**< Das net_device ist geoeffnet. */
    36     uint8_t open; /**< Das net_device ist geoeffnet. */
    35     struct sk_buff *tx_skb; /**< Zeiger auf Transmit-Socketbuffer */
    37     struct sk_buff *tx_skb; /**< Zeiger auf Transmit-Socketbuffer */
    36     unsigned long tx_time;  /**< Zeit des letzten Sendens */
    38     ec_isr_t isr; /**< Adresse der ISR */
    37     unsigned long rx_time;  /**< Zeit des letzten Empfangs */
       
    38     ec_device_state_t state; /**< Zustand des Gerätes */
       
    39     uint8_t rx_data[EC_MAX_FRAME_SIZE]; /**< Speicher für empfangene Rahmen */
       
    40     size_t rx_data_size; /**< Länge des empfangenen Rahmens */
       
    41     irqreturn_t (*isr)(int, void *, struct pt_regs *); /**< Adresse der ISR */
       
    42     struct module *module; /**< Zeiger auf das Modul, das das Gerät zur
    39     struct module *module; /**< Zeiger auf das Modul, das das Gerät zur
    43                               Verfügung stellt. */
    40                               Verfügung stellt. */
    44     uint8_t error_reported; /**< Zeigt an, ob ein Fehler im zyklischen Code
       
    45                                bereits gemeldet wurde. */
       
    46     uint8_t link_state; /**< Verbindungszustand */
    41     uint8_t link_state; /**< Verbindungszustand */
    47 };
    42 };
    48 
    43 
    49 /*****************************************************************************/
    44 /*****************************************************************************/
    50 
    45 
    51 int ec_device_init(ec_device_t *, ec_master_t *);
    46 int ec_device_init(ec_device_t *, ec_master_t *, struct net_device *,
       
    47                    ec_isr_t, struct module *);
    52 void ec_device_clear(ec_device_t *);
    48 void ec_device_clear(ec_device_t *);
    53 
    49 
    54 int ec_device_open(ec_device_t *);
    50 int ec_device_open(ec_device_t *);
    55 int ec_device_close(ec_device_t *);
    51 int ec_device_close(ec_device_t *);
    56 
    52 
    57 void ec_device_call_isr(ec_device_t *);
    53 void ec_device_call_isr(ec_device_t *);
    58 uint8_t *ec_device_prepare(ec_device_t *);
    54 uint8_t *ec_device_tx_data(ec_device_t *);
    59 void ec_device_send(ec_device_t *, size_t);
    55 void ec_device_send(ec_device_t *, size_t);
    60 unsigned int ec_device_received(const ec_device_t *);
       
    61 uint8_t *ec_device_data(ec_device_t *);
       
    62 
       
    63 void ec_device_debug(const ec_device_t *);
       
    64 void ec_data_print(const uint8_t *, size_t);
       
    65 void ec_data_print_diff(const uint8_t *, const uint8_t *, size_t);
       
    66 
    56 
    67 /*****************************************************************************/
    57 /*****************************************************************************/
    68 
    58 
    69 #endif
    59 #endif
    70 
    60