master/device.c
changeset 91 0120d6214948
parent 84 b4ae98855cea
child 96 080b46eb6e2d
--- a/master/device.c	Tue Feb 28 09:25:51 2006 +0000
+++ b/master/device.c	Tue Feb 28 11:10:57 2006 +0000
@@ -21,6 +21,8 @@
 
 /**
    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 */
@@ -52,7 +54,7 @@
    EtherCAT-Geräte-Destuktor.
 
    Gibt den dynamisch allozierten Speicher des
-   EtherCAT-Gerätes (die beiden Socket-Buffer) wieder frei.
+   EtherCAT-Gerätes (den Sende-Socket-Buffer) wieder frei.
 */
 
 void ec_device_clear(ec_device_t *device /**< EtherCAT-Gerät */)
@@ -84,11 +86,6 @@
 {
     unsigned int i;
 
-    if (!device) {
-        EC_ERR("Trying to open a NULL device!\n");
-        return -1;
-    }
-
     if (!device->dev) {
         EC_ERR("No net_device to open!\n");
         return -1;
@@ -96,16 +93,16 @@
 
     if (device->open) {
         EC_WARN("Device already opened!\n");
-    }
-    else {
-        // Device could have received frames before
-        for (i = 0; i < 4; i++) ec_device_call_isr(device);
-
-        // Reset old device state
-        device->state = EC_DEVICE_STATE_READY;
-
-        if (device->dev->open(device->dev) == 0) device->open = 1;
-    }
+        return 0;
+    }
+
+    // Device could have received frames before
+    for (i = 0; i < 4; i++) ec_device_call_isr(device);
+
+    // Reset old device state
+    device->state = EC_DEVICE_STATE_READY;
+
+    if (device->dev->open(device->dev) == 0) device->open = 1;
 
     return device->open ? 0 : -1;
 }
@@ -115,8 +112,8 @@
 /**
    Führt die stop()-Funktion des net_devices aus.
 
-   \return 0 bei Erfolg, < 0: Kein Gerät zum Schliessen oder
-   Schliessen fehlgeschlagen.
+   \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 */)
@@ -146,25 +143,21 @@
 
 uint8_t *ec_device_prepare(ec_device_t *device /**< EtherCAT-Gerät */)
 {
-    // Clear transmit socket buffer and reserve space for Ethernet-II header
-    skb_trim(device->tx_skb, 0);
-    skb_reserve(device->tx_skb, ETH_HLEN);
-
-    // Erstmal Speicher für maximal langen Frame reservieren
+    skb_trim(device->tx_skb, 0); // Auf Länge 0 abschneiden
+    skb_reserve(device->tx_skb, ETH_HLEN); // Reserve für Ethernet-II-Header
+
+    // Vorerst Speicher für maximal langen Frame reservieren
     return skb_put(device->tx_skb, EC_MAX_FRAME_SIZE);
 }
 
 /*****************************************************************************/
 
 /**
-   Sendet einen Rahmen über das EtherCAT-Gerät.
-
-   Kopiert die zu sendenden Daten in den statischen Socket-
-   Buffer, fügt den Ethernat-II-Header hinzu und ruft die
-   start_xmit()-Funktion der Netzwerkkarte auf.
-
-   \return 0 bei Erfolg, < 0: Vorheriger Rahmen noch
-   nicht empfangen, oder kein Speicher mehr vorhanden
+   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 */
@@ -173,7 +166,7 @@
 {
     struct ethhdr *eth;
 
-    // Framegroesse auf (jetzt bekannte) Laenge abschneiden
+    // Framegröße auf (jetzt bekannte) Länge abschneiden
     skb_trim(device->tx_skb, length);
 
     // Ethernet-II-Header hinzufuegen
@@ -213,7 +206,7 @@
 /**
    Gibt die empfangenen Daten zurück.
 
-   \return Adresse auf empfangene Daten.
+   \return Zeiger auf empfangene Daten.
 */
 
 uint8_t *ec_device_data(ec_device_t *device)
@@ -269,7 +262,7 @@
 {
     EC_DBG(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
     ec_data_print(device->tx_skb->data + ETH_HLEN, device->tx_skb->len);
-    EC_DBG("------------------------------------------------\n");
+    EC_DBG("--------------------------------------\n");
     ec_data_print_diff(device->tx_skb->data + ETH_HLEN, device->rx_data,
                        device->rx_data_size);
     EC_DBG("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
@@ -344,6 +337,8 @@
 
 /**
    Prüft, ob das Net-Device \a dev zum registrierten EtherCAT-Gerät gehört.
+
+   \return 0 wenn nein, nicht-null wenn ja.
 */
 
 int EtherCAT_dev_is_ec(const ec_device_t *device,  /**< EtherCAT-Gerät */
@@ -355,7 +350,16 @@
 
 /*****************************************************************************/
 
-void EtherCAT_dev_receive(ec_device_t *device, const void *data, size_t size)
+/**
+   Nimmt einen Empfangenen Rahmen entgegen.
+
+   Kopiert die empfangenen Daten in den Receive-Buffer.
+*/
+
+void EtherCAT_dev_receive(ec_device_t *device, /**< EtherCAT-Gerät */
+                          const void *data, /**< Zeiger auf empfangene Daten */
+                          size_t size /**< Größe der empfangenen Daten */
+                          )
 {
     // Copy received data to ethercat-device buffer
     memcpy(device->rx_data, data, size);