Skip to content
Snippets Groups Projects
Commit f47db66e authored by Florian Pose's avatar Florian Pose
Browse files

Introduced "starved" datagrams.

parent 3204cb29
No related branches found
No related tags found
No related merge requests found
......@@ -129,6 +129,7 @@ int ec_master_init(ec_master_t *master, /**< EtherCAT master */
master->debug_level = 0;
master->stats.timeouts = 0;
master->stats.starved = 0;
master->stats.corrupted = 0;
master->stats.skipped = 0;
master->stats.unmatched = 0;
......@@ -710,6 +711,11 @@ void ec_master_output_stats(ec_master_t *master /**< EtherCAT master */)
master->stats.timeouts == 1 ? "" : "s");
master->stats.timeouts = 0;
}
if (master->stats.starved) {
EC_WARN("%i datagram%s STARVED!\n", master->stats.starved,
master->stats.starved == 1 ? "" : "s");
master->stats.starved = 0;
}
if (master->stats.corrupted) {
EC_WARN("%i frame%s CORRUPTED!\n", master->stats.corrupted,
master->stats.corrupted == 1 ? "" : "s");
......@@ -1438,7 +1444,7 @@ void ecrt_master_receive(ec_master_t *master /**< EtherCAT master */)
- datagram->cycles_queued > cycles_timeout) {
list_del_init(&datagram->queue);
datagram->state = EC_DATAGRAM_TIMED_OUT;
master->stats.timeouts++;
master->stats.starved++;
ec_master_output_stats(master);
}
break;
......
......@@ -75,6 +75,7 @@ ec_master_mode_t;
typedef struct
{
unsigned int timeouts; /**< datagram timeouts */
unsigned int starved; /**< starved datagrams (not even sent) */
unsigned int corrupted; /**< corrupted frames */
unsigned int skipped; /**< skipped datagrams (the ones that were
requeued when not yet received) */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment