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