--- a/master/device.c Thu May 11 09:24:15 2006 +0000
+++ b/master/device.c Thu May 11 13:29:06 2006 +0000
@@ -61,9 +61,14 @@
device->open = 0;
device->link_state = 0; // down
+ if (ec_debug_init(&device->dbg)) {
+ EC_ERR("Failed to init debug device!\n");
+ goto out_return;
+ }
+
if (!(device->tx_skb = dev_alloc_skb(ETH_FRAME_LEN))) {
EC_ERR("Error allocating device socket buffer!\n");
- return -1;
+ goto out_debug;
}
device->tx_skb->dev = net_dev;
@@ -76,6 +81,11 @@
memset(eth->h_dest, 0xFF, net_dev->addr_len);
return 0;
+
+ out_debug:
+ ec_debug_clear(&device->dbg);
+ out_return:
+ return -1;
}
/*****************************************************************************/
@@ -88,6 +98,7 @@
{
if (device->open) ec_device_close(device);
if (device->tx_skb) dev_kfree_skb(device->tx_skb);
+ ec_debug_clear(&device->dbg);
}
/*****************************************************************************/
@@ -180,6 +191,8 @@
ec_print_data(device->tx_skb->data + ETH_HLEN, size);
}
+ ec_debug_send(&device->dbg, device->tx_skb->data, ETH_HLEN + size);
+
// start sending
device->dev->hard_start_xmit(device->tx_skb, device->dev);
}
@@ -210,16 +223,19 @@
*/
void ecdev_receive(ec_device_t *device, /**< EtherCAT device */
- const void *data, /**< pointer to receibed data */
+ const void *data, /**< pointer to received data */
size_t size /**< number of bytes received */
)
{
if (unlikely(device->master->debug_level > 1)) {
EC_DBG("Received frame:\n");
- ec_print_data_diff(device->tx_skb->data + ETH_HLEN, data, size);
- }
-
- ec_master_receive(device->master, data, size);
+ ec_print_data_diff(device->tx_skb->data + ETH_HLEN,
+ data + ETH_HLEN, size - ETH_HLEN);
+ }
+
+ ec_debug_send(&device->dbg, data, size);
+
+ ec_master_receive(device->master, data + ETH_HLEN, size - ETH_HLEN);
}
/*****************************************************************************/