diff -r c21e7c12dd50 -r 674071846ee3 master/device.c --- a/master/device.c Thu Apr 20 13:19:36 2006 +0000 +++ b/master/device.c Thu Apr 20 13:31:31 2006 +0000 @@ -2,7 +2,7 @@ * * d e v i c e . c * - * Methoden für ein EtherCAT-Gerät. + * EtherCAT device methods. * * $Id$ * @@ -20,16 +20,15 @@ /*****************************************************************************/ /** - EtherCAT-Geräte-Konstuktor. - - \return 0 wenn alles ok, < 0 bei Fehler (zu wenig Speicher) -*/ - -int ec_device_init(ec_device_t *device, /**< EtherCAT-Gerät */ - ec_master_t *master, /**< Zugehöriger Master */ - struct net_device *net_dev, /**< Net-Device */ - ec_isr_t isr, /**< Adresse der ISR */ - struct module *module /**< Modul-Adresse */ + Device constructor. + \return 0 in case of success, else < 0 +*/ + +int ec_device_init(ec_device_t *device, /**< EtherCAT device */ + ec_master_t *master, /**< master owning the device */ + struct net_device *net_dev, /**< net_device structure */ + ec_isr_t isr, /**< pointer to device's ISR */ + struct module *module /**< pointer to the owning module */ ) { struct ethhdr *eth; @@ -49,7 +48,7 @@ device->tx_skb->dev = net_dev; - // Ethernet-II-Header hinzufuegen + // add Ethernet-II-header skb_reserve(device->tx_skb, ETH_HLEN); eth = (struct ethhdr *) skb_push(device->tx_skb, ETH_HLEN); eth->h_proto = htons(0x88A4); @@ -62,13 +61,10 @@ /*****************************************************************************/ /** - EtherCAT-Geräte-Destuktor. - - Gibt den dynamisch allozierten Speicher des - EtherCAT-Gerätes (den Sende-Socket-Buffer) wieder frei. -*/ - -void ec_device_clear(ec_device_t *device /**< EtherCAT-Gerät */) + EtherCAT device destuctor. +*/ + +void ec_device_clear(ec_device_t *device /**< EtherCAT device */) { if (device->open) ec_device_close(device); if (device->tx_skb) dev_kfree_skb(device->tx_skb); @@ -77,17 +73,11 @@ /*****************************************************************************/ /** - Führt die open()-Funktion des Netzwerktreibers aus. - - Dies entspricht einem "ifconfig up". Vorher wird der Zeiger - auf das EtherCAT-Gerät auf Gültigkeit geprüft und der - Gerätezustand zurückgesetzt. - - \return 0 bei Erfolg, < 0: Ungültiger Zeiger, oder open() - fehlgeschlagen -*/ - -int ec_device_open(ec_device_t *device /**< EtherCAT-Gerät */) + Opens the EtherCAT device. + \return 0 in case of success, else < 0 +*/ + +int ec_device_open(ec_device_t *device /**< EtherCAT device */) { unsigned int i; @@ -101,7 +91,7 @@ return 0; } - // Device could have received frames before + // device could have received frames before for (i = 0; i < 4; i++) ec_device_call_isr(device); device->link_state = 0; @@ -114,13 +104,11 @@ /*****************************************************************************/ /** - Führt die stop()-Funktion des net_devices aus. - - \return 0 bei Erfolg, < 0: Kein Gerät zum Schließen oder - Schließen fehlgeschlagen. -*/ - -int ec_device_close(ec_device_t *device /**< EtherCAT-Gerät */) + Stops the EtherCAT device. + \return 0 in case of success, else < 0 +*/ + +int ec_device_close(ec_device_t *device /**< EtherCAT device */) { if (!device->dev) { EC_ERR("No device to close!\n"); @@ -140,12 +128,11 @@ /*****************************************************************************/ /** - Liefert einen Zeiger auf den Sende-Speicher. - - \return Zeiger auf den Speicher, in den die Frame-Daten sollen. -*/ - -uint8_t *ec_device_tx_data(ec_device_t *device /**< EtherCAT-Gerät */) + Returns a pointer to the device's transmit memory. + \return pointer to the TX socket buffer +*/ + +uint8_t *ec_device_tx_data(ec_device_t *device /**< EtherCAT device */) { return device->tx_skb->data + ETH_HLEN; } @@ -153,21 +140,19 @@ /*****************************************************************************/ /** - Sendet den Inhalt des Socket-Buffers. - - Schneidet den Inhalt des Socket-Buffers auf die (nun bekannte) Größe zu, - fügt den Ethernet-II-Header an und ruft die start_xmit()-Funktion der - Netzwerkkarte auf. -*/ - -void ec_device_send(ec_device_t *device, /**< EtherCAT-Gerät */ - size_t size /**< Größe der zu sendenden Daten */ + Sends the content of the transmit socket buffer. + Cuts the socket buffer content to the (now known) size, and calls the + start_xmit() function of the assigned net_device. +*/ + +void ec_device_send(ec_device_t *device, /**< EtherCAT device */ + size_t size /**< number of bytes to send */ ) { if (unlikely(!device->link_state)) // Link down return; - // Framegröße auf (jetzt bekannte) Länge abschneiden + // set the right length for the data device->tx_skb->len = ETH_HLEN + size; if (unlikely(device->master->debug_level > 1)) { @@ -175,36 +160,33 @@ ec_print_data(device->tx_skb->data + ETH_HLEN, size); } - // Senden einleiten + // start sending device->dev->hard_start_xmit(device->tx_skb, device->dev); } /*****************************************************************************/ /** - Ruft die Interrupt-Routine der Netzwerkkarte auf. -*/ - -void ec_device_call_isr(ec_device_t *device /**< EtherCAT-Gerät */) + Calls the interrupt service routine of the assigned net_device. +*/ + +void ec_device_call_isr(ec_device_t *device /**< EtherCAT device */) { if (likely(device->isr)) device->isr(0, device->dev, NULL); } /****************************************************************************** - * - * Treiberschnittstelle - * + * Device interface *****************************************************************************/ /** - Nimmt einen Empfangenen Rahmen entgegen. - - Kopiert die empfangenen Daten in den Receive-Buffer. -*/ - -void ecdev_receive(ec_device_t *device, /**< EtherCAT-Gerät */ - const void *data, /**< Zeiger auf empfangene Daten */ - size_t size /**< Größe der empfangenen Daten */ + Accepts a received frame. + Forwards the received data to the master. +*/ + +void ecdev_receive(ec_device_t *device, /**< EtherCAT device */ + const void *data, /**< pointer to receibed data */ + size_t size /**< number of bytes received */ ) { if (unlikely(device->master->debug_level > 1)) { @@ -218,11 +200,11 @@ /*****************************************************************************/ /** - Setzt einen neuen Verbindungszustand. -*/ - -void ecdev_link_state(ec_device_t *device, /**< EtherCAT-Gerät */ - uint8_t state /**< Verbindungszustand */ + Sets a new link state. +*/ + +void ecdev_link_state(ec_device_t *device, /**< EtherCAT device */ + uint8_t state /**< new link state */ ) { if (unlikely(!device)) { @@ -242,9 +224,3 @@ EXPORT_SYMBOL(ecdev_link_state); /*****************************************************************************/ - -/* Emacs-Konfiguration -;;; Local Variables: *** -;;; c-basic-offset:4 *** -;;; End: *** -*/