fp@39: /****************************************************************************** fp@0: * fp@54: * d e v i c e . h fp@0: * fp@0: * Struktur für ein EtherCAT-Gerät. fp@0: * fp@39: * $Id$ fp@0: * fp@39: *****************************************************************************/ fp@0: fp@0: #ifndef _EC_DEVICE_H_ fp@0: #define _EC_DEVICE_H_ fp@0: fp@25: #include fp@25: fp@54: #include "globals.h" fp@54: #include "../include/EtherCAT_dev.h" fp@0: fp@39: /*****************************************************************************/ fp@0: fp@0: /** fp@0: EtherCAT-Gerät. fp@0: fp@0: Ein EtherCAT-Gerät ist eine Netzwerkkarte, die vom fp@0: EtherCAT-Master dazu verwendet wird, um Frames zu senden fp@0: und zu empfangen. fp@0: */ fp@0: fp@54: struct ec_device fp@0: { fp@0: struct net_device *dev; /**< Zeiger auf das reservierte net_device */ fp@54: unsigned int open; /**< Das net_device ist geoeffnet. */ fp@0: struct sk_buff *tx_skb; /**< Zeiger auf Transmit-Socketbuffer */ fp@0: struct sk_buff *rx_skb; /**< Zeiger auf Receive-Socketbuffer */ fp@0: unsigned long tx_time; /**< Zeit des letzten Sendens */ fp@0: unsigned long rx_time; /**< Zeit des letzten Empfangs */ fp@0: unsigned long tx_intr_cnt; /**< Anzahl Tx-Interrupts */ fp@0: unsigned long rx_intr_cnt; /**< Anzahl Rx-Interrupts */ fp@0: unsigned long intr_cnt; /**< Anzahl Interrupts */ fp@54: volatile ec_device_state_t state; /**< Gesendet, Empfangen, fp@54: Timeout, etc. */ fp@54: unsigned char rx_data[EC_FRAME_SIZE]; /**< Puffer für fp@54: empfangene Rahmen */ fp@0: volatile unsigned int rx_data_length; /**< Länge des zuletzt fp@0: empfangenen Rahmens */ fp@25: irqreturn_t (*isr)(int, void *, struct pt_regs *); /**< Adresse der ISR */ fp@33: struct module *module; /**< Zeiger auf das Modul, das das Gerät zur fp@33: Verfügung stellt. */ fp@39: int error_reported; /**< Zeigt an, ob ein Fehler im zyklischen Code fp@39: bereits gemeldet wurde. */ fp@54: }; fp@0: fp@39: /*****************************************************************************/ fp@0: fp@54: int ec_device_init(ec_device_t *); fp@54: void ec_device_clear(ec_device_t *); fp@54: int ec_device_open(ec_device_t *); fp@54: int ec_device_close(ec_device_t *); fp@54: void ec_device_call_isr(ec_device_t *); fp@54: int ec_device_send(ec_device_t *, unsigned char *, unsigned int); fp@54: int ec_device_receive(ec_device_t *, unsigned char *); fp@0: fp@39: /*****************************************************************************/ fp@0: fp@0: #endif