drivers/ec_master.h
changeset 42 a22a202d0f42
parent 39 6965c23a6826
child 47 ad5f969f263b
--- a/drivers/ec_master.h	Fri Dec 23 08:23:35 2005 +0000
+++ b/drivers/ec_master.h	Thu Jan 05 13:39:39 2006 +0000
@@ -14,6 +14,7 @@
 #include "ec_device.h"
 #include "ec_slave.h"
 #include "ec_command.h"
+#include "ec_domain.h"
 
 /*****************************************************************************/
 
@@ -24,19 +25,10 @@
    dem zugewiesenen EtherCAT-Gerät.
 */
 
-typedef struct
+struct EtherCAT_master
 {
-  EtherCAT_slave_t *slaves; /**< Zeiger auf statischen Speicher
-                               mit Slave-Informationen */
-  unsigned int slave_count; /**< Anzahl der Slaves in slaves */
-
-  EtherCAT_command_t process_data_command; /**< Kommando zum Senden und
-                                              Empfangen der Prozessdaten */
-
   EtherCAT_device_t *dev; /**< Zeiger auf das zugewiesene EtherCAT-Gerät */
-
   unsigned char command_index; /**< Aktueller Kommando-Index */
-
   unsigned char tx_data[ECAT_FRAME_BUFFER_SIZE]; /**< Statischer Speicher
                                                     für zu sendende Daten */
   unsigned int tx_data_length; /**< Länge der Daten im Sendespeicher */
@@ -44,13 +36,13 @@
                                                     eine Kopie des Rx-Buffers
                                                     im EtherCAT-Gerät */
   unsigned int rx_data_length; /**< Länge der Daten im Empfangsspeicher */
-
-  unsigned char *process_data; /**< Zeiger auf Speicher mit Prozessdaten */
-  unsigned int process_data_length; /**< Länge der Prozessdaten */
-
+  EtherCAT_domain_t domains[ECAT_MAX_DOMAINS]; /** Prozessdatendomänen */
+  unsigned int domain_count;
   int debug_level; /**< Debug-Level im Master-Code */
-}
-EtherCAT_master_t;
+  unsigned long tx_time; /**< Zeit des letzten Sendens */
+  unsigned long rx_time; /**< Zeit des letzten Empfangs */
+  unsigned int rx_tries; /**< Anzahl Warteschleifen beim letzen Enpfang */
+};
 
 /*****************************************************************************/
 
@@ -68,22 +60,17 @@
 int EtherCAT_simple_receive(EtherCAT_master_t *, EtherCAT_command_t *);
 
 // Slave management
-int EtherCAT_check_slaves(EtherCAT_master_t *, EtherCAT_slave_t *, unsigned int);
-void EtherCAT_clear_slaves(EtherCAT_master_t *);
-int EtherCAT_read_slave_information(EtherCAT_master_t *,
-                                    unsigned short int,
-                                    unsigned short int,
-                                    unsigned int *);
+int EtherCAT_check_slaves(EtherCAT_master_t *, EtherCAT_slave_t *,
+                          unsigned int);
+int EtherCAT_read_slave_information(EtherCAT_master_t *, unsigned short int,
+                                    unsigned short int, unsigned int *);
 int EtherCAT_activate_slave(EtherCAT_master_t *, EtherCAT_slave_t *);
 int EtherCAT_deactivate_slave(EtherCAT_master_t *, EtherCAT_slave_t *);
-int EtherCAT_activate_all_slaves(EtherCAT_master_t *);
-int EtherCAT_deactivate_all_slaves(EtherCAT_master_t *);
-int EtherCAT_state_change(EtherCAT_master_t *, EtherCAT_slave_t *, unsigned char);
+int EtherCAT_state_change(EtherCAT_master_t *, EtherCAT_slave_t *,
+                          unsigned char);
 
 // Process data
-int EtherCAT_write_process_data(EtherCAT_master_t *);
-int EtherCAT_read_process_data(EtherCAT_master_t *);
-void EtherCAT_clear_process_data(EtherCAT_master_t *);
+int EtherCAT_process_data_cycle(EtherCAT_master_t *, unsigned int);
 
 // Private functions
 void output_debug_data(const EtherCAT_master_t *);
@@ -91,3 +78,9 @@
 /*****************************************************************************/
 
 #endif
+
+/* Emacs-Konfiguration
+;;; Local Variables: ***
+;;; c-basic-offset:2 ***
+;;; End: ***
+*/