user/ec_slave.h
changeset 0 05c992bf5847
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/user/ec_slave.h	Fri Oct 21 11:21:42 2005 +0000
@@ -0,0 +1,96 @@
+//---------------------------------------------------------------
+//
+//  e c _ s l a v e . h
+//
+//  $LastChangedDate$
+//  $Author$
+//
+//---------------------------------------------------------------
+
+#define SIMPLE 0
+#define MAILBOX 1
+
+//---------------------------------------------------------------
+
+typedef struct slave_desc EtherCAT_slave_desc_t;
+
+typedef struct
+{
+  // Base data
+  unsigned char type;
+  unsigned char revision;
+  unsigned short build;
+
+  // Addresses
+  short ring_position;
+  unsigned short station_address;
+
+  // Slave information interface
+  unsigned int vendor_id;
+  unsigned int product_code;
+  unsigned int revision_number;
+
+  const EtherCAT_slave_desc_t *desc;
+
+  unsigned int logical_address0;
+
+  unsigned int current_state;
+  unsigned int requested_state;
+
+  unsigned char *process_data;
+}
+EtherCAT_slave_t;
+
+#define ECAT_INIT_SLAVE(TYPE) {0, 0, 0, 0, 0, 0, 0, 0, TYPE, 0, 0, 0, NULL}
+
+//---------------------------------------------------------------
+
+// Slave construction and deletion
+void EtherCAT_slave_init(EtherCAT_slave_t *);
+void EtherCAT_slave_clear(EtherCAT_slave_t *);
+
+// Debug
+void EtherCAT_slave_print(EtherCAT_slave_t *);
+
+//---------------------------------------------------------------
+
+typedef struct slave_desc
+{
+  const char *vendor_name;
+  const char *product_name;
+  const char *product_desc;
+
+  const int type;
+
+  const unsigned char *sm0;
+  const unsigned char *sm1;
+  const unsigned char *sm2;
+  const unsigned char *sm3;
+
+  const unsigned char *fmmu0;
+
+  const unsigned int data_length;
+}
+EtherCAT_slave_desc_t;
+
+extern EtherCAT_slave_desc_t Beckhoff_EK1100[];
+extern EtherCAT_slave_desc_t Beckhoff_EL1014[];
+extern EtherCAT_slave_desc_t Beckhoff_EL2004[];
+extern EtherCAT_slave_desc_t Beckhoff_EL3102[];
+extern EtherCAT_slave_desc_t Beckhoff_EL3162[];
+extern EtherCAT_slave_desc_t Beckhoff_EL4102[];
+extern EtherCAT_slave_desc_t Beckhoff_EL5001[];
+
+//---------------------------------------------------------------
+
+struct slave_ident
+{
+  const unsigned int vendor_id;
+  const unsigned int product_code;
+  const EtherCAT_slave_desc_t *desc;
+};
+
+extern struct slave_ident slave_idents[];
+extern unsigned int slave_idents_count;
+
+//---------------------------------------------------------------