user/ec_slave.h
author Florian Pose <fp@igh-essen.com>
Tue, 12 Jan 2010 23:42:35 +0100
branchkernel2.6
changeset 1767 7993a7c9eadc
parent 0 05c992bf5847
permissions -rw-r--r--
Closed branch.
//---------------------------------------------------------------
//
//  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;

//---------------------------------------------------------------