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 |