diff -r 7c986b717411 -r 9f4ea66d89a3 master/command.h --- a/master/command.h Wed Feb 22 17:36:28 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/****************************************************************************** - * - * c o m m a n d . h - * - * Struktur für ein EtherCAT-Kommando. - * - * $Id$ - * - *****************************************************************************/ - -#ifndef _EC_COMMAND_H_ -#define _EC_COMMAND_H_ - -#include "globals.h" - -/*****************************************************************************/ - -/** - Status eines EtherCAT-Kommandos. -*/ - -typedef enum -{ - EC_COMMAND_STATE_READY, EC_COMMAND_STATE_SENT, EC_COMMAND_STATE_RECEIVED -} -ec_command_state_t; - -/*****************************************************************************/ - -/** - EtherCAT-Adresse. - - Im EtherCAT-Rahmen sind 4 Bytes für die Adresse reserviert, die je nach - Kommandotyp, eine andere Bedeutung haben können: Bei Autoinkrementbefehlen - sind die ersten zwei Bytes die (negative) Autoinkrement-Adresse, bei Knoten- - adressierten Befehlen entsprechen sie der Knotenadresse. Das dritte und - vierte Byte entspricht in diesen Fällen der physikalischen Speicheradresse - auf dem Slave. Bei einer logischen Adressierung entsprechen alle vier Bytes - der logischen Adresse. -*/ - -typedef union -{ - struct - { - union - { - short pos; /**< (Negative) Ring-Position des Slaves */ - unsigned short node; /**< Konfigurierte Knotenadresse */ - } - dev; - - unsigned short mem; /**< Physikalische Speicheradresse im Slave */ - } - phy; /**< Physikalische Adresse */ - - unsigned long logical; /**< Logische Adresse */ - unsigned char raw[4]; /**< Rohdaten für die Generierung des Frames */ -} -ec_address_t; - -/*****************************************************************************/ - -/** - EtherCAT-Kommando. -*/ - -typedef struct ec_command -{ - ec_command_type_t type; /**< Typ des Kommandos (APRD, NPWR, etc) */ - ec_address_t address; /**< Adresse des/der Empfänger */ - unsigned int data_length; /**< Länge der zu sendenden und/oder - empfangenen Daten */ - ec_command_state_t state; /**< Zustand des Kommandos - (bereit, gesendet, etc) */ - unsigned char index; /**< Kommando-Index, mit der das Kommando gesendet - wurde (wird vom Master beim Senden gesetzt. */ - unsigned int working_counter; /**< Working-Counter bei Empfang (wird - vom Master gesetzt) */ - unsigned char data[EC_FRAME_SIZE]; /**< Kommandodaten */ -} -ec_command_t; - -/*****************************************************************************/ - -void ec_command_read(ec_command_t *, unsigned short, unsigned short, - unsigned int); -void ec_command_write(ec_command_t *, unsigned short, unsigned short, - unsigned int, const unsigned char *); -void ec_command_position_read(ec_command_t *, short, unsigned short, - unsigned int); -void ec_command_position_write(ec_command_t *, short, unsigned short, - unsigned int, const unsigned char *); -void ec_command_broadcast_read(ec_command_t *, unsigned short, unsigned int); -void ec_command_broadcast_write(ec_command_t *, unsigned short, unsigned int, - const unsigned char *); -void ec_command_logical_read_write(ec_command_t *, unsigned int, unsigned int, - unsigned char *); - -/*****************************************************************************/ - -#endif