master/device.h
changeset 78 3d74183d6c6b
parent 73 9f4ea66d89a3
child 96 080b46eb6e2d
--- a/master/device.h	Fri Feb 24 10:19:26 2006 +0000
+++ b/master/device.h	Fri Feb 24 13:09:13 2006 +0000
@@ -13,8 +13,9 @@
 
 #include <linux/interrupt.h>
 
+#include "../include/EtherCAT_rt.h"
+#include "../include/EtherCAT_dev.h"
 #include "globals.h"
-#include "../include/EtherCAT_dev.h"
 
 /*****************************************************************************/
 
@@ -28,33 +29,40 @@
 
 struct ec_device
 {
+    ec_master_t *master; /**< EtherCAT-Master */
     struct net_device *dev; /**< Zeiger auf das reservierte net_device */
-    unsigned int open;      /**< Das net_device ist geoeffnet. */
+    uint8_t open; /**< Das net_device ist geoeffnet. */
     struct sk_buff *tx_skb; /**< Zeiger auf Transmit-Socketbuffer */
     unsigned long tx_time;  /**< Zeit des letzten Sendens */
     unsigned long rx_time;  /**< Zeit des letzten Empfangs */
-    volatile ec_device_state_t state; /**< Zustand des Gerätes */
+    ec_device_state_t state; /**< Zustand des Gerätes */
     uint8_t rx_data[EC_MAX_FRAME_SIZE]; /**< Speicher für empfangene Rahmen */
-    volatile unsigned int rx_data_length; /**< Länge des empfangenen Rahmens */
+    size_t rx_data_size; /**< Länge des empfangenen Rahmens */
     irqreturn_t (*isr)(int, void *, struct pt_regs *); /**< Adresse der ISR */
     struct module *module; /**< Zeiger auf das Modul, das das Gerät zur
                               Verfügung stellt. */
-    int error_reported; /**< Zeigt an, ob ein Fehler im zyklischen Code
-                           bereits gemeldet wurde. */
+    uint8_t error_reported; /**< Zeigt an, ob ein Fehler im zyklischen Code
+                               bereits gemeldet wurde. */
 };
 
 /*****************************************************************************/
 
-int ec_device_init(ec_device_t *);
+int ec_device_init(ec_device_t *, ec_master_t *);
 void ec_device_clear(ec_device_t *);
+
 int ec_device_open(ec_device_t *);
 int ec_device_close(ec_device_t *);
+
 void ec_device_call_isr(ec_device_t *);
 uint8_t *ec_device_prepare(ec_device_t *);
-void ec_device_send(ec_device_t *, unsigned int);
+void ec_device_send(ec_device_t *, size_t);
 unsigned int ec_device_received(const ec_device_t *);
 uint8_t *ec_device_data(ec_device_t *);
 
+void ec_device_debug(const ec_device_t *);
+void ec_data_print(const uint8_t *, size_t);
+void ec_data_print_diff(const uint8_t *, const uint8_t *, size_t);
+
 /*****************************************************************************/
 
 #endif